JamVM and JAXB

View: New views
5 Messages — Rating Filter:   Alert me  

JamVM and JAXB

by Teresa L. Johnson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi All,

I'm trying to compile an XML schema using JAXB 2.1.10 against JamVM:

jamvm -verbose -Djava.endorsed.dirs=/usr/local/jamvm/jre/lib/endorsed -jar jaxb-xjc.jar messages.xsd

But I'm getting java.lang.NullPointerException. Below is a snippet from a verbose debug stack trace:
.
.
.

[Loaded gnu/xml/validation/xmlschema/XMLSchemaSchemaFactory from /usr/local/share/classpath/glibj.zip]
[Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar]
[Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader]
[Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar]
[Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service]
[Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar]
[Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader]
[Loaded org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader2 from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar]
[Linking class org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader2]
[Loaded org/relaxng/datatype/DatatypeException from /usr/local/jamvm/jre/lib/endorsed/jaxb1-impl.jar]
[Linking class org/relaxng/datatype/DatatypeException]
[Loaded org/xml/sax/SAXException from /usr/local/classpath/share/classpath/glibj.zip]
[Linking class org/xml/sax/SAXException]
[Linking class com/sun/tools/xjc/AbortException]
[Loaded com/sun/tools/xjc/AbortException]
[Loaded java/lang/reflect/InvocationTargetException from /usr/local/classpath/share/classpath/glibj.zip]
[Linking class java/lang/reflect/InvocationTargetException]
[Loaded java/lang/UnsupportedClassVersionError from /usr/local/classpath/share/classpath/glibj.zip]
[Linking class java/lang/UnsupportedClassVersionError]
[Loaded java/lang/Throwable$StaticData from /usr/local/classpath/share/classpath/glibj.zip]
[Linking class java/lang/Throwable$StaticData]
java.lang.reflect.InvocationTargetException
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:367)
   at jamvm.java.lang.JarLauncher.main(JarLauncher.java:50)
Caused by: java.lang.NullPointerException
   at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service$Loader2.getResources(Unknown Source)
   at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service.<init>(Unknown Source)
   at org.relaxng.datatype.helpers.DatatypeLibraryLoader.<init>(Unknown Source)
   at gnu.xml.validation.xmlschema.XMLSchemaBuilder.<init>(XMLSchemaBuilder.java:69)
   at gnu.xml.validation.xmlschema.XMLSchemaSchemaFactory.newSchema(XMLSchemaSchemaFactory.java:113)
   at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:101)
   at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:357)
   at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167)
   at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113)
   at com.sun.tools.xjc.Driver.run(Driver.java:313)
   at com.sun.tools.xjc.Driver.run(Driver.java:191)
   at com.sun.tools.xjc.Driver._main(Driver.java:116)
   at com.sun.tools.xjc.Driver.access$000(Driver.java:74)
   at com.sun.tools.xjc.Driver$1.run(Driver.java:96)



It looks like the Gnu class (gnu.xml.validation.xmlschema.XMLSchemaBuilder) is incompatible with JAXB's
class (org.relaxng.datatype.helpers.DatatypeLibraryLoader).

Is this an incompatibility issue? 

Is JamVM/Classpath compatible with Sun's JAXB? 

Any help would be greatly appreciated.

Regards,
      Teresa

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Jamvm-general mailing list
Jamvm-general@...
https://lists.sourceforge.net/lists/listinfo/jamvm-general

Re: JamVM and JAXB

by Mark Wielaard :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Teresa,

On Sun, 2009-03-01 at 00:24 -0800, Teresa L. Johnson wrote:

> Caused by: java.lang.NullPointerException
>    at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service
> $Loader2.getResources(Unknown Source)
>    at org.relaxng.datatype.helpers.DatatypeLibraryLoader
> $Service.<init>(Unknown Source)
> [...]
> It looks like the Gnu class
> (gnu.xml.validation.xmlschema.XMLSchemaBuilder) is incompatible with
> JAXB's
> class (org.relaxng.datatype.helpers.DatatypeLibraryLoader).

This looks like the following GNU Classpath bug:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38149

There is a suggestion in comment #1 on how to solve it.
Could you try that out? If it works, we need to patch it upstream.

Thanks,

Mark


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Jamvm-general mailing list
Jamvm-general@...
https://lists.sourceforge.net/lists/listinfo/jamvm-general

Re: JamVM and JAXB

by Chris Burdess-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Teresa,

Teresa L. Johnson wrote:
> I'm trying to compile an XML schema using JAXB 2.1.10 against JamVM:

XML schema validation is not yet supported in Classpath.
--
Chris Burdess


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Jamvm-general mailing list
Jamvm-general@...
https://lists.sourceforge.net/lists/listinfo/jamvm-general

Re: JamVM and JAXB

by Teresa L. Johnson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Mark,

Thanks for your reply.  I made the suggested changes in the getResources() method of Loader2
so that it reflects the following:

     Enumeration getResources(String resName) {
         ClassLoader cl = Loader.class.getClassLoader();
            URL url;
            if (cl == null)
                url = ClassLoader.getSystemResource(resName);
            else
                url = cl.getResource(resName);
            return new Singleton(url);
       }

It did work and I no longer received a NullPointerException in  DatatypeLibraryLoader. 

However, a new error occurs: java.lang.annotation.AnnotationTypeMismatchException
when executing the following line:

jamvm -verbose -Djava.endorsed.dirs=/usr/local/jamvm/jre/lib/endorsed -Djavax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl -jar jaxb-xjc.jar message.xsd

javax.xml.datatype.DatatypeFactory points to JAXP's implementation since gnu.xml.datatype.JAXPDatatypeFactory doesn't exist.

Below is the stack trace:

java.lang.reflect.InvocationTargetException
   at java.lang.reflect.VMMethod.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:327)
   at jamvm.java.lang.JarLauncher.main(JarLauncher.java:50)
Caused by: java.lang.annotation.AnnotationTypeMismatchException
   at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:379)
   at $Proxy1.propOrder(Unknown Source)
   at com.sun.xml.bind.v2.model.annotation.XmlTypeQuick.propOrder(XmlTypeQuick.java:40)
   at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.<init>(ClassInfoImpl.java:172)
   at com.sun.xml.bind.v2.model.impl.RuntimeClassInfoImpl.<init>(RuntimeClassInfoImpl.java:95)
   at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(RuntimeModelBuilder.java:110)
   at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(RuntimeModelBuilder.java:81)
   at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:239)
   at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:100)
   at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:81)
   at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:209)
   at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:95)
   at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:81)
   at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:315)
   at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:330)
   at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:441)
   at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:288)
   at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1111)
   at com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getJAXBContext(BindInfo.java:330)
   at com.sun.tools.xjc.reader.xmlschema.bindinfo.AnnotationParserFactoryImpl$1.<init>(AnnotationParserFactoryImpl.java:80)
   at com.sun.tools.xjc.reader.xmlschema.bindinfo.AnnotationParserFactoryImpl.create(AnnotationParserFactoryImpl.java:79)
   at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.createAnnotationParser(NGCCRuntimeEx.java:359)
   at com.sun.xml.xsom.impl.parser.state.annotation.action0(annotation.java:48)
   at com.sun.xml.xsom.impl.parser.state.annotation.enterElement(annotation.java:73)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.NGCCHandler.spawnChildFromEnterElement(NGCCHandler.java:74)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:500)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.NGCCHandler.revertToParentFromEnterElement(NGCCHandler.java:111)
   at com.sun.xml.xsom.impl.parser.state.foreignAttributes.enterElement(foreignAttributes.java:50)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.NGCCHandler.spawnChildFromEnterElement(NGCCHandler.java:74)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:255)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:373)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:213)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:347)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:305)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:378)
   at com.sun.xml.xsom.impl.parser.state.complexType.enterElement(complexType.java:468)
   at com.sun.xml.xsom.impl.parser.state.NGCCRuntime.startElement(NGCCRuntime.java:219)
   at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
   at com.sun.tools.xjc.util.SubtreeCutter.startElement(SubtreeCutter.java:104)
   at com.sun.tools.xjc.reader.ExtensionBindingChecker.startElement(ExtensionBindingChecker.java:144)
   at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
   at com.sun.tools.xjc.reader.xmlschema.parser.IncorrectNamespaceURIChecker.startElement(IncorrectNamespaceURIChecker.java:113)
   at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
   at com.sun.tools.xjc.reader.xmlschema.parser.CustomizationContextChecker.startElement(CustomizationContextChecker.java:188)
   at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
   at com.sun.tools.xjc.ModelLoader$SpeculationChecker.startElement(ModelLoader.java:455)
   at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
   at com.sun.tools.xjc.reader.internalizer.VersionChecker.startElement(VersionChecker.java:98)
   at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
   at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
   at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
   at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2740)
   at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
   at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
   at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
   at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
   at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
   at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
   at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
   at com.sun.xml.xsom.parser.JAXPParser.parse(JAXPParser.java:115)
   at com.sun.tools.xjc.ModelLoader$2.parse(ModelLoader.java:479)
   at com.sun.tools.xjc.ModelLoader$XMLSchemaParser.parse(ModelLoader.java:262)
   at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.parseEntity(NGCCRuntimeEx.java:337)
   at com.sun.xml.xsom.impl.parser.ParserContext.parse(ParserContext.java:124)
   at com.sun.xml.xsom.parser.XSOMParser.parse(XSOMParser.java:183)
   at com.sun.tools.xjc.ModelLoader.createXSOMSpeculative(ModelLoader.java:496)
   at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:366)
   at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167)
   at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113)
   at com.sun.tools.xjc.Driver.run(Driver.java:313)
   at com.sun.tools.xjc.Driver.run(Driver.java:191)
   at com.sun.tools.xjc.Driver._main(Driver.java:116)
   at com.sun.tools.xjc.Driver.access$000(Driver.java:74)
   at com.sun.tools.xjc.Driver$1.run(Driver.java:96)

The error stems from the following code in AnnotationInvocationHandler.java (line:379):

public Object invoke(Object proxy, Method method, Object[] args)
      throws Throwable
    {
        String methodName = method.getName().intern();
        if (args == null || args.length == 0)
        {
            if (methodName == "toString")
            {
                return toString(type, memberValues);
            }
            else if (methodName == "hashCode")
            {
                return Integer.valueOf(hashCode(type, memberValues));
            }
            else if (methodName == "annotationType")
            {
                return type;
            }
            else
            {
                Object val = memberValues.get(methodName);
                if (val == null)
                {
                    throw new IncompleteAnnotationException(type, methodName);
                }
                if (! getBoxedReturnType(method).isInstance(val))
                {
                    throw new AnnotationTypeMismatchException(method,
                        val.getClass().getName());
                }    <------------------------------------------------------------------------------------------------------ line 379
        if (val.getClass().isArray())
        {
            val = arrayClone(val);
        }
                return val;
            }
        }
        else if (args.length == 1)
        {
            if (methodName == "equals")
            {
                return Boolean.valueOf(equals(type, memberValues, args[0]));
            }
        }
        throw new InternalError("Invalid annotation proxy");
    }

It appears that "val" is an instance of an unexpected type.

Do you know if there's a workaround for this error?  Or is this a case of incompatibility?

Again, many, many thanks for your help.

Regards,
     Teresa

On Sun, Mar 1, 2009 at 1:29 PM, Mark Wielaard <mark@...> wrote:
Hi Teresa,

On Sun, 2009-03-01 at 00:24 -0800, Teresa L. Johnson wrote:
> Caused by: java.lang.NullPointerException
>    at org.relaxng.datatype.helpers.DatatypeLibraryLoader$Service
> $Loader2.getResources(Unknown Source)
>    at org.relaxng.datatype.helpers.DatatypeLibraryLoader
> $Service.<init>(Unknown Source)
> [...]
> It looks like the Gnu class
> (gnu.xml.validation.xmlschema.XMLSchemaBuilder) is incompatible with
> JAXB's
> class (org.relaxng.datatype.helpers.DatatypeLibraryLoader).

This looks like the following GNU Classpath bug:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38149

There is a suggestion in comment #1 on how to solve it.
Could you try that out? If it works, we need to patch it upstream.

Thanks,

Mark



------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Jamvm-general mailing list
Jamvm-general@...
https://lists.sourceforge.net/lists/listinfo/jamvm-general

Re: JamVM and JAXB

by Teresa L. Johnson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Chris,

Ah.

That might explain the java.lang.annotation.AnnotationTypeMismatchException that I'm having.

Thanks!

Regards,
     Teresa

On Mon, Mar 2, 2009 at 12:44 AM, Chris Burdess <dog@...> wrote:
Hi Teresa,


Teresa L. Johnson wrote:
I'm trying to compile an XML schema using JAXB 2.1.10 against JamVM:

XML schema validation is not yet supported in Classpath.
--
Chris Burdess



------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Jamvm-general mailing list
Jamvm-general@...
https://lists.sourceforge.net/lists/listinfo/jamvm-general