Index: src/test/verifiers/xpp3/expected.xml =================================================================== --- src/test/verifiers/xpp3/expected.xml (r‚vision 607) +++ src/test/verifiers/xpp3/expected.xml (copie de travail) @@ -6,7 +6,7 @@ 3 4.5 5.6 - Friday, 6 January 2006 12:00:00 AM EST + Friday, January 6, 2006 12:00:00 AM EST Maven Index: src/test/verifiers/xpp3/Xpp3Verifier.java =================================================================== --- src/test/verifiers/xpp3/Xpp3Verifier.java (r‚vision 607) +++ src/test/verifiers/xpp3/Xpp3Verifier.java (copie de travail) @@ -43,8 +43,12 @@ import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; +import java.text.DateFormat; +import java.util.Calendar; import java.util.List; +import java.util.Locale; import java.util.Properties; +import java.util.TimeZone; /** * @author Trygve Laugstøl @@ -59,6 +63,8 @@ public void verify() throws IOException, XmlPullParserException { + TimeZone.setDefault(TimeZone.getTimeZone("America/New_York")); + verifyWriter(); verifyReader(); @@ -216,6 +222,7 @@ { throw new XmlPullParserException( "Couldn't set date: " + e.getMessage() ); } + expected.setTypeTester( typeTester ); Repository repository = new Repository(); @@ -293,6 +300,32 @@ Model actual = reader.read( new StringReader( xml ) ); assertModel( expected, actual ); + + // ---------------------------------------------------------------------- + // Test that dates are correctly read back from xml + // ---------------------------------------------------------------------- + + StringBuffer dateXml = new StringBuffer(); + dateXml.append("\n\n"); + dateXml.append("Friday, January 6, 2006 12:00:00 AM EST\n"); + dateXml.append("\n"); + + expected = new Model(); + + TypeTester typeTester = new TypeTester(); + + Calendar calendar = Calendar.getInstance(); + + calendar.clear(); + calendar.set(2006,01,06,12,0); + + typeTester.setDate(calendar.getTime()); + + expected.setTypeTester(typeTester); + + actual = reader.read( new StringReader( dateXml.toString() ) ); + + assertModel( expected, actual ); } public void verifyReaderAliases() Index: src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3ReaderGenerator.java =================================================================== --- src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3ReaderGenerator.java (r‚vision 607) +++ src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3ReaderGenerator.java (copie de travail) @@ -133,6 +133,8 @@ jClass.addImport( "java.util.regex.Pattern" ); + jClass.addImport( "java.util.Locale" ); + addModelImports( jClass, null ); // ---------------------------------------------------------------------- @@ -1380,7 +1382,7 @@ sc.indent(); - sc.add( "DateFormat dateParser = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL );" ); + sc.add( "DateFormat dateParser = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL , Locale.US );" ); sc.add( "dateParser.setLenient( true );" ); Index: src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3WriterGenerator.java =================================================================== --- src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3WriterGenerator.java (r‚vision 607) +++ src/main/java/org/codehaus/modello/plugin/xpp3/Xpp3WriterGenerator.java (copie de travail) @@ -113,6 +113,8 @@ jClass.addImport( "java.util.Iterator" ); + jClass.addImport( "java.util.Locale" ); + jClass.addField( new JField( new JClass( "org.codehaus.plexus.util.xml.pull.XmlSerializer" ), "serializer" ) ); jClass.addField( new JField( new JClass( "String" ), "NAMESPACE" ) ); @@ -464,7 +466,7 @@ if ( "Date".equals( type ) ) { textValue = - "DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL ).format( " + textValue + " )"; + "DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL , Locale.US ).format( " + textValue + " )"; } else if ( !"String".equals( type ) ) { @@ -472,6 +474,7 @@ } return textValue; + } private String getValueChecker( String type, String value, ModelField field )