diff options
author | Bob Brodt | 2015-08-17 20:08:42 +0000 |
---|---|---|
committer | Bob Brodt | 2015-08-17 20:08:42 +0000 |
commit | 6f8a1fb6ffc50763ff4383c1c2170c91b36f5416 (patch) | |
tree | 04c7145743e24b350230b20bb8f0759bbf4a60b6 | |
parent | 358d43674e87d5d4b3c973fd1a9a49be3018a344 (diff) | |
download | org.eclipse.bpmn2-modeler-6f8a1fb6ffc50763ff4383c1c2170c91b36f5416.tar.gz org.eclipse.bpmn2-modeler-6f8a1fb6ffc50763ff4383c1c2170c91b36f5416.tar.xz org.eclipse.bpmn2-modeler-6f8a1fb6ffc50763ff4383c1c2170c91b36f5416.zip |
merge changes from gerrit review into master
13 files changed, 55 insertions, 15 deletions
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/src/org/eclipse/bpmn2/modeler/examples/customtask/MyTaskDetailComposite.java b/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/src/org/eclipse/bpmn2/modeler/examples/customtask/MyTaskDetailComposite.java index bd8de91c..7c4dc2ea 100644 --- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/src/org/eclipse/bpmn2/modeler/examples/customtask/MyTaskDetailComposite.java +++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/src/org/eclipse/bpmn2/modeler/examples/customtask/MyTaskDetailComposite.java @@ -61,7 +61,7 @@ public class MyTaskDetailComposite extends DefaultDetailComposite { // Add the newly constructed TaskConfig object to the Task's Extension Values list. // Note that we will delay the actual insertion of the new object until some feature // of the object changes (e.g. the Parameter.name) - ModelDecorator.addExtensionAttributeValue(myTask, feature, taskConfig, true); + ModelDecorator.addExtensionAttributeValue(myTask.eResource(), myTask, feature, taskConfig, true); } else { // Else reuse the existing TaskConfig object. diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ExtendedPropertiesAdapter.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ExtendedPropertiesAdapter.java index 3a3c2478..93f8e4f3 100644 --- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ExtendedPropertiesAdapter.java +++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ExtendedPropertiesAdapter.java @@ -144,6 +144,23 @@ public class ExtendedPropertiesAdapter<T extends EObject> extends ObjectProperty public static ExtendedPropertiesAdapter adapt(Object object) { return adapt(object,null); } + + public static ExtendedPropertiesAdapter adapt(Resource resource, EClass eclass) { + if (resource!=null) { + ObjectPropertyProvider factoryAdapter = ObjectPropertyProvider.getAdapter(eclass.getEPackage().getEFactoryInstance()); + if (factoryAdapter==null) { + ObjectPropertyProvider.adapt(eclass, resource); + } + else { + factoryAdapter.setResource(resource); + } + } + ExtendedPropertiesAdapter adapter = (ExtendedPropertiesAdapter) AdapterUtil.adapt(eclass, ExtendedPropertiesAdapter.class); + if (adapter==null) { + adapter = new ExtendedPropertiesAdapter(new AdapterFactoryImpl(), eclass); + } + return adapter; + } /** * Convenience method for creating and adapting a feature of a model object @@ -220,9 +237,15 @@ public class ExtendedPropertiesAdapter<T extends EObject> extends ObjectProperty public static EObject getDummyObject(EClass eclass) { EObject object = dummyObjects.get(eclass); if (object==null && eclass.eContainer() instanceof EPackage && !eclass.isAbstract()) { + Resource resource = null; + ObjectPropertyProvider factoryAdapter = ObjectPropertyProvider.getAdapter(eclass.getEPackage().getEFactoryInstance()); + if (factoryAdapter!=null) + resource = factoryAdapter.getResource(); EPackage pkg = (EPackage)eclass.eContainer(); object = pkg.getEFactoryInstance().create(eclass); dummyObjects.put(eclass, object); + if (factoryAdapter!=null && resource!=null) + factoryAdapter.setResource(resource); } return object; } diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/FeatureDescriptor.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/FeatureDescriptor.java index 9b673096..98c0bb80 100644 --- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/FeatureDescriptor.java +++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/FeatureDescriptor.java @@ -589,7 +589,7 @@ public class FeatureDescriptor<T extends EObject> extends ObjectDescriptor<T> { // FIXME: access to ExtensionAttributeValues MUST go through the ModelExtensionDescriptor's // modelDecorator so that we can properly find, and optionally create and initialize // the EPackage that contains the extensions - ModelDecorator.addExtensionAttributeValue(object, feature, value, index, false); + ModelDecorator.addExtensionAttributeValue(getResource(), object, feature, value, index, false); } } } diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java index ebff5df9..fb893c93 100644 --- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java +++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java @@ -136,7 +136,7 @@ public abstract class AbstractBpmn2CreateFeature<T extends BaseElement> public T createBusinessObject(ICreateContext context) { Resource resource = getResource(context); EClass eclass = getBusinessObjectClass(); - ExtendedPropertiesAdapter adapter = ExtendedPropertiesAdapter.adapt(eclass); + ExtendedPropertiesAdapter adapter = ExtendedPropertiesAdapter.adapt(resource, eclass); String id = (String)context.getProperty(GraphitiConstants.CUSTOM_ELEMENT_ID); if (id!=null) { adapter.setProperty(GraphitiConstants.CUSTOM_ELEMENT_ID, id); diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerFactory.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerFactory.java index de989d48..90145cc4 100644 --- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerFactory.java +++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerFactory.java @@ -221,7 +221,7 @@ public class Bpmn2ModelerFactory extends Bpmn2FactoryImpl { ObjectPropertyProvider.adapt(eClass.getEPackage().getEFactoryInstance(), resource); EObject newObject = null; - ExtendedPropertiesAdapter adapter = ExtendedPropertiesAdapter.adapt(eClass); + ExtendedPropertiesAdapter adapter = ExtendedPropertiesAdapter.adapt(resource, eClass); if (adapter!=null) { newObject = adapter.getObjectDescriptor().createObject(resource, eClass); } diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelDecorator.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelDecorator.java index 8191e65f..6b546af3 100644 --- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelDecorator.java +++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelDecorator.java @@ -58,6 +58,7 @@ import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.impl.EAttributeImpl; import org.eclipse.emf.ecore.impl.EEnumLiteralImpl; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.BasicFeatureMap; @@ -1172,8 +1173,13 @@ public class ModelDecorator { * @param feature - name of the new extension element. * @param value - value assigned to the new element. */ + public static void addExtensionAttributeValue(Resource resource, EObject object, EStructuralFeature feature, Object value) { + addExtensionAttributeValue(resource, object, feature, value, -1, false); + } + + @Deprecated public static void addExtensionAttributeValue(EObject object, EStructuralFeature feature, Object value) { - addExtensionAttributeValue(object, feature, value, -1, false); + addExtensionAttributeValue(object.eResource(), object, feature, value, -1, false); } /** @@ -1184,8 +1190,13 @@ public class ModelDecorator { * @param value - value assigned to the new element. * @param delay - if true, use an InsertionAdapter to set the feature value, otherwise set it immediately. */ + public static void addExtensionAttributeValue(Resource resource, EObject object, EStructuralFeature feature, Object value, boolean delay) { + addExtensionAttributeValue(resource, object, feature, value, -1, delay); + } + + @Deprecated public static void addExtensionAttributeValue(EObject object, EStructuralFeature feature, Object value, boolean delay) { - addExtensionAttributeValue(object, feature, value, -1, delay); + addExtensionAttributeValue(object.eResource(), object, feature, value, -1, delay); } /** @@ -1198,7 +1209,7 @@ public class ModelDecorator { * @param delay - if true, use an InsertionAdapter to set the feature value, otherwise set it immediately. */ @SuppressWarnings("unchecked") - public static void addExtensionAttributeValue(EObject object, EStructuralFeature feature, Object value, int index, boolean delay) { + public static void addExtensionAttributeValue(Resource resource, EObject object, EStructuralFeature feature, Object value, int index, boolean delay) { if (object instanceof ExtensionAttributeValue) object = object.eContainer(); EStructuralFeature evf = object.eClass().getEStructuralFeature("extensionValues"); //$NON-NLS-1$ @@ -1209,7 +1220,7 @@ public class ModelDecorator { EList<EObject> list = (EList<EObject>)object.eGet(evf); if (list.size()==0) { - ExtensionAttributeValue newItem = Bpmn2ModelerFactory.create(object.eResource(), ExtensionAttributeValue.class); + ExtensionAttributeValue newItem = Bpmn2ModelerFactory.create(resource, ExtensionAttributeValue.class); ModelUtil.setID(newItem); FeatureMap map = newItem.getValue(); map.add(feature, value); diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelHandler.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelHandler.java index e59970c7..37935002 100644 --- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelHandler.java +++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/ModelHandler.java @@ -800,6 +800,9 @@ public class ModelHandler { try { Process process = create(Process.class); bpmnDiagram.getPlane().setBpmnElement(process); + Definitions definitions = ModelUtil.getDefinitions(bpmnDiagram); + if (!definitions.getRootElements().contains(process)) + definitions.getRootElements().add(process); return process; } catch (IllegalStateException e) { diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmActivityDetailComposite.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmActivityDetailComposite.java index ad577988..183d447d 100644 --- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmActivityDetailComposite.java +++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmActivityDetailComposite.java @@ -110,7 +110,7 @@ public class JbpmActivityDetailComposite extends ActivityDetailComposite { f = DroolsPackage.eINSTANCE.getDocumentRoot_OnEntryScript(); else f = DroolsPackage.eINSTANCE.getDocumentRoot_OnExitScript(); - ModelDecorator.addExtensionAttributeValue(be, f, script, true); + ModelDecorator.addExtensionAttributeValue(be.eResource(), be, f, script, true); result = script; } return result; diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java index 4df081f8..95a56b21 100644 --- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java +++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java @@ -212,7 +212,7 @@ public class JbpmModelUtil { ImportHandler importer = new ImportHandler(); importer.setCreateVariables(createVariables); - ModelDecorator.addExtensionAttributeValue(fProcess, + ModelDecorator.addExtensionAttributeValue(fProcess.eResource(), fProcess, DroolsPackage.eINSTANCE.getDocumentRoot_ImportType(), newImport); if (recursive) { @@ -439,7 +439,7 @@ public class JbpmModelUtil { } if (processAnalysisData==null) { processAnalysisData = BpsimFactory.eINSTANCE.createBPSimDataType(); - ModelDecorator.addExtensionAttributeValue(rel, BpsimPackage.eINSTANCE.getDocumentRoot_BPSimData(), processAnalysisData); + ModelDecorator.addExtensionAttributeValue(resource, rel, BpsimPackage.eINSTANCE.getDocumentRoot_BPSimData(), processAnalysisData); } if (processAnalysisData.getScenario().size()==0) { diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java index 95460606..33e170a1 100644 --- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java +++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java @@ -237,7 +237,10 @@ public class Bpmn2EditorItemProviderAdapterFactory extends Bpmn2ItemProviderAdap // can handle this thing. adapter = getTargetRuntimeAdapter(eclass); if (adapter==null) { - // if none is found, create a dummy EObject and cache it + // If none is found, create a dummy EObject and cache it. + // + // These are abstract types that are supported by {@see Bpmn2ModelerFactory#create(EClass)} + // Additional abstract types can be added here: if (eclass.getInstanceClass()==CatchEvent.class) { object = new CatchEventImpl() {}; adapter = new CatchEventPropertiesAdapter(adapterFactory, (CatchEvent)object); diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/lane/CreateLaneFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/lane/CreateLaneFeature.java index 022af6e1..6ed5c355 100644 --- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/lane/CreateLaneFeature.java +++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/lane/CreateLaneFeature.java @@ -47,7 +47,7 @@ public class CreateLaneFeature extends AbstractBpmn2CreateFeature<Lane> { if (context.getTargetContainer() instanceof Diagram) { BPMNDiagram bpmnDiagram = BusinessObjectUtil.getFirstElementOfType(context.getTargetContainer(), BPMNDiagram.class); BaseElement bpmnElement = bpmnDiagram.getPlane().getBpmnElement(); - if (bpmnElement instanceof Process) + if (bpmnElement instanceof Process || bpmnElement==null) return true; return false; } diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/participant/CreateParticipantFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/participant/CreateParticipantFeature.java index 997c300f..2dae3245 100644 --- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/participant/CreateParticipantFeature.java +++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/participant/CreateParticipantFeature.java @@ -39,7 +39,7 @@ public class CreateParticipantFeature extends AbstractBpmn2CreateFeature<Partici if (context.getTargetContainer() instanceof Diagram) { BPMNDiagram bpmnDiagram = BusinessObjectUtil.getFirstElementOfType(context.getTargetContainer(), BPMNDiagram.class); BaseElement bpmnElement = bpmnDiagram.getPlane().getBpmnElement(); - if (bpmnElement instanceof Collaboration || bpmnElement instanceof Process) + if (bpmnElement instanceof Collaboration || bpmnElement instanceof Process || bpmnElement==null) return true; } return false; diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/ExtensionValueListComposite.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/ExtensionValueListComposite.java index 609e0d68..7dacbe0d 100644 --- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/ExtensionValueListComposite.java +++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/ExtensionValueListComposite.java @@ -65,7 +65,7 @@ public abstract class ExtensionValueListComposite extends DefaultListComposite { @SuppressWarnings("unchecked") protected void addExtensionValue(EObject value) { - ModelDecorator.addExtensionAttributeValue(businessObject, extensionValueFeature, value); + ModelDecorator.addExtensionAttributeValue(businessObject.eResource(), businessObject, extensionValueFeature, value); } protected Object getListItem(EObject object, EStructuralFeature feature, int index) { |