Hello,
Hopefully someone can help me with an error I'm struggling with while trying
to use precompiled bindings. I'm trying to create a simple prototype where I
have a compiled binding/class in a jar file that is used as a dependency of
another project containing a binding and a class which extends a class
contained in the jar file. The jar contains a class Person, and the
jibx_bindingfactory compiled class that goes with it. The dependant project
contains a class Customer that extends Person, and binding.xml and
person-binding.xml mapping files.
Im getting the error below when I try to run a build shared library/compile
bindings task:
[java] java.lang.IllegalStateException: Internal error - cannot modify class
com.accenture.apsp.crossjardepend.Person loaded from D:\Projects\APSP_int
egration\CrossJarDependency\lib\person-shared.jar
[java] at
org.jibx.binding.classes.ClassFile.getClassGen(ClassFile.java:1283)
[java] at
org.jibx.binding.classes.ClassFile.getInstructionBuilder(ClassFile.java:1308)
[java] at
org.jibx.binding.classes.MethodBuilder.<init>(MethodBuilder.java:168)
[java] at
org.jibx.binding.classes.ExceptionMethodBuilder.<init>(ExceptionMethodBuilder.java:59)
[java] at
org.jibx.binding.classes.BoundClass.getStoreMethod(BoundClass.java:237)
[java] at
org.jibx.binding.def.PropertyDefinition.genStore(PropertyDefinition.java:699)
[java] at
org.jibx.binding.def.ValueChild.genUnmarshal(ValueChild.java:593)
[java] at
org.jibx.binding.def.ValueChild.genContentUnmarshal(ValueChild.java:885)
[java] at
org.jibx.binding.def.NestedStructure.genContentUnmarshal(NestedStructure.java:215)
[java] at
org.jibx.binding.def.ObjectBinding.genUnmarshalContentMethod(ObjectBinding.java:882)
[java] at
org.jibx.binding.def.ObjectBinding.genContentUnmarshal(ObjectBinding.java:1078)
[java] at
org.jibx.binding.def.ComponentProperty.genContentUnmarshal(ComponentProperty.java:299)
[java] at
org.jibx.binding.def.NestedStructure.genContentUnmarshal(NestedStructure.java:215)
[java] at
org.jibx.binding.def.ObjectBinding.genUnmarshalContentMethod(ObjectBinding.java:882)
[java] at
org.jibx.binding.def.ObjectBinding.genContentUnmarshal(ObjectBinding.java:1078)
[java] at
org.jibx.binding.def.MappingDefinition.generateUnmarshalImplementation(MappingDefinition.java:642)
[java] at
org.jibx.binding.def.MappingDefinition.generateCode(MappingDefinition.java:850)
[java] at
org.jibx.binding.def.DefinitionContext.generateCode(DefinitionContext.java:620)
[java] at
org.jibx.binding.def.BindingDefinition.generateCode(BindingDefinition.java:986)
[java] at org.jibx.binding.Compile.compile(Compile.java:221)
[java] at org.jibx.binding.Compile.main(Compile.java:374)
My ant task is as follows:
<target name="build-shared">
<delete quiet="true" dir="${basedir}/bin" />
<mkdir dir="${basedir}/bin" />
<echo message="Compiling shared classes" />
<javac srcdir="${basedir}/src/main/java" destdir="${basedir}/bin"
classpathref="bind-classpath" />
<echo message="Running JiBX binding compiler" />
<java classname="org.jibx.binding.Compile" fork="yes" failonerror="true"
classpathref="bind-classpath">
<arg value="-v"/>
<arg value="${basedir}/gen/binding.xml"/>
</java>
<echo message="Constructing and copying shared.jar" />
<mkdir dir="${build-client}/lib" />
<jar jarfile="${build-client}/lib/shared.jar"
basedir="${basedir}/bin" />
<mkdir dir="${build-service}/lib" />
<copy todir="${build-service}/lib"
file="${build-client}/lib/shared.jar"
/>
</target>
Here is my binding.xml:
<binding xmlns:tns="http://mycompany.com/apsp/domain"
xmlns:ns0="http://mycompany.com/apsp/integration/CustomerService"
name="binding" package="com.mycompany.apsp.domain" force-classes="true"
add-constructors="true">
<namespace uri="http://mycompany.com/apsp/domain" default="elements"/>
<namespace uri="http://mycompany.com/apsp/integration/CustomerService"
prefix="ns0"/>
<namespace uri="http://mycompany.com/apsp/crossjardepend" prefix="ns1" />
<include
path="file:///D:/Projects/APSP_integration/CrossJarDependency/gen/person-binding.xml"
precompiled="true"/>
<mapping abstract="true" type-name="tns:customer"
class="com.mycompany.apsp.domain.Customer">
<structure type="com.mycompany.apsp.crossjardepend.Person">
<value style="element" name="id" field="id" usage="optional"/>
</structure>
<value style="element" name="firstName" field="firstName"
usage="optional"/>
<value style="element" name="lastName" field="LastName"
usage="optional"/>
<value style="element" name="phone" field="phone" usage="optional"/>
</mapping>
</binding>
Here is the person-binding.xml that is referenced above:
<binding xmlns:tns="http://accenture.com/apsp/crossjardepend" name="binding"
package="com.accenture.apsp.crossjardepend">
<namespace uri="http://accenture.com/apsp/crossjardepend"
default="elements"/>
<mapping abstract="true" type-name="tns:person"
class="com.accenture.apsp.crossjardepend.Person">
<value style="element" name="id" field="id" usage="optional"/>
</mapping>
<mapping abstract="true" class="com.accenture.apsp.crossjardepend.Person"
name="person">
<structure map-as="tns:person"/>
</mapping>
</binding>
Thanks for any help or ideas for getting past this error!
-Josh L
--
View this message in context:
http://www.nabble.com/Error-trying-to-use-precompiled-bindings-and-extended-classes-tp25355028p25355028.html
Sent from the jibx-users mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users