Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Brodt2015-07-08 13:48:57 +0000
committerBob Brodt2015-07-08 13:48:57 +0000
commitd8f95fd61138cc409249c7401fffb09cb7597458 (patch)
tree791e0870c7f844c1679b65ef085b7e4bbae427f9
parent4b8cb90b3ff257e0c19d65f972b1bcbec6d42de1 (diff)
downloadorg.eclipse.bpmn2-modeler-d8f95fd61138cc409249c7401fffb09cb7597458.tar.gz
org.eclipse.bpmn2-modeler-d8f95fd61138cc409249c7401fffb09cb7597458.tar.xz
org.eclipse.bpmn2-modeler-d8f95fd61138cc409249c7401fffb09cb7597458.zip
https://issues.jboss.org/browse/BPMSPL-124 - Task metadata being
improperly stored in I18NText database table. Add support for selectively serializing FormalExpression.body and Documentation.text as CDATA instead of attribute values. Bug 472174 - Event SubProcess may not have incoming or outgoing sequence flows
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/FeatureDescriptor.java2
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java2
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/runtime/ModelExtensionDescriptor.java5
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/plugin.xml35
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmTaskDetailComposite.java4
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/DocumentationPropertiesAdapter.java19
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/FormalExpressionPropertiesAdapter.java13
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/UpdateExpandableActivityFeature.java26
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/SequenceFlowFeatureContainer.java10
9 files changed, 108 insertions, 8 deletions
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 59a46412..22d65cd5 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
@@ -138,6 +138,8 @@ public class FeatureDescriptor<T extends EObject> extends ObjectDescriptor<T> {
}
else if (o instanceof FormalExpression) {
t = ModelUtil.getExpressionBody((FormalExpression)o);
+ if (t==null)
+ t = "";
}
}
if (t==null && o!=null) {
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java
index 73029dad..f57a4a96 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java
@@ -182,7 +182,7 @@ public class TextObjectEditor extends ObjectEditor {
* @return string representation of the EObject feature's value.
*/
protected String getText() {
- Object value = getBusinessObjectDelegate().getValue(object, feature);
+ Object value = getBusinessObjectDelegate().getTextValue(object, feature);
if (multiLine && value instanceof String) {
value = toPlatformString((String) value);
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/runtime/ModelExtensionDescriptor.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/runtime/ModelExtensionDescriptor.java
index dae573a3..b72f45eb 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/runtime/ModelExtensionDescriptor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/runtime/ModelExtensionDescriptor.java
@@ -803,6 +803,11 @@ public class ModelExtensionDescriptor extends BaseRuntimeExtensionDescriptor {
if (!(feature.getEType() instanceof EEnum)) // skip enum initialization
initializers.add(adapter,feature,value);
+
+ // Note that only FormalExpression.body and Documentation.text support CDATA serialization.
+ // @see FormalExpressionPropertiesAdapter and DocumentationPropertiesAdapter.
+ if ("CDATA".equals(property.type))
+ adapter.setProperty(feature, "CDATA", Boolean.TRUE);
}
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/plugin.xml b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/plugin.xml
index 2b31ae7b..8b1b02f0 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/plugin.xml
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/plugin.xml
@@ -638,7 +638,12 @@
</property>
<property name="dataInputs">
<value>
- <property name="name" value="Comment" type="EString"/>
+ <property name="name" value="Comment" type="CDATA"/>
+ </value>
+ </property>
+ <property name="dataInputs">
+ <value>
+ <property name="name" value="Description" type="CDATA"/>
</value>
</property>
<property name="dataInputs">
@@ -677,6 +682,7 @@
<property name="dataInputRefs" ref="ioSpecification/dataInputs#5"/>
<property name="dataInputRefs" ref="ioSpecification/dataInputs#6"/>
<property name="dataInputRefs" ref="ioSpecification/dataInputs#7"/>
+ <property name="dataInputRefs" ref="ioSpecification/dataInputs#8"/>
</value>
</property>
</value>
@@ -763,7 +769,7 @@
<value>
<property name="from" type="FormalExpression">
<value>
- <property name="body" value="true"/>
+ <property name="body" value=""/>
</value>
</property>
<property name="to" type="FormalExpression">
@@ -782,7 +788,7 @@
<value>
<property name="from" type="FormalExpression">
<value>
- <property name="body" value=""/>
+ <property name="body" value="true"/>
</value>
</property>
<property name="to" type="FormalExpression">
@@ -801,7 +807,7 @@
<value>
<property name="from" type="FormalExpression">
<value>
- <property name="body" value="en-UK"/>
+ <property name="body" value=""/>
</value>
</property>
<property name="to" type="FormalExpression">
@@ -820,7 +826,7 @@
<value>
<property name="from" type="FormalExpression">
<value>
- <property name="body" value=""/>
+ <property name="body" value="en-UK"/>
</value>
</property>
<property name="to" type="FormalExpression">
@@ -833,6 +839,25 @@
<property name="targetRef" ref="ioSpecification/dataInputs#7"/>
</value>
</property>
+ <property name="dataInputAssociations">
+ <value>
+ <property name="assignment">
+ <value>
+ <property name="from" type="FormalExpression">
+ <value>
+ <property name="body" value=""/>
+ </value>
+ </property>
+ <property name="to" type="FormalExpression">
+ <value>
+ <property name="body" ref="ioSpecification/dataInputs#8"/>
+ </value>
+ </property>
+ </value>
+ </property>
+ <property name="targetRef" ref="ioSpecification/dataInputs#8"/>
+ </value>
+ </property>
</modelExtension>
<!-- Model Enablements and Profiles -->
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmTaskDetailComposite.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmTaskDetailComposite.java
index d6f84c84..83f96e7e 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmTaskDetailComposite.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmTaskDetailComposite.java
@@ -32,6 +32,7 @@ import org.eclipse.bpmn2.ResourceAssignmentExpression;
import org.eclipse.bpmn2.ResourceRole;
import org.eclipse.bpmn2.Task;
import org.eclipse.bpmn2.UserTask;
+import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
import org.eclipse.bpmn2.modeler.core.adapters.InsertionAdapter;
import org.eclipse.bpmn2.modeler.core.features.CustomElementFeatureContainer;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
@@ -264,7 +265,8 @@ public class JbpmTaskDetailComposite extends JbpmActivityDetailComposite {
}
else {
editor = new TextObjectEditor(this,fromExpression,attribute);
- ((TextObjectEditor)editor).setMultiLine(false);
+ boolean isCDATA = "CDATA".equals(dataType);
+ ((TextObjectEditor)editor).setMultiLine(isCDATA);
}
editor.createControl(getAttributesParent(),ModelUtil.toCanonicalString(name));
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/DocumentationPropertiesAdapter.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/DocumentationPropertiesAdapter.java
index b6366437..c90611b6 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/DocumentationPropertiesAdapter.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/DocumentationPropertiesAdapter.java
@@ -15,10 +15,13 @@ package org.eclipse.bpmn2.modeler.ui.adapters.properties;
import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.Documentation;
+import org.eclipse.bpmn2.FormalExpression;
import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
import org.eclipse.bpmn2.modeler.core.adapters.FeatureDescriptor;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
/**
* @author Bob Brodt
@@ -40,7 +43,11 @@ public class DocumentationPropertiesAdapter extends ExtendedPropertiesAdapter<Do
@Override
protected void internalSet(Documentation documentation, EStructuralFeature feature, Object value, int index) {
String text = value==null ? "" : value.toString(); //$NON-NLS-1$
- documentation.setText(text);
+ Object b = DocumentationPropertiesAdapter.this.getProperty(feature, "CDATA");
+ if (b !=null)
+ setTextCDATA(documentation, text);
+ else
+ documentation.setText(text);
}
@Override
@@ -48,8 +55,18 @@ public class DocumentationPropertiesAdapter extends ExtendedPropertiesAdapter<Do
// formal expression body is always a multiline text field
return true;
}
+
+ private void setTextCDATA(Documentation documentation, String text) {
+ documentation.getMixed().clear();
+ FeatureMap.Entry cdata = FeatureMapUtil.createCDATAEntry(text);
+ documentation.getMixed().add(cdata);
+
+ }
}
);
+
+ // By default, Documentation.text is serialized as CDATA instead of an XML attribute value.
+ setProperty(feature, "CDATA", Boolean.TRUE);
}
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/FormalExpressionPropertiesAdapter.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/FormalExpressionPropertiesAdapter.java
index f2ce2e7d..27ca70a8 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/FormalExpressionPropertiesAdapter.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/FormalExpressionPropertiesAdapter.java
@@ -31,6 +31,8 @@ import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
/**
* @author Bob Brodt
@@ -53,6 +55,10 @@ public class FormalExpressionPropertiesAdapter extends ExtendedPropertiesAdapter
protected void internalSet(FormalExpression formalExpression, EStructuralFeature feature, Object value, int index) {
String body = value==null ? null : value.toString();
InsertionAdapter.executeIfNeeded(formalExpression);
+ Object b = FormalExpressionPropertiesAdapter.this.getProperty(feature, "CDATA");
+ if (b !=null)
+ setBodyCDATA(formalExpression, body);
+ else
formalExpression.setBody(body);
}
@@ -78,6 +84,13 @@ public class FormalExpressionPropertiesAdapter extends ExtendedPropertiesAdapter
// formal expression body is always a multiline text field
return true;
}
+
+ private void setBodyCDATA(FormalExpression formalExpression, String body) {
+ formalExpression.getMixed().clear();
+ FeatureMap.Entry cdata = FeatureMapUtil.createCDATAEntry(body);
+ formalExpression.getMixed().add(cdata);
+
+ }
}
);
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/UpdateExpandableActivityFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/UpdateExpandableActivityFeature.java
index 4a9f723b..881e10a8 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/UpdateExpandableActivityFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/UpdateExpandableActivityFeature.java
@@ -12,7 +12,11 @@
******************************************************************************/
package org.eclipse.bpmn2.modeler.ui.features.activity.subprocess;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.SequenceFlow;
import org.eclipse.bpmn2.SubProcess;
import org.eclipse.bpmn2.di.BPMNDiagram;
import org.eclipse.bpmn2.di.BPMNShape;
@@ -22,13 +26,18 @@ import org.eclipse.bpmn2.modeler.core.features.GraphitiConstants;
import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
import org.eclipse.bpmn2.modeler.core.utils.FeatureSupport;
import org.eclipse.bpmn2.modeler.core.utils.ShapeDecoratorUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.features.IDeleteFeature;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.context.IDeleteContext;
import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.impl.DeleteContext;
import org.eclipse.graphiti.features.impl.Reason;
import org.eclipse.graphiti.mm.Property;
import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
+import org.eclipse.graphiti.mm.pictograms.Connection;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.services.Graphiti;
@@ -107,6 +116,23 @@ public class UpdateExpandableActivityFeature extends AbstractUpdateBaseElementFe
ShapeDecoratorUtil.hideActivityMarker(container, GraphitiConstants.ACTIVITY_MARKER_EXPAND);
}
+ if (subprocess.isTriggeredByEvent()) {
+ // Event SubProcesses may not have incoming or outgoing SequenceFlows
+ List<SequenceFlow> flows = new ArrayList<SequenceFlow>();
+ flows.addAll(subprocess.getIncoming());
+ flows.addAll(subprocess.getOutgoing());
+ for (SequenceFlow sf : flows) {
+ org.eclipse.graphiti.mm.pictograms.Diagram diagram = getFeatureProvider().getDiagramTypeProvider().getDiagram();
+ for (Object o : Graphiti.getPeService().getLinkedPictogramElements(new EObject[] {sf}, diagram)) {
+ if (o instanceof Connection) {
+ IDeleteContext dc = new DeleteContext((Connection)o);
+ IDeleteFeature df = getFeatureProvider().getDeleteFeature(dc);
+ df.delete(dc);
+ }
+ }
+ }
+ }
+
return true;
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/SequenceFlowFeatureContainer.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/SequenceFlowFeatureContainer.java
index e5e80209..7b90219c 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/SequenceFlowFeatureContainer.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/SequenceFlowFeatureContainer.java
@@ -192,6 +192,16 @@ public class SequenceFlowFeatureContainer extends BaseElementConnectionFeatureCo
if (source==target)
return true;
+ if (source instanceof SubProcess) {
+ if (((SubProcess)source).isTriggeredByEvent())
+ return false;
+ }
+
+ if (target instanceof SubProcess) {
+ if (((SubProcess)target).isTriggeredByEvent())
+ return false;
+ }
+
if (target instanceof StartEvent)
return false;

Back to the top