Merge "Expose NumberFormatter and NumberRangeFormatter APIs" am: b9f3853452 am: ce0b381c4c
Change-Id: I92675100b4a017dc82e53a43e7522a7801771665
diff --git a/android_icu4j/src/main/java/android/icu/number/CompactNotation.java b/android_icu4j/src/main/java/android/icu/number/CompactNotation.java
index d497a73..d0c7012 100644
--- a/android_icu4j/src/main/java/android/icu/number/CompactNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/CompactNotation.java
@@ -33,7 +33,6 @@
* methods in {@link Notation}.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class CompactNotation extends Notation {
diff --git a/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java b/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java
index 4148a5e..65efc22 100644
--- a/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java
+++ b/android_icu4j/src/main/java/android/icu/number/CurrencyPrecision.java
@@ -13,7 +13,6 @@
* To create a CurrencyPrecision, use one of the factory methods on Precision.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public abstract class CurrencyPrecision extends Precision {
diff --git a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
index bf1b931..04790ff 100644
--- a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
+++ b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
@@ -23,7 +23,6 @@
* Instances of this class are immutable and thread-safe.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class FormattedNumber implements FormattedValue {
final FormattedStringBuilder string;
@@ -74,6 +73,8 @@
/**
* {@inheritDoc}
+ *
+ * @hide unsupported on Android
*/
@Override
public <A extends Appendable> A appendTo(A appendable) {
diff --git a/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java b/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java
index a72e0cf..c9a6183 100644
--- a/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java
+++ b/android_icu4j/src/main/java/android/icu/number/FormattedNumberRange.java
@@ -25,7 +25,6 @@
*
* @author sffc
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class FormattedNumberRange implements FormattedValue {
final FormattedStringBuilder string;
@@ -51,6 +50,8 @@
/**
* {@inheritDoc}
+ *
+ * @hide unsupported on Android
*/
@Override
public <A extends Appendable> A appendTo(A appendable) {
diff --git a/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java b/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java
index 2a27a56..7e9aa66 100644
--- a/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java
+++ b/android_icu4j/src/main/java/android/icu/number/FractionPrecision.java
@@ -13,7 +13,6 @@
* To create a FractionPrecision, use one of the factory methods on Precision.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public abstract class FractionPrecision extends Precision {
diff --git a/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java b/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java
index e7b53d2..48cc528 100644
--- a/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java
+++ b/android_icu4j/src/main/java/android/icu/number/IntegerWidth.java
@@ -12,7 +12,6 @@
* To create an IntegerWidth, use one of the factory methods.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class IntegerWidth {
diff --git a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
index 5ded0f8..99acd6a 100644
--- a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberFormatter.java
@@ -26,7 +26,6 @@
*
* @see NumberFormatter
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class LocalizedNumberFormatter extends NumberFormatterSettings<LocalizedNumberFormatter> {
diff --git a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
index 958cde7..cc7ed61 100644
--- a/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/LocalizedNumberRangeFormatter.java
@@ -13,7 +13,6 @@
*
* @author sffc
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class LocalizedNumberRangeFormatter extends NumberRangeFormatterSettings<LocalizedNumberRangeFormatter> {
diff --git a/android_icu4j/src/main/java/android/icu/number/Notation.java b/android_icu4j/src/main/java/android/icu/number/Notation.java
index 8473206..cb7e963 100644
--- a/android_icu4j/src/main/java/android/icu/number/Notation.java
+++ b/android_icu4j/src/main/java/android/icu/number/Notation.java
@@ -10,7 +10,6 @@
* A class that defines the notation style to be used when formatting numbers in NumberFormatter.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class Notation {
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java
index e7a6f03..1178292 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatter.java
@@ -62,7 +62,6 @@
* design doc</a>.
*
* @author Shane Carr
- * @hide Only a subset of ICU is exposed in Android
*/
public final class NumberFormatter {
@@ -84,7 +83,6 @@
* This enum is similar to {@link android.icu.text.MeasureFormat.FormatWidth}.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public static enum UnitWidth {
/**
@@ -174,7 +172,6 @@
* grouping separator, use the "symbols" setter.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public static enum GroupingStrategy {
/**
@@ -258,7 +255,6 @@
* The exact format, including the position and the code point of the sign, differ by locale.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public static enum SignDisplay {
/**
@@ -340,7 +336,6 @@
* </ul>
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public static enum DecimalSeparatorDisplay {
/**
@@ -414,6 +409,7 @@
* The skeleton string off of which to base this NumberFormatter.
* @return An {@link UnlocalizedNumberFormatter}, to be used for chaining.
* @throws SkeletonSyntaxException If the given string is not a valid number formatting skeleton.
+ * @hide unsupported on Android
*/
public static UnlocalizedNumberFormatter forSkeleton(String skeleton) {
return NumberSkeletonImpl.getOrCreate(skeleton);
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
index b35fb35..1f7d267 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
@@ -25,7 +25,6 @@
* for public subclassing.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public abstract class NumberFormatterSettings<T extends NumberFormatterSettings<?>> {
@@ -130,9 +129,6 @@
* <p>
* See {@link #perUnit} for information on how to format strings like "5 meters per second".
*
- * <p>
- * The default is to render without units (equivalent to {@link NoUnit#BASE}).
- *
* @param unit
* The unit to render.
* @return The fluent chain.
@@ -522,6 +518,7 @@
* @return A number skeleton string with behavior corresponding to this number formatter.
* @throws UnsupportedOperationException
* If the number formatter has an option that cannot be represented in a skeleton string.
+ * @hide unsupported on Android
*/
public String toSkeleton() {
return NumberSkeletonImpl.generate(resolve());
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java
index 80be6e2..57944d8 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatter.java
@@ -28,7 +28,6 @@
*
* @author sffc
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public abstract class NumberRangeFormatter {
@@ -36,7 +35,6 @@
* Defines how to merge fields that are identical across the range sign.
*
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public enum RangeCollapse {
/**
@@ -78,7 +76,6 @@
* when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.
*
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public static enum RangeIdentityFallback {
/**
@@ -118,7 +115,6 @@
* were equal or not, and whether or not the identity fallback was applied.
*
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public static enum RangeIdentityResult {
/**
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java
index 18535cf..af85bb5 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberRangeFormatterSettings.java
@@ -15,7 +15,6 @@
*
* @author sffc
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public abstract class NumberRangeFormatterSettings<T extends NumberRangeFormatterSettings<?>> {
diff --git a/android_icu4j/src/main/java/android/icu/number/Precision.java b/android_icu4j/src/main/java/android/icu/number/Precision.java
index 4ca3e11..0de71b5 100644
--- a/android_icu4j/src/main/java/android/icu/number/Precision.java
+++ b/android_icu4j/src/main/java/android/icu/number/Precision.java
@@ -20,7 +20,6 @@
* To create a Precision, use one of the factory methods.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public abstract class Precision implements Cloneable {
diff --git a/android_icu4j/src/main/java/android/icu/number/Scale.java b/android_icu4j/src/main/java/android/icu/number/Scale.java
index 8acdaf5..28e116e 100644
--- a/android_icu4j/src/main/java/android/icu/number/Scale.java
+++ b/android_icu4j/src/main/java/android/icu/number/Scale.java
@@ -17,7 +17,6 @@
* To create a Multiplier, use one of the factory methods.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class Scale {
diff --git a/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java b/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
index 769f5d1..a144a79 100644
--- a/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/ScientificNotation.java
@@ -26,7 +26,6 @@
* To create a ScientificNotation, use one of the factory methods in {@link Notation}.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class ScientificNotation extends Notation implements Cloneable {
diff --git a/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java b/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java
index c062f23..c422681 100644
--- a/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java
+++ b/android_icu4j/src/main/java/android/icu/number/SimpleNotation.java
@@ -11,7 +11,6 @@
* in {@link Notation}.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class SimpleNotation extends Notation {
/* package-private */ SimpleNotation() {
diff --git a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
index 2509eb6..3ca7cfe 100644
--- a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberFormatter.java
@@ -14,7 +14,6 @@
* Instances of this class are immutable and thread-safe.
*
* @see NumberFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class UnlocalizedNumberFormatter extends NumberFormatterSettings<UnlocalizedNumberFormatter> {
diff --git a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java
index 128e1c8..08211a1 100644
--- a/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java
+++ b/android_icu4j/src/main/java/android/icu/number/UnlocalizedNumberRangeFormatter.java
@@ -14,7 +14,6 @@
*
* @author sffc
* @see NumberRangeFormatter
- * @hide Only a subset of ICU is exposed in Android
*/
public class UnlocalizedNumberRangeFormatter extends NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter> {
diff --git a/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch
new file mode 100644
index 0000000..2a4a88e
--- /dev/null
+++ b/tools/srcgen/javadoc_patches/patches/src/main/java/android/icu/number/NumberFormatterSettings.java.patch
@@ -0,0 +1,12 @@
+--- android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java 2019-12-20 13:19:52.721019722 +0000
++++ android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java 2019-12-20 13:19:51.069006835 +0000
+@@ -129,9 +129,6 @@
+ * <p>
+ * See {@link #perUnit} for information on how to format strings like "5 meters per second".
+ *
+- * <p>
+- * The default is to render without units (equivalent to {@link NoUnit#BASE}).
+- *
+ * @param unit
+ * The unit to render.
+ * @return The fluent chain.
diff --git a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
index 04649b5..bc9c4e2 100644
--- a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
+++ b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
@@ -86,6 +86,32 @@
"android.icu.lang.UScript$ScriptUsage",
"android.icu.math.BigDecimal",
"android.icu.math.MathContext",
+ "android.icu.number.CompactNotation",
+ "android.icu.number.CurrencyPrecision",
+ "android.icu.number.FormattedNumber",
+ "android.icu.number.FormattedNumberRange",
+ "android.icu.number.FractionPrecision",
+ "android.icu.number.IntegerWidth",
+ "android.icu.number.LocalizedNumberFormatter",
+ "android.icu.number.LocalizedNumberRangeFormatter",
+ "android.icu.number.Notation",
+ "android.icu.number.NumberFormatter",
+ "android.icu.number.NumberFormatter$DecimalSeparatorDisplay",
+ "android.icu.number.NumberFormatter$GroupingStrategy",
+ "android.icu.number.NumberFormatter$SignDisplay",
+ "android.icu.number.NumberFormatter$UnitWidth",
+ "android.icu.number.NumberFormatterSettings",
+ "android.icu.number.NumberRangeFormatter",
+ "android.icu.number.NumberRangeFormatter$RangeCollapse",
+ "android.icu.number.NumberRangeFormatter$RangeIdentityFallback",
+ "android.icu.number.NumberRangeFormatter$RangeIdentityResult",
+ "android.icu.number.NumberRangeFormatterSettings",
+ "android.icu.number.Precision",
+ "android.icu.number.Scale",
+ "android.icu.number.ScientificNotation",
+ "android.icu.number.SimpleNotation",
+ "android.icu.number.UnlocalizedNumberFormatter",
+ "android.icu.number.UnlocalizedNumberRangeFormatter",
"android.icu.text.AlphabeticIndex",
"android.icu.text.AlphabeticIndex$Bucket",
"android.icu.text.AlphabeticIndex$Bucket$LabelType",
@@ -644,6 +670,16 @@
"field:android.icu.util.LocaleData#ES_INDEX",
"field:android.icu.util.LocaleData#ES_PUNCTUATION",
"field:android.icu.util.LocaleData#ES_STANDARD",
+ // Hide appendTo APIs until we find the value of these APIs.
+ // Particularly, the open question is throwing ICUUncheckedIOException/checked IOException.
+ "method:android.icu.number.FormattedNumber#appendTo(A)",
+ "method:android.icu.number.FormattedNumberRange#appendTo(A)",
+ // Skeleton syntax can evolve over time. Currently, the skeleton APIs are not prioritized to
+ // be public. Android developers could easily miss the API version check for new syntax and
+ // cause app crashing on older devices.
+ // See the syntax details in https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md.
+ "method:android.icu.number.NumberFormatterSettings#toSkeleton()",
+ "method:android.icu.number.NumberFormatter#forSkeleton(String)",
"method:android.icu.text.BreakIterator#registerInstance(BreakIterator,Locale,int)",
"method:android.icu.text.BreakIterator#registerInstance(BreakIterator,ULocale,int)",
"method:android.icu.text.BreakIterator#unregister(Object)",