Uploaded image for project: 'Woden'
  1. Woden
  2. WODEN-204

Schema resolving issue in Axis2

    XMLWordPrintableJSON

Details

    • Test
    • Status: Resolved
    • Major
    • Resolution: Invalid
    • M7b
    • None
    • Parser
    • None

    Description

      Hi all,

      This is regarding http://issues.apache.org/jira/browse/AXIS2-3379. I
      have attached both the WSDL and the schema for this scenario. The WSDL
      is available at
      http://localhost:8080/axis2/services/calculatorImportSchema?wsdl2 and
      the schema is available at
      http://localhost:8080/axis2/services/calculatorImportSchema?xsd=xsd0.xsd.

      It looks like a problems occurs because the schema import. I set
      http://localhost:8080/axis2/services/calculatorImportSchema?wsdl2 as the
      baseURI hence this should resolve to the correct schemaLocation where
      the schema is located at. However I do get an error when I try to
      perform the following operation, here messageReference is an
      InterfaceMessageReference.

      String messageContentModelName = messageReference.getMessageCont
      entModel();
      QName elementQName = null;

      if
      (WSDL2Constants.NMTOKEN_ELEMENT.equals(messageContentModelName)) {
      ElementDeclaration elementDeclaration =
      messageReference.getElementDeclaration();
      if (elementDeclaration == null)

      { InterfaceMessageReferenceElement messageReferenceElement = messageReference.toElement(); QName qName = messageReferenceElement.getElement().getQName(); throw new AxisFault("Unable to find element " + qName.toString() + " reffered to by operation " + axisOperation.getName().getLocalPart()); }

      elementQName = elementDeclaration.getName();
      } else if
      (WSDL2Constants.NMTOKEN_ANY.equals(messageContentModelName))

      { elementQName = Constants.XSD_ANY; }

      When the above is performed I get a AxisFault because the
      elementDeclaration is null. And Axis2 fails saying
      org.apache.axis2.AxisFault: org.apache.axis2.AxisFault: Unable to find
      element

      {http://charitha.org/}

      addition reffered to by operation addition

      This is clearly a problem with schema resolving. I'm not sure weather
      this is a woden bug or an issue in the way axis2 reads the WSDL. Here is
      the code we use to read the WSDL,

      private Description readInTheWSDLFile(String wsdlURI) throws
      WSDLException, AxisFault {

      DocumentBuilderFactory documentBuilderFactory =
      DocumentBuilderFactory
      .newInstance();
      documentBuilderFactory.setNamespaceAware(true);
      DocumentBuilder documentBuilder;
      Document document;

      try

      { documentBuilder = documentBuilderFactory.newDocumentBuilder(); document = documentBuilder.parse(wsdlURI); }

      catch (ParserConfigurationException e)

      { throw AxisFault.makeFault(e); } catch (IOException e) { throw AxisFault.makeFault(e); }

      catch (SAXException e)

      { throw AxisFault.makeFault(e); }

      return readInTheWSDLFile(document);
      }

      private Description readInTheWSDLFile(Document document) throws
      WSDLException {
      WSDLReader reader = DOMWSDLFactory.newInstance().newWSDLReader();
      if (customWSDLResolver != null)

      { reader.setURIResolver(customWSDLResolver); }

      // This turns on WSDL validation which is set off by default.
      reader.setFeature(WSDLReader.FEATURE_VALIDATION, true);

      WSDLSource wsdlSource = reader.createWSDLSource();
      wsdlSource.setSource(document.getDocumentElement());
      if (getBaseUri() != null && !"".equals(getBaseUri())) {
      try

      { wsdlSource.setBaseURI(new URI(getBaseUri())); }

      catch (URISyntaxException e)

      { AxisFault.makeFault(e); }

      }
      if (log.isDebugEnabled())

      { log.debug("Reading 2.0 WSDL with wsdl uri = " + wsdlURI); log.debug(" the stack at this point is: " + stackToString()); }

      return reader.readWSDL(wsdlSource);
      }

      Your help in this regard is appreciated.

      Thanks,
      Keith.

      Attachments

        1. Test.java
          2 kB
          Lawrence Mandel
        2. calculatorImportSchema.xsd
          1 kB
          Keith Godwin Chapman
        3. calculatorImportSchema.wsdl
          3 kB
          Keith Godwin Chapman

        Activity

          People

            lmandel Lawrence Mandel
            keithgchapman Keith Godwin Chapman
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: