You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by "Amila Chinthaka Suriarachchi (JIRA)" <ji...@apache.org> on 2010/05/09 08:13:51 UTC
[jira] Resolved: (AXIS2-2701) Problem with ADBBean generated with
WSDL2Java and Date type
[ https://issues.apache.org/jira/browse/AXIS2-2701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Amila Chinthaka Suriarachchi resolved AXIS2-2701.
-------------------------------------------------
Resolution: Fixed
now the POJO date is mapped to xs:date and works fine in current trunk.
> Problem with ADBBean generated with WSDL2Java and Date type
> -----------------------------------------------------------
>
> Key: AXIS2-2701
> URL: https://issues.apache.org/jira/browse/AXIS2-2701
> Project: Axis2
> Issue Type: Bug
> Components: adb
> Reporter: Michèle Vialatte
> Assignee: Deepal Jayasinghe
>
> My WebService java client uses ADBBeans generated with 'org.apache.axis2.wsdl.WSDL2Java'.
> The wsdl file contains an element of type="xs:date" :
> <xs:element name="Contact">
> <xs:complexType>
> <xs:sequence>
> ... ... ...
> <xs:element name="contactDate" type="xs:date" nillable="true" />
> ... ... ...
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> The class generated contains a java.util.Date localContactDate :
> public class Contact
> implements org.apache.axis2.databinding.ADBBean{
> ...
> protected java.util.Date localContactDate ;
> ...
>
> public void serialize(final javax.xml.namespace.QName parentQName,
> final org.apache.axiom.om.OMFactory factory,
> javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
> ....
> xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localContactDate));
> ....
> }
> ...
>
> public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName){
> ....
> elementList.add(localContactDate==null?null:
> org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localContactDate));
> ....
> }
> ...
>
> }
> The problem is that ConverterUtil.convertToString(date) converts the date in a String of format "yyyy-MM-dd'Z'" to put in the XML
> and after that, in the Server, during the deserialization, the SimpleTypeMapper class throws an Exception if the String read has a length less than 19 !!!
> in 'org.apache.axis2.databinding.utils.ConverterUtil.java' :
>
> public static String convertToString(Date value) {
> // lexical form of the date is '-'? yyyy '-' mm '-' dd zzzzzz?
> // we have to serialize it with the GMT timezone
> SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'Z'");
> simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
> return simpleDateFormat.format(value);
> }
>
> in 'org.apache.axis2.databinding.typemapping.SimpleTypeMapper.java' :
> private static final String W_DATE = "java.util.Date";
> ...
> public static Object getSimpleTypeObject(Class parameter, OMElement value) {
> String name = parameter.getName();
> String text = value.getText();
> ...
> if (name.equals(W_DATE)) {
> return makeCalendar(text, true);
> }
> ...
> }
> ...
> public static Object makeCalendar(String source, boolean returnDate) {
> ...
> if (source.length() < 19) {
> throw new NumberFormatException("Calendar string too short");
> ...
> }
>
> Execution.
> Logs in the Tomcat Server :
> [23/05/2007 12:10:49:DEBUG] StAXUtils.java :242 XMLStreamWriter is com.ctc.wstx.sw.SimpleNsStreamWriter
> ...
> [23/05/2007 12:10:49:DEBUG] StAXOMBuilder.java :132 START_ELEMENT: {http://adp-intranet/wsmodule/ContactWS/1.0.0}contactDate:contactDate
> [23/05/2007 12:10:49:DEBUG] StAXSOAPModelBuilder.java :194 Build the OMElelment contactDateBy the StaxSOAPModelBuilder
> [23/05/2007 12:10:49:DEBUG] StAXOMBuilder.java :149 CHARACTERS: [2007-05-23Z]
> [23/05/2007 12:10:49:DEBUG] StAXOMBuilder.java :161 END_ELEMENT: {http://adp-intranet/wsmodule/ContactWS/1.0.0}contactDate:contactDate
> ...
> ...
> java.lang.NumberFormatException: Calendar string too short
> at org.apache.axis2.databinding.typemapping.SimpleTypeMapper.makeCalendar(SimpleTypeMapper.java:314)
> at org.apache.axis2.databinding.typemapping.SimpleTypeMapper.getSimpleTypeObject(SimpleTypeMapper.java:115)
> at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:398)
> at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:406)
> at org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:676)
> at org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:624)
> at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:560)
> at org.apache.axis2.rpc.receivers.RPCUtil.processRequest(RPCUtil.java:118)
> at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:113)
> at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:39)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:144)
> at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:279)
> at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:116)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
> at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
> at java.lang.Thread.run(Thread.java:534)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org