You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gh...@apache.org on 2006/04/19 16:33:30 UTC

svn commit: r395251 - in /incubator/harmony/enhanced/classlib/trunk/modules/text: make/common/ src/main/java/java/text/ src/test/java/tests/api/java/text/ src/test/resources/serialization/ src/test/resources/serialization/java/ src/test/resources/seria...

Author: gharley
Date: Wed Apr 19 07:33:27 2006
New Revision: 395251

URL: http://svn.apache.org/viewcvs?rev=395251&view=rev
Log:
HARMONY-349 : currency field of DecimalFormatSymbols is not deserialized properly

Added:
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/java/
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/java/text/
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/java/text/DecimalFormatSymbols.ser   (with props)
Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/build.xml
    incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/hyproperties.xml
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/AllTests.java
    incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/DecimalFormatSymbolsTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/build.xml
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/build.xml?rev=395251&r1=395250&r2=395251&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/build.xml (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/build.xml Wed Apr 19 07:33:27 2006
@@ -45,7 +45,7 @@
 	</target>
 
 	
-	<target name="compile.tests">
+	<target name="compile.tests" depends="copy.test.resources">
 		<echo message="Compiling TEXT tests from ${hy.text.src.test.java}" />
 
 		<mkdir dir="${hy.text.bin.test}" />
@@ -62,7 +62,7 @@
 					<include name="**/*.jar" />
 				</fileset>
 			</bootclasspath>
-                        <classpath location="../../../../build/tests" />
+            <classpath location="${hy.tests.support.bin}" />
 		</javac>
 	</target>
 
@@ -89,7 +89,7 @@
 			<classpath>
 				<pathelement path="${hy.text.bin.test}"/>
 			</classpath>
-            <classpath location="../../../../build/tests" />	
+            <classpath location="${hy.tests.support.bin}" />	
 
 			<formatter type="xml" />
 
@@ -125,5 +125,15 @@
 	<target name="copy.resources">
 		<!-- Nothing for TEXT -->
 	</target>
+	
+	<target name="copy.test.resources">
+		<mkdir dir="${hy.text.bin.test}" />
+        <copy todir="${hy.text.bin.test}" includeemptydirs="false">
+            <fileset dir="${hy.text.src.test.resources}">
+                <exclude name="**/*.java" />
+            </fileset>
+        </copy>
+	</target>	
+	
 </project>
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/hyproperties.xml
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/hyproperties.xml?rev=395251&r1=395250&r2=395251&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/hyproperties.xml (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/make/common/hyproperties.xml Wed Apr 19 07:33:27 2006
@@ -40,5 +40,8 @@
 
    <tests>
       <reports location="../../build/test_report" />
+      <support>
+          <bin location="../../build/tests" />
+      </support>
    </tests>
 </hy>

Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java?rev=395251&r1=395250&r2=395251&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/DecimalFormatSymbols.java Wed Apr 19 07:33:27 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -476,7 +476,8 @@
 			new ObjectStreamField("percent", Character.TYPE),
 			new ObjectStreamField("perMill", Character.TYPE),
 			new ObjectStreamField("serialVersionOnStream", Integer.TYPE),
-			new ObjectStreamField("zeroDigit", Character.TYPE), };
+			new ObjectStreamField("zeroDigit", Character.TYPE),
+			new ObjectStreamField("locale", Locale.class),};
 
 	private void writeObject(ObjectOutputStream stream) throws IOException {
 		ObjectOutputStream.PutField fields = stream.putFields();
@@ -495,6 +496,7 @@
 		fields.put("perMill", getPerMill());
 		fields.put("serialVersionOnStream", 1);
 		fields.put("zeroDigit", getZeroDigit());
+		fields.put("locale", locale);
 		stream.writeFields();
 	}
 
@@ -514,12 +516,19 @@
 		setPercent(fields.get("percent", '%'));
 		setPerMill(fields.get("perMill", '\u2030'));
 		setZeroDigit(fields.get("zeroDigit", '0'));
+		locale = (Locale)fields.get("locale", null);
 		if (fields.get("serialVersionOnStream", 0) == 0) {
 			setMonetaryDecimalSeparator(getDecimalSeparator());
 			setExponential('E');
 		} else {
 			setMonetaryDecimalSeparator(fields.get("monetarySeparator", '.'));
 			setExponential(fields.get("exponential", 'E'));
+			
+		}
+		try {
+			currency = Currency.getInstance(intlCurrencySymbol);
+		} catch (IllegalArgumentException e) {
+			currency = null;
 		}
 	}
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/AllTests.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/AllTests.java?rev=395251&r1=395250&r2=395251&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/AllTests.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/AllTests.java Wed Apr 19 07:33:27 2006
@@ -1,4 +1,4 @@
-/* Copyright 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +18,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-/**
- * TODO Type description
- * 
- */
+
 public class AllTests {
 
 	public static Test suite() {
@@ -40,6 +37,7 @@
 		suite.addTestSuite(CollatorTest.class);
 		suite.addTestSuite(DateFormatFieldTest.class);
 		suite.addTestSuite(DateFormatTest.class);
+		suite.addTestSuite(DecimalFormatSymbolsTest.class);
 		suite.addTestSuite(DateFormatSymbolsTest.class);
 		suite.addTestSuite(FieldPositionTest.class);
 		suite.addTestSuite(MessageFormatFieldTest.class);

Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/DecimalFormatSymbolsTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/DecimalFormatSymbolsTest.java?rev=395251&r1=395250&r2=395251&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/DecimalFormatSymbolsTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/tests/api/java/text/DecimalFormatSymbolsTest.java Wed Apr 19 07:33:27 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,6 +15,13 @@
 
 package tests.api.java.text;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.net.URI;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 import java.text.NumberFormat;
@@ -366,5 +373,59 @@
 	 * method is called after a test is executed.
 	 */
 	protected void tearDown() {
+	}
+
+	// Test serialization mechanism of DecimalFormatSymbols
+	public void test_serialization() throws Exception {
+		DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRANCE);
+		Currency currency = symbols.getCurrency();
+		assertNotNull(currency);
+
+		// serialize
+		ByteArrayOutputStream byteOStream = new ByteArrayOutputStream();
+		ObjectOutputStream objectOStream = new ObjectOutputStream(byteOStream);
+		objectOStream.writeObject(symbols);
+
+		// and deserialize
+		ObjectInputStream objectIStream = new ObjectInputStream(
+				new ByteArrayInputStream(byteOStream.toByteArray()));
+		DecimalFormatSymbols symbolsD = (DecimalFormatSymbols) objectIStream
+				.readObject();
+
+		// The associated currency will not persist
+		currency = symbolsD.getCurrency();
+		assertNotNull(currency);
+	}
+
+	// Use RI to write DecimalFormatSymbols out, use Harmony to read
+	// DecimalFormatSymbols in. The read symbol will be equal with those
+	// instantiated inside Harmony.
+	
+	// This assertion will not come into existence the other way around. This is
+	// probably caused by different serialization mechanism used by RI and
+	// Harmony.
+	public void test_RIHarmony_compatible() throws Exception {
+		ObjectInputStream i = null;
+		try {
+			DecimalFormatSymbols symbols = new DecimalFormatSymbols(
+					Locale.FRANCE);
+			i = new ObjectInputStream(
+					new FileInputStream(
+							new File(URI.create(
+									this.getClass().getResource(
+										"/serialization/java/text/DecimalFormatSymbols.ser")
+											.toString()))));
+			DecimalFormatSymbols symbolsD = (DecimalFormatSymbols) i
+					.readObject();
+			assertEquals(symbols, symbolsD);
+		} finally {
+			try {
+				if (i != null) {
+					i.close();
+				}
+			} catch (Exception e) {
+				// ignore
+			}
+		}
 	}
 }

Added: incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/java/text/DecimalFormatSymbols.ser
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/java/text/DecimalFormatSymbols.ser?rev=395251&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/resources/serialization/java/text/DecimalFormatSymbols.ser
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream