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); }
/** * @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; }
protected EObject resolveReference(EObject referringElement, IReferenceDescription referenceDescription) { Object resolvedValue = referringElement.eGet(referenceDescription.getEReference()); if (referenceDescription.getEReference().isMany()) { List<?> list = (List<?>) resolvedValue; resolvedValue = list.get(referenceDescription.getIndexInList()); } return (EObject) resolvedValue; }
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); } }
/** * @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); }
/** * 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 IEObjectDescription findTargetDeclaration(final IReferenceDescription reference) { return this.findDeclaration(reference.getTargetEObjectUri()); }
protected IEObjectDescription findSourceDeclaration(final IReferenceDescription reference) { return this.findDeclaration(reference.getContainerEObjectURI()); }
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); } } } } }
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()); }
/** * @since 2.4 */ public void findReferences(Set<URI> targetURIs, IResourceDescription resourceDescription, IAcceptor<IReferenceDescription> acceptor, IProgressMonitor monitor, ILocalResourceAccess localResourceAccess) { for (IReferenceDescription referenceDescription : resourceDescription.getReferenceDescriptions()) { if (targetURIs.contains(referenceDescription.getTargetEObjectUri())) { acceptor.accept(referenceDescription); } } } }
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; }
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; }
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()); }
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); } }
/** * Collect the URIs of resources, that are referenced by the given description. * @return the list of referenced URIs. Never <code>null</code>. */ public Set<URI> collectOutgoingReferences(IResourceDescription description) { URI resourceURI = description.getURI(); Set<URI> result = null; for(IReferenceDescription reference: description.getReferenceDescriptions()) { URI targetResource = reference.getTargetEObjectUri().trimFragment(); if (!resourceURI.equals(targetResource)) { if (result == null) result = Sets.newHashSet(targetResource); else result.add(targetResource); } } if (result != null) return result; return Collections.emptySet(); }
for (IResourceDescription desc : descriptions.getAllResourceDescriptions()) { for (IReferenceDescription ref : desc.getReferenceDescriptions()) { URI targetURI = ref.getTargetEObjectUri(); URI sourceEObjectUri = ref.getSourceEObjectUri(); EReference reference = ref.getEReference(); if (targetURI == null || sourceEObjectUri == null || reference == null) { continue; ref.getIndexInList(), ref.getContainerEObjectURI()); snapshot.incomingReferences.add(rd);
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, reference.getEReference(), reference.getIndexInList()); addOccurrenceAnnotation(OCCURRENCE_ANNOTATION_TYPE, document, textRegion, result);
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; }
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; }