Hi list (and especially Oshani),

I ran OMWSDLReader.readWSDL(..) on the following WSDL:

------------------
<description targetNamespace="http://example.com/bank";
             xmlns="http://www.w3.org/2006/01/wsdl";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xsi:schemaLocation=
               "http://www.w3.org/2006/01/wsdl
http://www.w3.org/2006/01/wsdl/wsdl20.xsd
                http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd";>

  <!-- any old interface -->
  <interface name="Bank">
    <!-- All implementations of this interface must be secure -->
    <feature ref="http://example.com/secure-channel";
             required="true"/>
    <operation name="withdrawFunds"
pattern="http://www.w3.org/2004/03/wsdl/in-out";>
      <!-- This operation must have ACID properties -->
      <feature ref="http://example.com/transaction";
               required="true"/>
    </operation>
    <operation name="depositFunds"
pattern="http://www.w3.org/2004/03/wsdl/in-out";>
      <!-- This operation requires notarization -->
      <feature ref="http://example.com/notarization";
               required="true"/>
    </operation>
  </interface>

</description>
---------------------

The parser gets stuck in an infinite loop, continually outputting the
following line:

Woden[Error],0:0,WSDL520,Extension element
"{http://www.w3.org/2006/01/wsdl}feature"; in the context of
"org.apache.woden.wsdl20.xml.FeatureElement" must not be in the WSDL
namespace.

I believe there is some code in OMWSDLReader.parseFeature()  that should be
removed. The the problem is fixed by commenting out lines in that method as
shown below:

//        while (featEl != null) {
//            if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION,
featEl)){
//
feature.addDocumentationElement(parseDocumentation(featEl, desc));
//            }
//            else{
//
feature.addExtensionElement(parseExtensionElement(FeatureElement.class,
feature, featEl, desc) );
//            }

            Iterator featElChildren = featEl.getChildElements();
            while (featElChildren.hasNext()){
                OMElement featElChild = (OMElement)featElChildren.next();
                if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION,
featElChild)){

feature.addDocumentationElement(parseDocumentation(featElChild, desc));
                }
                else{
                    feature.addExtensionElement(parseExtensionElement(
                            FeatureElement.class, feature, featElChild,
desc) );
                }
            }
//        }

Could you please confirm that this solution is correct? The WSDL I am using
is from a testcase I have for WODEN-14 and can include the solution in the
patch I'm about to submit for review if you agree it is the correct one.


Kind Regards,

Graham.
_____________________________________________
Graham C Turrell CEng, MBCS
Chartered IT Practitioner

WebSphere ESB Foundation Technologies
DE3F16 / MP 211
IBM Labs
Hursley Park
Winchester, Hampshire
England.  SO21 2JN

Tel +44-(0)1962-815018
email: [EMAIL PROTECTED]

"No army can withstand the force of an idea whose time
has come.". -Victor Hugo


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to