Editor.saveAs: create Bpmn2XmiResourceImpl
If the filename ends with xmi (e.g. bpmn2xmi), create a Bpmn2XmiResourceImpl
(instead of XmiResourceImpl).
Fix NullPointerException in basicSetResourceSet.
diff --git a/org.eclipse.bpmn2.editor/src/org/eclipse/bpmn2/presentation/Bpmn2Editor.java b/org.eclipse.bpmn2.editor/src/org/eclipse/bpmn2/presentation/Bpmn2Editor.java
index dc89583..0c449e6 100644
--- a/org.eclipse.bpmn2.editor/src/org/eclipse/bpmn2/presentation/Bpmn2Editor.java
+++ b/org.eclipse.bpmn2.editor/src/org/eclipse/bpmn2/presentation/Bpmn2Editor.java
@@ -29,6 +29,7 @@
import org.eclipse.bpmn2.di.provider.BpmnDiItemProviderAdapterFactory;
import org.eclipse.bpmn2.provider.Bpmn2ItemProviderAdapterFactory;
+import org.eclipse.bpmn2.util.Bpmn2XMIResourceImpl;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
@@ -1259,9 +1260,8 @@
protected void doSaveAs(URI uri, IEditorInput editorInput) {
if (uri.toString().endsWith("xmi")) {
Resource oldResource = editingDomain.getResourceSet().getResources().get(0);
- XMIResource newResource = new XMIResourceImpl();
+ XMIResource newResource = new Bpmn2XMIResourceImpl(uri);
editingDomain.getResourceSet().getResources().add(newResource);
- newResource.setURI(uri);
List<EObject> content = new ArrayList<EObject>(oldResource.getContents());
for (EObject eObject : content) {
if (eObject.eClass().getName().equals("DocumentRoot")) {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java
index 7cb661a..5a2b694 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java
@@ -81,7 +81,8 @@
@Override
public NotificationChain basicSetResourceSet(ResourceSet resourceSet,
NotificationChain notifications) {
- resourceSet.eAdapters().add(oppositeReferenceAdapter);
+ if (resourceSet != null)
+ resourceSet.eAdapters().add(oppositeReferenceAdapter);
return super.basicSetResourceSet(resourceSet, notifications);
}
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2XMIResourceImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2XMIResourceImpl.java
index 4c1121b..ffcd77f 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2XMIResourceImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2XMIResourceImpl.java
@@ -51,7 +51,8 @@
@Override
public NotificationChain basicSetResourceSet(ResourceSet resourceSet,
NotificationChain notifications) {
- resourceSet.eAdapters().add(oppositeReferenceAdapter);
+ if (resourceSet != null)
+ resourceSet.eAdapters().add(oppositeReferenceAdapter);
return super.basicSetResourceSet(resourceSet, notifications);
}