Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'cdo/tests/uml/org.eclipse.uml2.uml.cdo.tests/src/org/eclipse/uml2/uml/cdo/tests/UMLSelfTest.java')
-rwxr-xr-xcdo/tests/uml/org.eclipse.uml2.uml.cdo.tests/src/org/eclipse/uml2/uml/cdo/tests/UMLSelfTest.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/cdo/tests/uml/org.eclipse.uml2.uml.cdo.tests/src/org/eclipse/uml2/uml/cdo/tests/UMLSelfTest.java b/cdo/tests/uml/org.eclipse.uml2.uml.cdo.tests/src/org/eclipse/uml2/uml/cdo/tests/UMLSelfTest.java
new file mode 100755
index 00000000..46f0a5ce
--- /dev/null
+++ b/cdo/tests/uml/org.eclipse.uml2.uml.cdo.tests/src/org/eclipse/uml2/uml/cdo/tests/UMLSelfTest.java
@@ -0,0 +1,130 @@
+package org.eclipse.uml2.uml.cdo.tests;
+
+import java.io.CharArrayWriter;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * @author Eike Stepper
+ */
+public class UMLSelfTest
+ extends AbstractUMLTest {
+
+ private static final boolean PERSIST_RESULTS = false;
+
+ private static final String GIT_CLONE_UML2 = System
+ .getProperty("git.clone.uml2").replace('\\', '/');
+
+ private static final URI GIT_URI = URI.createFileURI(GIT_CLONE_UML2);
+
+ private static final String UML_UML = GIT_CLONE_UML2
+ + "/plugins/org.eclipse.uml2.uml/model/UML.uml";
+
+ private static final String UML_TEST_UML = "UMLTest.uml";
+
+ @Override
+ protected boolean dbScenario() {
+ return true;
+ }
+
+ public void testSelf()
+ throws Exception {
+
+ UMLResource umlResource = loadUMLResource(UML_UML);
+ EcoreUtil.resolveAll(umlResource.getResourceSet());
+ List<String> xmiDs = listIDs(umlResource);
+
+ URI uri = umlResource.getURI();
+ System.out.println(uri);
+ Resource cdoResource = createResource(umlResource.getContents());
+
+ saveResources();
+ System.out.println();
+
+ CDOSession session2 = openSession();
+ CDOTransaction transaction2 = session2.openTransaction();
+ ResourceSet cdoResourceSet = transaction2.getResourceSet();
+ configureUMLResourceSet(cdoResourceSet);
+
+ Resource resource2 = cdoResourceSet.getResource(cdoResource.getURI(),
+ true);
+
+ for (TreeIterator<EObject> it = resource2.getAllContents(); it
+ .hasNext();) {
+ EObject element = it.next();
+ System.out.println(element);
+ }
+
+ UMLResource umlResource2 = createUMLResource(UML_TEST_UML);
+ umlResource2.getContents().addAll(resource2.getContents());
+ applyIDs(umlResource2, xmiDs);
+
+ CharArrayWriter output = new CharArrayWriter();
+ umlResource2.save(output, null);
+
+ String umlTest = output.toString();
+ umlTest = removeHeader(umlTest);
+ umlTest = umlTest
+ .replace(GIT_URI + "/plugins/org.eclipse.uml2.uml/model/", "");
+ umlTest = umlTest.replace(GIT_URI + "/plugins/", "../../");
+
+ if (PERSIST_RESULTS) {
+ IOUtil.writeFile(new File(UML_TEST_UML), umlTest.getBytes());
+ }
+
+ String uml = IOUtil.readTextFile(new File(UML_UML));
+ uml = removeHeader(uml);
+
+ if (PERSIST_RESULTS) {
+ IOUtil.writeFile(new File("UMLExpected.uml"), uml.getBytes());
+ }
+
+ assertEquals(uml, umlTest);
+ }
+
+ private static String removeHeader(String xmi) {
+ return xmi.replaceFirst("<xmi:XMI [^>]*>", "");
+ }
+
+ private static List<String> listIDs(XMIResource resource) {
+ List<String> ids = new ArrayList<String>();
+
+ for (TreeIterator<EObject> it = resource.getAllContents(); it
+ .hasNext();) {
+ EObject element = it.next();
+ String id = resource.getID(element);
+ if (id != null) {
+ ids.add(id);
+ }
+ }
+
+ return ids;
+ }
+
+ private static void applyIDs(XMIResource resource, List<String> ids) {
+ Iterator<String> idIterator = ids.iterator();
+
+ for (TreeIterator<EObject> it = resource.getAllContents(); it
+ .hasNext();) {
+ EObject element = it.next();
+ String id = resource.getID(element);
+ if (id != null) {
+ resource.setID(element, idIterator.next());
+ }
+ }
+ }
+}

Back to the top