Schema resolving issue in Axis2
-------------------------------
Key: WODEN-204
URL: https://issues.apache.org/jira/browse/WODEN-204
Project: Woden
Issue Type: Test
Reporter: Keith Godwin Chapman
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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]