You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2009/06/24 15:32:38 UTC
svn commit: r788016 - in
/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text:
DateFormatSymbols.java DecimalFormat.java DecimalFormatSymbols.java
NumberFormat.java SimpleDateFormat.java
Author: tellison
Date: Wed Jun 24 13:32:37 2009
New Revision: 788016
URL: http://svn.apache.org/viewvc?rev=788016&view=rev
Log:
Apply modified version of patch for HARMONY-6241 (java.text.SimpleDateFormat.SimpleDateFormat(String, Locale) performance can be improved)
Modified:
harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DateFormatSymbols.java
harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormat.java
harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java
harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/NumberFormat.java
harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/SimpleDateFormat.java
Modified: harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DateFormatSymbols.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DateFormatSymbols.java?rev=788016&r1=788015&r2=788016&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DateFormatSymbols.java (original)
+++ harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DateFormatSymbols.java Wed Jun 24 13:32:37 2009
@@ -88,14 +88,7 @@
* the locale.
*/
public DateFormatSymbols(Locale locale) {
- icuSymbols = new com.ibm.icu.text.DateFormatSymbols(locale);
- localPatternChars = icuSymbols.getLocalPatternChars();
- ampms = icuSymbols.getAmPmStrings();
- eras = icuSymbols.getEras();
- months = icuSymbols.getMonths();
- shortMonths = icuSymbols.getShortMonths();
- shortWeekdays = icuSymbols.getShortWeekdays();
- weekdays = icuSymbols.getWeekdays();
+ this(locale, new com.ibm.icu.text.DateFormatSymbols(locale));
}
private void writeObject(ObjectOutputStream oos) throws IOException {
@@ -105,6 +98,19 @@
oos.defaultWriteObject();
}
+ DateFormatSymbols(Locale locale,
+ com.ibm.icu.text.DateFormatSymbols icuSymbols) {
+
+ this.icuSymbols = icuSymbols;
+ localPatternChars = icuSymbols.getLocalPatternChars();
+ ampms = icuSymbols.getAmPmStrings();
+ eras = icuSymbols.getEras();
+ months = icuSymbols.getMonths();
+ shortMonths = icuSymbols.getShortMonths();
+ shortWeekdays = icuSymbols.getShortWeekdays();
+ weekdays = icuSymbols.getWeekdays();
+ }
+
@Override
public Object clone() {
if (zoneStrings == null) {
Modified: harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormat.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormat.java?rev=788016&r1=788015&r2=788016&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormat.java (original)
+++ harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormat.java Wed Jun 24 13:32:37 2009
@@ -602,7 +602,7 @@
*/
public DecimalFormat(String pattern, DecimalFormatSymbols value) {
symbols = (DecimalFormatSymbols) value.clone();
- Locale locale = symbols.getLocale(); //$NON-NLS-1$
+ Locale locale = symbols.getLocale();
icuSymbols = new com.ibm.icu.text.DecimalFormatSymbols(locale);
copySymbols(icuSymbols, symbols);
@@ -614,6 +614,17 @@
super.setMinimumIntegerDigits(dform.getMinimumIntegerDigits());
}
+ DecimalFormat(String pattern, DecimalFormatSymbols value, com.ibm.icu.text.DecimalFormat icuFormat) {
+ symbols = value;
+ icuSymbols = value.getIcuSymbols();
+ dform = icuFormat;
+
+ super.setMaximumFractionDigits(dform.getMaximumFractionDigits());
+ super.setMaximumIntegerDigits(dform.getMaximumIntegerDigits());
+ super.setMinimumFractionDigits(dform.getMinimumFractionDigits());
+ super.setMinimumIntegerDigits(dform.getMinimumIntegerDigits());
+ }
+
/**
* Changes the pattern of this decimal format to the specified pattern which
* uses localized pattern characters.
@@ -1425,4 +1436,12 @@
}
});
}
+
+ com.ibm.icu.text.DecimalFormat getDform() {
+ return dform;
+ }
+
+ com.ibm.icu.text.DecimalFormatSymbols getIcuSymbols() {
+ return icuSymbols;
+ }
}
Modified: harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java?rev=788016&r1=788015&r2=788016&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java (original)
+++ harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java Wed Jun 24 13:32:37 2009
@@ -74,15 +74,21 @@
* the locale.
*/
public DecimalFormatSymbols(Locale locale) {
- com.ibm.icu.text.DecimalFormatSymbols icuSymbols = new com.ibm.icu.text.DecimalFormatSymbols(
- locale);
+ this(locale, new com.ibm.icu.text.DecimalFormatSymbols(locale));
+ }
+
+ transient private com.ibm.icu.text.DecimalFormatSymbols icuSymbols;
+
+ DecimalFormatSymbols(Locale locale,
+ com.ibm.icu.text.DecimalFormatSymbols icuSymbols) {
+ this.icuSymbols = icuSymbols;
infinity = icuSymbols.getInfinity();
NaN = icuSymbols.getNaN();
this.locale = locale;
currencySymbol = icuSymbols.getCurrencySymbol();
intlCurrencySymbol = icuSymbols.getInternationalCurrencySymbol();
if (locale.getCountry().length() == 0) {
- currency = Currency.getInstance("XXX");
+ currency = Currency.getInstance("XXX"); //$NON-NLS-1$
} else {
currency = Currency.getInstance(locale);
}
@@ -95,11 +101,12 @@
patternChars[Percent] = icuSymbols.getPercent();
patternChars[PerMill] = icuSymbols.getPerMill();
patternChars[Exponent] = icuSymbols.getExponentSeparator().charAt(0);
- patternChars[MonetaryDecimalSeparator] = icuSymbols.getMonetaryDecimalSeparator();
+ patternChars[MonetaryDecimalSeparator] = icuSymbols
+ .getMonetaryDecimalSeparator();
patternChars[MinusSign] = icuSymbols.getMinusSign();
-
}
+
/**
* Returns a new {@code DecimalFormatSymbols} with the same symbols as this
* {@code DecimalFormatSymbols}.
@@ -554,4 +561,8 @@
Locale getLocale(){
return locale;
}
+
+ com.ibm.icu.text.DecimalFormatSymbols getIcuSymbols() {
+ return icuSymbols;
+ }
}
Modified: harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/NumberFormat.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/NumberFormat.java?rev=788016&r1=788015&r2=788016&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/NumberFormat.java (original)
+++ harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/NumberFormat.java Wed Jun 24 13:32:37 2009
@@ -494,7 +494,7 @@
com.ibm.icu.text.DecimalFormat icuFormat = (com.ibm.icu.text.DecimalFormat) com.ibm.icu.text.NumberFormat
.getPercentInstance(locale);
String pattern = icuFormat.toPattern();
- return new DecimalFormat(pattern, new DecimalFormatSymbols(locale));
+ return new DecimalFormat(pattern, new DecimalFormatSymbols(locale, icuFormat.getDecimalFormatSymbols()), icuFormat);
}
@Override
Modified: harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/SimpleDateFormat.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/SimpleDateFormat.java?rev=788016&r1=788015&r2=788016&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/SimpleDateFormat.java (original)
+++ harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/SimpleDateFormat.java Wed Jun 24 13:32:37 2009
@@ -328,7 +328,7 @@
this(Locale.getDefault());
icuFormat = new com.ibm.icu.text.SimpleDateFormat();
icuFormat.setTimeZone(com.ibm.icu.util.TimeZone.getTimeZone(tzId));
- pattern = (String)getInternalField("pattern",icuFormat);
+ pattern = (String)getInternalField("pattern", icuFormat); //$NON-NLS-1$
formatData = new DateFormatSymbols(Locale.getDefault());
}
@@ -482,14 +482,14 @@
icuFormat = new com.ibm.icu.text.SimpleDateFormat(template, locale);
icuFormat.setTimeZone(com.ibm.icu.util.TimeZone.getTimeZone(tzId));
pattern = template;
- formatData = new DateFormatSymbols(locale);
+ formatData = new DateFormatSymbols(locale, icuFormat.getDateFormatSymbols());
}
SimpleDateFormat(Locale locale, com.ibm.icu.text.SimpleDateFormat icuFormat){
this(locale);
this.icuFormat = icuFormat;
this.icuFormat.setTimeZone(com.ibm.icu.util.TimeZone.getTimeZone(tzId));
- pattern = (String)Format.getInternalField("pattern", icuFormat);
+ pattern = (String)Format.getInternalField("pattern", icuFormat); //$NON-NLS-1$
formatData = new DateFormatSymbols(locale);
}
@@ -527,7 +527,6 @@
* @throws IllegalArgumentException
* if the pattern is invalid.
*/
- @SuppressWarnings("nls")
public void applyPattern(String template) {
validatePattern(template);
/*