From f409a92b997fd76f0695a13124fb49d1455b5ebf Mon Sep 17 00:00:00 2001
From: Doug Felt
Date: Fri, 21 Nov 2003 22:52:05 +0000
Subject: [PATCH] ICU-2202 ULocale changes
X-SVN-Rev: 13821
---
icu4j/src/com/ibm/icu/text/Collator.java | 9 +-
icu4j/src/com/ibm/icu/text/DateFormat.java | 2 +-
.../com/ibm/icu/text/DateFormatSymbols.java | 8 +-
icu4j/src/com/ibm/icu/text/DecimalFormat.java | 6 +-
.../ibm/icu/text/DecimalFormatSymbols.java | 6 +-
icu4j/src/com/ibm/icu/text/NumberFormat.java | 9 +-
.../ibm/icu/text/RuleBasedNumberFormat.java | 8 +-
icu4j/src/com/ibm/icu/util/Calendar.java | 4 +-
icu4j/src/com/ibm/icu/util/Currency.java | 26 +++---
icu4j/src/com/ibm/icu/util/ULocale.java | 87 ++++++++++---------
10 files changed, 87 insertions(+), 78 deletions(-)
diff --git a/icu4j/src/com/ibm/icu/text/Collator.java b/icu4j/src/com/ibm/icu/text/Collator.java
index 3b9b987123a..18760a8e0d3 100755
--- a/icu4j/src/com/ibm/icu/text/Collator.java
+++ b/icu4j/src/com/ibm/icu/text/Collator.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Collator.java,v $
-* $Date: 2003/11/18 17:53:53 $
-* $Revision: 1.37 $
+* $Date: 2003/11/21 22:52:05 $
+* $Revision: 1.38 $
*
*******************************************************************************
*/
@@ -679,6 +679,7 @@ public abstract class Collator implements Comparator, Cloneable
* @see #compare(String, String)
* @see #getCollationKey
* @see RawCollationKey
+ * @draft ICU 2.8
*/
public abstract RawCollationKey getRawCollationKey(String source,
RawCollationKey key);
@@ -734,11 +735,12 @@ public abstract class Collator implements Comparator, Cloneable
* @draft ICU 2.8
*/
public ULocale getLocale(ULocale.ULocaleDataType type) {
- return new ULocale("");
+ return ULocale.ROOT;
}
/** Get the version of this collator object.
* @return the version object associated with this collator
+ * @draft ICU 2.8
*/
public VersionInfo getVersion() {
return VersionInfo.getInstance(0);
@@ -746,6 +748,7 @@ public abstract class Collator implements Comparator, Cloneable
/** Get the UCA version of this collator object.
* @return the version object associated with this collator
+ * @draft ICU 2.8
*/
public VersionInfo getUCAVersion() {
return VersionInfo.getInstance(0);
diff --git a/icu4j/src/com/ibm/icu/text/DateFormat.java b/icu4j/src/com/ibm/icu/text/DateFormat.java
index 1fb5be34854..0f399e7bb83 100755
--- a/icu4j/src/com/ibm/icu/text/DateFormat.java
+++ b/icu4j/src/com/ibm/icu/text/DateFormat.java
@@ -736,7 +736,7 @@ public abstract class DateFormat extends UFormat {
* @draft ICU 2.8
*/
public ULocale getLocale(ULocale.ULocaleDataType type) {
- return new ULocale("");
+ return ULocale.ROOT;
}
/**
diff --git a/icu4j/src/com/ibm/icu/text/DateFormatSymbols.java b/icu4j/src/com/ibm/icu/text/DateFormatSymbols.java
index 2e56b7ad74f..d5640a9930b 100755
--- a/icu4j/src/com/ibm/icu/text/DateFormatSymbols.java
+++ b/icu4j/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DateFormatSymbols.java,v $
- * $Date: 2003/09/04 23:07:34 $
- * $Revision: 1.20 $
+ * $Date: 2003/11/21 22:52:05 $
+ * $Revision: 1.21 $
*
*****************************************************************************************
*/
@@ -609,7 +609,7 @@ public class DateFormatSymbols implements Serializable, Cloneable {
* Variant of DateFormatSymbols(Calendar, Locale) that takes the Calendar class
* instead of a Calandar instance.
* @see #DateFormatSymbols(Calendar, Locale)
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public DateFormatSymbols(Class calendarClass, Locale locale) {
this(locale); // old-style construction
@@ -729,7 +729,7 @@ public class DateFormatSymbols implements Serializable, Cloneable {
* Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes
* a Calendar instance instead of a Calendar class.
* @see #getDateFormatBundle(java.lang.Class, java.util.Locale)
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
static public ResourceBundle getDateFormatBundle(Calendar cal, Locale locale)
throws MissingResourceException {
diff --git a/icu4j/src/com/ibm/icu/text/DecimalFormat.java b/icu4j/src/com/ibm/icu/text/DecimalFormat.java
index 49ed0de4859..aad4f309289 100755
--- a/icu4j/src/com/ibm/icu/text/DecimalFormat.java
+++ b/icu4j/src/com/ibm/icu/text/DecimalFormat.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DecimalFormat.java,v $
- * $Date: 2003/11/21 08:11:49 $
- * $Revision: 1.38 $
+ * $Date: 2003/11/21 22:52:05 $
+ * $Revision: 1.39 $
*
*****************************************************************************************
*/
@@ -3423,7 +3423,7 @@ public class DecimalFormat extends NumberFormat {
* currency format through the application of a new pattern.
* @param theCurrency new currency object to use. Must not be
* null.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public void setCurrency(Currency theCurrency) {
// If we are a currency format, then modify our affixes to
diff --git a/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java b/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java
index 7d1ced9fabf..abb21eefcfd 100755
--- a/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java
+++ b/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java,v $
- * $Date: 2003/11/21 08:11:49 $
- * $Revision: 1.12 $
+ * $Date: 2003/11/21 22:52:05 $
+ * $Revision: 1.13 $
*
*****************************************************************************************
*/
@@ -760,7 +760,7 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable {
private ULocale validLocale;
ULocale getLocale(ULocale.ULocaleDataType type) {
- return (ULocale)validLocale.clone();
+ return validLocale;
}
}
diff --git a/icu4j/src/com/ibm/icu/text/NumberFormat.java b/icu4j/src/com/ibm/icu/text/NumberFormat.java
index c616d23dc0e..5416692f445 100755
--- a/icu4j/src/com/ibm/icu/text/NumberFormat.java
+++ b/icu4j/src/com/ibm/icu/text/NumberFormat.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NumberFormat.java,v $
- * $Date: 2003/11/21 08:11:49 $
- * $Revision: 1.32 $
+ * $Date: 2003/11/21 22:52:05 $
+ * $Revision: 1.33 $
*
*****************************************************************************************
*/
@@ -924,7 +924,7 @@ public abstract class NumberFormat extends UFormat {
* @draft ICU 2.8
*/
public ULocale getLocale(ULocale.ULocaleDataType type) {
- return new ULocale(Locale.getDefault());
+ return ULocale.getDefault();
}
// =======================privates===============================
@@ -962,9 +962,8 @@ public abstract class NumberFormat extends UFormat {
* @param forLocale the locale of the data.
* @param choice the pattern format.
* @return the pattern
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
- // [NEW]
protected static String getPattern(Locale forLocale, int choice) {
/* The following code takes care of a few cases where the
diff --git a/icu4j/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/icu4j/src/com/ibm/icu/text/RuleBasedNumberFormat.java
index 31c60159660..0f9cdb985ca 100755
--- a/icu4j/src/com/ibm/icu/text/RuleBasedNumberFormat.java
+++ b/icu4j/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/RuleBasedNumberFormat.java,v $
- * $Date: 2003/11/21 08:11:49 $
- * $Revision: 1.17 $
+ * $Date: 2003/11/21 22:52:05 $
+ * $Revision: 1.18 $
*
*****************************************************************************************
*/
@@ -475,7 +475,7 @@ import java.util.ResourceBundle;
* using these features.
*
* @author Richard Gillam
- * $RCSfile: RuleBasedNumberFormat.java,v $ $Revision: 1.17 $ $Date: 2003/11/21 08:11:49 $
+ * $RCSfile: RuleBasedNumberFormat.java,v $ $Revision: 1.18 $ $Date: 2003/11/21 22:52:05 $
* @see NumberFormat
* @see DecimalFormat
* @stable ICU 2.0
@@ -1345,7 +1345,7 @@ public final class RuleBasedNumberFormat extends NumberFormat {
* @draft ICU 2.8
*/
public ULocale getLocale(ULocale.ULocaleDataType type) {
- return (ULocale)validLocale.clone();
+ return validLocale;
}
}
diff --git a/icu4j/src/com/ibm/icu/util/Calendar.java b/icu4j/src/com/ibm/icu/util/Calendar.java
index 198f2422191..044441d5080 100755
--- a/icu4j/src/com/ibm/icu/util/Calendar.java
+++ b/icu4j/src/com/ibm/icu/util/Calendar.java
@@ -3036,7 +3036,7 @@ public abstract class Calendar implements Serializable, Cloneable {
* field
parameter specifies the units of the return
* value. For example, if fieldDifference(when,
* Calendar.MONTH)
returns 3, then this calendar is set to
- * 3 months before when
, and possibly some addition
+ * 3 months before when
, and possibly some additional
* time less than one month.
*
* As a side effect of this call, this calendar is advanced
@@ -3609,7 +3609,7 @@ public abstract class Calendar implements Serializable, Cloneable {
* @draft ICU 2.8
*/
public ULocale getLocale(ULocale.ULocaleDataType type) {
- return (ULocale)validLocale.clone();
+ return validLocale;
}
/**
diff --git a/icu4j/src/com/ibm/icu/util/Currency.java b/icu4j/src/com/ibm/icu/util/Currency.java
index 1041f8225b1..6d9c7c9f2bc 100644
--- a/icu4j/src/com/ibm/icu/util/Currency.java
+++ b/icu4j/src/com/ibm/icu/util/Currency.java
@@ -5,8 +5,8 @@
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Currency.java,v $
- * $Date: 2003/06/03 18:49:35 $
- * $Revision: 1.16 $
+ * $Date: 2003/11/21 22:52:04 $
+ * $Revision: 1.17 $
*
*******************************************************************************
*/
@@ -38,7 +38,7 @@ import com.ibm.icu.impl.LocaleUtility;
* java.util.Currency but it has a completely independent
* implementation, and adds features not present in the JDK.
* @author Alan Liu
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public class Currency implements Serializable {
@@ -93,7 +93,7 @@ public class Currency implements Serializable {
/**
* Returns a currency object for the default currency in the given
* locale.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public static Currency getInstance(Locale locale) {
if (shim == null) {
@@ -128,7 +128,7 @@ public class Currency implements Serializable {
/**
* Returns a currency object given an ISO 4217 3-letter code.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public static Currency getInstance(String theISOCode) {
return new Currency(theISOCode);
@@ -161,7 +161,7 @@ public class Currency implements Serializable {
/**
* Return an array of the locales for which a currency
* is defined.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public static Locale[] getAvailableLocales() {
if (shim == null) {
@@ -175,7 +175,7 @@ public class Currency implements Serializable {
/**
* Return a hashcode for this currency.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public int hashCode() {
return isoCode.hashCode();
@@ -184,7 +184,7 @@ public class Currency implements Serializable {
/**
* Return true if rhs is a Currency instance,
* is non-null, and has the same currency code.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public boolean equals(Object rhs) {
try {
@@ -197,7 +197,7 @@ public class Currency implements Serializable {
/**
* Return true if c is non-null and has the same currency code.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public boolean equals(Currency c) {
if (c == null) return false;
@@ -208,7 +208,7 @@ public class Currency implements Serializable {
/**
* Returns the ISO 4217 3-letter code for this currency object.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public String getCurrencyCode() {
return isoCode;
@@ -311,7 +311,7 @@ public class Currency implements Serializable {
* be displayed for this currency.
* @return a non-negative number of fraction digits to be
* displayed
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public int getDefaultFractionDigits() {
return (findData())[0].intValue();
@@ -321,7 +321,7 @@ public class Currency implements Serializable {
* Returns the rounding increment for this currency, or 0.0 if no
* rounding is done by this currency.
* @return the non-negative rounding increment, or 0.0 if none
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public double getRoundingIncrement() {
Integer[] data = findData();
@@ -348,7 +348,7 @@ public class Currency implements Serializable {
/**
* Returns the ISO 4217 code for this currency.
- * @draft ICU 2.2
+ * @stable ICU 2.2
*/
public String toString() {
return isoCode;
diff --git a/icu4j/src/com/ibm/icu/util/ULocale.java b/icu4j/src/com/ibm/icu/util/ULocale.java
index bea9afd5249..1b8548cb6e5 100644
--- a/icu4j/src/com/ibm/icu/util/ULocale.java
+++ b/icu4j/src/com/ibm/icu/util/ULocale.java
@@ -5,8 +5,8 @@
******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/ULocale.java,v $
-* $Date: 2003/11/21 08:11:49 $
-* $Revision: 1.4 $
+* $Date: 2003/11/21 22:52:04 $
+* $Revision: 1.5 $
*
******************************************************************************
*/
@@ -14,6 +14,10 @@
package com.ibm.icu.util;
import java.util.Locale;
+import java.io.Serializable;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
/**
* A class for replacing the java.util.Locale. This class provides all the
@@ -22,14 +26,17 @@ import java.util.Locale;
* @author weiv
* @draft ICU 2.8
*/
-public class ULocale implements Cloneable {
+public final class ULocale implements Serializable {
+ private transient Locale locale;
+ private String locName;
+
/**
* Actual locale where data is coming from
* Actual locale will make sense only after the alternate
* ICU data handling framework is implemented in ICU 3.0
* @draft ICU 2.8
*/
- public static final ULocaleDataType ACTUAL_LOCALE = new ULocaleDataType(0);
+ public static final ULocaleDataType ACTUAL_LOCALE = new ULocaleDataType(0);
/**
* Valid locale for an object
@@ -41,59 +48,59 @@ public class ULocale implements Cloneable {
* Type safe enum for representing the type of locale
* @draft ICU 2.8
*/
- public static final class ULocaleDataType{
+ public static final class ULocaleDataType{
- private int localeType;
+ private int localeType;
+
+ private ULocaleDataType(int id){
+ localeType = id;
+ }
+ private boolean equals(int id){
+ return localeType == id;
+ }
+ }
- private ULocaleDataType(int id){
- localeType = id;
- }
- private boolean equals(int id){
- return localeType == id;
- }
- }
-
- private Locale locale;
-
/**
* Convert this ULocale object to java.util.Locale object
* @return Locale object that represents the information in this object
* @draft ICU 2.8
*/
- public Locale toLocale() {
- return locale;
- }
+ public Locale toLocale() {
+ return locale;
+ }
/**
* Construct a ULocale object from java.util.Locale object.
* @param loc The locale object to be converted
* @draft ICU 2.8
*/
- public ULocale(Locale loc) {
- locale = loc;
- }
+ public ULocale(Locale loc) {
+ this.locName = loc.toString();
+ this.locale = loc;
+ }
/**
* Consturct a ULocale object from a string representing the locale
* @param locName String representation of the locale, e.g: en_US, sy-Cyrl-YU
* @draft ICU 2.8
- */
+ */
public ULocale(String locName) {
- locale = new Locale(locName, "");
- }
- /**
- * Clone method. Clones this ULocale object
- * @return cloned ULocale object.
- * @draft ICU 2.8
- */
- public Object clone() {
- try {
- ULocale copy = (ULocale) super.clone();
- copy.locale = (Locale) locale.clone();
- return copy;
- }
- catch (CloneNotSupportedException e) {
- throw new InternalError(e.toString());
- }
- }
+ this.locName = locName;
+ this.locale = new Locale(locName, "");
+ }
+
+ public static ULocale getDefault() {
+ return new ULocale(Locale.getDefault());
+ }
+
+ public static final ULocale ROOT = new ULocale("");
+
+ private void writeObject(java.io.ObjectOutputStream out) throws IOException {
+ out.writeObject(locName);
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
+ locName = (String)in.readObject();
+ locale = new Locale(locName, "");
+ }
}