log4j.rootLogger=debug, stdout # Direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%nAfter that I see that by running:
wsdl2java -d adb -uri yourwslduri
I get
2013-03-05 11:41:46 DEBUG ProjectResourceBundle:70 - org.apache.axis2.schema.i18n.resource::handleGe tObject(schema.unsupportedcontenterror) Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:293) at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35) at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24) Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:53) at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:246 ) ... 2 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:50) ... 3 more Caused by: org.apache.axis2.schema.SchemaCompilationException: Unsupported content Simple Content ! at org.apache.axis2.schema.SchemaCompiler.copyMetaInfoHierarchy(SchemaCompiler.java:1412) at org.apache.axis2.schema.SchemaCompiler.processComplexContent(SchemaCompiler.java:1278) at org.apache.axis2.schema.SchemaCompiler.processContentModel(SchemaCompiler.java:1227) at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1171) at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1091) at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:1005) at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:644) at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:614) at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:422) at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:381) at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:381) at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:381) at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:291) at org.apache.axis2.schema.ExtensionUtility.invoke(ExtensionUtility.java:102) ... 8 more
while if I use -d xmlbeans, all goes fine.
I see this code:
XmlSchemaType type = resolvedSchema.getTypeByName(baseTypeName); XmlSchemaComplexType complexType = (XmlSchemaComplexType) type; XmlSchemaContentModel content = complexType.getContentModel(); .... if (content instanceof XmlSchemaSimpleContent) { throw new SchemaCompilationException(SchemaCompilerMessages.getMessage("schema.unsupportedcontenterror", "Simple Content"));
This org.apache.axis2.schema.SchemaCompiler is in axis2-adb-codegen-1.6.1.jar
I have downloaded the source code, and added:
try { log.warn("copyMetaInfoHierarchy " + baseTypeName.toString() + " " + parentSchema.toString()); System.out.println("copyMetaInfoHierarchy " + baseTypeName.toString() + " " + parentSchema.toString()); } catch (Throwable t) { log.error("copyMetaInfoHierarchy", t); t.printStackTrace(); }
at the beginning of copyMetaInfoHierarchy (I had also to make sure that parentSchema is declared as org.apache.ws.commons.schema.XmlSchema.
I found out that the offending element is a
<xsd:complexType name="ItemClassificationCodeType"> <xsd:simpleContent> <xsd:extension base="tns:CodeType" /> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="CodeType"> <xsd:simpleContent> <xsd:extension base="xsd:normalizedString"> <xsd:attribute name="listID" type="xsd:token" use="optional"> </xsd:attribute> <xsd:attribute name="listAgencyID" type="xsd:anyURI" use="optional"> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType>
I think adb doesn't like the simpleContent http://www.w3schools.com/schema/el_simpleContent.asp, and this is the JIRA issue (July 2012) :
https://issues.apache.org/jira/browse/AXIS2-5357
it looks like even Axis 1.6.2 (April 2012) is not handling this syntax.
I bet my ass that Flash Builder is using Axis2 under the cover
No comments:
Post a Comment