Rollback simple/global currency pattern change because it broke some
other internal projects, will fix and re-submit soon.


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10745 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/i18n/client/CurrencyData.java b/user/src/com/google/gwt/i18n/client/CurrencyData.java
index a2dae16..0e286f5 100644
--- a/user/src/com/google/gwt/i18n/client/CurrencyData.java
+++ b/user/src/com/google/gwt/i18n/client/CurrencyData.java
@@ -43,13 +43,6 @@
   String getPortableCurrencySymbol();
 
   /**
-   * Returns the simplest symbol to use for this currency, which is not guaranteed
-   * to be unique -- for example, this might return "$" for both USD and CAD.  It
-   * is acceptable to return the same value as {@link #getCurrencySymbol()}.
-   */
-  String getSimpleCurrencySymbol();
-
-  /**
    * Returns true if this currency is deprecated and should not be returned by
    * default in currency lists.
    */
diff --git a/user/src/com/google/gwt/i18n/client/CurrencyList.java b/user/src/com/google/gwt/i18n/client/CurrencyList.java
index ad5a5a3..0dbf144 100644
--- a/user/src/com/google/gwt/i18n/client/CurrencyList.java
+++ b/user/src/com/google/gwt/i18n/client/CurrencyList.java
@@ -137,7 +137,6 @@
    * 
    * Deprecated currencies will not be included.
    */
-  @Override
   public final Iterator<CurrencyData> iterator() {
     return iterator(false);
   }
@@ -207,7 +206,7 @@
    * Generated implementations override this method.
    */
   protected CurrencyData getDefaultJava() {
-    return new CurrencyDataImpl("USD", "$", 2, "US$", "$");
+    return new CurrencyDataImpl("USD", "$", 2, "US$");
   }
 
   /**
@@ -226,10 +225,10 @@
    */
   protected HashMap<String, CurrencyData> loadCurrencyMapJava() {
     HashMap<String, CurrencyData> result = new HashMap<String, CurrencyData>();
-    result.put("USD", new CurrencyDataImpl("USD", "$", 2, "US$", "$"));
-    result.put("EUR", new CurrencyDataImpl("EUR", "€", 2, "€", "€"));
-    result.put("GBP", new CurrencyDataImpl("GBP", "UK£", 2, "UK£", "£"));
-    result.put("JPY", new CurrencyDataImpl("JPY", "¥", 0, "JP¥", "¥"));
+    result.put("USD", new CurrencyDataImpl("USD", "$", 2));
+    result.put("EUR", new CurrencyDataImpl("EUR", "€", 2));
+    result.put("GBP", new CurrencyDataImpl("GBP", "UK£", 2));
+    result.put("JPY", new CurrencyDataImpl("JPY", "¥", 0));
     return result;
   }
 
diff --git a/user/src/com/google/gwt/i18n/client/DefaultCurrencyData.java b/user/src/com/google/gwt/i18n/client/DefaultCurrencyData.java
index 05fbf79..23f7456 100644
--- a/user/src/com/google/gwt/i18n/client/DefaultCurrencyData.java
+++ b/user/src/com/google/gwt/i18n/client/DefaultCurrencyData.java
@@ -54,52 +54,38 @@
     this.fractionDigits = fractionDigits;
   }
 
-  @Override
   public String getCurrencyCode() {
     return currencyCode;
   }
 
-  @Override
   public String getCurrencySymbol() {
     return currencySymbol;
   }
 
-  @Override
   public int getDefaultFractionDigits() {
     return fractionDigits;
   }
 
-  @Override
   public String getPortableCurrencySymbol() {
     return getCurrencySymbol();
   }
 
-  @Override
-  public String getSimpleCurrencySymbol() {
-    return getCurrencySymbol();
-  }
-
-  @Override
   public boolean isDeprecated() {
     return false;
   }
 
-  @Override
   public boolean isSpaceForced() {
     return false;
   }
 
-  @Override
   public boolean isSpacingFixed() {
     return false;
   }
 
-  @Override
   public boolean isSymbolPositionFixed() {
     return false;
   }
 
-  @Override
   public boolean isSymbolPrefix() {
     return false;
   }
diff --git a/user/src/com/google/gwt/i18n/client/NumberFormat.java b/user/src/com/google/gwt/i18n/client/NumberFormat.java
index 5424ed3..c7c5ff6 100644
--- a/user/src/com/google/gwt/i18n/client/NumberFormat.java
+++ b/user/src/com/google/gwt/i18n/client/NumberFormat.java
@@ -321,17 +321,17 @@
   private static NumberFormat cachedPercentFormat;
   private static NumberFormat cachedScientificFormat;
 
-  // Constants for characters used in programmatic (unlocalized) patterns.
-  private static final char CURRENCY_SIGN = '\u00A4';
-
   // Number constants mapped to use latin digits/separators.
   private static NumberConstants latinNumberConstants = null;
+
   // Localized characters for dot and comma in number patterns, used to produce
   // the latin mapping for arbitrary locales.  Any separator not in either of
   // these strings will be mapped to non-breaking space (U+00A0).
   private static final String LOCALIZED_COMMA_EQUIVALENTS = ",\u060C\u066B\u3001\uFE10\uFE11\uFE50\uFE51\uFF0C\uFF64";
-
   private static final String LOCALIZED_DOT_EQUIVALENTS = ".\u2024\u3002\uFE12\uFE52\uFF0E\uFF61";
+
+  // Constants for characters used in programmatic (unlocalized) patterns.
+  private static final char CURRENCY_SIGN = '\u00A4';
   private static final char PATTERN_DECIMAL_SEPARATOR = '.';
   private static final char PATTERN_DIGIT = '#';
   private static final char PATTERN_EXPONENT = 'E';
@@ -353,25 +353,26 @@
   }
 
   /**
-   * Provides the standard currency format for the current locale.
+   * Provides the standard currency format for the default locale.
    *
    * @return a <code>NumberFormat</code> capable of producing and consuming
    *         currency format for the default locale
    */
   public static NumberFormat getCurrencyFormat() {
     if (cachedCurrencyFormat == null) {
-      cachedCurrencyFormat = getCurrencyFormat(CurrencyList.get().getDefault());
+      cachedCurrencyFormat = new NumberFormat(
+          defaultNumberConstants.currencyPattern(), CurrencyList.get().getDefault(), false);
     }
     return cachedCurrencyFormat;
   }
 
   /**
-   * Provides the standard currency format for the current locale using a
+   * Provides the standard currency format for the default locale using a
    * specified currency.
    *
    * @param currencyData currency data to use
    * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
+   *         currency format for the default locale
    */
   public static NumberFormat getCurrencyFormat(CurrencyData currencyData) {
     return new NumberFormat(defaultNumberConstants.currencyPattern(),
@@ -379,20 +380,21 @@
   }
 
   /**
-   * Provides the standard currency format for the current locale using a
+   * Provides the standard currency format for the default locale using a
    * specified currency.
    *
    * @param currencyCode valid currency code, as defined in
    *     com.google.gwt.i18n.client.constants.CurrencyCodeMapConstants.properties
    * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
+   *         currency format for the default locale
    * @throws IllegalArgumentException if the currency code is unknown
    */
   public static NumberFormat getCurrencyFormat(String currencyCode) {
-    return getCurrencyFormat(lookupCurrency(currencyCode));
+    // TODO(jat): consider caching values per currency code.
+    return new NumberFormat(defaultNumberConstants.currencyPattern(),
+        lookupCurrency(currencyCode), false);
   }
 
-
   /**
    * Provides the standard decimal format for the default locale.
    *
@@ -449,44 +451,6 @@
   }
 
   /**
-   * Provides the global currency format for the current locale, using its
-   * default currency.
-   * 
-   * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
-   */
-  public static NumberFormat getGlobalCurrencyFormat() {
-    return getGlobalCurrencyFormat(CurrencyList.get().getDefault());
-  }
-
-  /**
-   * Provides the global currency format for the current locale, using a
-   * specified currency.
-   *
-   * @param currencyData currency data to use
-   * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
-   */
-  public static NumberFormat getGlobalCurrencyFormat(CurrencyData currencyData) {
-    return new NumberFormat(defaultNumberConstants.globalCurrencyPattern(),
-        currencyData, false);
-  }
-  
-  /**
-   * Provides the global currency format for the current locale, using a
-   * specified currency.
-   *
-   * @param currencyCode valid currency code, as defined in
-   *     com.google.gwt.i18n.client.constants.CurrencyCodeMapConstants.properties
-   * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
-   * @throws IllegalArgumentException if the currency code is unknown
-   */
-  public static NumberFormat getGlobalCurrencyFormat(String currencyCode) {
-    return getGlobalCurrencyFormat(lookupCurrency(currencyCode));
-  }
-
-  /**
    * Provides the standard percent format for the default locale.
    *
    * @return a <code>NumberFormat</code> capable of producing and consuming
@@ -517,48 +481,6 @@
   }
 
   /**
-   * Provides the simple currency format for the current locale using its
-   * default currency. Note that these formats may be ambiguous if the
-   * currency isn't clear from other content on the page.
-   *
-   * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
-   */
-  public static NumberFormat getSimpleCurrencyFormat() {
-    return getSimpleCurrencyFormat(CurrencyList.get().getDefault());
-  }
-
-  /**
-   * Provides the simple currency format for the current locale using a
-   * specified currency. Note that these formats may be ambiguous if the
-   * currency isn't clear from other content on the page.
-   *
-   * @param currencyData currency data to use
-   * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
-   */
-  public static NumberFormat getSimpleCurrencyFormat(CurrencyData currencyData) {
-    return new NumberFormat(defaultNumberConstants.simpleCurrencyPattern(),
-        currencyData, false);
-  }
-
-  /**
-   * Provides the simple currency format for the current locale using a
-   * specified currency. Note that these formats may be ambiguous if the
-   * currency isn't clear from other content on the page.
-   * 
-   * @param currencyCode valid currency code, as defined in
-   *        com.google.gwt.i18n.client
-   *        .constants.CurrencyCodeMapConstants.properties
-   * @return a <code>NumberFormat</code> capable of producing and consuming
-   *         currency format for the current locale
-   * @throws IllegalArgumentException if the currency code is unknown
-   */
-  public static NumberFormat getSimpleCurrencyFormat(String currencyCode) {
-    return getSimpleCurrencyFormat(lookupCurrency(currencyCode));
-  }
-
-  /**
    * Specify whether all new NumberFormat instances will use latin digits
    * and related characters rather than the localized ones.
    *
@@ -601,97 +523,70 @@
     final String monetarySeparator = remapSeparator(
         orig.monetarySeparator());
     return new NumberConstants() {
-      @Override
       public String currencyPattern() {
         return orig.currencyPattern();
       }
 
-      @Override
       public String decimalPattern() {
         return orig.decimalPattern();
       }
 
-      @Override
       public String decimalSeparator() {
         return decimalSeparator;
       }
 
-      @Override
       public String defCurrencyCode() {
         return orig.defCurrencyCode();
       }
 
-      @Override
       public String exponentialSymbol() {
         return orig.exponentialSymbol();
       }
 
-      @Override
-      public String globalCurrencyPattern() {
-        return orig.globalCurrencyPattern();
-      }
-
-      @Override
       public String groupingSeparator() {
         return groupingSeparator;
       }
 
-      @Override
       public String infinity() {
         return orig.infinity();
       }
 
-      @Override
       public String minusSign() {
         return orig.minusSign();
       }
 
-      @Override
       public String monetaryGroupingSeparator() {
         return monetaryGroupingSeparator;
       }
 
-      @Override
       public String monetarySeparator() {
         return monetarySeparator;
       }
 
-      @Override
       public String notANumber() {
         return orig.notANumber();
       }
 
-      @Override
       public String percent() {
         return orig.percent();
       }
 
-      @Override
       public String percentPattern() {
         return orig.percentPattern();
       }
 
-      @Override
       public String perMill() {
         return orig.perMill();
       }
 
-      @Override
       public String plusSign() {
         return orig.plusSign();
       }
 
-      @Override
       public String scientificPattern() {
         return orig.scientificPattern();
       }
 
-      @Override
-      public String simpleCurrencyPattern() {
-        return orig.simpleCurrencyPattern();
-      }
-
-      @Override
       public String zeroDigit() {
         return "0";
       }
@@ -786,15 +681,14 @@
   }-*/;
 
   /**
-   * Information about the currency being used.
+   * The currency code.
    */
-  private CurrencyData currencyData;
+  private final String currencyCode;
 
   /**
-   * Holds the current decimal position during one call to
-   * {@link #format(boolean, StringBuilder, int)}.
+   * Currency symbol to use.
    */
-  private transient int decimalPosition;
+  private final String currencySymbol;
 
   /**
    * Forces the decimal separator to always appear in a formatted number.
@@ -802,30 +696,18 @@
   private boolean decimalSeparatorAlwaysShown = false;
 
   /**
-   * Holds the current digits length during one call to
-   * {@link #format(boolean, StringBuilder, int)}.
-   */
-  private transient int digitsLength;
-
-  /**
-   * Holds the current exponent during one call to
-   * {@link #format(boolean, StringBuilder, int)}.
-   */
-  private transient int exponent;
-  /**
    * The number of digits between grouping separators in the integer portion of
    * a number.
    */
   private int groupingSize = 3;
+
   private boolean isCurrencyFormat = false;
+
   private int maximumFractionDigits = 3; // invariant, >= minFractionDigits.
 
   private int maximumIntegerDigits = 40;
-
   private int minExponentDigits;
-
   private int minimumFractionDigits = 0;
-
   private int minimumIntegerDigits = 1;
 
   // The multiplier for use in percent, per mille, etc.
@@ -849,6 +731,24 @@
   private boolean useExponentialNotation = false;
 
   /**
+   * Holds the current exponent during one call to
+   * {@link #format(boolean, StringBuilder, int)}.
+   */
+  private transient int exponent;
+
+  /**
+   * Holds the current decimal position during one call to
+   * {@link #format(boolean, StringBuilder, int)}.
+   */
+  private transient int decimalPosition;
+
+  /**
+   * Holds the current digits length during one call to
+   * {@link #format(boolean, StringBuilder, int)}.
+   */
+  private transient int digitsLength;
+
+  /**
    * Constructs a format object based on the specified settings.
    *
    * @param numberConstants the locale-specific number constants to use for this
@@ -867,12 +767,13 @@
     }
     this.numberConstants = numberConstants;
     this.pattern = pattern;
-    currencyData = cdata;
+    currencyCode = cdata.getCurrencyCode();
+    currencySymbol = cdata.getCurrencySymbol();
 
     // TODO: handle per-currency flags, such as symbol prefix/suffix and spacing
     parsePattern(this.pattern);
     if (!userSuppliedPattern && isCurrencyFormat) {
-      minimumFractionDigits = currencyData.getDefaultFractionDigits();
+      minimumFractionDigits = cdata.getDefaultFractionDigits();
       maximumFractionDigits = minimumFractionDigits;
     }
   }
@@ -1467,15 +1368,9 @@
             isCurrencyFormat = true;
             if ((pos + 1) < len && pattern.charAt(pos + 1) == CURRENCY_SIGN) {
               ++pos;
-              if (pos < len - 3 && pattern.charAt(pos + 1) == CURRENCY_SIGN
-                  && pattern.charAt(pos + 2) == CURRENCY_SIGN) {
-                pos += 2;
-                affix.append(currencyData.getSimpleCurrencySymbol());
-              } else {
-                affix.append(currencyData.getCurrencyCode());
-              }
+              affix.append(currencyCode);
             } else {
-              affix.append(currencyData.getCurrencySymbol());
+              affix.append(currencySymbol);
             }
             break;
           case PATTERN_PERCENT:
diff --git a/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties b/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties
index 35c09a4..00e0b1c 100644
--- a/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties
+++ b/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties
@@ -13,7 +13,7 @@
 # the License.
 
 # This file contains additional data about currencies which are not included in
-# the CLDR data.  Currently, this file contains four fields separated by "|".
+# the CLDR data.  Currently, this file contains three fields separated by "|".
 # Empty trailing fields can be omitted along with their separators.
 #
 # The first field is a "portable" currency symbol, which is intended to be
@@ -33,160 +33,52 @@
 #
 # The third field overrides the CLDR-derived currency symbol if present.
 #
-# The fourth field is the simple currency symbol, if present.
-#
 # The following were set to 10 originally, which is POSITION_FLAG without
 # POS_FIXED_FLAG.  As I understand the code, this would have no effect.
 #  CZK DKK EUR ILS ISK NOK RUB SEK
-AED = DH|||dh
-AFN = |||Af.
-ALL = |||Lek
-AMD = |||Dram
-AOA = |||Kz
-ARS = AR$|||$
-AUD = AU$|||$
-AWG = |||Afl.
-AZN = |||man.
-BAM = |||KM
-BBD = |||$
-BDT = Tk|||\u09F3
-BIF = |||FBu
-BGN = |||lev
-BHD = |||din
-BMD = |||$
-BND = |||$
-BOB = |||Bs
-BRL = R$|||R$
-BSD = |||$
-BTN = |||Nu.
-BWP = |||P
-BYR = |||BYR
-BZD = |||$
-CAD = C$|||$
-CDF = |||FrCD
-CHF = CHF|||CHF
-CLP = CL$|||$
-CNY = RMB¥|||¥
-COP = COL$|||$
-CRC = CR₡|||\u20A1
-CUC = |||$
-CUP = $MN|||$
-CVE = |||CVE
-CZK = Kč|||K\u010D
-DJF = Fdj
-DKK = kr|||kr
-DOP = RD$|||$
-DZD = |||din
-EGP = LE|||E£
-ERN = |||Nfk
-ETB = |||Birr
-EUR = €|||\u20AC
-FJD = |||$
-FKP = |||£
-GBP = GB£|||£
-GEL = |||GEL
-GHS = |||GHS
-GIP = |||£
-GMD = |||GMD
-GNF = |||FG
-GTQ = |||Q
-GYD = |||$
-HKD = HK$|||$
-HNL = ||L
-HRK = |||kn
-HTG = |||HTG
-HUF = |||Ft
-IDR = |||Rp
-ILS = IL₪|||\u20AA
-INR = Rs|||\u20B9
-IQD = |||din
-IRR = |||Rial
-ISK = kr|||kr
-JMD = JA$|||$
-JOD = |||din
-JPY = JP¥|||¥
-KES = Ksh
-KGS = |||KGS
-KHR = |||Riel
-KMF = |||CF
-KPW = |||\u20A9
-KRW = KR₩|||\u20A9
-KWD = |||din
-KYD = |||$
-KZT = |||\u20B8
-LAK = |||\u20AD
-LBP = |||L£
-LKR = SLRs|||Rs
-LRD = |||$
-LSL = |||LSL
-LTL = |||Lt
-LVL = |||Ls
-LYD = |||din
-MDL = |||MDL
-MKD = |||dh
-MGA = |||Ar
-MKD = |||din
-MMK = |||K
-MNT = MN₮|||\u20AE
-MOP = |||MOP
-MRO = |||MRO
-MUR = |||Rs
-MWK = |||MWK
-MXN = Mex$|||$
-MYR = RM|||RM
-MZN = |||MTn
-NAD = |||$
-NIO = |||C$
-NGN = |||\u20A6
-NOK = NOkr|||kr
-NPR = |||Rs
-NZD = |||$
-OMR = |||Rial
-PAB = B/.|||B/.
-PEN = S/.|||S/.
-PHP = PHP|||\u20B1
-PKR = PKRs.|||Rs
-PLN = |||z\u0142
-PYG = |||Gs
-QAR = |||Rial
-RON = |||RON
-RSD = |||din
-RUB = руб|||Rup
-RWF = |||RF
-SAR = SR|||Rial
-SBD = |||$
-SCR = |||SCR
-SDG = |||SDG
-SEK = kr|||kr
-SGD = S$|||$
-SHP = |||£
-SLL = |||SLL
-SOS = |||SOS
-SRD = |||$
-STD = |||Db
-SYP = |||£
-SZL = |||SZL
-THB = THB|||\u0E3F
-TJS = |||Som
-TND = |||din
-TOP = |||T$
+AED = DH
+ARS = AR$
+AUD = AU$
+BDT = Tk
+BRL = R$
+CAD = C$
+CHF = CHF
+CLP = CL$
+CNY = RMB¥
+COP = COL$
+CRC = CR₡
+CUP = $MN
+CZK = Kč
+DKK = kr
+DOP = RD$
+EGP = LE
+EUR = €
+GBP = GB£
+HKD = HK$
+ILS = IL₪
+INR = Rs
+ISK = kr
+JMD = JA$
+JPY = JP¥
+KRW = KR₩
+LKR = SLRs
+MNT = MN₮
+MXN = Mex$
+MYR = RM
+NOK = NOkr
+PAB = B/.
+PEN = S/.
+PHP = PHP
+PKR = PKRs.
+RUB = руб
+SAR = SR
+SEK = kr
+SGD = S$
+THB = THB
 TRY = YTL
-TTD = |||$
-TWD = NT$|||NT$
-TZS = |||TSh
-UAH = |||\u20B4
-UGX = |||UGX
-USD = US$|||$
-UYU = UY$|||$
-UZS = |||so\u02BCm
-VEF = |||Bs
-VND = ₫|SymSuffix||\u20AB
-VUV = |||VUV
-WST = |||WST
-XAF = |||FCFA
-XCD = |||$
-XOF = |||CFA
-XPF = |||FCFP
-YER = YER|||Rial
-ZAR = ZAR|||R
-ZMK = |||ZWK
+TWD = NT$
+USD = US$
+UYU = UY$
+VND = ₫|SymSuffix
+YER = YER
+ZAR = ZAR
diff --git a/user/src/com/google/gwt/i18n/client/constants/NumberConstants.java b/user/src/com/google/gwt/i18n/client/constants/NumberConstants.java
index aa1a55f..d7c2b8b 100644
--- a/user/src/com/google/gwt/i18n/client/constants/NumberConstants.java
+++ b/user/src/com/google/gwt/i18n/client/constants/NumberConstants.java
@@ -28,23 +28,21 @@
  * use LocaleInfo.getCurrentLocale().getNumberConstants() instead.
  */
 public interface NumberConstants {
-  String notANumber();
-  String currencyPattern();
-  String decimalPattern();
-  String decimalSeparator();
-  String defCurrencyCode();
-  String exponentialSymbol();
-  String globalCurrencyPattern();
-  String groupingSeparator();
-  String infinity();
-  String minusSign();
-  String monetaryGroupingSeparator();
-  String monetarySeparator();
-  String percent();
-  String percentPattern();
-  String perMill();
-  String plusSign();
-  String scientificPattern();
-  String simpleCurrencyPattern();
-  String zeroDigit();
+  String   notANumber();
+  String   currencyPattern();
+  String   decimalPattern();
+  String   decimalSeparator();
+  String   defCurrencyCode();
+  String   exponentialSymbol();
+  String   groupingSeparator();
+  String   infinity();
+  String   minusSign();
+  String   monetaryGroupingSeparator();
+  String   monetarySeparator();
+  String   percent();
+  String   percentPattern();
+  String   perMill();
+  String   plusSign();
+  String   scientificPattern();
+  String   zeroDigit();
 }
diff --git a/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.java b/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.java
index 0c5e294..2fd1b77 100644
--- a/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.java
+++ b/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.java
@@ -27,60 +27,21 @@
  * locale. 
  */
 public interface NumberConstantsImpl extends Constants, NumberConstants  {
-  @Override
-  String notANumber();
-
-  @Override
-  String currencyPattern();
-
-  @Override
-  String decimalPattern();
-
-  @Override
-  String decimalSeparator();
-
-  @Override
-  String defCurrencyCode();
-
-  @Override
-  String exponentialSymbol();
-
-  @Override
-  String globalCurrencyPattern();
-
-  @Override
-  String groupingSeparator();
-
-  @Override
-  String infinity();
-
-  @Override
-  String minusSign();
-
-  @Override
-  String monetaryGroupingSeparator();
-
-  @Override
-  String monetarySeparator();
-
-  @Override
-  String percent();
-
-  @Override
-  String percentPattern();
-
-  @Override
-  String perMill();
-
-  @Override
-  String plusSign();
-
-  @Override
-  String scientificPattern();
-
-  @Override
-  String simpleCurrencyPattern();
-
-  @Override
-  String zeroDigit();
+  String   notANumber();
+  String   currencyPattern();
+  String   decimalPattern();
+  String   decimalSeparator();
+  String   defCurrencyCode();
+  String   exponentialSymbol();
+  String   groupingSeparator();
+  String   infinity();
+  String   minusSign();
+  String   monetaryGroupingSeparator();
+  String   monetarySeparator();
+  String   percent();
+  String   percentPattern();
+  String   perMill();
+  String   plusSign();
+  String   scientificPattern();
+  String   zeroDigit();
 }
diff --git a/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.properties b/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.properties
index e8a9abe..a971da3 100644
--- a/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.properties
+++ b/user/src/com/google/gwt/i18n/client/constants/NumberConstantsImpl.properties
@@ -1,6 +1,5 @@
 # This file is generated from CLDR ver 1.7.1
 decimalSeparator = .
-globalCurrencyPattern = \u00A4\u00A4\u00A4\u00A4#,##0.00 \u00A4\u00A4;(\u00A4\u00A4\u00A4\u00A4#,##0.00 \u00A4\u00A4)
 groupingSeparator = ,
 percent = %
 zeroDigit = 0
@@ -14,7 +13,6 @@
 monetaryGroupingSeparator = ,
 decimalPattern = #,##0.###
 scientificPattern = #E0
-simpleCurrencyPattern = \u00A4\u00A4\u00A4\u00A4#,##0.00;(\u00A4\u00A4\u00A4\u00A4#,##0.00)
 percentPattern = #,##0%
 currencyPattern = \u00A4#,##0.00;(\u00A4#,##0.00)
 defCurrencyCode = USD
diff --git a/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java b/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java
index 6716e02..92ec8ab 100644
--- a/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java
+++ b/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java
@@ -71,41 +71,25 @@
   private final int flagsAndPrecision;
 
   /**
-   * Portable currency symbol, may be the same as {@link #getCurrencySymbol()}.
+   * Portable currency symbol, may be the same as {@link #currencySymbol}.
    */
   private final String portableCurrencySymbol;
 
   /**
-   * Simple currency symbol, may be the same as {@link #getCurrencySymbol()}.
-   */
-  private final String simpleCurrencySymbol;
-
-  /**
    * Create a new CurrencyData whose portable symbol is the same as its local
    * symbol.
    */
-  public CurrencyDataImpl(String currencyCode, String currencySymbol, int flagsAndPrecision) {
-    this(currencyCode, currencySymbol, flagsAndPrecision, null, null);
-  }
-
-  /**
-   * Create a new CurrencyData whose portable symbol is the same as its local
-   * symbol.
-   */
-  public CurrencyDataImpl(String currencyCode, String currencySymbol, int flagsAndPrecision,
-      String portableCurrencySymbol) {
-    this(currencyCode, currencySymbol, flagsAndPrecision, portableCurrencySymbol, null);
+  public CurrencyDataImpl(String currencyCode, String currencySymbol,
+      int flagsAndPrecision) {
+    this(currencyCode, currencySymbol, flagsAndPrecision, currencySymbol);
   }
 
   public CurrencyDataImpl(String currencyCode, String currencySymbol,
-      int flagsAndPrecision, String portableCurrencySymbol, String simpleCurrencySymbol) {
+      int flagsAndPrecision, String portableCurrencySymbol) {
     super(currencyCode, currencySymbol,
         getDefaultFractionDigits(flagsAndPrecision));
     this.flagsAndPrecision = flagsAndPrecision;
-    this.portableCurrencySymbol = portableCurrencySymbol == null ? currencySymbol
-        : portableCurrencySymbol;
-    this.simpleCurrencySymbol = simpleCurrencySymbol == null ? currencySymbol
-        : simpleCurrencySymbol;
+    this.portableCurrencySymbol = portableCurrencySymbol;
   }
 
   @Override
@@ -119,11 +103,6 @@
   }
 
   @Override
-  public String getSimpleCurrencySymbol() {
-    return simpleCurrencySymbol;
-  }
-
-  @Override
   public boolean isDeprecated() {
     return isDeprecated(flagsAndPrecision);
   }
diff --git a/user/src/com/google/gwt/i18n/client/impl/CurrencyDataJso.java b/user/src/com/google/gwt/i18n/client/impl/CurrencyDataJso.java
index 8b3ca62..865335b 100644
--- a/user/src/com/google/gwt/i18n/client/impl/CurrencyDataJso.java
+++ b/user/src/com/google/gwt/i18n/client/impl/CurrencyDataJso.java
@@ -32,7 +32,6 @@
  *       d5:    space is forced, 0=no space present
  *       d6:    spacing around currency symbol is based on d5
  *   3 - portable currency symbol (optional)
- *   4 - simple currency symbol (optional)
  * </pre>
  */
 public final class CurrencyDataJso extends JavaScriptObject implements CurrencyData {
@@ -40,52 +39,38 @@
   protected CurrencyDataJso() {
   }
 
-  @Override
   public native String getCurrencyCode() /*-{
     return this[0];
   }-*/;
 
-  @Override
   public native String getCurrencySymbol() /*-{
     return this[1];
   }-*/;
 
-  @Override
   public int getDefaultFractionDigits() {
     return CurrencyDataImpl.getDefaultFractionDigits(getFlagsAndPrecision());
   }
 
-  @Override
   public native String getPortableCurrencySymbol() /*-{
     return this[3] || this[1];
   }-*/;
 
-  @Override
-  public native String getSimpleCurrencySymbol() /*-{
-    return this[4] || this[1];
-  }-*/;
-
-  @Override
   public boolean isDeprecated() {
     return CurrencyDataImpl.isDeprecated(getFlagsAndPrecision());
   }
 
-  @Override
   public boolean isSpaceForced() {
     return CurrencyDataImpl.isSpaceForced(getFlagsAndPrecision());
   }
 
-  @Override
   public boolean isSpacingFixed() {
     return CurrencyDataImpl.isSpacingFixed(getFlagsAndPrecision());
   }
 
-  @Override
   public boolean isSymbolPositionFixed() {
     return CurrencyDataImpl.isSymbolPositionFixed(getFlagsAndPrecision());
   }
 
-  @Override
   public boolean isSymbolPrefix() {
     return CurrencyDataImpl.isSymbolPrefix(getFlagsAndPrecision());
   }
diff --git a/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java b/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java
index 214e1bb..a6a9cef 100644
--- a/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java
+++ b/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java
@@ -74,8 +74,6 @@
 
     private final String symbol;
 
-    private String simpleSymbol;
-
     /**
      * Create an instance.
      * 
@@ -125,7 +123,6 @@
       String[] currencySplit = SPLIT_VERTICALBAR.split(currencyData);
       String currencyDisplay = currencySplit[0];
       String currencySymbol = null;
-      String simpleCurrencySymbol = null;
       if (currencySplit.length > 1 && currencySplit[1].length() > 0) {
         currencySymbol = currencySplit[1];
       }
@@ -148,7 +145,6 @@
         // 1 - space-separated flags regarding currency symbol
         // positioning/spacing
         // 2 - override of CLDR-derived currency symbol
-        // 3 - simple currency symbol
         String[] extraSplit = SPLIT_VERTICALBAR.split(extraData);
         currencyPortableSymbol = extraSplit[0];
         if (extraSplit.length > 1) {
@@ -170,11 +166,6 @@
         if (extraSplit.length > 2 && extraSplit[2].length() > 0) {
           currencySymbol = extraSplit[2];
         }
-        // If a non-empty simple symbol is supplied, use it for the currency
-        // symbol.
-        if (extraSplit.length > 3 && extraSplit[3].length() > 0) {
-          simpleCurrencySymbol = extraSplit[3];
-        }
         // If we don't have a currency symbol yet, use the portable symbol if
         // supplied.
         if (currencySymbol == null && currencyPortableSymbol.length() > 0) {
@@ -185,17 +176,10 @@
       if (currencySymbol == null) {
         currencySymbol = currencyCode;
       }
-      if (currencyPortableSymbol.length() == 0) {
-        currencyPortableSymbol = currencySymbol;
-      }
-      if (simpleCurrencySymbol == null) {
-        simpleCurrencySymbol = currencySymbol;
-      }
       displayName = currencyDisplay;
       symbol = currencySymbol;
       flags = currencyFlags;
       portableSymbol = currencyPortableSymbol;
-      simpleSymbol = simpleCurrencySymbol;
       obsolete = currencyObsolete;
     }
 
@@ -203,12 +187,17 @@
       return displayName;
     }
 
+    public int getFlags() {
+      return flags;
+    }
+
     public String getJava() {
       StringBuilder buf = new StringBuilder();
       buf.append("new CurrencyDataImpl(\"").append(quote(code)).append("\", \"");
       buf.append(quote(symbol)).append("\", ").append(flags);
-      buf.append(", \"").append(quote(portableSymbol)).append('\"');
-      buf.append(", \"").append(quote(simpleSymbol)).append('\"');
+      if (portableSymbol.length() > 0) {
+        buf.append(", \"").append(quote(portableSymbol)).append('\"');
+      }
       return buf.append(')').toString();
     }
 
@@ -216,10 +205,19 @@
       StringBuilder buf = new StringBuilder();
       buf.append("[ \"").append(quote(code)).append("\", \"");
       buf.append(quote(symbol)).append("\", ").append(flags);
-      buf.append(", \"").append(quote(portableSymbol)).append('\"');
-      buf.append(", \"").append(quote(simpleSymbol)).append('\"');
+      if (portableSymbol.length() > 0) {
+        buf.append(", \"").append(quote(portableSymbol)).append('\"');
+      }
       return buf.append(']').toString();
     }
+
+    public String getSymbol() {
+      return symbol;
+    }
+
+    public boolean isObsolete() {
+      return obsolete;
+    }
   }
 
   private static final String CURRENCY_DATA = CurrencyDataImpl.class.getCanonicalName();
@@ -669,11 +667,12 @@
    * If no new currency data is added for this locale over its superclass, the
    * method is omitted entirely.
    * 
+   * @param allCurrencyData map of currency codes to currency data for the
+   *          current locale, including all inherited currencies data
+   * @param className name of the class we are generating
    * @param writer SourceWriter instance to use for writing the class
    * @param currencies array of valid currency names in the order they should be
    *          listed
-   * @param allCurrencyData map of currency codes to currency data for the
-   *          current locale, including all inherited currencies data
    */
   private void writeCurrencyMethodJava(SourceWriter writer,
       String[] currencies, Map<String, CurrencyInfo> allCurrencyData) {
@@ -708,11 +707,12 @@
    * If no new currency data is added for this locale over its superclass, the
    * method is omitted entirely.
    * 
+   * @param allCurrencyData map of currency codes to currency data for the
+   *          current locale, including all inherited currencies data
+   * @param className name of the class we are generating
    * @param writer SourceWriter instance to use for writing the class
    * @param currencies array of valid currency names in the order they should be
    *          listed
-   * @param allCurrencyData map of currency codes to currency data for the
-   *          current locale, including all inherited currencies data
    */
   private void writeCurrencyMethodNative(SourceWriter writer,
       String[] currencies, Map<String, CurrencyInfo> allCurrencyData) {
@@ -754,11 +754,10 @@
    * If no new names are added for this locale over its superclass, the method
    * is omitted entirely.
    * 
+   * @param className name of the class we are generating
    * @param writer SourceWriter instance to use for writing the class
    * @param currencies array of valid currency names in the order they should be
    *          listed
-   * @param allCurrencyData map of currency codes to currency data for the
-   *          current locale, including all inherited currencies data
    */
   private void writeNamesMethodJava(SourceWriter writer, String[] currencies,
       Map<String, CurrencyInfo> allCurrencyData) {
@@ -794,11 +793,10 @@
    * If no new names are added for this locale over its superclass, the method
    * is omitted entirely.
    * 
+   * @param className name of the class we are generating
    * @param writer SourceWriter instance to use for writing the class
    * @param currencies array of valid currency names in the order they should be
    *          listed
-   * @param allCurrencyData map of currency codes to currency data for the
-   *          current locale, including all inherited currencies data
    */
   private void writeNamesMethodNative(SourceWriter writer, String[] currencies,
       Map<String, CurrencyInfo> allCurrencyData) {
diff --git a/user/test/com/google/gwt/i18n/client/NumberFormat_en_Test.java b/user/test/com/google/gwt/i18n/client/NumberFormat_en_Test.java
index f69c5cd..3769508 100644
--- a/user/test/com/google/gwt/i18n/client/NumberFormat_en_Test.java
+++ b/user/test/com/google/gwt/i18n/client/NumberFormat_en_Test.java
@@ -124,34 +124,6 @@
     formatter = NumberFormat.getCurrencyFormat("ITL");
     str = formatter.format(1234.556);
     assertEquals("IT₤1,235", str);
-
-    // Test simple currency formatting
-    str = NumberFormat.getSimpleCurrencyFormat().format(1234.75);
-    assertEquals("$1,234.75", str);
-    str = NumberFormat.getSimpleCurrencyFormat().format(-1234.75);
-    assertEquals("($1,234.75)", str);
-    str = NumberFormat.getSimpleCurrencyFormat("CAD").format(1234.75);
-    assertEquals("$1,234.75", str);
-    str = NumberFormat.getSimpleCurrencyFormat("AUD").format(1234.75);
-    assertEquals("$1,234.75", str);
-    str = NumberFormat.getSimpleCurrencyFormat("JPY").format(1234.75);
-    assertEquals("¥1,235", str);
-    str = NumberFormat.getSimpleCurrencyFormat("CNY").format(1234.75);
-    assertEquals("¥1,234.75", str);
-
-    // Test global currency formatting
-    str = NumberFormat.getGlobalCurrencyFormat().format(1234.75);
-    assertEquals("$1,234.75 USD", str);
-    str = NumberFormat.getGlobalCurrencyFormat().format(-1234.75);
-    assertEquals("($1,234.75 USD)", str);
-    str = NumberFormat.getGlobalCurrencyFormat("CAD").format(1234.75);
-    assertEquals("$1,234.75 CAD", str);
-    str = NumberFormat.getGlobalCurrencyFormat("AUD").format(1234.75);
-    assertEquals("$1,234.75 AUD", str);
-    str = NumberFormat.getGlobalCurrencyFormat("JPY").format(1234.75);
-    assertEquals("¥1,235 JPY", str);
-    str = NumberFormat.getGlobalCurrencyFormat("CNY").format(1234.75);
-    assertEquals("¥1,234.75 CNY", str);
   }
 
   public void testExponential() {