private ClassDescriptor parseClass(String xml, String packageName) throws Exception { return (ClassDescriptor) parser .generateClassDescriptors(new StringReader(xml), packageName) .iterator().next(); }
+ "<class name=\"B\" extends=\"C\" is-interface=\"false\"></class>" + "</model>"; Set additionClds = parser.generateClassDescriptors(new StringReader( addition), model.getPackageName()); + "<class name=\"Ai\" is-interface=\"true\"></class>" + "</model>"; Set dodgyClds = parser.generateClassDescriptors(new StringReader(dodgyStr), model.getPackageName()); + "<class name=\"Ai\" is-interface=\"true\"></class>" + "</model>"; Set expectedClds = parser.generateClassDescriptors(new StringReader(dodgyStr), model.getPackageName());
public void testConflictingAttributes() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.String\"/></class></model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.Integer\"/></class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException e) { //e.printStackTrace(); } }
public void testMergeClassAddingInheritance() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"\">" + "<class name=\"A\" is-interface=\"false\"></class>" + "<class name=\"B\" is-interface=\"false\"></class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>"; ClassDescriptor cld1 = model.getClassDescriptorByName("A"); ClassDescriptor cld2 = (ClassDescriptor) parser .generateClassDescriptors(new StringReader(addition), model.getPackageName()) .iterator().next(); ClassDescriptor res = ModelMerger.mergeClass(cld1, cld2, model, Collections.singleton(cld2)); Set supers = new HashSet(); supers.add("B"); assertEquals(supers, res.getSuperclassNames()); }
public void testIsInterfaceMismatch() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"false\">" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); // Merge class with differing is-interface attribute String addition = "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\">" + "</class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException err) { } }
public void testAddAttribute() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.String\"/></class></model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"age\" type=\"java.lang.Integer\"/></class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\"><attribute name=\"name\" type=\"java.lang.String\"/><attribute name=\"age\" type=\"java.lang.Integer\"/></class></model>"; //assertXMLEqual(expected, xml); assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void testConflictingCollections() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\"><collection name=\"departments\" referenced-type=\"org.intermine.model.testmodel.Department\" ordered=\"true\" reverse-reference=\"company\"/></class><class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\"><reference name=\"company\" referenced-type=\"org.intermine.model.testmodel.Company\" reverse-reference=\"departments\"/></class></model>"; Model model = parser.process(new StringReader(modelStr)); // referenced-type wrong - Company.departments String addition = "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\"><collection name=\"departments\" referenced-type=\"org.intermine.model.testmodel.Company\" ordered=\"true\" reverse-reference=\"company\"/></class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException e) { } // reverse reference wrong - Company.departments addition = "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\"><collection name=\"departments\" referenced-type=\"org.intermine.model.testmodel.Department\" ordered=\"true\" reverse-reference=\"incorrect\"/></class>"; additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); model = parser.process(new StringReader(modelStr)); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException e) { // e.printStackTrace(); } }
public void testConflictingReferences() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\"><collection name=\"departments\" referenced-type=\"org.intermine.model.testmodel.Department\" ordered=\"true\" reverse-reference=\"company\"/></class><class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\"><reference name=\"company\" referenced-type=\"org.intermine.model.testmodel.Company\" reverse-reference=\"departments\"/></class></model>"; Model model = parser.process(new StringReader(modelStr)); // referenced-type wrong - Department.company String addition = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\"><reference name=\"company\" referenced-type=\"org.intermine.model.testmodel.Department\" reverse-reference=\"departments\"/></class></model>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException e) { e.printStackTrace(); } // reverse reference wrong - Department.company addition = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\"><class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\"><reference name=\"company\" referenced-type=\"org.intermine.model.testmodel.Company\" reverse-reference=\"incorrect\"/></class></model>"; additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); model = parser.process(new StringReader(modelStr)); try { ModelMerger.mergeModel(model, additionClds); fail("Expected ModelMergerException"); } catch (ModelMergerException e) { //e.printStackTrace(); } }
public void testInheritanceChain() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"C\" is-interface=\"false\"></class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" extends=\"C\" is-interface=\"false\"></class>" + "</model>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" extends=\"C\" is-interface=\"false\"></class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
+ "</class>"; cld2 = (ClassDescriptor) parser.generateClassDescriptors(new StringReader(addition), "org.intermine.model.testmodel").iterator().next(); try { ModelMerger.mergeCollections(cld1, cld2); + "</class>"; cld2 = (ClassDescriptor) parser.generateClassDescriptors( new StringReader(addition), "org.intermine.model.testmodel").iterator().next(); try {
public void testAddClass() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void testAddCollection() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"false\">" + "</class>" + "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); // add Company.departments String addition = "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"false\">" + "<collection name=\"departments\" referenced-type=\"org.intermine.model.testmodel.Department\" ordered=\"true\"/>" + "</class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"false\">" + "<collection name=\"departments\" referenced-type=\"org.intermine.model.testmodel.Department\" ordered=\"true\"/>" + "</class>" + "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "</class>" + "</model>"; //assertXMLEqual(expected, ModelMerger.mergeModel(model, additionClds).toString()); assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void testSubclassExisting() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<class name=\"org.intermine.model.testmodel.DepartmentSecretary\" extends=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"department\" type=\"java.lang.String\"/>" + "</class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.DepartmentSecretary\" extends=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"department\" type=\"java.lang.String\"/>" + "</class>" + "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; //assertXMLEqual(expected, ModelMerger.mergeModel(model, additionClds).toString()); assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void testAddReference() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\">" + "</class>" + "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); // add Department.company String addition = "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "<reference name=\"company\" referenced-type=\"org.intermine.model.testmodel.Company\"/>" + "</class>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.Company\" is-interface=\"true\">" + "</class>" + "<class name=\"org.intermine.model.testmodel.Department\" is-interface=\"false\">" + "<reference name=\"company\" referenced-type=\"org.intermine.model.testmodel.Company\"/>" + "</class>" + "</model>"; //assertXMLEqual(expected, ModelMerger.mergeModel(model, additionClds).toString()); assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void testSuperclassExisting() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.DepartmentSecretary\" is-interface=\"false\">" + "<attribute name=\"department\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<model name=\"additions\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.DepartmentSecretary\" extends=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "</class>" + "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"org.intermine.model.testmodel.DepartmentSecretary\" extends=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"department\" type=\"java.lang.String\"/>" + "</class>" + "<class name=\"org.intermine.model.testmodel.Secretary\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "</class>" + "</model>"; //assertXMLEqual(expected, ModelMerger.mergeModel(model, additionClds).toString()); assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
public void testRedundancy() throws Exception { String modelStr = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"C\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "<collection name=\"col\" referenced-type=\"C\"/>" + "<reference name=\"ref\" referenced-type=\"C\"/>" + "</class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; Model model = parser.process(new StringReader(modelStr)); String addition = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" extends=\"C\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "<collection name=\"col\" referenced-type=\"C\"/>" + "<reference name=\"ref\" referenced-type=\"C\"/>" + "</class>" + "</model>"; Set additionClds = parser.generateClassDescriptors(new StringReader(addition), model.getPackageName()); String expected = "<model name=\"testmodel\" package=\"org.intermine.model.testmodel\">" + "<class name=\"A\" extends=\"B\" is-interface=\"false\"></class>" + "<class name=\"B\" extends=\"C\" is-interface=\"false\">" + "<attribute name=\"name\" type=\"java.lang.String\"/>" + "<collection name=\"col\" referenced-type=\"C\"/>" + "<reference name=\"ref\" referenced-type=\"C\"/>" + "</class>" + "<class name=\"C\" is-interface=\"false\"></class>" + "</model>"; assertEquals(parser.process(new StringReader(expected)).getClassDescriptors(), ModelMerger.mergeModel(model, additionClds).getClassDescriptors()); }
+ "</class>"; cld2 = (ClassDescriptor) parser.generateClassDescriptors( new StringReader(addition), "org.intermine.model.testmodel").iterator().next(); try {