Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 96492 Details for
Bug 227506
Migrate FeatureValueSpec->ValueExpresison generalization change
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Simple GMF Maps migration support, nest ValueExpr attrs into new element
org.eclipse.gmf.map.227506.patch (text/plain), 17.20 KB, created by
Anna Karjakina
on 2008-04-17 15:29:29 EDT
(
hide
)
Description:
Simple GMF Maps migration support, nest ValueExpr attrs into new element
Filename:
MIME Type:
Creator:
Anna Karjakina
Created:
2008-04-17 15:29:29 EDT
Size:
17.20 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.tests >Index: src/org/eclipse/gmf/tests/migration/MigrationPatchesTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/migration/MigrationPatchesTest.java,v >retrieving revision 1.20 >diff -u -r1.20 MigrationPatchesTest.java >--- src/org/eclipse/gmf/tests/migration/MigrationPatchesTest.java 5 Jun 2007 12:59:13 -0000 1.20 >+++ src/org/eclipse/gmf/tests/migration/MigrationPatchesTest.java 17 Apr 2008 19:22:18 -0000 >@@ -26,12 +26,15 @@ > import org.eclipse.emf.common.util.URI; > import org.eclipse.emf.ecore.EClass; > import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EcorePackage; > 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.util.EcoreUtil; > import org.eclipse.emf.ecore.xmi.XMLResource; > import org.eclipse.gmf.codegen.gmfgen.FeatureLabelModelFacet; > import org.eclipse.gmf.codegen.gmfgen.GenAuditContainer; >+import org.eclipse.gmf.codegen.gmfgen.GenAuditContext; > import org.eclipse.gmf.codegen.gmfgen.GenAuditRoot; > import org.eclipse.gmf.codegen.gmfgen.GenAuditRule; > import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator; >@@ -57,9 +60,20 @@ > import org.eclipse.gmf.internal.common.ToolingResourceFactory; > import org.eclipse.gmf.internal.common.migrate.MigrationResource; > import org.eclipse.gmf.internal.common.migrate.ModelLoadHelper; >+import org.eclipse.gmf.mappings.CanvasMapping; >+import org.eclipse.gmf.mappings.ElementInitializer; >+import org.eclipse.gmf.mappings.FeatureInitializer; > import org.eclipse.gmf.mappings.FeatureLabelMapping; >+import org.eclipse.gmf.mappings.FeatureSeqInitializer; >+import org.eclipse.gmf.mappings.FeatureValueSpec; > import org.eclipse.gmf.mappings.LabelMapping; >+import org.eclipse.gmf.mappings.Language; >+import org.eclipse.gmf.mappings.Mapping; > import org.eclipse.gmf.mappings.MappingEntry; >+import org.eclipse.gmf.mappings.NodeMapping; >+import org.eclipse.gmf.mappings.ReferenceNewElementSpec; >+import org.eclipse.gmf.mappings.TopNodeReference; >+import org.eclipse.gmf.mappings.ValueExpression; > import org.eclipse.gmf.tests.Plugin; > > public class MigrationPatchesTest extends TestCase { >@@ -856,4 +870,134 @@ > assertNotNull(canvas.getLabels().get(0).getFigure()); > > } >+ >+ public void testAuditContexts() throws Exception { >+ URI gmfgenFileName = createURI("test226149.gmfgen"); //$NON-NLS-1$ >+ >+ Exception caughtGenException = assertOrdinaryLoadModelProblems(gmfgenFileName); >+ assertTrue("expected diagnostic exception", caughtGenException != null); //$NON-NLS-1$ >+ >+ assertOnLoadModelMigrationSuccess(gmfgenFileName); >+ checkAuditContexts(gmfgenFileName); >+ >+ URI newUri = temporarySaveMigratedModel(gmfgenFileName, "test226149", "gmfgen"); >+ >+ assertOnLoadModelMigrationDidNothing(newUri); >+ checkAuditContexts(newUri); >+ } >+ >+ private void checkAuditContexts(URI modelUri) { >+ ModelLoadHelper loadHelper = new ModelLoadHelper(new ResourceSetImpl(), modelUri); >+ Resource resource = loadHelper.getLoadedResource(); >+ >+ assertEquals(1, resource.getContents().size()); >+ Object first = resource.getContents().get(0); >+ assertTrue(first instanceof GenEditorGenerator); >+ GenEditorGenerator editor = (GenEditorGenerator) first; >+ assertEquals(1, editor.eContents().size()); >+ first = editor.eContents().get(0); >+ assertTrue(first instanceof GenAuditRoot); >+ GenAuditRoot root = (GenAuditRoot) first; >+ assertEquals(6, root.eContents().size()); >+ >+ assertNotNull(root.getClientContexts()); >+ assertFalse(root.getClientContexts().isEmpty()); >+ assertEquals(2, root.getClientContexts().size()); >+ >+ GenAuditContext saveMe1 = root.getClientContexts().get(0); >+ assertEquals("SaveMe1", saveMe1.getId()); >+ assertFalse(saveMe1.getRuleTargets().isEmpty()); >+ assertEquals(2, saveMe1.getRuleTargets().size()); >+ >+ GenAuditContext saveMe2 = root.getClientContexts().get(1); >+ assertEquals("SaveMe2", saveMe2.getId()); >+ assertFalse(saveMe2.getRuleTargets().isEmpty()); >+ assertEquals(1, saveMe2.getRuleTargets().size()); >+ } >+ >+ public void testFeatureValueSpecRefactor227505() throws Exception { >+ URI gmfmapFileName = createURI("test227505.gmfmap"); //$NON-NLS-1$ >+ >+ Exception caughtGenException = assertOrdinaryLoadModelProblems(gmfmapFileName); >+ assertTrue("expected diagnostic exception", caughtGenException != null); //$NON-NLS-1$ >+ >+ assertOnLoadModelMigrationSuccess(gmfmapFileName); >+ checkValueExpressions(gmfmapFileName); >+ >+ URI newUri = temporarySaveMigratedModel(gmfmapFileName, "test227505", "gmfmap"); >+ >+ assertOnLoadModelMigrationDidNothing(newUri); >+ checkValueExpressions(newUri); >+ } >+ >+ private void checkValueExpressions(URI modelUri) { >+ ModelLoadHelper loadHelper = new ModelLoadHelper(new ResourceSetImpl(), modelUri); >+ Resource resource = loadHelper.getLoadedResource(); >+ //EcoreUtil.resolveAll(resource); >+ >+ assertEquals(1, resource.getContents().size()); >+ Object first = resource.getContents().get(0); >+ assertTrue(first instanceof Mapping); >+ Mapping mapping = (Mapping) first; >+ assertEquals(2, mapping.eContents().size()); >+ first = mapping.eContents().get(0); >+ assertTrue(first instanceof TopNodeReference); >+ Object second = mapping.eContents().get(1); >+ assertTrue(second instanceof CanvasMapping); >+ TopNodeReference topNode = (TopNodeReference) first; >+ assertEquals(1, topNode.eContents().size()); >+ first = topNode.eContents().get(0); >+ assertTrue(first instanceof NodeMapping); >+ NodeMapping node = (NodeMapping) first; >+ >+ ElementInitializer initer = node.getDomainInitializer(); >+ assertNotNull(initer); >+ assertTrue(initer instanceof FeatureSeqInitializer); >+ FeatureSeqInitializer featureRef = (FeatureSeqInitializer) initer; >+ assertNotNull(featureRef.getInitializers()); >+ assertFalse(featureRef.getInitializers().isEmpty()); >+ assertEquals(3, featureRef.getInitializers().size()); >+ >+ FeatureInitializer init1 = featureRef.getInitializers().get(0); >+ assertTrue(init1 instanceof FeatureValueSpec); >+ FeatureValueSpec feature1 = (FeatureValueSpec) init1; >+ assertEquals(EcoreUtil.getURI(EcorePackage.eINSTANCE.getEModelElement_EAnnotations()).fragment(), EcoreUtil.getURI(feature1.getFeature()).fragment()); >+ ValueExpression value1 = feature1.getValue(); >+ assertNotNull(value1); >+ assertEquals(Language.JAVA_LITERAL, value1.getLanguage()); >+ assertEquals("some.Checker", value1.getBody()); >+ >+ FeatureInitializer init2 = featureRef.getInitializers().get(1); >+ assertTrue(init2 instanceof FeatureValueSpec); >+ FeatureValueSpec feature2 = (FeatureValueSpec) init2; >+ assertEquals(EcoreUtil.getURI(EcorePackage.eINSTANCE.getENamedElement_Name()).fragment(), EcoreUtil.getURI(feature2.getFeature()).fragment()); >+ ValueExpression value2 = feature2.getValue(); >+ assertNotNull(value2); >+ assertEquals(Language.OCL_LITERAL, value2.getLanguage()); >+ assertEquals("self.name", value2.getBody()); >+ >+ FeatureInitializer init3 = featureRef.getInitializers().get(2); >+ assertTrue(init3 instanceof ReferenceNewElementSpec); >+ ReferenceNewElementSpec ref3 = (ReferenceNewElementSpec) init3; >+ assertEquals(EcoreUtil.getURI(EcorePackage.eINSTANCE.getETypeParameter_EBounds()).fragment(), EcoreUtil.getURI(ref3.getFeature()).fragment()); >+ assertNotNull(ref3.getNewElementInitializers()); >+ assertFalse(ref3.getNewElementInitializers().isEmpty()); >+ assertEquals(1, ref3.getNewElementInitializers().size()); >+ >+ FeatureSeqInitializer featureRef3 = ref3.getNewElementInitializers().get(0); >+ assertNotNull(featureRef3); >+ assertNotNull(featureRef3.getInitializers()); >+ assertFalse(featureRef3.getInitializers().isEmpty()); >+ assertEquals(1, featureRef3.getInitializers().size()); >+ >+ FeatureInitializer init31 = featureRef3.getInitializers().get(0); >+ assertTrue(init31 instanceof FeatureValueSpec); >+ FeatureValueSpec feature31 = (FeatureValueSpec) init31; >+ assertEquals(EcoreUtil.getURI(EcorePackage.eINSTANCE.getEGenericType_ELowerBound()).fragment(), EcoreUtil.getURI(feature31.getFeature()).fragment()); >+ ValueExpression value31 = feature31.getValue(); >+ assertNotNull(value31); >+ assertEquals(Language.JAVA_LITERAL, value31.getLanguage()); >+ assertEquals("some.Checker2", value31.getBody()); >+ } >+ > } >Index: models/migration/test227505.gmfmap >=================================================================== >RCS file: models/migration/test227505.gmfmap >diff -N models/migration/test227505.gmfmap >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ models/migration/test227505.gmfmap 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,59 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<gmfmap:Mapping xmi:version="2.0" >+ xmlns:xmi="http://www.omg.org/XMI" >+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" >+ xmlns:gmfmap="http://www.eclipse.org/gmf/2006/mappings"> >+ <nodes> >+ <containmentFeature >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClassifier/eTypeParameters"/> >+ <ownedChild> >+ <domainMetaElement >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ETypeParameter"/> >+ <domainInitializer >+ xsi:type="gmfmap:FeatureSeqInitializer"> >+ <initializers >+ xsi:type="gmfmap:FeatureValueSpec" >+ body="some.Checker" >+ language="java"> >+ <feature >+ xsi:type="ecore:EReference" >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement/eAnnotations"/> >+ </initializers> >+ <initializers >+ xsi:type="gmfmap:FeatureValueSpec" >+ body="self.name"> >+ <feature >+ xsi:type="ecore:EAttribute" >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ENamedElement/name"/> >+ </initializers> >+ <initializers >+ xsi:type="gmfmap:ReferenceNewElementSpec"> >+ <feature >+ xsi:type="ecore:EReference" >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ETypeParameter/eBounds"/> >+ <newElementInitializers> >+ <initializers >+ xsi:type="gmfmap:FeatureValueSpec" >+ body="some.Checker2" >+ language="java"> >+ <feature >+ xsi:type="ecore:EReference" >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EGenericType/eLowerBound"/> >+ </initializers> >+ </newElementInitializers> >+ </initializers> >+ </domainInitializer> >+ <diagramNode >+ href="../../../plugin/org.eclipse.gmf.graphdef/models/basic.gmfgraph#NamedNode"/> >+ </ownedChild> >+ </nodes> >+ <diagram> >+ <diagramCanvas >+ href="../../../plugin/org.eclipse.gmf.graphdef/models/basic.gmfgraph#Surface"/> >+ <domainModel >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#/"/> >+ <domainMetaElement >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/> >+ </diagram> >+</gmfmap:Mapping> >Index: models/migration/test226149.gmfgen >=================================================================== >RCS file: models/migration/test226149.gmfgen >diff -N models/migration/test226149.gmfgen >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ models/migration/test226149.gmfgen 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,58 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<gmfgen:GenEditorGenerator xmi:version="2.0" >+ xmlns:xmi="http://www.omg.org/XMI" >+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >+ xmlns:gmfgen="http://www.eclipse.org/gmf/2006/GenModel"> >+ <audits> >+ <categories >+ id="container1" >+ name="Container 1" >+ path="//@audits/@categories.0" >+ audits="//@audits/@rules.0 //@audits/@rules.1 //@audits/@rules.2"/> >+ <rules >+ name="Rule 1" >+ description="" >+ contextSelectorLocalClassName="SaveMe1" >+ id="rule1" >+ category="//@audits/@categories.0"> >+ <rule >+ body="a.*" >+ language="regexp"/> >+ <target >+ xsi:type="gmfgen:GenDomainAttributeTarget"> >+ <attribute >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore/ENamedElement/name"/> >+ </target> >+ </rules> >+ <rules >+ name="Rule 2" >+ contextSelectorLocalClassName="SaveMe2" >+ id="rule2" >+ category="//@audits/@categories.0"> >+ <rule >+ body="b.*" >+ language="regexp"/> >+ <target >+ xsi:type="gmfgen:GenDomainAttributeTarget"> >+ <attribute >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore/ENamedElement/name"/> >+ </target> >+ </rules> >+ <rules >+ name="Rule 3" >+ contextSelectorLocalClassName="SaveMe1" >+ id="rule3" >+ category="//@audits/@categories.0"> >+ <rule >+ body="c.*" >+ language="regexp"/> >+ <target >+ xsi:type="gmfgen:GenDomainAttributeTarget"> >+ <attribute >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore/ENamedElement/name"/> >+ </target> >+ </rules> >+ </audits> >+ <domainGenModel >+ href="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#/"/> >+</gmfgen:GenEditorGenerator> >#P org.eclipse.gmf.map >Index: src/org/eclipse/gmf/internal/map/util/MigrationDelegate.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/plugins/org.eclipse.gmf.map/src/org/eclipse/gmf/internal/map/util/MigrationDelegate.java,v >retrieving revision 1.5 >diff -u -r1.5 MigrationDelegate.java >--- src/org/eclipse/gmf/internal/map/util/MigrationDelegate.java 4 Jun 2007 18:09:52 -0000 1.5 >+++ src/org/eclipse/gmf/internal/map/util/MigrationDelegate.java 17 Apr 2008 19:22:19 -0000 >@@ -21,16 +21,21 @@ > import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.gmf.internal.common.migrate.MigrationDelegateImpl; > import org.eclipse.gmf.mappings.FeatureLabelMapping; >+import org.eclipse.gmf.mappings.FeatureValueSpec; > import org.eclipse.gmf.mappings.GMFMapFactory; > import org.eclipse.gmf.mappings.GMFMapPackage; > import org.eclipse.gmf.mappings.LabelMapping; >+import org.eclipse.gmf.mappings.Language; > import org.eclipse.gmf.mappings.MappingEntry; >+import org.eclipse.gmf.mappings.ValueExpression; > > class MigrationDelegate extends MigrationDelegateImpl { > private Map<LabelMapping, FeatureLabelMapping> myLabelMappingMigrations; > private EAttribute myLabelMapping_ViewPattern; > private EAttribute myLabelMapping_EditPattern; > private EReference myLabelMapping_Features; >+ private EAttribute myFeatureValueSpec_Body; >+ private EAttribute myFeatureValueSpec_Language; > > MigrationDelegate() { > } >@@ -53,6 +58,15 @@ > registerRenamedAttributes(GMFMapPackage.eINSTANCE.getLabelMapping(), renamings); > } > >+ myFeatureValueSpec_Body = (EAttribute) EcoreUtil.copy(GMFMapPackage.eINSTANCE.getValueExpression_Body()); >+ myFeatureValueSpec_Language = (EAttribute) EcoreUtil.copy(GMFMapPackage.eINSTANCE.getValueExpression_Language()); >+ { >+ Map<String, EStructuralFeature> renamings = new HashMap<String, EStructuralFeature>(); >+ renamings.put(myFeatureValueSpec_Body.getName(), myFeatureValueSpec_Body); >+ renamings.put(myFeatureValueSpec_Language.getName(), myFeatureValueSpec_Language); >+ registerRenamedAttributes(GMFMapPackage.eINSTANCE.getFeatureValueSpec(), renamings); >+ } >+ > myLabelMappingMigrations = null; > } > >@@ -76,6 +90,18 @@ > FeatureLabelMapping migratedMapping = saveFeatureLabelMappingFor(mapping); > migratedMapping.getFeatures().add(attribute); > fireMigrationApplied(true); >+ } else if (myFeatureValueSpec_Body.equals(feature)) { >+ FeatureValueSpec featureRef = (FeatureValueSpec) object; >+ String body = (String) value; >+ ValueExpression constraint = getOrCreateValueExpression(featureRef); >+ constraint.setBody(body); >+ fireMigrationApplied(true); >+ } else if (myFeatureValueSpec_Language.equals(feature)) { >+ FeatureValueSpec featureRef = (FeatureValueSpec) object; >+ ValueExpression constraint = getOrCreateValueExpression(featureRef); >+ Language lang = Language.get((String) value); >+ constraint.setLanguage(lang); >+ fireMigrationApplied(true); > } else { > // other cases are would be processed as defaults > return super.setValue(object, feature, value, position); >@@ -83,6 +109,15 @@ > return true; > } > >+ private ValueExpression getOrCreateValueExpression(FeatureValueSpec featureRef) { >+ ValueExpression constraint = featureRef.getValue(); >+ if (constraint == null) { >+ constraint = GMFMapFactory.eINSTANCE.createValueExpression(); >+ featureRef.setValue(constraint); >+ } >+ return constraint; >+ } >+ > private FeatureLabelMapping saveFeatureLabelMappingFor(LabelMapping labelMapping) { > if (myLabelMappingMigrations == null) { > myLabelMappingMigrations = new HashMap<LabelMapping, FeatureLabelMapping>();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 227506
: 96492