/** This test assumes that an EPackage with indexed references is no longer available. */ public void testExternalFormOfEReferenceNoNPE() throws Exception { EReference reference = EcorePackage.Literals.EATTRIBUTE__EATTRIBUTE_TYPE; URI uri = EcoreUtil.getURI(reference); String externalForm = uri.toString(); EReference foundReference = EcoreUtil2.getEReferenceFromExternalForm(EPackage.Registry.INSTANCE, externalForm); assertSame(reference, foundReference); String brokenExternalFrom = Strings.toFirstUpper(externalForm); assertNull( EcoreUtil2.getEReferenceFromExternalForm(EPackage.Registry.INSTANCE, brokenExternalFrom)); String shortExternalForm = EcoreUtil2.toExternalForm(reference); foundReference = EcoreUtil2.getEReferenceFromExternalForm(EPackage.Registry.INSTANCE, shortExternalForm); assertSame(reference, foundReference); String brokenShortExternalFrom = Strings.toFirstUpper(shortExternalForm); assertNull( EcoreUtil2.getEReferenceFromExternalForm( EPackage.Registry.INSTANCE, brokenShortExternalFrom)); brokenShortExternalFrom = shortExternalForm.replace('A', 'a'); assertNull( EcoreUtil2.getEReferenceFromExternalForm( EPackage.Registry.INSTANCE, brokenShortExternalFrom)); }
public void testExternalFormOfEReference() throws Exception { Registry registry = EPackage.Registry.INSTANCE; Set<String> uris = Sets.newHashSet(registry.keySet()); for (String string : uris) { EPackage ePackage = registry.getEPackage(string); TreeIterator<Object> iterator = EcoreUtil.getAllProperContents(ePackage, true); while (iterator.hasNext()) { Object next = iterator.next(); if (next instanceof EReference) { EReference ref = (EReference) next; String externalForm = EcoreUtil2.toExternalForm(ref); assertEquals( ref.toString() + " - " + externalForm, ref, EcoreUtil2.getEReferenceFromExternalForm(registry, externalForm)); } } } }