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 67881 Details for
Bug 187811
Make GMF 1.0 -> 2.0 model migration mechanism more straightforward
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
checks for bugs from patch
org.eclipse.gmf.tests.migration.txt (text/plain), 7.89 KB, created by
Anna Karjakina
on 2007-05-18 17:51:42 EDT
(
hide
)
Description:
checks for bugs from patch
Filename:
MIME Type:
Creator:
Anna Karjakina
Created:
2007-05-18 17:51:42 EDT
Size:
7.89 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.tests >Index: src/org/eclipse/gmf/tests/migration/GenericMigrationTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/migration/GenericMigrationTest.java,v >retrieving revision 1.5 >diff -u -r1.5 GenericMigrationTest.java >--- src/org/eclipse/gmf/tests/migration/GenericMigrationTest.java 18 May 2007 20:39:12 -0000 1.5 >+++ src/org/eclipse/gmf/tests/migration/GenericMigrationTest.java 18 May 2007 21:48:22 -0000 >@@ -23,10 +23,10 @@ > import org.eclipse.emf.ecore.EClass; > import org.eclipse.emf.ecore.EObject; > import org.eclipse.emf.ecore.EPackage; >+import org.eclipse.emf.ecore.EReference; > import org.eclipse.emf.ecore.EcoreFactory; > import org.eclipse.emf.ecore.EcorePackage; > import org.eclipse.emf.ecore.resource.Resource; >-import org.eclipse.emf.ecore.resource.Resource.Factory; > import org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl; > import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; > import org.eclipse.gmf.internal.common.ToolingResourceFactory; >@@ -40,6 +40,9 @@ > */ > public class GenericMigrationTest extends TestCase { > private EAttribute myAttrToRemove; >+ private EAttribute myAttrToRename; >+ private EReference myWidenedRef; >+ private EAttribute myAttrNarrow; > > public GenericMigrationTest(String name) { > super(name); >@@ -52,23 +55,43 @@ > } > > private void createMetaModel() { >- EPackage mm = EcoreFactory.eINSTANCE.createEPackage(); >- EClass mc = EcoreFactory.eINSTANCE.createEClass(); >+ EPackage mmPackage = EcoreFactory.eINSTANCE.createEPackage(); >+ EClass mClass = EcoreFactory.eINSTANCE.createEClass(); > myAttrToRemove = EcoreFactory.eINSTANCE.createEAttribute(); >- mm.getEClassifiers().add(mc); >- mc.getEStructuralFeatures().add(myAttrToRemove); >- mm.setName("MM1"); >- mm.setNsPrefix("mm"); >- mm.setNsURI("uri:/mm/1"); >- mc.setName("MClass"); >- myAttrToRemove.setName("myAttr"); >+ myAttrToRename = EcoreFactory.eINSTANCE.createEAttribute(); >+ myWidenedRef = EcoreFactory.eINSTANCE.createEReference(); >+ myAttrNarrow = EcoreFactory.eINSTANCE.createEAttribute(); >+ EClass mNarrowClass = EcoreFactory.eINSTANCE.createEClass(); >+ mmPackage.getEClassifiers().add(mClass); >+ mmPackage.getEClassifiers().add(mNarrowClass); >+ mClass.getEStructuralFeatures().add(myAttrToRemove); >+ mClass.getEStructuralFeatures().add(myAttrToRename); >+ mClass.getEStructuralFeatures().add(myWidenedRef); >+ mNarrowClass.getEStructuralFeatures().add(myAttrNarrow); >+ mmPackage.setName("MM1"); >+ mmPackage.setNsPrefix("mm"); >+ mmPackage.setNsURI("uri:/mm/1"); >+ mClass.setName("MClass"); >+ mNarrowClass.setName("NarrowClass"); >+ myAttrToRemove.setName("myRemovedAttr"); > myAttrToRemove.setEType(EcorePackage.eINSTANCE.getEString()); >+ myAttrToRename.setName("myRenamedAttr"); >+ myAttrToRename.setEType(EcorePackage.eINSTANCE.getEString()); >+ myWidenedRef.setName("myWidenedRef"); >+ myWidenedRef.setContainment(true); >+ myWidenedRef.setEType(mNarrowClass); >+ myAttrNarrow.setName("myNarrowAttr"); >+ myAttrNarrow.setEType(EcorePackage.eINSTANCE.getEString()); > } > > private EObject newInstance() { > return getMetaModel().getEFactoryInstance().create(myAttrToRemove.getEContainingClass()); > } > >+ private EObject newNarrowInstance() { >+ return getMetaModel().getEFactoryInstance().create(myWidenedRef.getEReferenceType()); >+ } >+ > private EPackage getMetaModel() { > return myAttrToRemove.getEContainingClass().getEPackage(); > } >@@ -214,13 +237,117 @@ > } > } > >+ public void testWidenedReference() { >+ final EObject testObject = newInstance(); >+ EObject narrowValue = newNarrowInstance(); >+ String attrValue = "narrow value"; >+ >+ narrowValue.eSet(myAttrNarrow, attrValue); >+ testObject.eSet(myWidenedRef, narrowValue); >+ >+ EPackage metamodel = getMetaModel(); >+ >+ final String oldNsURI = metamodel.getNsURI(); >+ EPackage.Registry.INSTANCE.put(oldNsURI, metamodel); >+ final String newNsURI = oldNsURI + "/2"; >+ EPackage.Registry.INSTANCE.put(newNsURI, metamodel); >+ >+ try { >+ URI uri = null; >+ try { >+ uri = URI.createFileURI(File.createTempFile("widened", ".tests").getAbsolutePath()); >+ final ResourceSetImpl resourceSetImpl = new ResourceSetImpl(); >+ final Resource res = resourceSetImpl.createResource(uri); >+ res.getContents().add(testObject); >+ res.save(null); >+ resourceSetImpl.getResources().remove(testObject); >+ } catch (IOException ex) { >+ fail(ex.toString()); >+ } >+ >+ // widen reference in metamodel >+ >+ EClass mWideClass = EcoreFactory.eINSTANCE.createEClass(); >+ myWidenedRef.getEContainingClass().getEPackage().getEClassifiers().add(mWideClass); >+ mWideClass.setName("WideClass"); >+ mWideClass.setAbstract(true); >+ myWidenedRef.setEType(mWideClass); >+ myAttrNarrow.getEContainingClass().getESuperTypes().add(mWideClass); >+ >+ // try to load mm >+ try { >+ new ResourceSetImpl().createResource(uri).load(null); >+ fail("Load should fail because of unknown meta-model attribute"); >+ } catch (RuntimeException ex) { >+ // expected >+ assertNotNull(ex.getMessage()); >+ } catch (IOException ex) { >+ // expected >+ assertNotNull(ex.getMessage()); >+ } >+ >+ EPackage.Registry.INSTANCE.put(oldNsURI, null); >+ >+ Resource.Factory factory = new ToolingResourceFactory() { >+ >+ @Override >+ public Resource createResource(URI uri) { >+ return new MigrationResource(uri) { >+ protected MigrationHelperDelegate createDelegate() { >+ MigrationHelperDelegate delegate = new MigrationHelper.MigrationHelperDelegateImpl() { >+ { >+ registerNarrowReferenceType(myWidenedRef, myAttrNarrow.getEContainingClass()); >+ } >+ }; >+ return delegate; >+ } >+ >+ protected Collection<String> getBackwardSupportedURIs() { >+ return Collections.<String>singleton(oldNsURI); >+ } >+ >+ @Override >+ protected String getMetamodelNsURI() { >+ return newNsURI; >+ } >+ }; >+ } >+ >+ }; >+ >+ // try to load mm >+ Resource migrated = migrateModel(factory, uri).getLoadedResource(); >+ assertNotNull(migrated); >+ assertTrue(migrated.getErrors().isEmpty()); >+ assertFalse(migrated.getWarnings().isEmpty()); >+ assertEquals(1, migrated.getContents().size()); >+ EObject migratedObj = migrated.getContents().get(0); >+ assertEquals(testObject.eClass(), migratedObj.eClass()); >+ >+ assertTrue(migratedObj.eIsSet(myWidenedRef)); >+ Object narrowRef = migratedObj.eGet(myWidenedRef, true); >+ assertTrue(narrowRef instanceof EObject); >+ EObject narrowInstance = (EObject) narrowRef; >+ assertFalse(narrowInstance.eClass().isAbstract()); >+ assertFalse(narrowInstance.eClass().equals(myWidenedRef.getEType())); >+ assertEquals(narrowInstance.eClass(), myAttrNarrow.getEContainingClass()); >+ assertTrue(narrowInstance.eIsSet(myAttrNarrow)); >+ Object haveValue = narrowInstance.eGet(myAttrNarrow, true); >+ assertEquals(attrValue, haveValue); >+ } finally { >+ // clean-up, avoid any chances to affect other tests >+ EPackage.Registry.INSTANCE.put(oldNsURI, null); >+ EPackage.Registry.INSTANCE.put(newNsURI, null); >+ } >+ } >+ > private static ModelLoadHelper migrateModel(final Resource.Factory factory, URI modelResourceURI) { > if(modelResourceURI == null) { > throw new IllegalArgumentException("null resource uri"); //$NON-NLS-1$ > } > ResourceSetImpl rset = new ResourceSetImpl(); > rset.setResourceFactoryRegistry(new ResourceFactoryRegistryImpl() { >- public Factory getFactory(URI uri) { >+ public Resource.Factory getFactory(URI uri) { > return factory; > } > }); >@@ -228,5 +355,4 @@ > ModelLoadHelper loadHelper = new ModelLoadHelper(rset, modelResourceURI); > return loadHelper; > } >- > } >\ No newline at end of file
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 187811
:
67870
| 67881 |
67955
|
68152