Hi, I have created my own custom IdDefRefMapperBase impl so that I can have IDREF's on my collection. All the custom IdDefRefMapperBase is doing is generating the correct "id" for the references by overriding the getIdValue() . This is working fine for "marshalling" the objects out but when I try to read the same XML back in for "un-marshalling" I always get this error pasted below. You can see the marshalled xml (below) that is having the error AS WELL as the xml that is NOT. You will notice in the XML output that is NOT having the issue, that the "<color/>" element is not present on the "<style/>" element. There are ONLY <option> elements.
What it seems like is happening as that the collection's can't support IDREF's with mulitple object types in the collection? Is this the case? I have tried everyting and searched the mailing lists, JIRA, etc with no luck on this issue. Please help! Thanks in advance! ----------------- Mapping file: ------------------ <mapping class="test.TestModelYear" name="modelYear"> <collection create-type="java.util.HashSet" field="styles" item-type="test.TestStyle"/> <collection name="features" field="features" usage="optional" create-type="java.util.HashSet" > <structure name="option" marshaller="com.edmunds.vehicle.jibx.VdmIdRefMapper" unmarshaller="com.edmunds.vehicle.jibx.VdmIdRefMapper"/> </collection> </mapping> <mapping class="test.TestStyle" name="style"> <collection name="features" field="features" usage="optional" create-type="java.util.HashSet" > <structure name="option" marshaller="com.edmunds.vehicle.jibx.VdmIdRefMapper" unmarshaller="com.edmunds.vehicle.jibx.VdmIdRefMapper"/> </collection> </mapping> <mapping class="test.TestOption" name="option" > <value style="attribute" name="path" field="path" ident="def"/> <value style="attribute" name="optionName" field="optionName" usage="optional"/> </mapping> <mapping class="test.TestColor" name="color"> <value style="attribute" name="path" field="path" ident="def"/> <value style="attribute" name="color" field="color" usage="optional"/> </mapping> ------------- Test Case: -------------- package com.edmunds.jibx; import junit.framework.TestCase; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import test.TestColor; import test.TestModelYear; import test.TestOption; import test.TestStyle; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.HashSet; import java.util.Set; public class TestJibxMappings extends TestCase { private static final String TMP_SAMPLE_OUTPUT_XML_FILE = "/tmp/sample-output.xml"; public TestModelYear generateObject() throws Exception { TestModelYear modelYear = new TestModelYear(); TestStyle style = new TestStyle(); TestOption option = new TestOption(); option.setPath("/feature/100"); option.setOptionName("Option 1"); TestOption option2 = new TestOption(); option2.setPath("/feature/101"); option2.setOptionName("Option 2"); TestColor color = new TestColor(); color.setPath("/feature/102"); color.setColor("Blue"); Set features = new HashSet(); features.add(option); features.add(option2); features.add(color); modelYear.setFeatures(features); Set styles = new HashSet(); style.setFeatures(features); styles.add(style); modelYear.setStyles(styles); return modelYear; } private void marshallToFile() throws Exception { TestModelYear modelYear = generateObject(); IBindingFactory bindingFactory = BindingDirectory.getFactory(TestModelYear.class); IMarshallingContext mctx = bindingFactory.createMarshallingContext(); mctx.setIndent(2); mctx.marshalDocument(modelYear, "UTF-8", null, new FileOutputStream(TMP_SAMPLE_OUTPUT_XML_FILE)); } public void testUnmarshallObjectsFromFile() { try { marshallToFile(); IBindingFactory bindingFactory = BindingDirectory.getFactory(TestModelYear.class); IUnmarshallingContext unmarshallCtx = bindingFactory.createUnmarshallingContext(); TestModelYear modelYear = (TestModelYear) unmarshallCtx.unmarshalDocument(new FileInputStream(TMP_SAMPLE_OUTPUT_XML_FILE), "UTF-8"); assert modelYear != null; } catch (Exception e) { e.printStackTrace(); assert false; } } } ---------------------------- XML WITH-OUT ERROR: ---------------------------- <?xml version="1.0" encoding="UTF-8"?> <modelYear> <style> <features> <option path="/feature/100" optionName="Option 1"/> <option path="/feature/101" optionName="Option 2"/> </features> </style> <features> <option ref="/feature/100"/> <option ref="/feature/101"/> </features> </modelYear> ---------------------------- XML WITH ERROR: ---------------------------- <?xml version="1.0" encoding="UTF-8"?> <modelYear> <style> <features> <option path="/feature/100" optionName="Option 1"/> <option path="/feature/101" optionName="Option 2"/> <color path="/feature/102" color="Blue"/> <!-- this is the color element causing issue that I want --> </features> </style> <features> <option ref="/feature/100"/> <option ref="/feature/101"/> <option ref="/feature/102"/> <!-- ref to color element above causing issue --> </features> </modelYear> --------- Error: --------- org.jibx.runtime.JiBXException: Expected "features" end tag, found "color" start tag (line 5, col 48) at org.jibx.runtime.impl.UnmarshallingContext.parsePastCurrentEndTag(UnmarshallingContext.java:792) at test.TestStyle.JiBX_test_jibx_unmarshal_1_0(TestStyle.java) at test.JiBX_test_jibxTestStyle_access2.unmarshal() at test.JiBX_MungeAdapter.JiBX_test_jibx_unmarshal_1_0() at test.TestModelYear.JiBX_test_jibx_unmarshal_1_2(TestModelYear.java) at test.JiBX_test_jibxTestModelYear_access2.unmarshal() at org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(UnmarshallingContext.java:2537) at org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(UnmarshallingContext.java:2680) at com.edmunds.jibx.TestJibxMappings.testUnmarshallObjectsFromFile(TestJibxMappings.java:98) 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:324) at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580) at org.testng.internal.Invoker.invokeMethod(Invoker.java:473) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:567) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:834) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.runWorkers(TestRunner.java:689) at org.testng.TestRunner.privateRun(TestRunner.java:566) at org.testng.TestRunner.run(TestRunner.java:466) at org.testng.SuiteRunner.runTest(SuiteRunner.java:301) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:296) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:276) at org.testng.SuiteRunner.run(SuiteRunner.java:191) at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:808) at org.testng.TestNG.runSuitesLocally(TestNG.java:776) at org.testng.TestNG.run(TestNG.java:701) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124) ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ jibx-users mailing list jibx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jibx-users