下面列出了怎么用org.eclipse.emf.ecore.ENamedElement的API类实例代码及写法,或者点击链接到github查看源代码。
@SuppressWarnings("javadoc")
@Test
public void testGetAllContentsFiltered() {
EPackage root = epack("root",
ecl("A"), ecl("B"), edt("C"), //
epack("notfiltered", ecl("Sub1A"), edt("Sub1C")), //
ecl("D"), //
epack("filteredSub", ecl("Sub2A"), ecl("Sub2B"), edt("Sub2C")),
ecl("E"), edt("F"));
Iterator<EObject> iter = EcoreUtilN4.getAllContentsFiltered(root, new Predicate<EObject>() {
@Override
public boolean apply(EObject input) {
return !((ENamedElement) input).getName().startsWith("filtered");
}
});
assertEqualsByNames("A,B,C,D,E,F,notfiltered,Sub1A,Sub1C", iter);
}
@SuppressWarnings("javadoc")
@Test
public void testGetAllContentsFilteredIgnoreRootPredicate() {
EPackage root = epack("filteredRoot",
ecl("A"), ecl("B"), edt("C"), //
epack("notfiltered", ecl("Sub1A"), edt("Sub1C")), //
ecl("D"), //
epack("filtered", ecl("Sub2A"), ecl("Sub2B"), edt("Sub2C")),
ecl("E"), edt("F"));
Iterator<EObject> iter = EcoreUtilN4.getAllContentsFiltered(root, new Predicate<EObject>() {
@Override
public boolean apply(EObject input) {
return !((ENamedElement) input).getName().startsWith("filtered");
}
});
assertEqualsByNames("A,B,C,D,E,F,notfiltered,Sub1A,Sub1C", iter);
}
@SuppressWarnings("javadoc")
@Test
public void testGetAllContentsFilteredNoMatch() {
EPackage root = epack("root",
epack("filteredSub1", ecl("Sub1A"), edt("Sub1C")), //
epack("filteredSub2", ecl("Sub2A"), ecl("Sub2B"), edt("Sub2C"))
);
Iterator<EObject> iter = EcoreUtilN4.getAllContentsFiltered(root, new Predicate<EObject>() {
@Override
public boolean apply(EObject input) {
return !((ENamedElement) input).getName().startsWith("filtered");
}
});
assertEqualsByNames("", iter);
}
@Test public void testPerformance() throws Exception {
GenericResourceDescriptionManager manager = getEmfResourceDescriptionsManager();
Collection<String> uris = ImmutableList.copyOf(EPackage.Registry.INSTANCE.keySet());
for(String uri: uris) {
EPackage pack = EPackage.Registry.INSTANCE.getEPackage(uri);
IResourceDescription description = manager.getResourceDescription(pack.eResource());
assertNotNull(description);
for(int i = 0; i < 10; i++) {
Iterator<EObject> iter = EcoreUtil.getAllProperContents(pack, true);
while(iter.hasNext()) {
EObject next = iter.next();
if (next instanceof ENamedElement) {
String name = ((ENamedElement) next).getName();
// Iterable<IEObjectDescription> objects =
description.getExportedObjects(EcorePackage.Literals.EOBJECT, QualifiedName.create(name), false);
// assertFalse(name + " - " + uri + " - " + next, Iterables.isEmpty(objects));
}
}
}
}
}
protected CharSequence _generateTypeRef(final ENamedElement c) {
CharSequence _xifexpression = null;
EObject _eContainer = c.eContainer();
boolean _tripleNotEquals = (_eContainer != null);
if (_tripleNotEquals) {
_xifexpression = this.generateTypeRef(c.eContainer());
} else {
CharSequence _xifexpression_1 = null;
boolean _eIsProxy = c.eIsProxy();
if (_eIsProxy) {
StringConcatenation _builder = new StringConcatenation();
String _name = c.getName();
_builder.append(_name);
_xifexpression_1 = _builder;
} else {
StringConcatenation _builder_1 = new StringConcatenation();
_xifexpression_1 = _builder_1;
}
_xifexpression = _xifexpression_1;
}
return _xifexpression;
}
public void createMessageForNameClashes(Multimap<String, ENamedElement> nameToElement) {
for(Entry<String, Collection<ENamedElement>> entry: nameToElement.asMap().entrySet()) {
if (entry.getValue().size() > 1) {
if (!Iterables.isEmpty(Iterables.filter(entry.getValue(), EStructuralFeature.class))
&&!Iterables.isEmpty(Iterables.filter(entry.getValue(), EClassifier.class))) {
String constantName = entry.getKey();
String message = "Name clash in generated code: '" + constantName + "'.";
for(ENamedElement element: entry.getValue()) {
String myMessage = message;
if (element.getName().indexOf('_') >= 0) {
myMessage = myMessage + " Try to avoid underscores in names to prevent conflicts.";
}
createMessageForSource(myMessage, null, Diagnostic.ERROR, element, getMessageAcceptor());
}
}
}
}
}
protected String toVarName(final ENamedElement element, final String... reservedNames) {
String _xblockexpression = null;
{
if ((element instanceof EReference)) {
return this.toVarName(((EReference)element).getEReferenceType(), reservedNames);
}
String name = StringExtensions.toFirstLower(element.getName());
boolean _contains = XtendFileAccess.XTEND_KEYWORDS.contains(name);
if (_contains) {
name = ("_" + name);
}
boolean _contains_1 = ArrayExtensions.contains(reservedNames, name);
if (_contains_1) {
name = ("_" + name);
}
_xblockexpression = name;
}
return _xblockexpression;
}
@SuppressWarnings("deprecation")
@Test public void testCreatedErrors_03() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEClass(),
createEDataType(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.addAll(elements.subList(0, 2));
helper.checkUniqueNames(
Scopes.scopedElementsFor(elements),
this, this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@Test public void testCreatedErrors_03_context() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEClass(),
createEDataType(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.addAll(elements.subList(0, 2));
helper.checkUniqueNames(
new LocalUniqueNameContext(elements, this), this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@SuppressWarnings("deprecation")
@Test public void testCreatedErrors_04() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEClass(),
createEDataType(),
createEPackage(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.addAll(elements);
helper.checkUniqueNames(
Scopes.scopedElementsFor(elements),
this, this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@Test public void testCreatedErrors_04_context() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEClass(),
createEDataType(),
createEPackage(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.addAll(elements);
helper.checkUniqueNames(
new LocalUniqueNameContext(elements, this), this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@SuppressWarnings("deprecation")
@Test public void testCreatedErrors_05() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEPackage(),
createEDataType(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.add(elements.get(0));
expected.add(elements.get(2));
helper.checkUniqueNames(
Scopes.scopedElementsFor(elements),
this, this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@Test public void testCreatedErrors_05_context() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEPackage(),
createEDataType(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.add(elements.get(0));
expected.add(elements.get(2));
helper.checkUniqueNames(
new LocalUniqueNameContext(elements, this), this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@SuppressWarnings("deprecation")
@Test public void testCreatedErrors_06() {
maxCallCount = 1;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEPackage(),
createEDataType(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
try {
helper.checkUniqueNames(
Scopes.scopedElementsFor(elements),
this, this);
fail("cancellation expected");
} catch (OperationCanceledError e) {
}
assertEquals(1, callCount);
}
@Test public void testCreatedErrors_06_context() {
maxCallCount = 1;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEPackage(),
createEDataType(),
createEPackage()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
try {
helper.checkUniqueNames(
new LocalUniqueNameContext(elements, this), this);
fail("cancellation expected");
} catch (OperationCanceledError e) {
}
assertEquals(1, callCount);
}
@SuppressWarnings("deprecation")
@Test public void testCreatedErrors_07() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEPackage(),
createEDataType(),
EcoreFactory.eINSTANCE.createEEnumLiteral()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.add(elements.get(0));
expected.add(elements.get(2));
helper.checkUniqueNames(
Scopes.scopedElementsFor(elements),
this, this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@Test public void testCreatedErrors_07_context() {
maxCallCount = 0;
ImmutableList<ENamedElement> elements = ImmutableList.of(
createEPackage(),
createEDataType(),
EcoreFactory.eINSTANCE.createEEnumLiteral()
);
for(ENamedElement classifier: elements) {
classifier.setName("Same");
}
expected.add(elements.get(0));
expected.add(elements.get(2));
helper.checkUniqueNames(
new LocalUniqueNameContext(elements, this), this);
assertEquals(elements.size(), callCount);
assertTrue(expected.isEmpty());
}
@SuppressWarnings("deprecation")
@Test public void testManyManyDup() {
List<ENamedElement> elements = new ArrayList<>();
for(int i = 0, j = 0; i < MANY; i++) {
if (i % 100 == 0) {
j++;
}
EClass c = createEClass();
c.setName("i" + j);
elements.add(c);
}
maxCallCount = 0;
expected.addAll(elements);
helper.checkUniqueNames(
Scopes.scopedElementsFor(elements),
this, this);
}
@Before
public void setUp() throws Exception {
EObject copy = EcoreUtil.copy(EcorePackage.eINSTANCE);
resource = new ResourceImpl();
resource.getContents().add(copy);
IQualifiedNameProvider nameProvider = new IQualifiedNameProvider.AbstractImpl() {
@Override
public QualifiedName getFullyQualifiedName(EObject obj) {
if (obj instanceof ENamedElement)
return QualifiedName.create(((ENamedElement) obj).getName());
return null;
}
};
DefaultResourceDescriptionStrategy descriptionStrategy = new DefaultResourceDescriptionStrategy();
descriptionStrategy.setQualifiedNameProvider(nameProvider);
resourceDescription = new DefaultResourceDescription(resource, descriptionStrategy) {
@Override
public Iterable<QualifiedName> getImportedNames() {
return importedNames;
}
};
manager = new DefaultResourceDescriptionManager();
importedNames = Collections.emptySet();
}
@Before
public void setUp() throws Exception {
resourceSet = new ResourceSetImpl();
IQualifiedNameProvider qualifiedNameProvider = new IQualifiedNameProvider.AbstractImpl() {
@Override
public QualifiedName getFullyQualifiedName(EObject obj) {
return QualifiedName.create(((ENamedElement) obj).getName());
}
@Override
public QualifiedName apply(EObject from) {
return QualifiedName.create(((ENamedElement) from).getName());
}
};
resourceDescriptionManager = new DefaultResourceDescriptionManager();
resourceDescriptionManager.setCache(IResourceScopeCache.NullImpl.INSTANCE);
DefaultResourceDescriptionStrategy strategy = new DefaultResourceDescriptionStrategy();
strategy.setQualifiedNameProvider(qualifiedNameProvider);
resourceDescriptionManager.setStrategy(strategy);
resDescs = new ResourceSetBasedResourceDescriptions();
resDescs.setContext(resourceSet);
resDescs.setRegistry(this);
container = new ResourceDescriptionsBasedContainer(resDescs);
}
@Test public void testOneElement_Match() {
QualifiedName qualifiedName = QualifiedName.create("SomeName");
EClass type = EcorePackage.Literals.EPACKAGE;
Resource resource = createResource();
ENamedElement element = createNamedElement(qualifiedName, type, resource);
Iterable<IEObjectDescription> iterable = container.getExportedObjectsByType(EcorePackage.Literals.EPACKAGE);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjectsByType(EcorePackage.Literals.EOBJECT);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjects(EcorePackage.Literals.EPACKAGE, qualifiedName, false);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjects(EcorePackage.Literals.ENAMED_ELEMENT, qualifiedName, false);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjects(EcorePackage.Literals.EOBJECT, qualifiedName, false);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
}
@Test public void testTwoElements_OneMatch() {
QualifiedName qualifiedName = QualifiedName.create("SomeName");
EClass type = EcorePackage.Literals.EPACKAGE;
Resource resource = createResource();
ENamedElement element = createNamedElement(qualifiedName, type, resource);
ENamedElement other = createNamedElement(null, EcorePackage.Literals.ECLASS, resource);
Iterable<IEObjectDescription> iterable = container.getExportedObjectsByType(EcorePackage.Literals.EPACKAGE);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjectsByType(EcorePackage.Literals.ECLASSIFIER);
assertSame(other, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjects(EcorePackage.Literals.EPACKAGE, qualifiedName, false);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjects(EcorePackage.Literals.ENAMED_ELEMENT, qualifiedName, false);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
iterable = container.getExportedObjects(EcorePackage.Literals.EOBJECT, qualifiedName, false);
assertSame(element, Iterables.getOnlyElement(iterable).getEObjectOrProxy());
}
/**
* Tests that the expected elements and their labels are exactly identical to all elements of the default test resource.
*/
@Test
public void testLabels() {
if (getExpectedElementLabels() == null) {
return; // TODO: remove this check once all tests have been refactored
}
for (Pair<ENamedElement, String> elementLabel : getExpectedElementLabels()) {
if (elementLabel.getFirst() instanceof EClass) {
// TODO: remove this once all tests have been refactored
assertHasLabel(((EClass) elementLabel.getFirst()).getInstanceClass(), elementLabel.getSecond());
} else {
assertHasLabel(elementLabel.getFirst(), elementLabel.getSecond());
}
}
// assertLabelMapConsistsOf(getExpectedElementLabels()); // TODO : revisit and enable this once all tests have been refactored
}
@Override
protected String getCrossReferenceNameFromScope(EObject semanticObject, CrossReference crossref,
EObject target, IScope scope, Acceptor errors) {
if (target instanceof AbstractRule) {
return ((AbstractRule) target).getName();
}
if (target instanceof ENamedElement) {
return ((ENamedElement) target).getName();
}
return super.getCrossReferenceNameFromScope(semanticObject, crossref, target, scope, errors);
}
private static void refToStr(EObject obj, EReference ref, String indent, Appendable buf) throws Exception {
Object o = obj.eGet(ref);
if (o instanceof EObject) {
EObject eo = (EObject) o;
if (eo instanceof ENamedElement)
buf.append("'").append(((ENamedElement) eo).getName()).append("' ");
buf.append("ref: ");
getURI(obj, eo, buf);
return;
}
if (o instanceof Collection<?>) {
String innerIndent = indent + INDENT;
buf.append("[");
int counter = 0;
Collection<?> coll = (Collection<?>) o;
for (Iterator<?> i = coll.iterator(); i.hasNext();) {
Object item = i.next();
if (counter == 0)
buf.append('\n');
buf.append(innerIndent);
printInt(counter++, coll.size(), buf);
buf.append(": ");
getURI(obj, (EObject) item, buf);
if (i.hasNext())
buf.append(",\n");
else
buf.append('\n').append(indent);
}
buf.append("]");
return;
}
buf.append("?????");
}
@SuppressWarnings("javadoc")
@Test
public void testGetAllContentsFilteredEmpty() {
EPackage root = epack("root");
Iterator<EObject> iter = EcoreUtilN4.getAllContentsFiltered(root, new Predicate<EObject>() {
@Override
public boolean apply(EObject input) {
return !((ENamedElement) input).getName().startsWith("filtered");
}
});
assertEqualsByNames("", iter);
}
/**
* Contains named element.
*
* @param locallyDefinedFeatures the locally defined features
* @param name the name
* @return true, if successful
*/
private static boolean containsNamedElement(EList locallyDefinedFeatures, String name) {
Iterator iter = locallyDefinedFeatures.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
if (obj instanceof ENamedElement) {
if (name.equals(((ENamedElement) obj).getName())) {
return true;
}
}
}
return false;
}
private ENamedElement readEcoreElement(DataInput input) throws IOException {
URI uri = URI.createURI(input.readUTF());
EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(uri.trimFragment().toString());
if (ePackage != null) {
Resource resource = ePackage.eResource();
return (ENamedElement) resource.getEObject(uri.fragment());
}
return null;
}
@Override
protected EAttribute getNameAttribute(EObject targetElement) {
if (targetElement instanceof ENamedElement) {
return EcorePackage.Literals.ENAMED_ELEMENT__NAME;
}
return null;
}
protected void testDispatchFunction_03_impl(boolean validation) throws Exception {
XtendFile xtendFile = file(
"class Dispatcher {\n" +
" def dispatch doStuff(org.eclipse.emf.ecore.EClass model) {\n" +
" model.ETypeParameters.map(e|doStuff(e))\n" +
" }\n" +
" def dispatch doStuff(org.eclipse.emf.ecore.EPackage packageDecl) {\n" +
" packageDecl.EClassifiers.map(e|doStuff(e))\n" +
" }\n" +
" def dispatch doStuff(org.eclipse.emf.ecore.EStructuralFeature feature) {\n" +
" newArrayList(feature)\n" +
" }\n" +
"}", validation);
JvmGenericType inferredType = getInferredType(xtendFile);
// one main dispatch
Iterable<JvmOperation> operations = inferredType.getDeclaredOperations();
JvmOperation dispatch = findByNameAndFirstParameterType(operations, "doStuff", ENamedElement.class);
// TODO ultimately this should be List<? extends NamedElement>
assertEquals("java.util.List<? extends java.lang.Object>", dispatch.getReturnType().getIdentifier());
// three internal case methods
JvmOperation eClassParam = findByNameAndFirstParameterType(operations, "_doStuff", EClass.class);
assertEquals("java.util.List<? extends java.lang.Object>", eClassParam.getReturnType().getIdentifier());
JvmOperation ePackageParam = findByNameAndFirstParameterType(operations, "_doStuff", EPackage.class);
assertEquals("java.util.List<? extends java.lang.Object>", ePackageParam.getReturnType().getIdentifier());
JvmOperation eStructuralFeatureParam = findByNameAndFirstParameterType(operations, "_doStuff", EStructuralFeature.class);
assertEquals("java.util.List<? extends java.lang.Object>", eStructuralFeatureParam.getReturnType().getIdentifier());
}