diff options
author | Eike Stepper | 2018-04-13 09:43:54 +0000 |
---|---|---|
committer | Eike Stepper | 2018-04-13 09:43:54 +0000 |
commit | 4eca806562f7ea79b3133da21d0fda2392d81560 (patch) | |
tree | d944f249e3b6ce9ecc7c800edee0f143a3ee6f8a | |
parent | 9b19871ca91d7976b867e811741e120a5a1703af (diff) | |
download | cdo-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.xml | 1 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/CDOImporter.java | 1 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.migrator/src/org/eclipse/emf/cdo/internal/migrator/actions/MigrateAction.java | 32 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.migrator/tasks/org/eclipse/emf/cdo/migrator/tasks/MigrateModelTask.java | 57 | ||||
-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); |