package test; import java.io.*; import javax.jmi.model.*; import javax.jmi.reflect.*; import org.netbeans.api.mdr.MDRObject; import org.netbeans.mdr.test.MDRTestCase; import junit.extensions.*; import org.netbeans.api.mdr.*; import org.netbeans.api.mdr.events.*; import org.openide.util.Lookup; import org.netbeans.junit.*; public class TestBug extends MDRTestCase { public TestBug (String testName) { super(testName); } public static void main (String[] args) { junit.textui.TestRunner.run (suite ()); } public static NbTest suite () { NbTestSuite suite = new NbTestSuite (); suite.addTestSuite (TestBug.class); NbTestSetup setup = new NbTestSetup (suite) { public void setUp () { org.netbeans.mdr.handlers.BaseObjectHandler.setDefaultClassLoader (this.getClass ().getClassLoader ()); } public void tearDown () { MDRManager.getDefault().shutdownAll(); } }; return setup; } public void writeXMI(String filename, RefPackage pkg) { Lookup lookup = Lookup.getDefault(); XMIWriter writer = (XMIWriter) lookup.lookup (XMIWriter.class); File file = new File(filename); try { OutputStream os = new FileOutputStream (file); writer.write (os, pkg); os.flush (); os.close (); } catch (Exception e) { fail (e.getMessage ()); } } public void test() { ModelPackage model_pkg = loadMOFModel ("test.xml", "TEST_MODEL"); MofPackage mof_pkg = findMofPackage (model_pkg, "Test"); TestPackage pkg = (TestPackage) createExtent (mof_pkg, "XXX"); AClass aClass = pkg.getA(); BClass bClass = pkg.getB(); ((MDRObject) aClass).repository().beginTrans(true); A a = aClass.createA(); B b = bClass.createB(); ((MDRObject) aClass).repository().endTrans(); writeXMI("output-good.xml", pkg); ((MDRObject) aClass).repository().beginTrans(true); a.getB().add(b); ((MDRObject) aClass).repository().endTrans(); writeXMI("output-bad.xml", pkg); } }