@Override protected List<IEObjectDescription> getAllLocalElements() { List<IEObjectDescription> result = Lists.newArrayList(); for(AbstractSessionBasedScope delegate: delegates) { addToList(delegate.getAllLocalElements(), result); } return result; }
@Override public Iterable<IEObjectDescription> getElements(final QualifiedName name) { Collection<IEObjectDescription> localElements = getLocalElementsByName(name); if (localElements.isEmpty()) return getParent().getElements(name); Iterable<IEObjectDescription> parentElements = getParentElements(new Provider<Iterable<IEObjectDescription>>() { @Override public Iterable<IEObjectDescription> get() { return getParent().getElements(name); } }); // TODO evaluate optimizing this by avoiding the concat thing and doing something smarter than the ParentIterable Iterable<IEObjectDescription> result = Iterables.concat(localElements, parentElements); return result; }
@Override protected boolean isShadowed(IEObjectDescription fromParent) { Collection<IEObjectDescription> localElements = getLocalElementsByName(fromParent.getName()); if (localElements.isEmpty()) return false; Object shadowingKey = getShadowingKey(fromParent); for(IEObjectDescription local: localElements) { if (shadowingKey.equals(getShadowingKey(local))) { return true; } } return false; }
/** * Considers the given name to be a property name. If the concrete syntax of the * processed feature matches a feature call or assignment, a prefix is added to the * name and that one is used as a variant that should be processed. */ protected void processAsPropertyNames(QualifiedName name, NameAcceptor acceptor) { String nameAsPropertyName = tryGetAsPropertyName(name.toString()); if (nameAsPropertyName != null) { if (featureCall == null || featureCall instanceof XAssignment) { String aliasedSetter = "set" + nameAsPropertyName; acceptor.accept(aliasedSetter, 2); } if (!(featureCall instanceof XAssignment)) { if (featureCall == null || !getFeatureCall().isExplicitOperationCallOrBuilderSyntax()) { String aliasedGetter = "get" + nameAsPropertyName; acceptor.accept(aliasedGetter, 2); String aliasedBooleanGetter = "is" + nameAsPropertyName; acceptor.accept(aliasedBooleanGetter, 2); } } } }
protected String toProperty(String methodName, JvmFeature feature) { return toProperty(methodName, feature, 0, 1); }
@Override protected boolean isShadowed(IEObjectDescription fromParent) { if (fromParent.getName() == null) return true; return super.isShadowed(fromParent); }
@Override public Iterable<IEObjectDescription> get() { return getParent().getElements(name); } });
@Override protected List<IEObjectDescription> getLocalElementsByName(QualifiedName name) { List<IEObjectDescription> result = Lists.newArrayList(); for(AbstractSessionBasedScope delegate: delegates) { addToList(delegate.getLocalElementsByName(name), result); } return result; }
@Override public IEObjectDescription getSingleElement(QualifiedName name) { IEObjectDescription localElement = getSession().getLocalElement(name); if (localElement != null) return localElement; return super.getSingleElement(name); }
public boolean canBeFoundByNameAndShadowingKey(IEObjectDescription input) { Iterable<IEObjectDescription> lookUp = getLocalElementsByName(input.getName()); Object myShadowingKey = getShadowingKey(input); for(IEObjectDescription other: lookUp) { if (myShadowingKey.equals(getShadowingKey(other))) { if (other == input) return true; if (other.getEObjectOrProxy() == object) return true; if (uri.equals(other.getEObjectURI())) return true; return false; } } return false; } });
@Override protected Iterable<IEObjectDescription> getLocalElementsByEObject(final EObject object, final URI uri) { Iterable<IEObjectDescription> localElements = getAllLocalElements(); Iterable<IEObjectDescription> result = Iterables.filter(localElements, new Predicate<IEObjectDescription>() { @Override