----- Forwarded by David L. Cole/IS/PPLC on 04/01/2002 11:29 AM -----
                                                                                       
                              
                    "David L.                                                          
                              
                    Cole"                To:     [EMAIL PROTECTED]               
                              
                    <DLCole@cmsen        cc:                                           
                              
                    ergy.com>            Subject:     NullPointer in 
BeanSerializer/BeanPropertyTarget               
                                                                                       
                              
                    03/29/2002                                                         
                              
                    10:24 AM                                                           
                              
                    Please                                                             
                              
                    respond to                                                         
                              
                    axis-dev                                                           
                              
                                                                                       
                              
                                                                                       
                              




I have the following method within my Object which is mapped to
BeanSerializer/Deserializer:

    public void setValidDates( java.util.ArrayList newValue )
    {
        validDates = newValue;
    }

During deserialization, I was getting the following error:

- Could not convert [Ljava.lang.Object; to bean field 'validDates[0]', type
java.util.Collection
- Exception:
java.lang.NullPointerException
        at
org.apache.axis.encoding.ser.BeanPropertyTarget.set(BeanPropertyTarget.java:136)

        at
org.apache.axis.encoding.DeserializerImpl.valueComplete(DeserializerImpl.java:258)

        at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:386)

        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:834)

        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:197)

        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:578)

        at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:367)

        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:834)

        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:197)

        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:578)

        at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:367)

        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:834)

        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:197)

        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:578)

        at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:367)

        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:834)

        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:197)

        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:578)

        at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:207)
        at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:231)
        at org.apache.axis.client.Call.invoke(Call.java:1607)


The result of the error turns out the the BeanPropertyDescriptor is
returning null for the call to getWriteMethod()
By making the 2 following changes to BeanDeserializer and
BeanPropertyTarget which simply checks for null as a result to
the call to getWriteMethod(), I was able to solve the problem.

BeanDeserializer.onStartChild() Line #199
         Changed from:
          if (propDesc.getWriteMethod().getParameterTypes().length == 1) {
         To:
               if (propDesc != null && (propDesc.getWriteMethod() != null)
                       &&
            (propDesc.getWriteMethod().getParameterTypes().length == 1)) {

BeanPropertyTarget.set(Object value):
     check for null on call to pd.getWriteMethod() at beginning of method

        if(pd.getWriteMethod() == null)
        {
          return;
        }

Once the changes where made...Everything went smooth.
Could one of the dev team consider making these changes to
BeanSerializer/BeanPropertyTarget
for future builds?


Thanks,
David Cole




Reply via email to