Why Reference URI can not be empty?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Why Reference URI can not be empty?

Laleh Tajrobehkar
Why Reference URI can not be empty?

I have an axis client Written in Java. The client makes an axis call and reveives a soap envelope containing a signature. This signature element contains a  reference element with empty URI.

<Reference URI="" ….

On this call, the deserializer failes to deserialize this reference element giving this error:
org.apache.axis.types.URI$MalformedURIException: Cannot initialize URI with empty parameters.
but  according to spec empty URI should be allowed:

RFC 2396. Uniform Resource Identifiers (URI): Generic Syntax. T. Berners-Lee, R. Fielding, L. Masinter. August 1998.

4.2. Same-document References                                          
   A URI reference that does not contain a URI is a reference to the   
   current document.  In other words, an empty URI reference within a  
   document is interpreted as a reference to the start of that document,
   and a reference containing only a fragment identifier is a reference
   to the identified fragment of that document.  Traversal of such a   
   reference should not result in an additional retrieval action.      
   However, if the URI reference occurs in a context that is always    
   intended to result in a new request, as in the case of HTML's FORM  
   element, then an empty URI reference represents the base URI of the 
   current document and should be replaced by that URI when transformed
   into a request.                                  

When I browsed through axis API for class URI : org.apache.axis.types.URI, I see that empty URI is not allowed and throws the MalformedURIException. It seems that axis does not follow the spec. Can anyone let me know if there is anything I can do to get rid of this exception? Is there a patch I can use?

PS> I checked and apparenty axis2 also has the same limitation. org.apache.axis2.databinding.types.URI

Thanks a lot,