/** * @since 2.2 */ protected EObject findEObjectByURI(final URI uri, XtextResource resource) { if (uri.fragment() != null){ try { EObject result = resource.getEObject(uri.fragment()); return result; } catch (WrappedException e){ logger.error("Error while resolving EObject with URI '" + uri + "'" , e.getCause()); } } return null; } }
@Override public synchronized EObject getEObject(String uriFragment) { try { if (getEncoder().isCrossLinkFragment(this, uriFragment)) { Triple<EObject, EReference, INode> triple = getEncoder().decode(this, uriFragment); return getEObject(uriFragment, triple); } } catch (RuntimeException e) { getErrors().add(new ExceptionDiagnostic(e)); log.error("resolution of uriFragment '" + uriFragment + "' failed.", e); // wrapped because the javaDoc of this method states that WrappedExceptions are thrown // logged because EcoreUtil.resolve will ignore any exceptions. throw new WrappedException(e); } return super.getEObject(uriFragment); }
protected ISemanticRegion getRegion(ITextRegionAccess access, IReferenceSnapshot ref) { XtextResource resource = access.getResource(); URI objectUri = ref.getSourceEObjectUri(); if (!resource.getURI().equals(objectUri.trimFragment())) { return null; } EObject object = resource.getEObject(objectUri.fragment()); if (object == null) { return null; } ISemanticRegionsFinder finder = access.getExtensions().regionFor(object); int index = ref.getIndexInList(); if (index < 0) { return finder.feature(ref.getEReference()); } else { List<ISemanticRegion> list = finder.features(ref.getEReference()); if (list != null && index < list.size()) { return list.get(index); } } return null; }
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,