Details
-
Bug
-
Status: To Do
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Importing WSDL service http://www.brenda-enzymes.org/soap2/brenda.wsdl fails with:
WARN 2012-05-11 09:24:58,829 (net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionRegistryImpl:579) - Provider WSDL service http://www.brenda-enzymes.org/soap2/brenda.wsdl: There was an error with the wsdl: http://www.brenda-enzymes.org/soap2/brenda.wsdl java.lang.NullPointerException at org.apache.axis.wsdl.symbolTable.Utils.getNodeNameQName(Utils.java:225) at org.apache.axis.wsdl.symbolTable.SymbolTable.createTypeFromDef(SymbolTable.java:1137) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:986) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119) at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119) at org.apache.axis.wsdl.symbolTable.SymbolTable.populateTypes(SymbolTable.java:909) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:705) at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:460) at net.sf.taverna.wsdl.parser.WSDLParser.<init>(WSDLParser.java:167) at net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceProvider.findServiceDescriptionsAsync(WSDLServiceProvider.java:101) at net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionRegistryImpl$FindServiceDescriptionsThread.run(ServiceDescriptionRegistryImpl.java:670) INFO 2012-05-11 09:24:58,924 (net.sf.taverna.t2.workbench.ui.servicepanel.ServicePanel:131) - There was an error with the wsdl: http://www.brenda-enzymes.org/soap2/brenda.wsdl WSDL service http://www.brenda-enzymes.org/soap2/brenda.wsdl
This seems like a bug in getNodeNameQName:
Node search = node.getParentNode(); while (search != null) { String ln = search.getLocalName(); if (ln.equals("schema")) { search = null; } else if (ln.equals("element") || ln.equals("attribute")) { localName = SymbolTable.ANON_TOKEN + getNodeNameQName(search).getLocalPart(); search = null; } else if (ln.equals("complexType") || ln.equals("simpleType")) { localName = getNodeNameQName(search).getLocalPart() + SymbolTable.ANON_TOKEN + localName; search = null; } else { search = search.getParentNode(); } } if (localName == null) { return null; }
This fails when the search reaches the Document, which does not have a localName() - thus ln.equals() throws a NPE.
Reversing the equals should work around this.
Note - the WSDL does not comply with the WS-I profile. Worth fixing?
Would this work with the wsdl4j version?