### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.tests Index: src/org/eclipse/gmf/tests/setup/SessionSetup.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/setup/SessionSetup.java,v retrieving revision 1.13 diff -u -r1.13 SessionSetup.java --- src/org/eclipse/gmf/tests/setup/SessionSetup.java 5 Dec 2006 19:12:17 -0000 1.13 +++ src/org/eclipse/gmf/tests/setup/SessionSetup.java 6 Feb 2007 18:26:51 -0000 @@ -24,6 +24,7 @@ private GenProjectSetup myProject; private MapDefSource myMapModel; private DiaDefSource myGraphDefModel; + private ToolDefSource myToolDefModel; private int myUses; protected static boolean factoryClosed = false; private GeneratorConfiguration myGeneratorConfiguration; @@ -103,7 +104,7 @@ } protected MapDefSource createMapModel() { - return new MapSetup().init(getGraphDefModel(), getDomainModel(), new ToolDefSetup()); + return new MapSetup().init(getGraphDefModel(), getDomainModel(), getToolDefModel()); } public DiaDefSource getGraphDefModel() { @@ -117,6 +118,17 @@ return new DiaDefSetup().init(); } + public ToolDefSource getToolDefModel() { + if (myToolDefModel == null) { + myToolDefModel = createToolDefModel(); + } + return myToolDefModel; + } + + protected ToolDefSource createToolDefModel() { + return new ToolDefSetup(); + } + public void cleanup() throws Exception { System.err.println(getClass().getName() + ":uses:" + myUses); if (myProject != null) { Index: META-INF/MANIFEST.MF =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF,v retrieving revision 1.29 diff -u -r1.29 MANIFEST.MF --- META-INF/MANIFEST.MF 5 Feb 2007 17:49:47 -0000 1.29 +++ META-INF/MANIFEST.MF 6 Feb 2007 18:26:51 -0000 @@ -13,6 +13,7 @@ org.eclipse.emf.validation;bundle-version="[1.1.0,2.0.0)", org.eclipse.ui.ide;bundle-version="[3.3.0,4.0.0)", org.eclipse.gmf.bridge;bundle-version="[1.1.0,2.0.0)", + org.eclipse.gmf.bridge.ui;bundle-version="[1.1.0,2.0.0)", org.eclipse.gmf.runtime.diagram.ui;bundle-version="[1.0.0,2.0.0)", org.eclipse.gmf.runtime.emf.commands.core;bundle-version="[1.0.0,2.0.0)", org.eclipse.gmf.graphdef.codegen;bundle-version="[2.0.0,3.0.0)", Index: src/org/eclipse/gmf/tests/tr/TransformToGenModelOperationTest.java =================================================================== RCS file: src/org/eclipse/gmf/tests/tr/TransformToGenModelOperationTest.java diff -N src/org/eclipse/gmf/tests/tr/TransformToGenModelOperationTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/tests/tr/TransformToGenModelOperationTest.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,397 @@ +/** + * Copyright (c) 2007 Borland Software Corporation + * + * 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: + * Alexander Fedorov (Borland) - initial API and implementation + */ +package org.eclipse.gmf.tests.tr; + +import java.io.IOException; +import java.util.Collections; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.emf.codegen.ecore.genmodel.GenModel; +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.gmf.gmfgraph.Canvas; +import org.eclipse.gmf.gmfgraph.Connection; +import org.eclipse.gmf.gmfgraph.DiagramLabel; +import org.eclipse.gmf.gmfgraph.Node; +import org.eclipse.gmf.internal.bridge.transform.GenModelDetector; +import org.eclipse.gmf.internal.bridge.transform.TransformToGenModelOperation; +import org.eclipse.gmf.internal.common.URIUtil; +import org.eclipse.gmf.mappings.CanvasMapping; +import org.eclipse.gmf.mappings.GMFMapFactory; +import org.eclipse.gmf.mappings.LinkMapping; +import org.eclipse.gmf.mappings.Mapping; +import org.eclipse.gmf.mappings.NodeMapping; +import org.eclipse.gmf.mappings.TopNodeReference; +import org.eclipse.gmf.tests.ConfiguredTestCase; +import org.eclipse.gmf.tests.setup.DiaDefSetup; +import org.eclipse.gmf.tests.setup.DiaDefSource; +import org.eclipse.gmf.tests.setup.MapDefSource; +import org.eclipse.gmf.tests.setup.ToolDefSource; + + +public class TransformToGenModelOperationTest extends ConfiguredTestCase { + + public TransformToGenModelOperationTest(String name) { + super(name); + } + + private static String FOLDER_MODELS = "models"; //$NON-NLS-1$ + private static String FILE_BASE = "test"; //$NON-NLS-1$ + private static String FILE_EXT_ECORE = "ecore"; //$NON-NLS-1$ + private static String FILE_EXT_GMFGEN = "gmfgen"; //$NON-NLS-1$ + private static String FILE_EXT_GMFGRAPH = "gmfgraph"; //$NON-NLS-1$ + private static String FILE_EXT_GMFMAP = "gmfmap"; //$NON-NLS-1$ + private static String FILE_EXT_GMFTOOL = "gmftool"; //$NON-NLS-1$ + + private IProject myProject; + private TransformToGenModelOperation myOperation; + private ResourceSet myRS; + + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ + @Override + protected void setUp() throws Exception { + super.setUp(); + myOperation = new TransformToGenModelOperation(); + myRS = new ResourceSetImpl(); + myProject = createProject(); + IFolder models = myProject.getFolder(FOLDER_MODELS); + models.create(true, false, new NullProgressMonitor()); + } + + /* (non-Javadoc) + * @see org.eclipse.gmf.tests.ConfiguredTestCase#tearDown() + */ + @Override + protected void tearDown() throws Exception { + deleteProject(); + myProject = null; + myOperation = null; + super.tearDown(); + } + + public void testErrorArguments() { + URI toolURI = prepareResource(myRS, FILE_EXT_GMFTOOL, getSetup().getToolDefModel().getRegistry()); + URI mapURI = prepareResource(myRS, FILE_EXT_GMFMAP, getSetup().getMapModel().getMapping()); + try { + myOperation.loadMappingModel(myRS, toolURI, null); + fail("Invalid MappingModel should not be accepted"); + } catch (CoreException e) { + IStatus loadStatus = myOperation.getLoadMappingStatus(); + assertNotNull("Load MappingModel status should be set", loadStatus); + assertFalse("Load MappingModel status should differ from OK value", IStatus.OK == loadStatus.getSeverity()); + assertNull("GenModelDetector should be reset", myOperation.getGenModelDetector()); + assertNull("GenModel should be reset", myOperation.getGenModel()); + } + try { + myOperation.loadMappingModel(myRS, null, null); + fail("null gmfmap URI should not be accepted"); + } catch (CoreException e) { + assertIllegalArgument(e); + } + try { + myOperation.loadMappingModel(null, mapURI, null); + fail("null ResorceSet should not be accepted"); + } catch (CoreException e) { + assertIllegalArgument(e); + } + try { + myOperation.findGenmodel(null); + fail("null ResorceSet should not be accepted"); + } catch (CoreException e) { + assertIllegalArgument(e); + } + try { + myOperation.loadGenModel(null, null, null); + fail("null ResorceSet should not be accepted"); + } catch (CoreException e) { + assertIllegalArgument(e); + } + IStatus s = myOperation.executeTransformation(null, null); + assertFalse("null ResorceSet should not be accepted", s.isOK()); + } + + public void testErrorState() { + ResourceSetImpl rs = new ResourceSetImpl(); + IStatus s = myOperation.executeTransformation(rs, null); + assertFalse("Target gmfgen URI should be specified", s.isOK()); + myOperation.setGenURI(createURI(FILE_EXT_GMFGEN)); + s = myOperation.executeTransformation(rs, null); + assertFalse("Mapping model should be loaded before calling executeTransformation()", s.isOK()); + + try { + myOperation.loadGenModel(rs, null, null); + fail("MappingModel should be loaded before calling loadGenModel()"); + } catch (CoreException e) { + assertIllegalState(e); + } + try { + myOperation.findGenmodel(rs); + fail("MappingModel should be loaded before calling findGenmodel()"); + } catch (CoreException e) { + assertIllegalState(e); + } + } + + public void testTransformMappingModel() { + URI mapURI = prepareResources(); + loadMappingModel(mapURI); + findAbsentGenmodel(); + URI genmodelURI = createDefaultGenModel(mapURI); + GenModel genModel = null; + try { + genModel = myOperation.loadGenModel(myRS, genmodelURI, null); + assertNotNull("Failed to load GenModel", genModel); + } catch (CoreException e) { + assertNotNull("Failed to load GenModel", genModel); + } + myOperation.setGenURI(createURI(FILE_EXT_GMFGEN)); + IStatus status = myOperation.executeTransformation(myRS, null); + assertTrue(status.isOK()); + } + + public void testTransfromDesignMapping() { + URI mapURI = prepareDesignResources(); + loadMappingModel(mapURI); + myOperation.setGenURI(createURI(FILE_EXT_GMFGEN)); + IStatus status = myOperation.executeTransformation(myRS, null); + assertTrue(status.isOK()); + } + + private void loadMappingModel(URI mapURI) { + Mapping mapping = null; + try { + mapping = myOperation.loadMappingModel(myRS, mapURI, null); + assertNotNull("Mapping should be resolved", mapping); + IStatus loadStatus = myOperation.getLoadMappingStatus(); + assertNotNull("Load MappingModel status should be set", loadStatus); + assertFalse("Load MappingModel status should differ from CANCEL value", IStatus.CANCEL == loadStatus.getSeverity()); + assertFalse("Load MappingModel status should differ from ERROR value", IStatus.ERROR == loadStatus.getSeverity()); + assertNotNull("GenModelDetector should be initialized", myOperation.getGenModelDetector()); + assertNull("GenModel should be reset", myOperation.getGenModel()); + } catch (CoreException e) { + fail(e.getStatus().getMessage()); + } + } + + private void findAbsentGenmodel() { + try { + myOperation.findGenmodel(myRS); + fail("GenModel should not be found"); + } catch (CoreException e) { + assertNull("GenModel should not be found", myOperation.getGenModel()); + } + } + + private URI createDefaultGenModel(URI mapURI) { + URI genmodelURI = null; + try { + GenModelDetector gmd = myOperation.getGenModelDetector(); + assertNotNull("GenModelDetector should be initialized", gmd); + genmodelURI = gmd.createDefault(getProject().getName(), URIUtil.getFile(mapURI)); + assertNotNull("GenModel URI should be created", genmodelURI); + IFile file = URIUtil.getFile(mapURI); + assertNotNull("GenModel file should be created", file); + assertTrue("GenModel file should exists", file.exists()); + } catch (CoreException e) { + fail("Failed to create default GenModel: " + e.getMessage()); + } + return genmodelURI; + } + + protected IProject createProject() { + String projectName = "TransformToGenModelOperationTest_" + String.valueOf(System.currentTimeMillis()); //$NON-NLS-1$ + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + assertFalse("Project with this name already present in the workspace: " + projectName, project.exists()); + try { + project.create(new NullProgressMonitor()); + project.open(new NullProgressMonitor()); + } catch (CoreException e) { + fail(e.getMessage()); + } + assertTrue("Project was not created: " + projectName, project.exists()); + return project; + } + + protected void deleteProject() throws CoreException { + if (getProject() != null) { + if (getProject().isOpen()) { + getProject().close(new NullProgressMonitor()); + } + if (getProject().exists()) { + getProject().delete(true, new NullProgressMonitor()); + } + } + } + + protected IProject getProject() { + return myProject; + } + + private URI prepareResources() { + ResourceSet rs = new ResourceSetImpl(); + prepareResource(rs, FILE_EXT_ECORE, getSetup().getDomainModel().getModel()); + prepareResource(rs, FILE_EXT_GMFGRAPH, getSetup().getGraphDefModel().getCanvasDef()); + prepareResource(rs, FILE_EXT_GMFTOOL, getSetup().getToolDefModel().getRegistry()); + URI mapURI = prepareResource(rs, FILE_EXT_GMFMAP, getSetup().getMapModel().getMapping()); + return mapURI; + } + + private URI prepareDesignResources() { + ResourceSet rs = new ResourceSetImpl(); + DiaDefSource ddSource = getSetup().getGraphDefModel(); + prepareResource(rs, FILE_EXT_GMFGRAPH, ddSource.getCanvasDef()); + ToolDefSource toolDef = getSetup().getToolDefModel(); + prepareResource(rs, FILE_EXT_GMFTOOL, toolDef.getRegistry()); + URI mapURI = prepareResource(rs, FILE_EXT_GMFMAP, new DesignMapDefSource().init(ddSource, toolDef).getMapping()); + return mapURI; + } + + private URI prepareResource(ResourceSet rs, String extension, EObject root) { + URI uri = createURI(extension); + Resource resource = rs.createResource(uri); + resource.getContents().add(root); + try { + resource.save(Collections.EMPTY_MAP); + } catch (IOException e) { + fail("Failed to save " + uri.toFileString() + " :" + e.getMessage()); + } + return uri; + } + + private URI createURI(String extension) { + String pathName = getProject().getName() + + IPath.SEPARATOR + FOLDER_MODELS + + IPath.SEPARATOR + FILE_BASE + "." + extension; //$NON-NLS-1$ + URI uri = URI.createPlatformResourceURI(pathName, true); + return uri; + } + + private void assertIllegalArgument(CoreException e) { + Throwable cause = e.getStatus().getException(); + if (!(cause instanceof IllegalArgumentException)) { + fail(e.getMessage()); + } + } + + private void assertIllegalState(CoreException e) { + Throwable cause = e.getStatus().getException(); + if (!(cause instanceof IllegalStateException)) { + fail(e.getMessage()); + } + } + + private class DesignMapDefSource implements MapDefSource { + + private Mapping myMap; + + private NodeMapping myNodeA; + + private NodeMapping myNodeB; + + private LinkMapping myClassLink; + + private LinkMapping myRefLink; + + + public DesignMapDefSource() { + // just create + } + + public DesignMapDefSource init(DiaDefSource ddSource, ToolDefSource toolDef) { + initCanvasMapping(ddSource.getCanvasDef()); + if (toolDef.getMainMenu() != null) { + myMap.getDiagram().getMenuContributions().add(toolDef.getMainMenu()); + } + myMap.getDiagram().setPalette(toolDef.getPalette()); + + initCommonMapping(ddSource, toolDef); + + return this; + } + + private void initCanvasMapping(Canvas canvas) { + Mapping m = GMFMapFactory.eINSTANCE.createMapping(); + + CanvasMapping cme = GMFMapFactory.eINSTANCE.createCanvasMapping(); + cme.setDiagramCanvas(canvas); + m.setDiagram(cme); + myMap = m; + } + + private void initCommonMapping(DiaDefSource ddSource, ToolDefSource toolDef) { + myNodeA = createNodeMapping(ddSource.getNodeDef(), ddSource.getLabelDef(), true); + myNodeA.setContextMenu(toolDef.getNodeContextMenu()); + myNodeA.setTool(toolDef.getNodeCreationTool()); + + DiaDefSetup ddSetup = ddSource instanceof DiaDefSetup ? (DiaDefSetup) ddSource : null; + Node graphNode = ddSetup != null ? ddSetup.getColoredNodeDef() : ddSource.getNodeDef(); + DiagramLabel graphLabel = ddSetup != null ? ddSetup.getDecoratedLabelDef() : ddSource.getLabelDef(); + myNodeB = createNodeMapping(graphNode, graphLabel, true); + + myClassLink = createLinkMapping(ddSource.getLinkDef()); + myClassLink.setTool(toolDef.getLinkCreationTool()); + myRefLink = createLinkMapping(ddSetup != null ? ddSetup.getColoredLinkDef() : ddSource.getLinkDef()); + } + + private final NodeMapping createNodeMapping(Node nodeDef, DiagramLabel labelDef, boolean addTopNodeReference) { + NodeMapping nme = GMFMapFactory.eINSTANCE.createNodeMapping(); + nme.setDiagramNode(nodeDef); + + if (addTopNodeReference){ + TopNodeReference tnr = GMFMapFactory.eINSTANCE.createTopNodeReference(); + tnr.setOwnedChild(nme); + myMap.getNodes().add(tnr); + } + return nme; + } + + private LinkMapping createLinkMapping(Connection link) { + LinkMapping lme = GMFMapFactory.eINSTANCE.createLinkMapping(); + lme.setDiagramLink(link); + myMap.getLinks().add(lme); + return lme; + } + + public final Mapping getMapping() { + return myMap; + } + + public NodeMapping getNodeA() { + return myNodeA; + } + + public NodeMapping getNodeB() { + return myNodeB; + } + + public LinkMapping getClassLink() { + return myClassLink; + } + + public LinkMapping getReferenceLink() { + return myRefLink; + } + + } +} #P org.eclipse.gmf.bridge.ui Index: src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelOperation.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelOperation.java,v retrieving revision 1.4 diff -u -r1.4 TransformToGenModelOperation.java --- src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelOperation.java 5 Feb 2007 17:49:50 -0000 1.4 +++ src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelOperation.java 6 Feb 2007 18:26:53 -0000 @@ -12,6 +12,7 @@ package org.eclipse.gmf.internal.bridge.transform; import java.io.IOException; +import java.text.MessageFormat; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.Diagnostic; 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.xmi.XMLResource; @@ -51,39 +53,32 @@ public class TransformToGenModelOperation { - private URI myMapModelURI; private URI myGMFGenModelURI; private TransformOptions myOptions; private Mapping myMapping; private GenModelDetector myGMDetector; private GenModel myGenModel; - private IStatus myLoadMapmodelStatus; - private IStatus myStaleGenmodelStatus; + private IStatus myLoadMapmodelStatus = Status.CANCEL_STATUS; + private IStatus myStaleGenmodelStatus = Status.CANCEL_STATUS; - public TransformToGenModelOperation(URI mapURI) { - assert mapURI != null; - this.myMapModelURI = mapURI; + public TransformToGenModelOperation() { this.myOptions = new TransformOptions(); } - + public TransformOptions getOptions() { return myOptions; } - public URI getMapURI() { - return this.myMapModelURI; - } - public URI getGenURI() { return this.myGMFGenModelURI; } - void setGenURI(URI gmfGen) { + public void setGenURI(URI gmfGen) { this.myGMFGenModelURI = gmfGen; } - private GenModel getGenModel() { + public GenModel getGenModel() { return this.myGenModel; } @@ -91,60 +86,78 @@ return this.myMapping; } - private void setMapping(Mapping m) { + private void setMapping(Mapping m, IStatus loadStatus) { this.myMapping = m; - myGMDetector = null; + this.myLoadMapmodelStatus = loadStatus; + myGMDetector = (m != null) ? new GenModelDetector(m) : null; myGenModel = null; } - GenModelDetector getGenModelDetector() { - if (myGMDetector == null) { - myGMDetector = new GenModelDetector(getMapping()); - } + public GenModelDetector getGenModelDetector() { return myGMDetector; } - IStatus getLoadMappingStatus() { + public IStatus getLoadMappingStatus() { return this.myLoadMapmodelStatus; } - IStatus getStaleGenmodelStatus() { + public IStatus getStaleGenmodelStatus() { return this.myStaleGenmodelStatus; } - Mapping loadMappingModel(ResourceSet rs, URI uri, IProgressMonitor pm) throws CoreException { + public Mapping loadMappingModel(ResourceSet rs, URI uri, IProgressMonitor pm) throws CoreException { + Mapping content = null; + IStatus status = Status.CANCEL_STATUS; IProgressMonitor monitor = null; try { + checkResourceSet(rs); + if (uri == null) { + throw new IllegalArgumentException(Messages.TransformToGenModelOperation_e_null_map_uri); + } monitor = (pm != null) ? new SubProgressMonitor(pm, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK) : new NullProgressMonitor(); String cancelMessage = Messages.TransformToGenModelOperation_e_map_load_cancelled; monitor.beginTask("", 100); //$NON-NLS-1$ subTask(monitor, 0, Messages.TransformToGenModelOperation_task_load, cancelMessage); ModelLoadHelper loadHelper = new ModelLoadHelper(rs, uri); - IStatus loadStatus = loadHelper.getStatus(); - if (!loadStatus.isOK()) { - throw new CoreException(loadStatus); + status = loadHelper.getStatus(); + if (!status.isOK()) { + throw new CoreException(status); } subTask(monitor, 20, Messages.TransformToGenModelOperation_task_validate, cancelMessage); - final Mapping content = (Mapping) loadHelper.getContentsRoot(); + EObject root = loadHelper.getContentsRoot(); + if (!(root instanceof Mapping)) { + String msg = MessageFormat.format(Messages.TransformToGenModelOperation_e_wrong_root_element, root.getClass().getName()); + status = Plugin.createError(msg, null); + throw new CoreException(status); + } + content = (Mapping) loadHelper.getContentsRoot(); Diagnostic mapIsValid = ValidationHelper.validate(content, true, monitor); monitor.worked(60); - IStatus mapStatus = getFirst(mapIsValid); - if (Diagnostic.CANCEL == mapStatus.getSeverity()) { + status = getFirst(mapIsValid); + if (Diagnostic.CANCEL == status.getSeverity()) { throw new CoreException(Plugin.createCancel(cancelMessage)); - } else if(Diagnostic.ERROR == mapStatus.getSeverity()) { - throw new CoreException(mapStatus); + } else if(Diagnostic.ERROR == status.getSeverity()) { + throw new CoreException(status); } else { - setMapping(content); - this.myLoadMapmodelStatus = mapStatus; return content; } + } catch (CoreException e) { + throw e; + } catch (Exception e) { + IStatus error = Plugin.createError(Messages.TransformToGenModelOperation_e_load_mapping_model, e); + throw new CoreException(error); } finally { - monitor.done(); + setMapping(content, status); + if (monitor != null) { + monitor.done(); + } } } - GenModel findGenmodel(ResourceSet rs) throws CoreException { + public GenModel findGenmodel(ResourceSet rs) throws CoreException { try { + checkResourceSet(rs); + checkMapping(); GenModelDetector gmd = getGenModelDetector(); IStatus detect = gmd.detect(); if (detect.isOK()) { @@ -159,9 +172,11 @@ } } - GenModel loadGenModel(ResourceSet rs, URI uri, IProgressMonitor pm) throws CoreException { + public GenModel loadGenModel(ResourceSet rs, URI uri, IProgressMonitor pm) throws CoreException { IProgressMonitor monitor = null; try { + checkResourceSet(rs); + checkMapping(); monitor = (pm != null) ? new SubProgressMonitor(pm, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK) : new NullProgressMonitor(); String cancelMessage = Messages.TransformToGenModelOperation_e_genmodel_load_cancelled; monitor.beginTask("", 100); //$NON-NLS-1$ @@ -206,9 +221,14 @@ } } - IStatus executeTransformation(ResourceSet rs, IProgressMonitor pm) { + public IStatus executeTransformation(ResourceSet rs, IProgressMonitor pm) { IProgressMonitor monitor = null; try { + checkResourceSet(rs); + if (getGenURI() == null) { + throw new IllegalStateException(Messages.TransformToGenModelOperation_e_null_gmfgen_uri); + } + checkMapping(); monitor = (pm != null) ? new SubProgressMonitor(pm, 1, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK) : new NullProgressMonitor(); monitor.beginTask("", 100); //$NON-NLS-1$ if (monitor.isCanceled()) { @@ -256,12 +276,16 @@ } } - public void reset(URI uri) { - assert uri != null; - myMapModelURI = uri; - setMapping(null); - myLoadMapmodelStatus = null; - myStaleGenmodelStatus = null; + private void checkResourceSet(ResourceSet rs) { + if (rs == null) { + throw new IllegalArgumentException(Messages.TransformToGenModelOperation_e_null_resource_set); + } + } + + private void checkMapping() { + if (getMapping() == null) { + throw new IllegalStateException(Messages.TransformToGenModelOperation_e_null_mapping); + } } private IStatus getFirst(Diagnostic d) { @@ -362,4 +386,4 @@ monitor.subTask(name); } } -} +} \ No newline at end of file Index: src/org/eclipse/gmf/internal/bridge/transform/StaleGenModelDetector.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/StaleGenModelDetector.java,v retrieving revision 1.1 diff -u -r1.1 StaleGenModelDetector.java --- src/org/eclipse/gmf/internal/bridge/transform/StaleGenModelDetector.java 18 Jan 2007 18:49:14 -0000 1.1 +++ src/org/eclipse/gmf/internal/bridge/transform/StaleGenModelDetector.java 6 Feb 2007 18:26:53 -0000 @@ -36,7 +36,9 @@ private final GenModel myGenModel; public StaleGenModelDetector(GenModel genModel) { - assert genModel != null; + if (genModel == null) { + throw new IllegalArgumentException("Could not detect with null GenModel"); + } myGenModel = genModel; } Index: src/org/eclipse/gmf/internal/bridge/transform/GenModelConfigurationPage.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/GenModelConfigurationPage.java,v retrieving revision 1.2 diff -u -r1.2 GenModelConfigurationPage.java --- src/org/eclipse/gmf/internal/bridge/transform/GenModelConfigurationPage.java 25 Jan 2007 18:14:32 -0000 1.2 +++ src/org/eclipse/gmf/internal/bridge/transform/GenModelConfigurationPage.java 6 Feb 2007 18:26:52 -0000 @@ -25,7 +25,6 @@ import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.importer.ui.EMFModelWizard; import org.eclipse.emf.importer.ui.GenModelReloadActionDelegate; -import org.eclipse.gmf.internal.common.URIUtil; import org.eclipse.gmf.internal.common.ui.ResourceLocationProvider; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; @@ -172,11 +171,10 @@ try { TransformToGenModelOperation to = getOperation(); GenModelDetector gmd = to.getGenModelDetector(); - URI mapURI = to.getMapURI(); - IFile mapFile = URIUtil.getFile(mapURI); + TransformToGenModelWizard wizard = (TransformToGenModelWizard) getWizard(); + IFile mapFile = wizard.getMapFile(); String pluginID = mapFile.getProject().getName(); - IFile genmodel = gmd.createDefault(pluginID, mapFile); - URI genURI = URI.createPlatformResourceURI(genmodel.getFullPath().toString(), true); + URI genURI = gmd.createDefault(pluginID, mapFile); setURI(genURI); updateURI(); } catch (CoreException e) { @@ -185,8 +183,8 @@ } private void launchWizard() { - URI mapURI = getOperation().getMapURI(); - IFile mapFile = URIUtil.getFile(mapURI); + TransformToGenModelWizard wizard = (TransformToGenModelWizard) getWizard(); + IFile mapFile = wizard.getMapFile(); IFile genmodel = createWithWizard(getShell(), mapFile); if (genmodel != null) { setURI(URI.createPlatformResourceURI(genmodel.getFullPath().toString(), true)); Index: src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelWizard.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelWizard.java,v retrieving revision 1.3 diff -u -r1.3 TransformToGenModelWizard.java --- src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelWizard.java 6 Feb 2007 18:08:29 -0000 1.3 +++ src/org/eclipse/gmf/internal/bridge/transform/TransformToGenModelWizard.java 6 Feb 2007 18:26:53 -0000 @@ -22,6 +22,7 @@ import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.gmf.internal.bridge.wizards.WizardUtil; +import org.eclipse.gmf.internal.common.URIUtil; import org.eclipse.gmf.internal.common.ui.ResourceLocationProvider; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.IStructuredSelection; @@ -114,13 +115,7 @@ this.mySelection = selection; setWindowTitle(Messages.TransformToGenModelWizard_title_wizard); setNeedsProgressMonitor(true); - IFile mapFile = (IFile) selection.getFirstElement(); - URI mapURI = URI.createPlatformResourceURI(mapFile.getFullPath().toString(), true); - initOperation(mapURI); - } - - void initOperation(URI mapURI) { - myOperation = new TransformToGenModelOperation(mapURI); + myOperation = new TransformToGenModelOperation(); } @Override @@ -180,6 +175,14 @@ return newFileCreationPage.getModelFile(); } + IFile getMapFile() { + URI mapURI = mapModelPage.getURI(); + if (mapURI != null) { + return URIUtil.getFile(mapURI); + } + return (IFile) mySelection.getFirstElement(); + } + private void setErrorMessage(String message) { WizardDialog wd = (WizardDialog) getContainer(); WizardPage wp = (WizardPage) wd.getCurrentPage(); Index: src/org/eclipse/gmf/internal/bridge/transform/MapModelConfigurationPage.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/MapModelConfigurationPage.java,v retrieving revision 1.1 diff -u -r1.1 MapModelConfigurationPage.java --- src/org/eclipse/gmf/internal/bridge/transform/MapModelConfigurationPage.java 18 Jan 2007 18:49:15 -0000 1.1 +++ src/org/eclipse/gmf/internal/bridge/transform/MapModelConfigurationPage.java 6 Feb 2007 18:26:53 -0000 @@ -45,7 +45,6 @@ @Override protected Resource doLoadResource(IProgressMonitor monitor) throws CoreException { TransformToGenModelOperation o = getOperation(); - o.reset(getURI()); Mapping mapping = o.loadMappingModel(getResourceSet(), getURI(), monitor); return mapping.eResource(); } Index: src/org/eclipse/gmf/internal/bridge/transform/Messages.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/Messages.java,v retrieving revision 1.2 diff -u -r1.2 Messages.java --- src/org/eclipse/gmf/internal/bridge/transform/Messages.java 29 Jan 2007 19:13:08 -0000 1.2 +++ src/org/eclipse/gmf/internal/bridge/transform/Messages.java 6 Feb 2007 18:26:53 -0000 @@ -37,10 +37,22 @@ public static String TransformToGenModelOperation_e_genmodel_load_cancelled; + public static String TransformToGenModelOperation_e_load_mapping_model; + public static String TransformToGenModelOperation_e_map_load_cancelled; public static String TransformToGenModelOperation_e_mapping_invalid; + public static String TransformToGenModelOperation_e_null_gmfgen_uri; + + public static String TransformToGenModelOperation_e_null_map_uri; + + public static String TransformToGenModelOperation_e_null_mapping; + + public static String TransformToGenModelOperation_e_null_resource_set; + + public static String TransformToGenModelOperation_e_wrong_root_element; + public static String TransformToGenModelOperation_task_detect; public static String TransformToGenModelOperation_task_generate; Index: src/org/eclipse/gmf/internal/bridge/transform/GenModelDetector.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/GenModelDetector.java,v retrieving revision 1.1 diff -u -r1.1 GenModelDetector.java --- src/org/eclipse/gmf/internal/bridge/transform/GenModelDetector.java 18 Jan 2007 18:49:15 -0000 1.1 +++ src/org/eclipse/gmf/internal/bridge/transform/GenModelDetector.java 6 Feb 2007 18:26:53 -0000 @@ -50,7 +50,9 @@ private Collection myPackages; public GenModelDetector(Mapping mapping) { - assert mapping != null; + if (mapping == null) { + throw new IllegalArgumentException("Could not detect with null Mapping"); + } myMapping = mapping; } @@ -70,13 +72,17 @@ } public IStatus advise(URI genModelURI) { - assert genModelURI != null; + if (genModelURI == null) { + throw new IllegalArgumentException("Null GenModel URI"); + } GenModelAccess gma = new FileGenModelAccess(genModelURI); return apply(gma); } public IStatus advise(IFile workspaceFile) { - assert workspaceFile != null; + if (workspaceFile == null) { + throw new IllegalArgumentException("Null GenModel file"); + } GenModelAccess gma = new FileGenModelAccess(workspaceFile); return apply(gma); } @@ -120,17 +126,17 @@ return myPackages != null && myPackages.size() == 1; } - public IFile createDefault(String pluginID, IFile patternResource) throws CoreException { + public URI createDefault(String pluginID, IFile patternResource) throws CoreException { DummyGenModel gma = new DummyGenModel(getPrimaryPackage(), null); gma.setPluginID(pluginID); GenModel model = gma.create(); IPath path = patternResource.getFullPath().removeFileExtension().addFileExtension("genmodel"); //$NON-NLS-1$ - Resource res = new ResourceSetImpl().createResource(URI.createPlatformResourceURI(path.toString(), true)); + URI uri = URI.createPlatformResourceURI(path.toString(), true); + Resource res = new ResourceSetImpl().createResource(uri); res.getContents().add(model); try { res.save(null); - IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); - return file; + return uri; } catch (IOException ex) { IStatus error = Plugin.createError(Messages.GenModelDetector_e_save, ex); throw new CoreException(error); @@ -148,8 +154,4 @@ return myGMAccess.model(); } - public boolean checkState() { - return myGMAccess != null; - } - } Index: src/org/eclipse/gmf/internal/bridge/transform/messages.properties =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge.ui/src/org/eclipse/gmf/internal/bridge/transform/messages.properties,v retrieving revision 1.2 diff -u -r1.2 messages.properties --- src/org/eclipse/gmf/internal/bridge/transform/messages.properties 29 Jan 2007 19:13:08 -0000 1.2 +++ src/org/eclipse/gmf/internal/bridge/transform/messages.properties 6 Feb 2007 18:26:53 -0000 @@ -6,9 +6,13 @@ ValidationHelper_task_validate=Validating ... ValidationHelper_e_marker_creation=Marker creation failure TransformToGenModelOperation_e_map_load_cancelled=Mapping model loading was interrupted +TransformToGenModelOperation_e_wrong_root_element=Wrong root element: {0} +TransformToGenModelOperation_e_load_mapping_model=Errors while loading Mapping model +TransformToGenModelOperation_e_null_resource_set=Can not operate without ResourceSet TransformToGenModelOperation_task_load=Loading ... TransformToGenModelOperation_task_validate=Validating ... TransformToGenModelOperation_e_mapping_invalid=Invalid Mapping Model +TransformToGenModelOperation_e_null_gmfgen_uri=Target gmfgen URI should be specified TransformToGenModelWizard_e_generator_creation=Errors while creating generator model TransformToGenModelWizard_e_operation_cancelled=Operation cancelled TransformToGenModelOperation_e_genmodel_load_cancelled=GenModel loading was interrupted @@ -18,6 +22,8 @@ TransformToGenModelWizard_title_genmodel=Select GenModel TransformToGenModelWizard_descr_genmodel=Load GenModel or create new one TransformToGenModelOperation_e_genmodel_load=Failed to load GenModel +TransformToGenModelOperation_e_null_mapping=Mapping model should be loaded +TransformToGenModelOperation_e_null_map_uri=Mapping model URI should specified TransformToGenModelOperation_task_generate=Generating ... TransformToGenModelOperation_task_reconcile=Reconciling ... TransformToGenModelOperation_task_save=Saving ...