Stop modifying metadata in formatInOriginalFormat().
authorjia.shao.peng <jia.shao.peng@ee073f10-1060-11df-b6a4-87a95322a99c>
Mon, 23 Jan 2012 11:29:43 +0000 (11:29 +0000)
committerjia.shao.peng <jia.shao.peng@ee073f10-1060-11df-b6a4-87a95322a99c>
Mon, 23 Jan 2012 11:29:43 +0000 (11:29 +0000)
Bug: http://code.google.com/p/libphonenumber/issues/detail?id=91
Review URL: http://codereview.appspot.com/5573043

git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@420 ee073f10-1060-11df-b6a4-87a95322a99c

java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java

index 1ac3933..76212c6 100644 (file)
@@ -1449,9 +1449,11 @@ public class PhoneNumberUtil {
           break;
         }
         // Otherwise, we need to remove the national prefix from our output.
-        formatRule.clearNationalPrefixFormattingRule();
+        NumberFormat numFormatCopy = new NumberFormat();
+        numFormatCopy.mergeFrom(formatRule);
+        numFormatCopy.clearNationalPrefixFormattingRule();
         List<NumberFormat> numberFormats = new ArrayList<NumberFormat>(1);
-        numberFormats.add(formatRule);
+        numberFormats.add(numFormatCopy);
         formattedNumber = formatByPattern(number, PhoneNumberFormat.NATIONAL, numberFormats);
         break;
     }
index ea480c0..be62ef8 100644 (file)
@@ -823,6 +823,8 @@ public class PhoneNumberUtilTest extends TestCase {
         phoneUtil.parseAndKeepRawInput("2087654321", RegionCode.GB);
     assertEquals("20 8765 4321",
         phoneUtil.formatInOriginalFormat(numberWithoutNationalPrefixGB, RegionCode.GB));
+    // Make sure no metadata is modified as a result of the previous function call.
+    assertEquals("(020) 8765 4321", phoneUtil.formatInOriginalFormat(number5, RegionCode.GB));
 
     PhoneNumber numberWithNationalPrefixMX =
         phoneUtil.parseAndKeepRawInput("013312345678", RegionCode.MX);