[ 
https://issues.apache.org/jira/browse/AXIS2-2701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12514631
 ] 

Sathija Pavuluri commented on AXIS2-2701:
-----------------------------------------

This bug fix may have broken something else when deserializing Date objects.

For example I have an object with attribute:
java.util.Date timeStarted;

The element in the response looks like this:
<ax26:timeStarted>2007-07-23T13:20:46.861Z</ax26:timeStarted>

The deserialization of this element fails with this exception:
        java.lang.RuntimeException: In valid string sufix
        at 
org.apache.axis2.databinding.utils.ConverterUtil.convertToDate(ConverterUtil.java:378)
        at 
org.apache.axis2.databinding.typemapping.SimpleTypeMapper.makeDate(SimpleTypeMapper.java:304)
        at 
org.apache.axis2.databinding.typemapping.SimpleTypeMapper.getSimpleTypeObject(SimpleTypeMapper.java:117)
        at 
org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:364)
        at 
org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:644)
        at 
org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:592)
        at 
org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:528)


This worked without any error before this bug fix was made.
With RC1, I see the error.

Looking at the code, it seems like the ConverterUtil expects the Date object to 
be only of yyyy-mm-dd format.
How about when Date is yyyy-mm-dd hh:mm:ss? It fails in that case.

Thanks,
Sathija.



> Problem with ADBBean generated with WSDL2Java and Date type
> -----------------------------------------------------------
>
>                 Key: AXIS2-2701
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2701
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: adb
>            Reporter: Michèle Vialatte
>            Assignee: Amila Chinthaka Suriarachchi
>
> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to