Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

xjb binding file and catalog file

843834Jun 23 2010
I have two schemas that exist in separate projects.

I utilize a catalog file to correctly take the namespace of a schema and refer to the specific location of the other schema. Long term the externalized schema will exist in a jar file.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public">
<public publicId="http://foo.com/common/model/contactpoint" uri="file:/C:/Development/workspace/foo-model-member/src/main/sample/contactpoint.xsd"/>
</catalog>

The problem is that the xjb file does not appear to use the same catalog file for resolving the schemaLocation attribute. Is there a way to apply the catalog to the schemaLocation attribute of the binding element? In the xjc command, I supply a catalog file and it correctly integrates this into the build process.

<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>

<jxb:globalBindings
fixedAttributeAsConstantProperty="true" collectionType="java.util.ArrayList"
typesafeEnumBase="xs:NCName" choiceContentProperty="false"
typesafeEnumMemberName="generateError" enableFailFastCheck="false"
generateIsSetMethod="false" underscoreBinding="asCharInWord" />

<jxb:bindings schemaLocation="../xsd/member.xsd" node="/xs:schema">
<!--jxb:globalBindings>
<jxb:serializable/>
<jxb:javaType name="java.util.Calendar" xmlType="xs:date"
parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
printMethod="javax.xml.bind.DatatypeConverter.printDate" />
</jxb:globalBindings-->
<jxb:schemaBindings>
<jxb:package name="com.foo.model.member">
<jxb:javadoc>
<![CDATA[<body>Package level documentation.</body>]]>
</jxb:javadoc>
</jxb:package>
</jxb:schemaBindings>
</jxb:bindings>

<jxb:bindings schemaLocation="http://foo.com/common/model/contactpoint"
node="/xs:schema/xs:complexType[@name='Address']">
<jxb:class ref="com.foo.commons.model.contactpoint.Address"/>
</jxb:bindings>

<jxb:bindings schemaLocation="http://foo.com/common/model/contactpoint"
node="/xs:schema/xs:complexType[@name='Email']">
<jxb:class ref="com.foo.commons.model.contactpoint.Email"/>
</jxb:bindings>

<jxb:bindings schemaLocation="http://foo.com/common/model/contactpoint"
node="/xs:schema/xs:complexType[@name='Phone']">
<jxb:class ref="com.foo.commons.model.contactpoint.Phone"/>
</jxb:bindings>

<jxb:bindings schemaLocation="http://foo.com/common/model/contactpoint"
node="/xs:schema/xs:complexType[@name='ContactPoint']">
<jxb:class ref="com.foo.commons.model.contactpoint.ContactPoint"/>
</jxb:bindings>
</jxb:bindings>

But it throughs exceptions on the jxb:bindings schemaLocation:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Model
[INFO] task-segment: [generate-sources]
[INFO] ------------------------------------------------------------------------
[INFO] [jaxb2:xjc {execution: default}]
[INFO] Generating source...
[INFO] parsing a schema...
[ERROR] file:/C:/Development/workspace/model-member/src/main/xjb/member.xjb[28,57]
com.sun.istack.SAXParseException2: "http://foo.com/common/model/contactpoint" is not a part of this compilation. Is this a mistake for "file:/C:/Development/workspace/model-member/src/main/xjb/member.xjb"?
at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:501)
at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:495)
at com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:205)
at com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:289)
at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:134)
at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:96)
at com.sun.tools.xjc.reader.internalizer.DOMForest.transform(DOMForest.java:448)
at com.sun.tools.xjc.ModelLoader.buildDOMForest(ModelLoader.java:342)
at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:374)
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 org.codehaus.mojo.jaxb2.AbstractXjcMojo.execute(AbstractXjcMojo.java:297)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

Thanks,

Jay
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 21 2010
Added on Jun 23 2010
0 comments
1,129 views