On Sun, Sep 5, 2010 at 2:24 PM, Andreas Veithen <[email protected]>wrote:
> On Sun, Sep 5, 2010 at 05:12, Isuru Suriarachchi <[email protected]> > wrote: > > > > > > On Sat, Sep 4, 2010 at 5:26 PM, Andreas Veithen < > [email protected]> > > wrote: > >> > >> On Thu, Sep 2, 2010 at 08:39, Isuru Suriarachchi <[email protected]> > >> wrote: > >> > > >> > > >> > On Thu, Sep 2, 2010 at 1:47 AM, Andreas Veithen > >> > <[email protected]> > >> > wrote: > >> >> > >> >> How can a namespace prefix conflict with a URI scheme? That sounds > >> >> like a quick and dirty workaround for a more fundamental issue. > >> > > >> > Let me explain it further.. I came up with a WSDL generated by our > >> > AxisService2WSDL11 class which has the following wsaw:Action for some > >> > message of some operation. > >> > > >> > wsaw:Action="http://www.webtest.org/echoStringMethodRequest" > >> > > >> > And also there is a namespace declaration in this WSDL as follows.. > >> > > >> > xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" > >> > > >> > When I generate the stub for this WSDL, it sets the Action on the stub > >> > as > >> > follows.. > >> > > >> > > >> > _operationClient.getOptions().setAction("// > www.webtest.org/echoStringMethodRequest"); > >> > > >> > So this is due to the usage of "http" as a namespace prefix and it has > >> > treated the http://.. URL as <prefix>:<localname>. > >> > >> The SOAP action is a URI, not a QName, so there is no reason why the > >> code generator would interpret "http" as a prefix. > > > > Yes agreed.. > > > >> > >> I think you should > >> try to determine why it is doing that instead of working around the > >> issue by changing the WSDL generation code. > > > > I did have a look into the code generator code. There, wsdl4j returns the > > action as a QName. That is why this issue occurs. Have a look at the > > getWSAWActionExtensionAttribute(AttributeExtensible ae) method in > > WSDL11ActionHelper. Ideally it should provide a method to get the string > > value of the attribute. But currently there's no such method. > > Then I would suggest to review the following code in > WSDL11ActionHelper#getWSAWActionExtensionAttribute: > > if (attribute instanceof QName) { > QName qn = (QName) attribute; > attribute = qn.getLocalPart(); > } > > The code is used only for the action attribute and we know that the > action is not a QName. Thus, instead of just taking the local part, we > should rebuild the qualified name (prefix + ":" + localPart) to > reconstruct the original value of the attribute. WDYT? > Actually I initially tried this as well. But as Amila has already pointed out, prefix is "" in this case. > > >> > >> > Thanks, > >> > ~Isuru > >> > > >> >> > >> >> Andreas > >> >> > >> >> On Wed, Sep 1, 2010 at 07:47, <[email protected]> wrote: > >> >> > Author: isurues > >> >> > Date: Wed Sep 1 05:47:27 2010 > >> >> > New Revision: 991441 > >> >> > > >> >> > URL: http://svn.apache.org/viewvc?rev=991441&view=rev > >> >> > Log: > >> >> > changing the http prefix from http to http1. This is because, use > of > >> >> > http as a prefix causes conflicts with actual URLs like > >> >> > http://foo.com > >> >> > > >> >> > Modified: > >> >> > > >> >> > > >> >> > > > axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java > >> >> > > >> >> > Modified: > >> >> > > >> >> > > axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java > >> >> > URL: > >> >> > > >> >> > > http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java?rev=991441&r1=991440&r2=991441&view=diff > >> >> > > >> >> > > >> >> > > ============================================================================== > >> >> > --- > >> >> > > >> >> > > axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java > >> >> > (original) > >> >> > +++ > >> >> > > >> >> > > axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/java2wsdl/Java2WSDLConstants.java > >> >> > Wed Sep 1 05:47:27 2010 > >> >> > @@ -45,7 +45,7 @@ public interface Java2WSDLConstants { > >> >> > > >> >> > String HTTP_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/http/ > "; > >> >> > String MIME_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/mime/ > "; > >> >> > - String HTTP_PREFIX = "http"; > >> >> > + String HTTP_PREFIX = "http1"; > >> >> > String MIME_PREFIX = "mime"; > >> >> > String URN_PREFIX = "urn"; > >> >> > String COLON_SEPARATOR = ":"; > >> >> > > >> >> > > >> >> > > >> >> > >> >> --------------------------------------------------------------------- > >> >> To unsubscribe, e-mail: [email protected] > >> >> For additional commands, e-mail: [email protected] > >> >> > >> > > >> > > >> > > >> > -- > >> > Technical Lead, > >> > WSO2 Inc. http://wso2.org/ > >> > Blog : http://isurues.wordpress.com/ > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > > > > > > > > -- > > Technical Lead, > > WSO2 Inc. http://wso2.org/ > > Blog : http://isurues.wordpress.com/ > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Technical Lead, WSO2 Inc. http://wso2.org/ Blog : http://isurues.wordpress.com/
