/** * This method is only invoked if the containerEObjectURI of the {@link IReferenceDescription} is null, i.e. the * reference is owned by an element without any indexed container. * * @since 2.1 */ public Object image(IReferenceDescription referenceDescription) { if (referenceDescription.getSourceEObjectUri() != null) return getImageForURI(referenceDescription.getSourceEObjectUri()); return null; }
protected void handleCannotResolveExistingReference(EObject sourceEObject, IReferenceDescription referenceDescription, StatusWrapper status) { status.add(ERROR, "Cannot resolve existing reference.\nMaybe the index is be corrupt. Consider a rebuild.", referenceDescription.getSourceEObjectUri()); }
public Multimap<URI, IReferenceDescription> sortByResource(Iterable<IReferenceDescription> referenceDescriptions) { Multimap<URI, IReferenceDescription> referencesByResourceURI = HashMultimap.create(); for (IReferenceDescription referenceDescription : referenceDescriptions) { URI sourceResourceUri = referenceDescription.getSourceEObjectUri().trimFragment(); referencesByResourceURI.put(sourceResourceUri, referenceDescription); } return referencesByResourceURI; }
protected void handleCannotLoadReferringElement(IReferenceDescription referenceDescription, StatusWrapper status) { status.add(ERROR, "Cannot find referring element {0}.\nMaybe the index is be corrupt. Consider a rebuild.", referenceDescription.getSourceEObjectUri()); }
public Multimap<IProject, IReferenceDescription> sortByProject(Iterable<IReferenceDescription> referenceDescriptions) { Multimap<IProject, IReferenceDescription> referencesByProject = HashMultimap.create(); for (IReferenceDescription referenceDescription : referenceDescriptions) { URI sourceResourceUri = referenceDescription.getSourceEObjectUri().trimFragment(); IProject project = projectUtil.getProject(sourceResourceUri); if(project != null) { referencesByProject.put(project, referenceDescription); } } return referencesByProject; }
public void accept(IReferenceDescription referenceDescription) { if (referenceDescription.getSourceEObjectUri() == null || referenceDescription.getTargetEObjectUri() == null || referenceDescription.getEReference() == null) { handleCorruptReferenceDescription(referenceDescription, status); } else { URI sourceResourceURI = referenceDescription.getSourceEObjectUri().trimFragment(); IReferenceUpdater referenceUpdater = getReferenceUpdater(sourceResourceURI); if (referenceUpdater == null) handleNoReferenceUpdater(sourceResourceURI, status); else updater2refs.put(referenceUpdater, referenceDescription); } }
/** * @since 2.1 protected */ protected URI uri(Object description) { if (description instanceof IEObjectDescription) { return ((IEObjectDescription) description).getEObjectURI(); } else if (description instanceof IResourceDescription) { return ((IResourceDescription) description).getURI(); } else if(description instanceof IReferenceDescription) { URI containerEObjectURI = ((IReferenceDescription) description).getContainerEObjectURI(); return containerEObjectURI == null ? ((IReferenceDescription) description).getSourceEObjectUri() : null; } return null; }
for (ReferenceSearchViewTreeNode referenceNode : rootNode.getChildren()) { final URI referenceSourceURI = ((IReferenceDescription) referenceNode .getDescription()).getSourceEObjectUri(); if (!Iterables.any(newReferenceDescriptions, new Predicate<IReferenceDescription>() {
protected void handleOpen(OpenEvent openEvent) { ISelection selection = openEvent.getSelection(); if (selection instanceof IStructuredSelection) { IStructuredSelection structuredSelection = (IStructuredSelection) selection; for (Iterator<?> i = structuredSelection.iterator(); i.hasNext();) { Object selectedObject = i.next(); if (selectedObject instanceof ReferenceSearchViewTreeNode) { ReferenceSearchViewTreeNode treeNode = (ReferenceSearchViewTreeNode) selectedObject; Object description = treeNode.getDescription(); if (description instanceof IReferenceDescription) { IReferenceDescription referenceDescription = (IReferenceDescription) description; uriEditorOpener.open(referenceDescription.getSourceEObjectUri(), referenceDescription.getEReference(), referenceDescription.getIndexInList(), true); } else if (description instanceof IResourceDescription) { uriEditorOpener.open(((IResourceDescription) description).getURI(), true); } } } } }
/** * @return a hierarchy node reference for the given reference; cannot be <code>null</code> */ protected IHierarchyNodeReference createNodeReference(final IReferenceDescription reference) { final IUnitOfWork<DefaultHierarchyNodeReference, EObject> _function = (EObject sourceObject) -> { final ITextRegionWithLineInformation textRegion = this.getTextRegion(sourceObject, reference.getEReference(), reference.getIndexInList()); final String text = this.getText(sourceObject, textRegion); return new DefaultHierarchyNodeReference(text, textRegion, reference); }; return this.<DefaultHierarchyNodeReference>readOnly(reference.getSourceEObjectUri(), _function); }
protected void createReferenceUpdatesForCluster(ElementRenameArguments elementRenameArguments, Multimap<URI, IReferenceDescription> resource2references, ResourceSet resourceSet, IRefactoringUpdateAcceptor updateAcceptor, StatusWrapper status, IProgressMonitor monitor) { SubMonitor progress = SubMonitor.convert(monitor, 100); List<URI> unloadableResources = loadReferringResources(resourceSet, resource2references.keySet(), status, progress.newChild(10)); for (URI unloadableResouce : unloadableResources) resource2references.removeAll(unloadableResouce); List<IReferenceDescription> unresolvableReferences = resolveReferenceProxies(resourceSet, resource2references.values(), status, progress.newChild(10)); for (IReferenceDescription unresolvableReference : unresolvableReferences) { URI unresolvableReferringResource = unresolvableReference.getSourceEObjectUri().trimFragment(); resource2references.remove(unresolvableReferringResource, unresolvableReference); } elementRenameArguments.getRenameStrategy().applyDeclarationChange(elementRenameArguments.getNewName(), resourceSet); createReferenceUpdates(elementRenameArguments, resource2references, resourceSet, updateAcceptor, progress.newChild(80)); elementRenameArguments.getRenameStrategy().revertDeclarationChange(resourceSet); }
@Override protected void createReferenceUpdates(ElementRenameArguments elementRenameArguments, Multimap<URI, IReferenceDescription> resource2references, ResourceSet resourceSet, IRefactoringUpdateAcceptor updateAcceptor, IProgressMonitor monitor) { SubMonitor progress = SubMonitor.convert(monitor, "Updating EMF References", resource2references.keySet() .size()); for (URI referringResourceURI : resource2references.keySet()) { try { if (progress.isCanceled()) break; Resource referringResource = resourceSet.getResource(referringResourceURI, false); EObject refactoredElement = resourceSet.getEObject(elementRenameArguments.getNewElementURI(elementRenameArguments.getTargetElementURI()), true); if(refactoredElement != null && refactoredElement instanceof EClassifier){ for(IReferenceDescription reference : resource2references.get(referringResourceURI)){ EObject referringEReference = referringResource.getEObject(reference.getSourceEObjectUri().fragment()).eContainer(); if(referringEReference != null && referringEReference instanceof EReference) ((EReference)referringEReference).setEType((EClassifier)refactoredElement); } } changeUtil.addSaveAsUpdate(referringResource, updateAcceptor); progress.worked(1); } catch (Exception exc) { throw new WrappedException(exc); } } }
protected List<IReferenceDescription> resolveReferenceProxies(ResourceSet resourceSet, Collection<IReferenceDescription> values, StatusWrapper status, IProgressMonitor monitor) { List<IReferenceDescription> unresolvedDescriptions = null; for (IReferenceDescription referenceDescription : values) { EObject sourceEObject = resourceSet.getEObject(referenceDescription.getSourceEObjectUri(), true); if (sourceEObject == null) { handleCannotLoadReferringElement(referenceDescription, status); } else { // this should not be necessary. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=385408 if(sourceEObject.eIsProxy()) { sourceEObject = EcoreUtil.resolve(sourceEObject, sourceEObject.eResource()); if(sourceEObject.eIsProxy()) { handleCannotLoadReferringElement(referenceDescription, status); } } EObject resolvedReference = resolveReference(sourceEObject, referenceDescription); if (resolvedReference == null || resolvedReference.eIsProxy()) handleCannotResolveExistingReference(sourceEObject, referenceDescription, status); else continue; } if (unresolvedDescriptions == null) unresolvedDescriptions = newArrayList(); unresolvedDescriptions.add(referenceDescription); } return (unresolvedDescriptions == null) ? Collections.<IReferenceDescription> emptyList() : unresolvedDescriptions; }
private void addReference(IReferenceDescription referenceDescription, boolean isUpdateViewer) { URI containerEObjectURI = referenceDescription.getContainerEObjectURI(); final URI eObjectURI = (containerEObjectURI == null) ? referenceDescription.getSourceEObjectUri() : containerEObjectURI; IResourceDescription resourceDescription = resourceDescriptions.getResourceDescription(eObjectURI .trimFragment()); if (resourceDescription != null) { ReferenceSearchViewTreeNode resourceNode = resourceNode(resourceDescription, isUpdateViewer); ReferenceSearchViewTreeNode referenceNode = null; for (IEObjectDescription eObjectDescription : resourceDescription.getExportedObjects()) { if (eObjectDescription.getEObjectURI().equals(eObjectURI)) { referenceNode = new ReferenceSearchViewTreeNode(resourceNode, referenceDescription, eObjectDescription); break; } } if (referenceNode == null && resourceNode != null) new ReferenceSearchViewTreeNode(resourceNode, referenceDescription, referenceDescription); } }
protected void createReferenceUpdate(IReferenceDescription referenceDescription, URI referringResourceURI, ElementRenameArguments elementRenameArguments, ResourceSet resourceSet, IRefactoringUpdateAcceptor updateAcceptor) { URI referringElementNewURI = elementRenameArguments .getNewElementURI(referenceDescription.getSourceEObjectUri()); EObject referringElement = resourceSet.getEObject(referringElementNewURI, false); URI targetElementNewURI = elementRenameArguments.getNewElementURI(referenceDescription.getTargetEObjectUri()); EObject newTargetElement = resourceSet.getEObject(targetElementNewURI, false); createReferenceUpdate(referringElement, referringResourceURI, referenceDescription.getEReference(), referenceDescription.getIndexInList(), newTargetElement, updateAcceptor); }
public List<? extends Location> getReferences(final XtextResource resource, final int offset, final IReferenceFinder.IResourceAccess resourceAccess, final IResourceDescriptions indexData, final CancelIndicator cancelIndicator) { final EObject element = this._eObjectAtOffsetHelper.resolveElementAt(resource, offset); if ((element == null)) { return CollectionLiterals.<Location>emptyList(); } final ArrayList<Location> locations = CollectionLiterals.<Location>newArrayList(); final TargetURIs targetURIs = this.collectTargetURIs(element); final IAcceptor<IReferenceDescription> _function = (IReferenceDescription reference) -> { final Procedure1<EObject> _function_1 = (EObject obj) -> { final Location location = this._documentExtensions.newLocation(obj, reference.getEReference(), reference.getIndexInList()); if ((location != null)) { locations.add(location); } }; this.doRead(resourceAccess, reference.getSourceEObjectUri(), _function_1); }; ReferenceAcceptor _referenceAcceptor = new ReferenceAcceptor(this.resourceServiceProviderRegistry, _function); CancelIndicatorProgressMonitor _cancelIndicatorProgressMonitor = new CancelIndicatorProgressMonitor(cancelIndicator); this.referenceFinder.findAllReferences(targetURIs, resourceAccess, indexData, _referenceAcceptor, _cancelIndicatorProgressMonitor); return locations; }
public static ReferenceDescriptionImpl create(IReferenceDescription desc) { ReferenceDescriptionImpl description = (ReferenceDescriptionImpl) BuilderStateFactory.eINSTANCE.createReferenceDescription(); description.setIndexInList(desc.getIndexInList()); description.setSourceEObjectUri(desc.getSourceEObjectUri()); description.setTargetEObjectUri(desc.getTargetEObjectUri()); description.setReference(desc.getEReference()); description.setContainerEObjectURI(desc.getContainerEObjectURI()); return description; }
for (IReferenceDescription reference : references) { try { EObject source = resource.getEObject(reference.getSourceEObjectUri().fragment()); if (source != null && reference.getEReference() != null) { // prevent exception for outdated data ITextRegion textRegion = locationInFileProvider.getSignificantTextRegion(source,
for (IReferenceDescription ref : desc.getReferenceDescriptions()) { URI targetURI = ref.getTargetEObjectUri(); URI sourceEObjectUri = ref.getSourceEObjectUri(); EReference reference = ref.getEReference(); if (targetURI == null || sourceEObjectUri == null || reference == null) {