summaryrefslogtreecommitdiff
path: root/android_icu4j
diff options
context:
space:
mode:
authorVictor Chang <vichang@google.com>2019-11-04 18:53:56 +0000
committerVictor Chang <vichang@google.com>2019-11-05 15:23:21 +0000
commit93e3773aac15e57e8685eca400fdef579be364e9 (patch)
tree5f6cff4e4d476ba86c158566816c871b5d248848 /android_icu4j
parentc8e9ecc6f8e87ea70ea4a184fec62a3410d0d950 (diff)
downloadicu-93e3773aac15e57e8685eca400fdef579be364e9.tar.gz
Move ICU4C metadata getters from libcore.icu.ICU into external/icu
Bug: 138994281 Test: m droid Change-Id: Icc594207f07132c340a5c86127a1d04d5aa6a61e
Diffstat (limited to 'android_icu4j')
-rw-r--r--android_icu4j/api/intra/current-api.txt11
-rw-r--r--android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java43
-rw-r--r--android_icu4j/libcore_bridge/src/native/Register.cpp1
-rw-r--r--android_icu4j/libcore_bridge/src/native/com_android_icu_util_ICU4CMetadata.cpp70
-rw-r--r--android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties2
-rw-r--r--android_icu4j/testing/src/android/icu/extratest/AndroidIcuVersionTest.java (renamed from android_icu4j/testing/src/android/icu/extratest/AndroidICUVersionTest.java)10
-rw-r--r--android_icu4j/testing/src/android/icu/extratest/AndroidTransliteratorAvailableIdsTest.java6
7 files changed, 131 insertions, 12 deletions
diff --git a/android_icu4j/api/intra/current-api.txt b/android_icu4j/api/intra/current-api.txt
index 7df0c0176..7984134be 100644
--- a/android_icu4j/api/intra/current-api.txt
+++ b/android_icu4j/api/intra/current-api.txt
@@ -190,6 +190,17 @@ package com.android.icu.charset {
}
+package com.android.icu.util {
+
+ public class Icu4cMetadata {
+ method public static String getCldrVersion();
+ method public static String getIcuVersion();
+ method public static String getTzdbVersion();
+ method public static String getUnicodeVersion();
+ }
+
+}
+
package com.android.icu.util.regex {
public class NativeMatcher {
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
new file mode 100644
index 000000000..0a7d45a4b
--- /dev/null
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.icu.util;
+
+public class Icu4cMetadata {
+
+ /** Returns the TZData version as reported by ICU4C. */
+ @libcore.api.IntraCoreApi
+ public static native String getTzdbVersion();
+
+ /**
+ * Returns the version of the CLDR data in use, such as "22.1.1".
+ */
+ @libcore.api.IntraCoreApi
+ public static native String getCldrVersion();
+
+ /**
+ * Returns the icu4c version in use, such as "50.1.1".
+ */
+ @libcore.api.IntraCoreApi
+ public static native String getIcuVersion();
+
+ /**
+ * Returns the Unicode version our ICU supports, such as "6.2".
+ */
+ @libcore.api.IntraCoreApi
+ public static native String getUnicodeVersion();
+
+}
diff --git a/android_icu4j/libcore_bridge/src/native/Register.cpp b/android_icu4j/libcore_bridge/src/native/Register.cpp
index 0df2e7e65..012d6efce 100644
--- a/android_icu4j/libcore_bridge/src/native/Register.cpp
+++ b/android_icu4j/libcore_bridge/src/native/Register.cpp
@@ -34,6 +34,7 @@ jint JNI_OnLoad(JavaVM* vm, void*) {
ScopedLocalFrame localFrame(env);
#define REGISTER(FN) extern void FN(JNIEnv*); FN(env)
+ REGISTER(register_com_android_icu_util_Icu4cMetadata);
REGISTER(register_com_android_icu_util_regex_NativePattern);
REGISTER(register_com_android_icu_util_regex_NativeMatcher);
REGISTER(register_com_android_icu_util_charset_NativeConverter);
diff --git a/android_icu4j/libcore_bridge/src/native/com_android_icu_util_ICU4CMetadata.cpp b/android_icu4j/libcore_bridge/src/native/com_android_icu_util_ICU4CMetadata.cpp
new file mode 100644
index 000000000..23753175a
--- /dev/null
+++ b/android_icu4j/libcore_bridge/src/native/com_android_icu_util_ICU4CMetadata.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <nativehelper/JNIHelp.h>
+#include <nativehelper/jni_macros.h>
+
+#include "IcuUtilities.h"
+
+#include "unicode/uchar.h"
+#include "unicode/ulocdata.h"
+#include "unicode/uversion.h"
+#include "unicode/timezone.h"
+
+static jstring versionString(JNIEnv* env, const UVersionInfo& version) {
+ char versionString[U_MAX_VERSION_STRING_LENGTH];
+ u_versionToString(const_cast<UVersionInfo&>(version), &versionString[0]);
+ return env->NewStringUTF(versionString);
+}
+
+static jstring Icu4cMetadata_getCldrVersion(JNIEnv* env, jclass) {
+ UErrorCode status = U_ZERO_ERROR;
+ UVersionInfo cldrVersion;
+ ulocdata_getCLDRVersion(cldrVersion, &status);
+ return versionString(env, cldrVersion);
+}
+
+static jstring Icu4cMetadata_getIcuVersion(JNIEnv* env, jclass) {
+ UVersionInfo icuVersion;
+ u_getVersion(icuVersion);
+ return versionString(env, icuVersion);
+}
+
+static jstring Icu4cMetadata_getUnicodeVersion(JNIEnv* env, jclass) {
+ UVersionInfo unicodeVersion;
+ u_getUnicodeVersion(unicodeVersion);
+ return versionString(env, unicodeVersion);
+}
+
+static jstring Icu4cMetadata_getTzdbVersion(JNIEnv* env, jclass) {
+ UErrorCode status = U_ZERO_ERROR;
+ const char* version = icu::TimeZone::getTZDataVersion(status);
+ if (maybeThrowIcuException(env, "icu::TimeZone::getTZDataVersion", status)) {
+ return NULL;
+ }
+ return env->NewStringUTF(version);
+}
+
+static JNINativeMethod gMethods[] = {
+ NATIVE_METHOD(Icu4cMetadata, getCldrVersion, "()Ljava/lang/String;"),
+ NATIVE_METHOD(Icu4cMetadata, getIcuVersion, "()Ljava/lang/String;"),
+ NATIVE_METHOD(Icu4cMetadata, getUnicodeVersion, "()Ljava/lang/String;"),
+ NATIVE_METHOD(Icu4cMetadata, getTzdbVersion, "()Ljava/lang/String;"),
+};
+
+void register_com_android_icu_util_Icu4cMetadata(JNIEnv* env) {
+ jniRegisterNativeMethods(env, "com/android/icu/util/Icu4cMetadata", gMethods, NELEM(gMethods));
+}
diff --git a/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties b/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
index 33dd3e3e0..1f49e0245 100644
--- a/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
+++ b/android_icu4j/src/main/tests/android/icu/extratest/android_icu_version.properties
@@ -1,2 +1,2 @@
-# Property file for AndroidICUVersionTest.
+# Property file for AndroidIcuVersionTest.
version=64.2.0.0
diff --git a/android_icu4j/testing/src/android/icu/extratest/AndroidICUVersionTest.java b/android_icu4j/testing/src/android/icu/extratest/AndroidIcuVersionTest.java
index edcaf88ab..24b539bb7 100644
--- a/android_icu4j/testing/src/android/icu/extratest/AndroidICUVersionTest.java
+++ b/android_icu4j/testing/src/android/icu/extratest/AndroidIcuVersionTest.java
@@ -15,25 +15,23 @@
*/
package android.icu.extratest;
+import com.android.icu.util.Icu4cMetadata;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.Test;
-import android.icu.dev.data.TestDataElements_testtypes;
import android.icu.dev.test.TestFmwk;
import android.icu.testsharding.MainTestShard;
import android.icu.util.VersionInfo;
-import libcore.icu.ICU;
-
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
@MainTestShard
@RunWith(JUnit4.class)
-public class AndroidICUVersionTest extends TestFmwk {
+public class AndroidIcuVersionTest extends TestFmwk {
private static final String PROP_FILE = "android_icu_version.properties";
private static final String VERSION_PROP_NAME = "version";
@@ -42,7 +40,7 @@ public class AndroidICUVersionTest extends TestFmwk {
@Before
public void setUp() throws IOException {
- try (InputStream in = AndroidICUVersionTest.class.getResourceAsStream(PROP_FILE)) {
+ try (InputStream in = AndroidIcuVersionTest.class.getResourceAsStream(PROP_FILE)) {
Properties prop = new Properties();
prop.load(in);
String propValue = prop.getProperty(VERSION_PROP_NAME);
@@ -61,7 +59,7 @@ public class AndroidICUVersionTest extends TestFmwk {
expectedIcuVersion.getMinor() <= actualIcu4jVersion.getMinor());
// Check ICU4C.
- VersionInfo actualIcu4cVersion = VersionInfo.getInstance(ICU.getIcuVersion());
+ VersionInfo actualIcu4cVersion = VersionInfo.getInstance(Icu4cMetadata.getIcuVersion());
assertEquals("The ICU4C major version is not expected.",
expectedIcuVersion.getMajor(), actualIcu4cVersion.getMajor());
assertTrue("ICU4C minor version can't be smaller than the expected.",
diff --git a/android_icu4j/testing/src/android/icu/extratest/AndroidTransliteratorAvailableIdsTest.java b/android_icu4j/testing/src/android/icu/extratest/AndroidTransliteratorAvailableIdsTest.java
index 729fafaa0..e376a631d 100644
--- a/android_icu4j/testing/src/android/icu/extratest/AndroidTransliteratorAvailableIdsTest.java
+++ b/android_icu4j/testing/src/android/icu/extratest/AndroidTransliteratorAvailableIdsTest.java
@@ -15,16 +15,12 @@
*/
package android.icu.extratest;
-import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Suite;
import android.icu.testsharding.MainTestShard;
import android.icu.text.Transliterator;
-import android.icu.text.UnicodeSet;
import java.io.BufferedReader;
import java.io.IOException;
@@ -74,7 +70,7 @@ public class AndroidTransliteratorAvailableIdsTest {
List<String> excludedIds) throws IOException {
List<String> expectedIds = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
- AndroidICUVersionTest.class.getResourceAsStream(resourceFileName)))) {
+ AndroidIcuVersionTest.class.getResourceAsStream(resourceFileName)))) {
String line;
while((line = reader.readLine()) != null) {
if (!line.isEmpty()) {