Search in sources :

Example 26 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class DefaultReferenceDescriptionTest method testLazyLinkingProxyReferences.

/**
 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=330812
 */
@Test
public void testLazyLinkingProxyReferences() {
    URI resourceUri = URI.createPlatformResourceURI("test.ecore", true);
    LazyURIEncoder lazyURIEncoder = new LazyURIEncoder();
    ResourceSet resourceSet = new ResourceSetImpl();
    Resource testResource = resourceSet.createResource(resourceUri);
    EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
    ePackage.setName("test");
    ePackage.setNsPrefix("test");
    ePackage.setNsURI("test");
    testResource.getContents().add(ePackage);
    EClass eClass = EcoreFactory.eINSTANCE.createEClass();
    eClass.setName("Test");
    ePackage.getEClassifiers().add(eClass);
    EClass multiRefType = EcoreFactory.eINSTANCE.createEClass();
    ((InternalEObject) multiRefType).eSetProxyURI(EcoreUtil.getURI(EcorePackage.Literals.EPACKAGE));
    eClass.getESuperTypes().add(multiRefType);
    EClass multiRefType2 = EcoreFactory.eINSTANCE.createEClass();
    URI dummyProxyUri = resourceUri.appendFragment(lazyURIEncoder.encode(eClass, EcorePackage.Literals.ECLASS__ESUPER_TYPES, null));
    ((InternalEObject) multiRefType2).eSetProxyURI(dummyProxyUri);
    eClass.getESuperTypes().add(multiRefType2);
    EAttribute nameAttribute = EcoreFactory.eINSTANCE.createEAttribute();
    nameAttribute.setName("name");
    eClass.getEStructuralFeatures().add(nameAttribute);
    EDataType singleRefType = EcoreFactory.eINSTANCE.createEDataType();
    ((InternalEObject) singleRefType).eSetProxyURI(EcoreUtil.getURI(EcorePackage.Literals.ESTRING));
    nameAttribute.setEType(singleRefType);
    assertTrue(multiRefType.eIsProxy());
    assertTrue(multiRefType2.eIsProxy());
    assertTrue(lazyURIEncoder.isCrossLinkFragment(testResource, EcoreUtil.getURI(multiRefType2).fragment()));
    assertTrue(singleRefType.eIsProxy());
    IResourceDescription resourceDescription = createResourceDescription(testResource);
    Iterable<IReferenceDescription> referenceDescriptions = resourceDescription.getReferenceDescriptions();
    assertEquals("Unexpected additional resources were loaded", 1, resourceSet.getResources().size());
    assertEquals("Unexpected reference was exported", 3, Iterables.size(referenceDescriptions));
    IReferenceDescription referenceDescription = Iterables.get(referenceDescriptions, 0);
    assertEquals(0, referenceDescription.getIndexInList());
    assertEquals(EcoreUtil.getURI(eClass), referenceDescription.getSourceEObjectUri());
    assertEquals(EcorePackage.Literals.ECLASS__ESUPER_TYPES, referenceDescription.getEReference());
    assertEquals(EcoreUtil.getURI(EcorePackage.Literals.EPACKAGE), referenceDescription.getTargetEObjectUri());
    referenceDescription = Iterables.get(referenceDescriptions, 1);
    assertEquals(-1, referenceDescription.getIndexInList());
    assertEquals(EcoreUtil.getURI(nameAttribute.getEGenericType()), referenceDescription.getSourceEObjectUri());
    assertEquals(EcorePackage.Literals.EGENERIC_TYPE__ECLASSIFIER, referenceDescription.getEReference());
    assertEquals(EcoreUtil.getURI(EcorePackage.Literals.ESTRING), referenceDescription.getTargetEObjectUri());
    referenceDescription = Iterables.get(referenceDescriptions, 2);
    assertEquals(-1, referenceDescription.getIndexInList());
    assertEquals(EcoreUtil.getURI(eClass.getEGenericSuperTypes().get(0)), referenceDescription.getSourceEObjectUri());
    assertEquals(EcorePackage.Literals.EGENERIC_TYPE__ECLASSIFIER, referenceDescription.getEReference());
    assertEquals(EcoreUtil.getURI(EcorePackage.Literals.EPACKAGE), referenceDescription.getTargetEObjectUri());
}
Also used : ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) IResourceDescription(org.eclipse.xtext.resource.IResourceDescription) EDataType(org.eclipse.emf.ecore.EDataType) LazyURIEncoder(org.eclipse.xtext.linking.lazy.LazyURIEncoder) XtextResource(org.eclipse.xtext.resource.XtextResource) Resource(org.eclipse.emf.ecore.resource.Resource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) URI(org.eclipse.emf.common.util.URI) EPackage(org.eclipse.emf.ecore.EPackage) EClass(org.eclipse.emf.ecore.EClass) EAttribute(org.eclipse.emf.ecore.EAttribute) InternalEObject(org.eclipse.emf.ecore.InternalEObject) IReferenceDescription(org.eclipse.xtext.resource.IReferenceDescription) Test(org.junit.Test)

Example 27 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class AbstractDeclarativeValueConverterService method registerIfMissing.

private void registerIfMissing(String name, ParserRule parserRule, Map<String, IValueConverter<Object>> converters) {
    if (!converters.containsKey(name)) {
        EDataType datatype = (EDataType) parserRule.getType().getClassifier();
        converters.put(name, new EFactoryValueConverter(datatype));
    }
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType)

Example 28 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class EcoreUtil2Test method testGetCompatibleType_04.

@Test
public void testGetCompatibleType_04() {
    EDataType aString = createEDataType("a", String.class);
    EDataType anotherString = createEDataType("b", String.class);
    assertSame(aString, EcoreUtil2.getCompatibleType(aString, anotherString));
    assertSame(anotherString, EcoreUtil2.getCompatibleType(anotherString, aString));
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) Test(org.junit.Test)

Example 29 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class EcoreUtil2Test method testGetCompatibleType_03.

@Test
public void testGetCompatibleType_03() {
    EDataType aCharSequence = createEDataType("a", CharSequence.class);
    EDataType anAppendable = createEDataType("b", Appendable.class);
    assertSame(null, EcoreUtil2.getCompatibleType(aCharSequence, anAppendable, null));
    assertSame(null, EcoreUtil2.getCompatibleType(anAppendable, aCharSequence, null));
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) Test(org.junit.Test)

Example 30 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class EcoreUtil2Test method testGetCompatibleType_05.

@Test
public void testGetCompatibleType_05() {
    EDataType aString = createEDataType("a", String.class);
    EDataType anObject = createEDataType("b", Object.class);
    assertSame(anObject, EcoreUtil2.getCompatibleType(aString, anObject));
    assertSame(anObject, EcoreUtil2.getCompatibleType(anObject, aString));
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) Test(org.junit.Test)

Aggregations

EDataType (org.eclipse.emf.ecore.EDataType)48 EClass (org.eclipse.emf.ecore.EClass)21 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)15 EEnum (org.eclipse.emf.ecore.EEnum)14 EClassifier (org.eclipse.emf.ecore.EClassifier)13 EObject (org.eclipse.emf.ecore.EObject)13 HashMapVirtualObject (org.bimserver.shared.HashMapVirtualObject)10 Test (org.junit.Test)10 List (java.util.List)7 ArrayList (java.util.ArrayList)6 BimserverDatabaseException (org.bimserver.BimserverDatabaseException)6 IdEObject (org.bimserver.emf.IdEObject)6 VirtualObject (org.bimserver.shared.VirtualObject)6 EEnumLiteral (org.eclipse.emf.ecore.EEnumLiteral)6 EPackage (org.eclipse.emf.ecore.EPackage)6 HashMapWrappedVirtualObject (org.bimserver.shared.HashMapWrappedVirtualObject)4 EAttribute (org.eclipse.emf.ecore.EAttribute)4 EReference (org.eclipse.emf.ecore.EReference)4 AbstractRule (org.eclipse.xtext.AbstractRule)4 ByteBuffer (java.nio.ByteBuffer)3