diff options
author | Mikaƫl Barbero | 2014-05-15 12:45:14 +0000 |
---|---|---|
committer | Laurent Goubet | 2014-05-16 07:45:44 +0000 |
commit | 3319ad150b51f809e846130e0223cf184ccd76e5 (patch) | |
tree | de21406debc6fc481d2f08fa9e6df98789849fe3 | |
parent | 3a9c1d94e8703b383584df3a6323e1b7d5858186 (diff) | |
download | org.eclipse.emf.compare-3319ad150b51f809e846130e0223cf184ccd76e5.tar.gz org.eclipse.emf.compare-3319ad150b51f809e846130e0223cf184ccd76e5.tar.xz org.eclipse.emf.compare-3319ad150b51f809e846130e0223cf184ccd76e5.zip |
Do not rethrow exception when loading a resource in a custom resourceset
Let the super implementation register a diagnostic on the resource. It
will be queried afterwards to know if something went badly.
Change-Id: I4e94119a2f4e6c605b0f53c2372fa473f255862a
2 files changed, 35 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/SynchronizedResourceSet.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/SynchronizedResourceSet.java index c033dc355..62938279e 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/SynchronizedResourceSet.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/resolver/SynchronizedResourceSet.java @@ -2,6 +2,7 @@ package org.eclipse.emf.compare.ide.ui.internal.logical.resolver; import com.google.common.collect.Maps; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -110,6 +111,23 @@ class SynchronizedResourceSet extends ResourceSetImpl { return result; } + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#handleDemandLoadException(org.eclipse.emf.ecore.resource.Resource, + * java.io.IOException) + */ + @Override + protected void handleDemandLoadException(Resource resource, IOException exception) + throws RuntimeException { + try { + super.handleDemandLoadException(resource, exception); + } catch (RuntimeException e) { + // do nothing, continue with loading, the exception has been added to the diagnostics of the + // resource + } + } + public Set<URI> discoverCrossReferences(Resource resource, IProgressMonitor monitor) { resource.eSetDeliver(false); final List<EObject> roots = ((InternalEList<EObject>)resource.getContents()).basicList(); diff --git a/plugins/org.eclipse.emf.compare.ide/src/org/eclipse/emf/compare/ide/internal/utils/NotLoadingResourceSet.java b/plugins/org.eclipse.emf.compare.ide/src/org/eclipse/emf/compare/ide/internal/utils/NotLoadingResourceSet.java index 2c90f6024..86c062f1f 100644 --- a/plugins/org.eclipse.emf.compare.ide/src/org/eclipse/emf/compare/ide/internal/utils/NotLoadingResourceSet.java +++ b/plugins/org.eclipse.emf.compare.ide/src/org/eclipse/emf/compare/ide/internal/utils/NotLoadingResourceSet.java @@ -91,6 +91,23 @@ public final class NotLoadingResourceSet extends ResourceSetImpl { /** * {@inheritDoc} * + * @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#handleDemandLoadException(org.eclipse.emf.ecore.resource.Resource, + * java.io.IOException) + */ + @Override + protected void handleDemandLoadException(Resource resource, IOException exception) { + try { + super.handleDemandLoadException(resource, exception); + // CHECKSTYLE:OFF + } catch (RuntimeException e) { + // CHECKSTYLE:ON + // do nothing. The errors are added to the Resource#getErrors() in super(). + } + } + + /** + * {@inheritDoc} + * * @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#getResource(org.eclipse.emf.common.util.URI, * boolean) */ |