Java 类org.eclipse.emf.ecore.EStructuralFeature.Setting 实例源码

项目:xtext-extras    文件:XbaseValidator.java   
protected boolean isLocallyUsed(EObject target, EObject containerToFindUsage) {
    if (readAndWriteTracking.isRead(target)) {
        return true;
    }
    Collection<Setting> usages = XbaseUsageCrossReferencer.find(target, containerToFindUsage);
    // for non-private members it is enough to check that there are usages
    if (!(target instanceof JvmOperation) || ((JvmOperation)target).getVisibility()!=JvmVisibility.PRIVATE) {
        return !usages.isEmpty();
    } else {
        // for private members it has to be checked if all usages are within the operation
        EObject targetSourceElem = associations.getPrimarySourceElement(target);
        for (Setting s : usages) {
            if (s.getEObject() instanceof XAbstractFeatureCall) {
                XAbstractFeatureCall fc = (XAbstractFeatureCall) s.getEObject();
                // when the feature call does not call itself or the call is
                // from another function, then it is locally used
                if (fc.getFeature() != target || !EcoreUtil.isAncestor(targetSourceElem, fc))
                    return true;
            } else {
                return true;
            }
        }
        return false;
    }
}
项目:DarwinSPL    文件:DwprofileOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, de.darwinspl.preferences.resource.dwprofile.ui.DwprofilePositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:DarwinSPL    文件:HyexpressionOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, eu.hyvar.feature.expression.resource.hyexpression.ui.HyexpressionPositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:DarwinSPL    文件:HyvalidityformulaOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, eu.hyvar.context.contextValidity.resource.hyvalidityformula.ui.HyvalidityformulaPositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:DarwinSPL    文件:HydatavalueOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, eu.hyvar.dataValues.resource.hydatavalue.ui.HydatavaluePositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:DarwinSPL    文件:HymappingOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, eu.hyvar.feature.mapping.resource.hymapping.ui.HymappingPositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:DarwinSPL    文件:HyconstraintsOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, eu.hyvar.feature.constraint.resource.hyconstraints.ui.HyconstraintsPositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:DarwinSPL    文件:HymanifestOccurrence.java   
protected void addAnnotationsForReferences(EObject referencedElement, List<String> matchingNames) {

    IDocument document = getSourceViewer().getDocument();

    // Determine all references to the EObject
    Map<EObject, Collection<Setting>> map = EcoreUtil.UsageCrossReferencer.find(Collections.singleton(textResource));
    Collection<Setting> referencingObjects = map.get(referencedElement);
    if (referencingObjects == null) {
        // No references found
        return;
    }

    // Highlight the token in the text for the referencing objects
    for (Setting setting : referencingObjects) {
        EObject referencingElement = setting.getEObject();
        // Search through all tokens in the elements that reference the element at the
        // caret position
        for (String name : matchingNames) {
            int index = getIndexOf(referencingElement, name);
            if (index > 0) {
                addAnnotation(document, eu.hyvar.mspl.manifest.resource.hymanifest.ui.HymanifestPositionCategory.PROXY, name, index, name.length());
            }
        }
    }
}
项目:Sparrow    文件:CrossReferenceResolver.java   
public List<Method> findFieldReferences(IResourceDescriptions descriptions, Class element){
    List<Method> usages = new ArrayList<Method>();
    Iterable<IEObjectDescription> exportedObjectsByType = descriptions.getExportedObjectsByType(element.eClass());
    final ArrayList<EObject> gather = new ArrayList<>();

    exportedObjectsByType.forEach((e) -> {
        EObject eObjectOrProxy = e.getEObjectOrProxy();
        EObject resolve = EcoreUtil.resolve(eObjectOrProxy, element);
        gather.add(resolve);
    });

    element.getFields().listIterator().forEachRemaining((a) -> {
        Collection<Setting> references = EcoreUtil.UsageCrossReferencer.find(a, gather);
        references.forEach((f) -> {
            usages.add((Method) f.getEObject().eContainer());
        });
    });
    return usages;
}
项目:Source    文件:IdeEObjectConnector.java   
@Override
protected Object adapt(Object element) {
    final Object res;

    final EObject eObject = IdeMappingUtils.adapt(element, EObject.class);
    if (eObject != null) {
        res = eObject;
    } else {
        final Setting setting = IdeMappingUtils.adapt(element, Setting.class);
        if (setting != null) {
            res = setting;
        } else {
            res = super.adapt(element);
        }
    }

    return res;
}
项目:Source    文件:EObjectConnector.java   
/**
 * {@inheritDoc}
 *
 * @see org.eclipse.mylyn.docs.intent.mapping.connector.IConnector#getName(org.eclipse.mylyn.docs.intent.mapping.base.ILocation)
 */
public String getName(ILocation location) {
    final String res;

    final Object element = getElement(location);
    if (element instanceof Setting) {
        final Setting setting = (Setting)element;
        res = getName(setting.getEObject(), setting.getEStructuralFeature(), ((IEObjectLocation)location)
                .getIndex());
    } else if (element instanceof EObject) {
        res = getName((EObject)element, null, 0);
    } else {
        // the located element has been deleted...
        res = null;
    }

    return res;
}
项目:NEXCORE-UML-Modeler    文件:ResourceUnloader.java   
private Set<Resource> findCrossReferenceResource(Resource resource) {
    if (tempSet.contains(resource)) {
        return Collections.emptySet();
    }
    tempSet.add(resource);

    Set<Resource> unloadResourceList = new LinkedHashSet<Resource>();

    Map<EObject, Collection<Setting>> find = EcoreUtil.CrossReferencer.find(resource.getContents());

    for (Iterator<?> iterator = find.keySet().iterator(); iterator.hasNext();) {
        EObject type = (EObject) iterator.next();
        if (ProjectUtil.isModelFile(type.eResource())) {
            unloadResourceList.add(type.eResource());

            Set<Resource> referenceResource = findCrossReferenceResource(resource);
            if(!referenceResource.isEmpty()) {
                unloadResourceList.addAll(referenceResource);
            }
        }
    }

    return unloadResourceList;
}
项目:OpenSPIFe    文件:PlanEditorModel.java   
private void pruneDanglingReferences(final EPlan plan) {
    TransactionUtils.writing(plan, new Runnable() {
        @Override
        @SuppressWarnings("unchecked")
        public void run() {
            Map<EObject, Collection<Setting>> proxiesMap = UnresolvedProxyCrossReferencer.find(plan);
            for (EObject proxy : proxiesMap.keySet()) {
                for (Setting setting : proxiesMap.get(proxy)) {
                    EStructuralFeature feature = setting.getEStructuralFeature();
                    if (feature instanceof EReference) {
                        Object newValue = null;
                        if (feature.isMany()) {
                            newValue = new ArrayList((Collection)setting.get(true));
                            ((Collection)newValue).remove(proxy);
                        }
                        setting.set(newValue);
                    }
                }
            }
        }
    });
}
项目:emfstore-rest    文件:ModelUtil.java   
/**
 * Delete the given incoming cross references to the given model element from any
 * other model element in the given project.
 * 
 * @param inverseReferences a collection of inverse references
 * @param modelElement
 *            the model element
 */
public static void deleteIncomingCrossReferencesFromParent(Collection<Setting> inverseReferences,
    EObject modelElement) {
    for (final Setting setting : inverseReferences) {
        final EStructuralFeature eStructuralFeature = setting.getEStructuralFeature();
        final EReference reference = (EReference) eStructuralFeature;

        if (reference.isContainer() || reference.isContainment() || !reference.isChangeable()) {
            continue;
        }

        final EObject opposite = setting.getEObject();

        if (eStructuralFeature.isMany()) {
            ((EList<?>) opposite.eGet(eStructuralFeature)).remove(modelElement);
        } else {
            if (opposite instanceof Map.Entry<?, ?> && eStructuralFeature.getName().equals("key")) {
                logWarning("Incoming cross reference for model element " + modelElement + " is a map key.");
            }

            opposite.eUnset(eStructuralFeature);
        }
    }
}
项目:emfstore-rest    文件:ModelUtil.java   
/**
 * Delete all outgoing cross references of the given model element to any element in the given collection.
 * 
 * @param collection the collection
 * @param modelElement
 *            the model element
 */
public static void deleteOutgoingCrossReferences(IdEObjectCollection collection, EObject modelElement) {
    final Set<EObject> allModelElements = new LinkedHashSet<EObject>();
    allModelElements.add(modelElement);
    allModelElements.addAll(ModelUtil.getAllContainedModelElements(modelElement, false));

    final List<SettingWithReferencedElement> crossReferences = collectOutgoingCrossReferences(collection,
        allModelElements);
    for (final SettingWithReferencedElement settingWithReferencedElement : crossReferences) {
        final Setting setting = settingWithReferencedElement.getSetting();
        if (!settingWithReferencedElement.getSetting().getEStructuralFeature().isMany()) {
            setting.getEObject().eUnset(setting.getEStructuralFeature());
        } else {
            final List<?> references = (List<?>) setting.getEObject().eGet(setting.getEStructuralFeature());
            references.remove(settingWithReferencedElement.getReferencedElement());
        }
    }
}
项目:n4js    文件:BuiltInTypeScopeTest.java   
@SuppressWarnings("javadoc")
@Test
public void testResolveAllBuiltInTypes() {
    BuiltInTypeScope scope = BuiltInTypeScope.get(resourceSet);
    scope.getSingleElement(QualifiedName.create("any")); // trigger loading
    Assert.assertEquals(5, resourceSet.getResources().size());
    EcoreUtil.resolveAll(resourceSet);
    Assert.assertEquals(5, resourceSet.getResources().size());

    Map<EObject, Collection<Setting>> unresolvedProxies = EcoreUtil.UnresolvedProxyCrossReferencer
            .find(resourceSet);
    Assert.assertTrue(unresolvedProxies.toString(), unresolvedProxies.isEmpty());
}
项目:Source    文件:EObjectConnectorTests.java   
@Test
public void initLocationSetting() throws Exception {
    final IBase base = new BaseRegistryTests.TestBase();
    base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
            TestCouple.class));
    final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
    container.setContainer(base);
    final Copier copier = new Copier();
    final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
            .eContents()));
    copier.copyReferences();
    final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
    final Resource resource = createResource("test.xmi");
    resource.getContents().addAll(eObjects);
    container.setResource(resource);
    eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
    final IEObjectLocation location = new TestEObjectLocation();
    location.setContainer(container);

    final TestEObjectContainerConnector testEObjectContainerConnector = new TestEObjectContainerConnector();
    MappingUtils.getConnectorRegistry().register(testEObjectContainerConnector);
    final EObjectConnector eObjectConnector = new EObjectConnector();
    MappingUtils.getConnectorRegistry().register(eObjectConnector);
    super.initLocation(container, location, ((InternalEObject)producerEClass).eSetting(
            EcorePackage.eINSTANCE.getENamedElement_Name()));

    final Object element = eObjectConnector.getElement(location);
    assertTrue(element instanceof Setting);
    assertEquals(producerEClass, ((Setting)element).getEObject());
    assertEquals(EcorePackage.eINSTANCE.getENamedElement_Name(), ((Setting)element)
            .getEStructuralFeature());
    assertEquals("Producer", ((Setting)element).get(true));
    assertEquals(EcorePackage.eINSTANCE.getENamedElement_Name().getName(), location.getFeatureName());

    MappingUtils.getConnectorRegistry().unregister(testEObjectContainerConnector);
    MappingUtils.getConnectorRegistry().unregister(eObjectConnector);
}
项目:Source    文件:EObjectConnectorParametrizedTests.java   
public void assertEObjectLocation(IEObjectLocation location, EObject expectedEObject,
        EStructuralFeature expectedFeature, Object expectedValue) {
    final Object element = MappingUtils.getConnectorRegistry().getElement(location);
    if (element instanceof Setting) {
        final Setting setting = (Setting)element;
        assertEquals(expectedEObject, setting.getEObject());
        assertEquals(expectedFeature, setting.getEStructuralFeature());
        assertEquals(expectedValue, setting.get(true));
    } else if (element instanceof EObject) {
        assertEquals(expectedEObject, element);
    } else {
        assertNull(location.getContainer());
    }
}
项目:Source    文件:EObjectConnector.java   
/**
 * {@inheritDoc}
 *
 * @see org.eclipse.mylyn.docs.intent.mapping.connector.IConnector#getLocationType(java.lang.Class,
 *      java.lang.Object)
 */
public Class<? extends ILocation> getLocationType(Class<? extends ILocationContainer> containerType,
        Object element) {
    final Class<? extends ILocation> res;

    if (IEObjectContainer.class.isAssignableFrom(containerType) && (element instanceof EObject
            || element instanceof Setting)) {
        res = getType();
    } else {
        res = null;
    }

    return res;
}
项目:Source    文件:EObjectConnector.java   
@Override
protected void initLocation(ILocationContainer container, ILocation location, Object element) {
    final IEObjectLocation toInit = (IEObjectLocation)location;

    final EObject eObject;
    final String featureName;
    final int index;
    if (element instanceof Setting) {
        final Setting setting = (Setting)element;
        eObject = setting.getEObject();
        final EStructuralFeature feature = ((Setting)element).getEStructuralFeature();
        featureName = feature.getName();
        if (feature.isMany()) {
            index = ((List<?>)eObject.eGet(feature, true)).indexOf(setting.get(true));
        } else {
            index = 0;
        }
    } else {
        eObject = getEObject((IEObjectContainer)container, (EObject)element);
        featureName = null;
        index = 0;
    }

    final String uriFragment = eObject.eResource().getURIFragment(eObject);
    toInit.setURIFragment(uriFragment);
    toInit.setFeatureName(featureName);
    toInit.setSavedURIFragment(getSavedURIFragment((IEObjectContainer)container, uriFragment));
    toInit.setIndex(index);
}
项目:statecharts    文件:StatechartNavigatorContentProvider.java   
private View getReferencigView(EObject eObject) {

        Collection<Setting> inverseReferences = myCrossReferenceAdapter
                .getInverseReferences(eObject, true);

        for (Setting setting : inverseReferences) {
            if (setting.getEObject() instanceof View
                    && setting.getEStructuralFeature() == NotationPackage.eINSTANCE
                            .getView_Element()) {
                return (View) setting.getEObject();
            }
        }
        return null;
    }
项目:CooperateModelingEnvironment    文件:CustomModelTransferContext.java   
@Override
protected Setting getTarget(EStructuralFeature eStructuralFeature, EObject eObject, EObject copyEObject) {
    if (DUPLICATE_FILTERING_REFERENCES.contains(eStructuralFeature)
            && isAlreadyUpToDate(eStructuralFeature, eObject, copyEObject)) {
        return null;
    }
    return super.getTarget(eStructuralFeature, eObject, copyEObject);
}
项目:emfstore-rest    文件:IdEObjectCollectionImpl.java   
/**
 * 
 * {@inheritDoc}
 * 
 * @see org.eclipse.emf.emfstore.internal.common.model.IdEObjectCollection#deleteModelElement(org.eclipse.emf.ecore.EObject)
 */
public void deleteModelElement(final EObject modelElement) {
    if (!this.contains(modelElement)) {
        throw new IllegalArgumentException("Cannot delete a model element that is not contained in this project.");
    }

    // remove cross references
    ModelUtil.deleteOutgoingCrossReferences(this, modelElement);
    final Collection<Setting> crossReferences = UsageCrossReferencer.find(modelElement, this);
    ModelUtil.deleteIncomingCrossReferencesFromParent(crossReferences, modelElement);

    // remove containment
    final EObject containerModelElement = ModelUtil.getContainerModelElement(modelElement);
    if (containerModelElement == null) {
        // removeModelElementAndChildrenFromCache(modelElement);
        // getEobjectsIdMap().remove(modelElement);
        getModelElements().remove(modelElement);
    } else {
        final EReference containmentFeature = modelElement.eContainmentFeature();
        if (containmentFeature.isMany()) {
            final EList<?> containmentList = (EList<?>) containerModelElement.eGet(containmentFeature);
            containmentList.remove(modelElement);
        } else {
            containerModelElement.eSet(containmentFeature, null);
        }

        removeModelElementAndChildrenFromResource(modelElement);
    }
}
项目:emfstore-rest    文件:OperationRecorder.java   
private List<SettingWithReferencedElement> collectIngoingCrossReferences(IdEObjectCollection collection,
    Set<EObject> allModelElements) {
    final List<SettingWithReferencedElement> settings = new ArrayList<SettingWithReferencedElement>();
    for (final EObject modelElement : allModelElements) {
        final Collection<Setting> inverseReferences = projectSpace.findInverseCrossReferences(modelElement);

        for (final Setting setting : inverseReferences) {
            if (!ModelUtil.shouldBeCollected(collection, allModelElements, setting.getEObject())) {
                continue;
            }
            final EReference reference = (EReference) setting.getEStructuralFeature();
            final EClassifier eType = reference.getEType();

            if (reference.isContainer() || reference.isContainment() || !reference.isChangeable()
                || !(eType instanceof EClass)) {
                continue;
            }

            final SettingWithReferencedElement settingWithReferencedElement = new SettingWithReferencedElement(
                setting,
                modelElement);
            settings.add(settingWithReferencedElement);
        }
    }

    return settings;
}
项目:SPLevo    文件:ReplacementUtil.java   
@Override
public Void apply(Setting crossReference) {
    EObject referencingObject = crossReference.getEObject();
    EStructuralFeature referencingFeature = crossReference.getEStructuralFeature();

    if (referencingFeature instanceof EReference && ((EReference) referencingFeature).isContainment()) {
        LOGGER.warn(String.format("There should not be a containment reference from %s (%s) to %s.",
                referencingObject.toString(), referencingFeature.getName(), original.toString()));
        return null;
    }

    if (referencingFeature.getUpperBound() > 1 || referencingFeature.getUpperBound() == -1) {
        Object value = referencingObject.eGet(referencingFeature);
        if (value instanceof List) {
            @SuppressWarnings("unchecked")
            List<EObject> valueList = (List<EObject>) value;
            for (int i = 0; i < valueList.size(); ++i) {
                if (valueList.get(i) == original) {
                    valueList.set(i, replacement);
                }
            }
        } else {
            LOGGER.warn(String.format("We got a feature with upper bound %d that is no list but %s",
                    referencingFeature.getUpperBound(), value.getClass().getSimpleName()));
        }
    } else {
        referencingObject.eSet(referencingFeature, replacement);
    }
    return null;
}
项目:SPLevo    文件:ReplacementUtil.java   
/**
 * Replaces all cross references in the given resource sets.
 * 
 * @param processor
 *            The replacement processor to be used.
 * @param additionalResourceSets
 *            The resource sets that shall be considered besides the ones of the EObjects to be
 *            replaced.
 */
public static void replaceCrossReferences(CrossReferenceReplacer processor, ResourceSet... additionalResourceSets) {
    Set<Setting> crossReferences = new HashSet<Setting>();
    ArrayList<ResourceSet> resourceSets = new ArrayList<ResourceSet>();
    addResourceSetIfNotNull(processor.getOriginal(), resourceSets);
    addResourceSetIfNotNull(processor.getReplacement(), resourceSets);
    resourceSets.addAll(Lists.newArrayList(additionalResourceSets));
    for (ResourceSet rs : resourceSets) {  
        crossReferences.addAll(EcoreUtil.UsageCrossReferencer.find(processor.getOriginal(), rs));
    }

    for (Setting crossReference : crossReferences) {
        processor.apply(crossReference);
    }
}
项目:Environment    文件:OverviewArchitectureUtil.java   
/**
 * 
 * Collect all <code>OperationInterfaceContainer</code>'s connected with the specified operation interface container.<br>
 * Resulting set of operation interface containers are in position to provide operation interfaces, required by the specified container.<br> 
 * <br>
 * @param opInterfaceContainer Operation interface container for which the method collects potential containers.
 * @return Set of Operation interface containers that can require the operation interface provided by the specified container of the same type.
 */
public static Set<OperationInterfaceContainer> collectPotentialyResolveConteiners (OperationInterfaceContainer opInterfaceContainer)
{

    Collection<Setting> find = EcoreUtil.UsageCrossReferencer.find(opInterfaceContainer, opInterfaceContainer.eResource());

    Set<OperationInterfaceContainer> potentialContainers = new HashSet<OperationInterfaceContainer>();

    for (Setting setting : find) {

        EObject obj = setting.getEObject();
        if (obj instanceof Connection)
        {
            Connection c = (Connection) obj;

            if (c instanceof InternalConnection)
            {
                InternalConnection ic = (InternalConnection) c;

                if (ic.getTarget() == opInterfaceContainer)
                {
                    potentialContainers.add((OperationInterfaceContainer)ic.getSource());
                }
            }
            else if (c instanceof ExternalConnection)
            {
                ExternalConnection ec = (ExternalConnection) c;

                if (ec.getTarget() == opInterfaceContainer)
                {
                    potentialContainers.add((OperationInterfaceContainer)ec.getSource());
                }
            }
        }
    }

   return potentialContainers;
}
项目:Environment    文件:OverviewArchitectureUtil.java   
/**
 *
 * Collect all operation interfaces that could be required by specified <code>OperationInterfaceContainer</code>.
 * 
 * Operation interface can be required by <code>OperationInterfaceContainer</code> if it's container<br>
 * have <code>Connection</code> to the specified <code>OperationInterfaceContainer</code>.
 * 
 * @param opInterfaceContainer Operation interface container for which the method collects potentially required operation interfaces.
 * @return Set of operation interfaces that could be required by the specified <code>OperationInterfaceContainer</code>.
 */
public static Set<OperationInterface> collectPotentialyRequiredInterfaces(OperationInterfaceContainer opInterfaceContainer){

    Collection<Setting> find = EcoreUtil.UsageCrossReferencer.find(opInterfaceContainer, opInterfaceContainer.eResource());

    Set<OperationInterface> interfaces = new HashSet<OperationInterface>();
    Set<OperationInterfaceContainer> providerServices = new HashSet<OperationInterfaceContainer>();

    for (Setting setting : find) {

        EObject obj = setting.getEObject();
        if (obj instanceof Connection)
        {
            Connection c = (Connection) obj;

            if (c instanceof InternalConnection)
            {
                InternalConnection ic = (InternalConnection) c;
                if(ic.getSource() == opInterfaceContainer){
                    providerServices.add(ic.getTarget());
                }

            }
            else if (c instanceof ExternalConnection)
            {
                ExternalConnection ec = (ExternalConnection) c;
                if(ec.getSource() == opInterfaceContainer){
                    providerServices.add(ec.getTarget());
                }
            }
        }
    }

    for (OperationInterfaceContainer provider : providerServices) {

        interfaces.addAll(provider.getProvidedInterfaces());
    }

   return interfaces;
}
项目:tool    文件:UMLExt.java   
private static Collection<Element> getOwnedAndTypedElements(final EObject eObject) {
    final Collection<Element> ownedAndTypedElements = new LinkedHashSet<>(getOwnedElements(eObject));
    final Collection<Setting> settings = EcoreUtil.UsageCrossReferencer.find(eObject, eObject.eResource());
    for (final Setting s : settings) {
        if (s.getEStructuralFeature() == UMLPackage.Literals.TYPED_ELEMENT__TYPE) {
            ownedAndTypedElements.add((Element) s.getEObject());
        }
    }
    return ownedAndTypedElements;
}
项目:eclipse-avro    文件:BasicSettingDelegate.java   
public Setting dynamicSetting(final InternalEObject owner, final DynamicValueHolder settings, final int dynamicFeatureID)
{
  return 
    new EStructuralFeature.Setting()
    {
      public EObject getEObject()
      {
        return owner;
      }

      public EStructuralFeature getEStructuralFeature()
      {
        return eStructuralFeature;
      }

      public Object get(boolean resolve)
      {
        return BasicSettingDelegate.this.dynamicGet(owner, settings, dynamicFeatureID, resolve, true);
      }

      public boolean isSet()
      {
        return BasicSettingDelegate.this.dynamicIsSet(owner, settings, dynamicFeatureID);
      }

      public void set(Object newValue)
      {
        BasicSettingDelegate.this.dynamicSet(owner, settings, dynamicFeatureID, newValue);
      }

      public void unset()
      {
        BasicSettingDelegate.this.dynamicUnset(owner, settings, dynamicFeatureID);
      }
    };
}
项目:eclipse-avro    文件:BasicSettingDelegate.java   
/**
 * Creates a setting for the owner and this delegate's feature.
 * @param owner the owner for the setting.
 * @return a new setting.
 */
protected Setting setting(final InternalEObject owner)
{
  return 
    new EStructuralFeature.Setting()
    {
      public EObject getEObject()
      {
        return owner;
      }

      public EStructuralFeature getEStructuralFeature()
      {
        return eStructuralFeature;
      }

      public Object get(boolean resolve)
      {
        return Stateless.this.get(owner, resolve, true);
      }

      public boolean isSet()
      {
        return Stateless.this.isSet(owner);
      }

      public void set(Object newValue)
      {
        Stateless.this.set(owner, newValue);
      }

      public void unset()
      {
        Stateless.this.unset(owner);
      }
    };
}
项目:NIEM-Modeling-Tool    文件:UMLExt.java   
private static Collection<Element> getOwnedAndTypedElements(final EObject eObject) {
    final Collection<Element> ownedAndTypedElements = new LinkedHashSet<>(getOwnedElements(eObject));
    final Collection<Setting> settings = EcoreUtil.UsageCrossReferencer.find(eObject, eObject.eResource());
    for (final Setting s : settings) {
        if (s.getEStructuralFeature() == UMLPackage.Literals.TYPED_ELEMENT__TYPE) {
            ownedAndTypedElements.add((Element) s.getEObject());
        }
    }
    return ownedAndTypedElements;
}
项目:NIEM-Modeling-Tool    文件:DiagramExt.java   
public static Collection<EObject> collectViews(final Iterable<? extends EObject> data, final Resource theNotationResource) {
    final Collection<EObject> views = new ArrayList<>();
    if (theNotationResource != null) {
        for (final EObject e : data) {
            final Collection<Setting> theNotationReferences = EcoreUtil.UsageCrossReferencer
                    .find(e, theNotationResource);
            for (final Setting setting : theNotationReferences) {
                views.add(setting.getEObject());
            }
        }
    }
    return views;
}
项目:clickwatch    文件:BasicSettingDelegate.java   
public Setting dynamicSetting(final InternalEObject owner, final DynamicValueHolder settings, final int dynamicFeatureID)
{
  return 
    new EStructuralFeature.Setting()
    {
      public EObject getEObject()
      {
        return owner;
      }

      public EStructuralFeature getEStructuralFeature()
      {
        return eStructuralFeature;
      }

      public Object get(boolean resolve)
      {
        return BasicSettingDelegate.this.dynamicGet(owner, settings, dynamicFeatureID, resolve, true);
      }

      public boolean isSet()
      {
        return BasicSettingDelegate.this.dynamicIsSet(owner, settings, dynamicFeatureID);
      }

      public void set(Object newValue)
      {
        BasicSettingDelegate.this.dynamicSet(owner, settings, dynamicFeatureID, newValue);
      }

      public void unset()
      {
        BasicSettingDelegate.this.dynamicUnset(owner, settings, dynamicFeatureID);
      }
    };
}
项目:clickwatch    文件:BasicSettingDelegate.java   
/**
 * Creates a setting for the owner and this delegate's feature.
 * @param owner the owner for the setting.
 * @return a new setting.
 */
protected Setting setting(final InternalEObject owner)
{
  return 
    new EStructuralFeature.Setting()
    {
      public EObject getEObject()
      {
        return owner;
      }

      public EStructuralFeature getEStructuralFeature()
      {
        return eStructuralFeature;
      }

      public Object get(boolean resolve)
      {
        return Stateless.this.get(owner, resolve, true);
      }

      public boolean isSet()
      {
        return Stateless.this.isSet(owner);
      }

      public void set(Object newValue)
      {
        Stateless.this.set(owner, newValue);
      }

      public void unset()
      {
        Stateless.this.unset(owner);
      }
    };
}
项目:emf-fragments    文件:FInternalObjectImpl.java   
@Override
protected EStructuralFeature.Internal.SettingDelegate eSettingDelegate(final EStructuralFeature eFeature) {
    FragmentationType type = EMFFragUtil.getFragmentationType(eFeature);
    if (type == FragmentationType.None || type == FragmentationType.FragmentsContainment) {
        return ((EStructuralFeature.Internal) eFeature).getSettingDelegate();
    } else {
        return new EStructuralFeatureImpl.InternalSettingDelegateMany(EStructuralFeatureImpl.InternalSettingDelegateMany.DATA_DYNAMIC, eFeature) {
            @Override
            protected Setting createDynamicSetting(InternalEObject owner) {
                int kind = EcoreEList.Generic.kind(eFeature);
                return new FValueSetList(kind, FInternalObjectImpl.class, FInternalObjectImpl.this, eFeature);
            }
        };
    }
}
项目:xtext-core    文件:SequencerTestLanguageRuntimeModule.java   
@Override
protected void installProxies(EObject obj, IDiagnosticProducer producer, Multimap<Setting, INode> settingsToLink) {
    super.installProxies(obj, producer, settingsToLink);
    if (obj instanceof NullCrossRef)
        ((NullCrossRef) obj).setRef(null);
}
项目:Source    文件:EObjectConnectorTests.java   
@Test
public void updateEObjectContainerSettingLocationChanged() throws Exception {
    final IBase base = new BaseRegistryTests.TestBase();
    base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
            TestReport.class));
    base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
            TestCouple.class));
    final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
    container.setContainer(base);
    final Copier copier = new Copier();
    final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
            .eContents()));
    copier.copyReferences();
    final EClass producerEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getProducer());
    final Resource resource = createResource("test.xmi");
    resource.getContents().addAll(eObjects);
    container.setResource(resource);
    eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
    final IEObjectLocation location = new TestEObjectLocation();
    location.setContainer(container);
    final ILocation target = new TestTextLocation();
    final ILink link = new BaseElementFactoryTests.TestLink();
    location.getTargetLinks().add(link);
    link.setSource(location);
    target.getSourceLinks().add(link);
    link.setTarget(target);

    final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
    MappingUtils.getConnectorRegistry().register(connector);

    super.initLocation(container, location, new Setting() {
        public void unset() {
            // nothing to do here
        }

        public void set(Object newValue) {
            // nothing to do here
        }

        public boolean isSet() {
            return false;
        }

        public EStructuralFeature getEStructuralFeature() {
            return EcorePackage.eINSTANCE.getEClass_Interface();
        }

        public EObject getEObject() {
            return producerEClass;
        }

        public Object get(boolean resolve) {
            return producerEClass.getName();
        }
    });

    producerEClass.setInterface(!producerEClass.isInterface());
    eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);

    assertEquals(1, base.getReports().size());
    final IReport report = base.getReports().get(0);
    assertEquals(link, report.getLink());
    assertTrue(report.getDescription().contains("Producer"));
    assertTrue(report.getDescription().contains(location.getURIFragment()));
    assertTrue(report.getDescription().contains(
            "feature interface value false has been changed to true."));

    MappingUtils.getConnectorRegistry().unregister(connector);
}
项目:Source    文件:EObjectConnectorTests.java   
@Test
public void updateEObjectContainerSettingLocationManyRemoved() throws Exception {
    final IBase base = new BaseRegistryTests.TestBase();
    base.getFactory().addDescriptor(IReport.class, new BaseElementFactory.FactoryDescriptor<TestReport>(
            TestReport.class));
    base.getFactory().addDescriptor(ICouple.class, new BaseElementFactory.FactoryDescriptor<TestCouple>(
            TestCouple.class));
    final TestEObjectContainerLocation container = new TestEObjectContainerLocation();
    container.setContainer(base);
    final Copier copier = new Copier();
    final List<EObject> eObjects = new ArrayList<EObject>(copier.copyAll(AnydslPackage.eINSTANCE
            .eContents()));
    copier.copyReferences();
    final EClass foodEClass = (EClass)copier.get(AnydslPackage.eINSTANCE.getFood());
    final Resource resource = createResource("test.xmi");
    resource.getContents().addAll(eObjects);
    container.setResource(resource);
    eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);
    final IEObjectLocation location = new TestEObjectLocation();
    location.setContainer(container);
    final ILocation target = new TestTextLocation();
    final ILink link = new BaseElementFactoryTests.TestLink();
    location.getTargetLinks().add(link);
    link.setSource(location);
    target.getSourceLinks().add(link);
    link.setTarget(target);

    final TestEObjectContainerConnector connector = new TestEObjectContainerConnector();
    MappingUtils.getConnectorRegistry().register(connector);

    super.initLocation(container, location, new Setting() {
        public void unset() {
            // nothing to do here
        }

        public void set(Object newValue) {
            // nothing to do here
        }

        public boolean isSet() {
            return false;
        }

        public EStructuralFeature getEStructuralFeature() {
            return EcorePackage.eINSTANCE.getEClass_EOperations();
        }

        public EObject getEObject() {
            return foodEClass;
        }

        public Object get(boolean resolve) {
            return foodEClass.getEOperations().get(1);
        }
    });

    foodEClass.getEOperations().remove(1);
    eObjectContainerHelper.updateEObjectContainer(container.getContainer(), container, resource);

    assertEquals(1, base.getReports().size());
    final IReport report = base.getReports().get(0);
    assertEquals(link, report.getLink());
    assertTrue(report.getDescription().contains("Food"));
    assertTrue(report.getDescription().contains(location.getURIFragment()));
    assertTrue(report.getDescription().contains("has been removed from feature eOperations."));

    MappingUtils.getConnectorRegistry().unregister(connector);
}
项目:Source    文件:EObjectConnectorParametrizedTests.java   
protected IEObjectLocation createEObjectLocation(Copier copier, TestEObjectContainerLocation container)
        throws Exception {
    final TestEObjectLocation res;

    final EObject eObject = copier.get(original[0]);
    if (original[1] != null) {
        final EStructuralFeature feature = (EStructuralFeature)original[1];
        final Object value;
        if (original[2] instanceof EObject) {
            value = copier.get(original[2]);
        } else {
            value = original[2];
        }
        res = (TestEObjectLocation)MappingUtils.getConnectorRegistry().createLocation(container,
                new Setting() {
                    public void unset() {
                        // nothing to do here
                    }

                    public void set(Object newValue) {
                        // nothing to do here
                    }

                    public boolean isSet() {
                        return false;
                    }

                    public EStructuralFeature getEStructuralFeature() {
                        return feature;
                    }

                    public EObject getEObject() {
                        return eObject;
                    }

                    public Object get(boolean resolve) {
                        return value;
                    }
                });
    } else {
        res = (TestEObjectLocation)MappingUtils.getConnectorRegistry().createLocation(container, eObject);
    }
    res.setObject(eObject);

    return res;
}