ReflectionProxyHandler creates an Element even for a null parameter
-------------------------------------------------------------------

                 Key: MUSE-238
                 URL: https://issues.apache.org/jira/browse/MUSE-238
             Project: Muse
          Issue Type: Bug
            Reporter: Vinh Nguyen
            Assignee: Dan Jemiolo


There is a bug in ReflectionProxyHandler.toXML().  It creates an element node 
for an operation parameter even if the parameter value is null.  This causes 
errors on the server when an operation allows a null parameter, but the Muse 
serializers throw an error because they receive an actual Element for the 
parameter.

I noticed this because in the Subscribe operation, I can specify a null 
expiration date, and the corresponding element does not show up in the SOAP 
request.  So it goes thru fine.  But if I define an Unsubscribe operation, the 
generated proxy uses the ReflectionProxyHandler, and I get errors.

I attempted to test my Unsubscribe by passing a null EPR, and the SOAP request 
looked like this:

    <soap:Body>
        <pfx0:Unsubscribe xmlns:pfx0="http://docs.oasis-open.org/wsn/b-2";>
            <pfx0:EndpointReference/>
        </pfx0:Unsubscribe>
    </soap:Body>

Then on the server side, the EndpointReference serializer threw this error:

[ID = 'InvalidAddressURI'] Invalid wsa:Address URI: null
        
org.apache.muse.ws.addressing.EndpointReference.initializeFromXML(EndpointReference.java:541)
        
org.apache.muse.ws.addressing.EndpointReference.<init>(EndpointReference.java:132)
        
org.apache.muse.ws.addressing.EndpointReference.<init>(EndpointReference.java:91)
        
com.cisco.nm.cmp.nbi.wsdm.common.serializer.addressing.EndpointReferenceSerializer.fromXML(EndpointReferenceSerializer.java:36)
        
org.apache.muse.core.routing.ReflectionMessageHandler.fromXML(ReflectionMessageHandler.java:132)

So there is some inconsistencies between the proxy handlers used within Muse 
code, and the ReflectionProxyHandler used in the wsdl2java generated proxies.

The simple fix is at the end of the ReflectionProxyHandler.toXML() method where 
it loops thru and calls serialize() for each parameter name/value.  It should 
first check if a value is null, it doesn't need to create the corresponding 
Element to insert into the final request message.



-- 
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