Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2018-04-13 09:43:54 +0000
committerEike Stepper2018-04-13 09:43:54 +0000
commit4eca806562f7ea79b3133da21d0fda2392d81560 (patch)
treed944f249e3b6ce9ecc7c800edee0f143a3ee6f8a
parent9b19871ca91d7976b867e811741e120a5a1703af (diff)
downloadcdo-4eca806562f7ea79b3133da21d0fda2392d81560.tar.gz
cdo-4eca806562f7ea79b3133da21d0fda2392d81560.tar.xz
cdo-4eca806562f7ea79b3133da21d0fda2392d81560.zip
[Releng] Add Ant task to migrate GenModels
-rw-r--r--plugins/org.eclipse.emf.cdo.migrator/plugin.xml1
-rw-r--r--plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOImporter.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/actions/MigrateAction.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/MigrateModelTask.java57
-rw-r--r--plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/util/CDOMigratorUtil.java (renamed from plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOMigratorUtil.java)33
5 files changed, 94 insertions, 30 deletions
diff --git a/plugins/org.eclipse.emf.cdo.migrator/plugin.xml b/plugins/org.eclipse.emf.cdo.migrator/plugin.xml
index 80620a1aa0..cced81cecb 100644
--- a/plugins/org.eclipse.emf.cdo.migrator/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.migrator/plugin.xml
@@ -61,6 +61,7 @@
<extension point="org.eclipse.ant.core.antTasks">
<antTask library="ant_tasks/cdo.ant.tasks.jar" name="cdo.ProjectImport" headless="true" class="org.eclipse.emf.cdo.migrator.tasks.ProjectImportTask" />
<antTask library="ant_tasks/cdo.ant.tasks.jar" name="cdo.ProjectDelete" headless="true" class="org.eclipse.emf.cdo.migrator.tasks.ProjectDeleteTask" />
+ <antTask library="ant_tasks/cdo.ant.tasks.jar" name="cdo.MigrateModel" headless="true" class="org.eclipse.emf.cdo.migrator.tasks.MigrateModelTask" />
</extension>
</plugin>
diff --git a/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOImporter.java b/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOImporter.java
index 30144c7be0..9717619937 100644
--- a/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOImporter.java
+++ b/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOImporter.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.cdo.internal.migrator;
import org.eclipse.emf.cdo.internal.messages.Messages;
+import org.eclipse.emf.cdo.migrator.tasks.util.CDOMigratorUtil;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
diff --git a/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/actions/MigrateAction.java b/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/actions/MigrateAction.java
index cc8df85b25..bb35e0fe01 100644
--- a/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/actions/MigrateAction.java
+++ b/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/actions/MigrateAction.java
@@ -11,19 +11,12 @@
package org.eclipse.emf.cdo.internal.migrator.actions;
import org.eclipse.emf.cdo.internal.messages.Messages;
-import org.eclipse.emf.cdo.internal.migrator.CDOMigratorUtil;
+import org.eclipse.emf.cdo.migrator.tasks.util.CDOMigratorUtil;
import org.eclipse.net4j.util.ui.UIUtil;
import org.eclipse.emf.codegen.ecore.genmodel.GenDelegationKind;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
-import org.eclipse.emf.common.util.EList;
-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.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -39,8 +32,6 @@ import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
-import java.util.Map;
-
/**
* @author Eike Stepper
*/
@@ -134,25 +125,8 @@ public class MigrateAction implements IObjectActionDelegate
protected GenModel getGenModel(IFile file)
{
- ResourceSet resourceSet = new ResourceSetImpl();
-
- Map<String, Object> map = resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
- map.put("*", new XMIResourceFactoryImpl()); //$NON-NLS-1$
-
- URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), false);
- Resource resource = resourceSet.getResource(uri, true);
-
- EList<EObject> contents = resource.getContents();
- if (!contents.isEmpty())
- {
- EObject object = contents.get(0);
- if (object instanceof GenModel)
- {
- return (GenModel)object;
- }
- }
-
- return null;
+ String path = file.getFullPath().toString();
+ return CDOMigratorUtil.getGenModel(path);
}
protected void showMessage(final String msg, final boolean error)
diff --git a/plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/MigrateModelTask.java b/plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/MigrateModelTask.java
new file mode 100644
index 0000000000..909c7d72a2
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/MigrateModelTask.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2018 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.migrator.tasks;
+
+import org.eclipse.emf.cdo.migrator.tasks.util.CDOMigratorUtil;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenDelegationKind;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+
+import org.apache.tools.ant.BuildException;
+
+import java.io.File;
+
+/**
+ * @author Eike Stepper
+ */
+public class MigrateModelTask extends CDOTask
+{
+ private File location;
+
+ private boolean dynamicFeatureDelegation;
+
+ public void setLocation(File location)
+ {
+ this.location = location;
+ }
+
+ public void setDynamicFeatureDelegation(boolean dynamicFeatureDelegation)
+ {
+ this.dynamicFeatureDelegation = dynamicFeatureDelegation;
+ }
+
+ @Override
+ protected void checkAttributes() throws BuildException
+ {
+ assertTrue("'location' must be specified.", location != null);
+ assertTrue("'location' must be point to an existing file.", location.isFile());
+ }
+
+ @Override
+ protected void doExecute() throws Exception
+ {
+ GenModel genModel = CDOMigratorUtil.getGenModel(location.getAbsolutePath());
+ GenDelegationKind featureDelegation = dynamicFeatureDelegation ? GenDelegationKind.DYNAMIC_LITERAL : GenDelegationKind.REFLECTIVE_LITERAL;
+
+ String result = CDOMigratorUtil.adjustGenModel(genModel, featureDelegation);
+ System.out.println(result);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOMigratorUtil.java b/plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/util/CDOMigratorUtil.java
index aa657feabe..0a626d6e51 100644
--- a/plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOMigratorUtil.java
+++ b/plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/util/CDOMigratorUtil.java
@@ -8,14 +8,20 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.internal.migrator;
+package org.eclipse.emf.cdo.migrator.tasks.util;
import org.eclipse.emf.cdo.internal.messages.Messages;
import org.eclipse.emf.codegen.ecore.genmodel.GenDelegationKind;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.WrappedException;
+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.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -25,6 +31,8 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import java.util.Map;
+
/**
* @author Eike Stepper
*/
@@ -42,6 +50,29 @@ public abstract class CDOMigratorUtil
{
}
+ public static GenModel getGenModel(String path)
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ Map<String, Object> map = resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
+ map.put("*", new XMIResourceFactoryImpl()); //$NON-NLS-1$
+
+ URI uri = URI.createPlatformResourceURI(path, false);
+ Resource resource = resourceSet.getResource(uri, true);
+
+ EList<EObject> contents = resource.getContents();
+ if (!contents.isEmpty())
+ {
+ EObject object = contents.get(0);
+ if (object instanceof GenModel)
+ {
+ return (GenModel)object;
+ }
+ }
+
+ return null;
+ }
+
public static String adjustGenModel(GenModel genModel)
{
return adjustGenModel(genModel, GenDelegationKind.REFLECTIVE_LITERAL);

Back to the top