Apparently, this is because my code creates an ExtensionRegistry from
scratch. Creating the initial ExtensionRegistry using
WSDLFactory#newPopulatedExtensionRegistry() should fix this.

Andreas

On Wed, Sep 29, 2010 at 14:57, Isuru Suriarachchi <[email protected]> wrote:
> Hi Andreas,
>
> I applied your solution into codegen engine. It solves the original problem
> and WSDL11ActionHelper#getWSAWActionExtensionAttribute method returns the
> correct action (http://../..). But unfortunately this fix creates a separate
> issue.
>
> WSDL11ToAxisServiceBuilder#findPort method finds a SOAP port. There, it
> checks whether the extensibility elements returned by
> port.getExtensibilityElements() method is of SOAP 1.1, SOAP 1.2 or HTTP
> type. But when I apply the above fix, it retuns ports of some unknown type
> and generates an invalid code. And also it prints the following log on the
> console.
>
> "A SOAP port was not found - picking a random port!"
>
> I'm attaching the patch here and you can apply it and check the above method
> to reproduce the issue.
>
> Thanks,
> ~Isuru
>
> On Tue, Sep 28, 2010 at 5:58 PM, Isuru Suriarachchi <[email protected]>
> wrote:
>>
>>
>> On Mon, Sep 27, 2010 at 9:48 PM, Andreas Veithen
>> <[email protected]> wrote:
>>>
>>> Isuru,
>>>
>>> Actually, the proper way of doing this is to configure an
>>> ExtensionRegistry on the WSDLReader so that WSDL4J knows what is the
>>> expected type for the wsas:Action attribute (otherwise it will try to
>>> guess the attribute type, and this fails in this particular case).
>>> Here is the code that should be added in the appropriate place in
>>> Axis2 ("reader" is the WSDLReader instance):
>>>
>>> ExtensionRegistry extReg = new ExtensionRegistry();
>>> extReg.registerExtensionAttributeType(Input.class, new
>>> QName("http://www.w3.org/2006/05/addressing/wsdl";, "Action"),
>>> AttributeExtensible.STRING_TYPE);
>>> extReg.registerExtensionAttributeType(Output.class, new
>>> QName("http://www.w3.org/2006/05/addressing/wsdl";, "Action"),
>>> AttributeExtensible.STRING_TYPE);
>>> reader.setExtensionRegistry(extReg);
>>>
>>> Can you do the necessary changes?
>>
>> Sure. Will do the changes and update the list..
>>
>> Thanks,
>> ~Isuru
>>
>>>
>>> Andreas
>>>
>>> On Tue, Sep 7, 2010 at 13:36, Isuru Suriarachchi <[email protected]>
>>> wrote:
>>> > Attaching the wsdl and the schema..
>>> >
>>> > Thanks,
>>> > ~Isuru
>>> >
>>> > On Tue, Sep 7, 2010 at 2:06 AM, Andreas Veithen
>>> > <[email protected]>
>>> > wrote:
>>> >>
>>> >> Isuru,
>>> >>
>>> >> Can you send me a sample WSDL for which the problem occurs?
>>> >>
>>> >> Andreas
>>> >>
>>> >> On Mon, Sep 6, 2010 at 10:24, Isuru Suriarachchi <[email protected]>
>>> >> wrote:
>>> >> >
>>> >> >
>>> >> > 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/
>>> >> >
>>> >>
>>> >> ---------------------------------------------------------------------
>>> >> 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]
>>> >
>>>
>>> ---------------------------------------------------------------------
>>> 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/
>
>
>
> --
> 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]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to