diff options
-rw-r--r-- | plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java | 25 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java | 4 |
2 files changed, 22 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java index c4ae2dc845..11efbe0d10 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java @@ -665,15 +665,30 @@ public class CDOResourceImpl extends CDOResourceNodeImpl implements CDOResource, */ public void delete(Map<?, ?> defaultDeleteOptions) throws IOException { - ResourceSet resourceSet = getResourceSet(); - if (resourceSet != null) + if (isRoot()) { - resourceSet.getResources().remove(this); + throw new UnsupportedOperationException(); } - if (!FSMUtil.isTransient(this)) + if (getFolder() == null) { - cdoView().toTransaction().detach(this); + CDOViewImpl view = cdoView(); + view.getRootResource().getContents().remove(this); + } + else + { + setFolder(null); + } + } + + @Override + public void cdoInternalPostDetach() + { + super.cdoInternalPostDetach(); + ResourceSet resourceSet = getResourceSet(); + if (resourceSet != null) + { + resourceSet.getResources().remove(this); } } diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java index c31a8c5b78..b33b51bd4e 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java @@ -202,9 +202,9 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa return (CDOResource)getObject(id); } } - catch (Exception expected) + catch (Exception ignore) { - TRACER.trace(expected); + // Just create the missing resource } return createResource(path); |