Author: jochen
Date: Tue Sep 6 13:23:34 2005
New Revision: 279089
URL: http://svn.apache.org/viewcvs?rev=279089&view=rev
Log:
Fixed use of the JAXME_FORMAT_* attributes.
Submitted by: David Gilliland, dgilliland62 at users.sourceforge.net
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/DateTimeSG.java
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JMControllerImpl.java
webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java
webservices/jaxme/branches/MAVEN/status.xml
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/DateTimeSG.java
URL:
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/DateTimeSG.java?rev=279089&r1=279088&r2=279089&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/DateTimeSG.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/DateTimeSG.java
Tue Sep 6 13:23:34 2005
@@ -118,15 +118,21 @@
}
}
- public void forAllNonNullValues(SimpleTypeSG pController, JavaMethod
pMethod, Object pValue, SGlet pSGlet) throws SAXException {
- LocalJavaField f = pMethod.newJavaField(CALENDAR_TYPE);
- f.addLine(pValue);
- pMethod.addIf(f, " != null");
- pSGlet.generate(pMethod, pValue);
- pMethod.addEndIf();
- }
+ public TypedValue getCastToString(SimpleTypeSG pController, Object
pValue, DirectAccessible pData) {
+ Object v = new Object[]{pData, ".getJMMarshaller().get" +
getDatatypeName()
+ +
"Format().format(", pValue, ")"};
+ return new TypedValueImpl(v, StringSG.STRING_TYPE);
+ }
- public void forAllValues(SimpleTypeSG pController, JavaMethod pMethod,
Object pValue, SGlet pSGlet) throws SAXException {
- pSGlet.generate(pMethod, pValue);
- }
+ public void forAllNonNullValues(SimpleTypeSG pController, JavaMethod
pMethod, Object pValue, SGlet pSGlet) throws SAXException {
+ LocalJavaField f = pMethod.newJavaField(CALENDAR_TYPE);
+ f.addLine(pValue);
+ pMethod.addIf(f, " != null");
+ pSGlet.generate(pMethod, pValue);
+ pMethod.addEndIf();
+ }
+
+ public void forAllValues(SimpleTypeSG pController, JavaMethod pMethod,
Object pValue, SGlet pSGlet) throws SAXException {
+ pSGlet.generate(pMethod, pValue);
+ }
}
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JMControllerImpl.java
URL:
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JMControllerImpl.java?rev=279089&r1=279088&r2=279089&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JMControllerImpl.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/JMControllerImpl.java
Tue Sep 6 13:23:34 2005
@@ -91,10 +91,13 @@
return;
} else if (JAXME_FORMAT_DATETIME.equals(pProperty)) {
setDateTimeFormat((Format) pValue);
+ return;
} else if (JAXME_FORMAT_DATE.equals(pProperty)) {
setDateFormat((Format) pValue);
+ return;
} else if (JAXME_FORMAT_TIME.equals(pProperty)) {
setTimeFormat((Format) pValue);
+ return;
}
throw new PropertyException("Unknown property: " + pProperty);
Modified:
webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java
URL:
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java?rev=279089&r1=279088&r2=279089&view=diff
==============================================================================
---
webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java
(original)
+++
webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java
Tue Sep 6 13:23:34 2005
@@ -22,15 +22,21 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DateFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
+import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
+import javax.xml.bind.PropertyException;
import javax.xml.bind.UnmarshalException;
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
@@ -43,6 +49,7 @@
import org.apache.ws.jaxme.XMLWriter;
import org.apache.ws.jaxme.impl.DatatypeConverterImpl;
import org.apache.ws.jaxme.impl.JAXBContextImpl;
+import org.apache.ws.jaxme.impl.JMControllerImpl;
import org.apache.ws.jaxme.impl.JMMarshallerImpl;
import org.apache.ws.jaxme.impl.REFactory;
import org.apache.ws.jaxme.test.misc.address.Address;
@@ -58,6 +65,9 @@
import org.apache.ws.jaxme.test.misc.types.impl.AllSimpleTypesImpl;
import org.apache.ws.jaxme.test.misc.types.impl.AllTypesElementImpl;
import org.apache.ws.jaxme.util.Duration;
+import org.apache.ws.jaxme.xs.util.XsDateFormat;
+import org.apache.ws.jaxme.xs.util.XsDateTimeFormat;
+import org.apache.ws.jaxme.xs.util.XsTimeFormat;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -436,7 +446,7 @@
assertEquals(60, duration2.getSeconds());
}
- protected String getAllElementString(boolean pRandom) {
+ protected String getAllElementString(boolean pRandom, Format
pDateTimeFormat, Format pDateFormat, Format pTimeFormat) {
AllElementImpl elem = new AllElementImpl();
String uri = elem.getQName().getNamespaceURI();
String[] elements = new String[]{
@@ -446,9 +456,9 @@
"<ex:ShortElem>23878</ex:ShortElem>",
"<ex:DoubleElem>2.397978293792324E13</ex:DoubleElem>",
"<ex:FloatElem>-34768.348</ex:FloatElem>",
- "<ex:DateTimeElem>2002-11-22T16:43:37Z</ex:DateTimeElem>",
- "<ex:DateElem>2002-11-22Z</ex:DateElem>",
- "<ex:TimeElem>16:43:37Z</ex:TimeElem>",
+ "<ex:DateTimeElem>" + pDateTimeFormat.format(getDateTime()) +
"</ex:DateTimeElem>",
+ "<ex:DateElem>" + pDateFormat.format(getDate()) + "</ex:DateElem>",
+ "<ex:TimeElem>" + pTimeFormat.format(getTime()) + "</ex:TimeElem>",
"<ex:DurationElem>P1Y2M3DT4H5M6.7S</ex:DurationElem>",
"<ex:HexBinaryElem>0111234E739DBBFF</ex:HexBinaryElem>",
"<ex:Base64BinaryElem>AREjTnOdu/8=</ex:Base64BinaryElem>",
@@ -486,19 +496,70 @@
* contents.</p>
*/
public void testAllElement() throws Exception {
- String s = getAllElementString(true);
- JAXBContext context = getFactory();
- AllElement e = (AllElement) context.createUnmarshaller().unmarshal(new
InputSource(new StringReader(s)));
- StringWriter sw = new StringWriter();
- Marshaller marshaller = context.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
- marshaller.setProperty(Marshaller.JAXB_ENCODING, "ASCII");
- marshaller.setProperty(JMMarshallerImpl.JAXME_XML_DECLARATION,
Boolean.FALSE);
- marshaller.marshal(e, sw);
- String got = sw.toString();
- String expect = getAllElementString(false);
- assertEquals(expect, got);
- }
+ final Format defaultDateTimeFormat = new XsDateTimeFormat();
+ final Format defaultDateFormat = new XsDateFormat();
+ final Format defaultTimeFormat = new XsTimeFormat();
+ testAllElement(defaultDateTimeFormat, defaultDateFormat,
defaultTimeFormat);
+
+ final Format otherDateTimeFormat = new Format(){
+ private static final long serialVersionUID =
-6173879133371739286L;
+ private final DateFormat df = new SimpleDateFormat("yyyy.MMM.dd
'at' HH:mm:ss.SSS z");
+ public StringBuffer format(Object pObj, StringBuffer pAppendTo,
FieldPosition pPos) {
+ return df.format(((Calendar) pObj).getTime(),
pAppendTo, pPos);
+ }
+ public Object parseObject(String pSource, ParsePosition pPos) {
+ Calendar cal = Calendar.getInstance();
+ cal.setTime((Date) df.parseObject(pSource, pPos));
+ return cal;
+ }
+ };
+ final Format otherDateFormat = new Format(){
+ private final DateFormat df = new
SimpleDateFormat("yyyy.MMM.dd z");
+ public StringBuffer format(Object pObj, StringBuffer
pAppendTo, FieldPosition pPos) {
+ return df.format(((Calendar) pObj).getTime(),
pAppendTo, pPos);
+ }
+ public Object parseObject(String pSource, ParsePosition pPos)
{
+ Calendar cal = Calendar.getInstance();
+ cal.setTime((Date) df.parseObject(pSource, pPos));
+ return cal;
+ }
+ };
+ final Format otherTimeFormat = new Format(){
+ private static final long serialVersionUID =
-6173879133371739286L;
+ private final DateFormat df = new
SimpleDateFormat("HH:mm:ss.SSS z");
+ public StringBuffer format(Object pObj, StringBuffer
pAppendTo, FieldPosition pPos) {
+ return df.format(((Calendar) pObj).getTime(),
pAppendTo, pPos);
+ }
+ public Object parseObject(String pSource, ParsePosition pPos)
{
+ Calendar cal = Calendar.getInstance();
+ cal.setTime((Date) df.parseObject(pSource, pPos));
+ return cal;
+ }
+ };
+ testAllElement(otherDateTimeFormat, otherDateFormat, otherTimeFormat);
+ }
+
+ private void testAllElement(final Format pDateTimeFormat, final Format
pDateFormat, final Format pTimeFormat) throws JAXBException, PropertyException {
+ String s = getAllElementString(true, pDateTimeFormat, pDateFormat,
pTimeFormat);
+ JAXBContext context = getFactory();
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ unmarshaller.setProperty(JMControllerImpl.JAXME_FORMAT_DATETIME,
pDateTimeFormat);
+ unmarshaller.setProperty(JMControllerImpl.JAXME_FORMAT_DATE,
pDateFormat);
+ unmarshaller.setProperty(JMControllerImpl.JAXME_FORMAT_TIME,
pTimeFormat);
+ AllElement e = (AllElement) unmarshaller.unmarshal(new
InputSource(new StringReader(s)));
+ StringWriter sw = new StringWriter();
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.FALSE);
+ marshaller.setProperty(Marshaller.JAXB_ENCODING, "ASCII");
+ marshaller.setProperty(JMMarshallerImpl.JAXME_XML_DECLARATION,
Boolean.FALSE);
+ marshaller.setProperty(JMControllerImpl.JAXME_FORMAT_DATETIME,
pDateTimeFormat);
+ marshaller.setProperty(JMControllerImpl.JAXME_FORMAT_DATE,
pDateFormat);
+ marshaller.setProperty(JMControllerImpl.JAXME_FORMAT_TIME,
pTimeFormat);
+ marshaller.marshal(e, sw);
+ String got = sw.toString();
+ String expect = getAllElementString(false, pDateTimeFormat,
pDateFormat, pTimeFormat);
+ assertEquals(expect, got);
+}
private RootElementHandler getRootElementInfo(String pElement) throws
ParserConfigurationException, IOException, SAXException {
RootElementHandler reh = new RootElementHandler();
Modified: webservices/jaxme/branches/MAVEN/status.xml
URL:
http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/status.xml?rev=279089&r1=279088&r2=279089&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/status.xml (original)
+++ webservices/jaxme/branches/MAVEN/status.xml Tue Sep 6 13:23:34 2005
@@ -53,6 +53,17 @@
<action dev="JW" type="enhancement" context="generator">
Added support for xs:pattern.
</action>
+ <action dev="JW" type="fix" context="runtime">
+ It wasn't possible to set the properties JAXME_FORMAT_*.
+ David Gilliland <dgilliland62 at users.sourceforge.net>
+ </action>
+ <action dev="JW" type="fix" context="generator">
+ The generated marshallers didn't honor the JAXME_FORMAT_*.
+ properties.
+ </action>
+ <action dev="NM" type="enhancement" context="all">
+ Mavenized the project.
+ </action>
</release>
<release version="0.5" date="2005-Aug-08">
<action dev="JW" type="enhancement" context="js">
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]