https://bugzilla.redhat.com/show_bug.cgi?id=1235689 - Custom Service
Task is losing information after round-tripping from Web Designer to
JBDS
diff --git a/features/org.eclipse.bpmn2.modeler/.project b/features/org.eclipse.bpmn2.modeler/.project
index 615b7ab..8c9a281 100644
--- a/features/org.eclipse.bpmn2.modeler/.project
+++ b/features/org.eclipse.bpmn2.modeler/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.bpmn2.modeler</name>
+ <name>org.eclipse.bpmn2-modeler.git</name>
<comment></comment>
<projects>
</projects>
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ObjectPropertyProvider.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ObjectPropertyProvider.java
index 7334a19..89789bd 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ObjectPropertyProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/ObjectPropertyProvider.java
@@ -172,7 +172,7 @@
if (rs!=null) {
for (Resource r : rs.getResources()) {
if (r instanceof Bpmn2Resource) {
- return resource;
+ return r;
}
}
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java
index 801119e..e2ea293 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java
@@ -437,25 +437,16 @@
*/
protected static class Bpmn2ModelerXmlHandler extends BpmnXmlHandler {
- Bpmn2Preferences preferences = null;
- ImportUtil importHandler = new ImportUtil();
- String targetNamespace = null;
+ protected Bpmn2Preferences preferences = null;
+ protected ImportUtil importHandler = new ImportUtil();
+ protected String targetNamespace = null;
public Bpmn2ModelerXmlHandler(XMLResource xmiResource, XMLHelper helper, Map<?, ?> options) {
super(xmiResource, helper, options);
}
-
- @Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- // read the targetNamespace as early as possible
- if ("bpmn2:definitions".equals(qName)) { //$NON-NLS-1$
- targetNamespace = attributes.getValue("targetNamespace"); //$NON-NLS-1$
- if (targetNamespace != null) {
- ((Bpmn2ModelerXmlHelper)helper).initializeTargetRuntime(targetNamespace);
- }
- }
-
- super.startElement(uri, localName, qName, attributes);
+
+ protected String getTargetNamespace(Definitions defs) {
+ return defs.getTargetNamespace();
}
@Override
@@ -758,7 +749,11 @@
}
else if (obj instanceof Definitions) {
// fetch the targetNamespace from Definitions object
- targetNamespace = ((Definitions)obj).getTargetNamespace();
+ // NO! This is already handled in startElement()
+// targetNamespace = ((Definitions)obj).getTargetNamespace();
+ targetNamespace = getTargetNamespace((Definitions)obj);
+ ((Bpmn2ModelerXmlHelper)helper).initializeTargetRuntime(targetNamespace);
+
}
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java
index 7a01986..d097b43 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java
@@ -75,6 +75,7 @@
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Display;
@@ -84,7 +85,6 @@
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.navigator.ResourceNavigator;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
@@ -1646,13 +1646,17 @@
IViewPart[] parts = page.getViews();
for (int i = 0; i < parts.length; i++) {
- if (parts[i] instanceof ResourceNavigator) {
- ResourceNavigator navigator = (ResourceNavigator) parts[i];
- StructuredSelection sel = (StructuredSelection) navigator.getTreeViewer().getSelection();
- IResource resource = (IResource) sel.getFirstElement();
- if (resource!=null) {
- activeProject = resource.getProject();
- break;
+ if (parts[i].getViewSite().getSelectionProvider()!=null) {
+ ISelection s = parts[i].getViewSite().getSelectionProvider().getSelection();
+ if (s instanceof StructuredSelection) {
+ StructuredSelection ss = (StructuredSelection) s;
+ Object o = ss.getFirstElement();
+ if (o instanceof IResource) {
+ IResource r = (IResource) o;
+ activeProject = r.getProject();
+ if (activeProject!=null)
+ break;
+ }
}
}
}
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 fff6ea2..53c3316 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
@@ -404,7 +404,9 @@
*/
public EObject basicCreateObject(EClass eClass) {
EPackage pkg = eClass.getEPackage();
- return pkg.getEFactoryInstance().create(eClass);
+ EObject object = pkg.getEFactoryInstance().create(eClass);
+ TargetRuntimeAdapter.adapt(object, targetRuntime);
+ return object;
}
/**
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
index 146fb91..26af075 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
@@ -95,8 +95,8 @@
public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension {
public final static String JBPM5_RUNTIME_ID = "org.jboss.runtime.jbpm5"; //$NON-NLS-1$
-
- private static final String DROOLS_NAMESPACE = "http://www.jboss.org/drools"; //$NON-NLS-1$
+ public final static String DROOLS_NAMESPACE = "http://www.jboss.org/drools"; //$NON-NLS-1$
+
private List<WorkItemDefinition> workItemDefinitions;
/* (non-Javadoc)
@@ -194,7 +194,7 @@
java.util.Iterator<WorkItemDefinition> widIterator = workItemDefinitions.iterator();
while(widIterator.hasNext()) {
final WorkItemDefinition wid = widIterator.next();
- final CustomTaskDescriptor ctd = convertWIDtoCT(wid);
+ final CustomTaskDescriptor ctd = convertWIDtoCT(inputFile.getProject(),wid);
if (ctd != null) {
if (targetRuntime.customTaskExists(ctd.getId())) {
Display.getDefault().asyncExec( new Runnable() {
@@ -240,7 +240,7 @@
* @param wid
* @return
*/
- private CustomTaskDescriptor convertWIDtoCT ( WorkItemDefinition wid ) {
+ private CustomTaskDescriptor convertWIDtoCT(IProject project, WorkItemDefinition wid) {
if (wid != null) {
String id = wid.getName();
String name = wid.getDisplayName();
@@ -256,7 +256,6 @@
setBasicProps ( ct, wid);
// push the icon into the image registry
- IProject project = Bpmn2Preferences.getActiveProject();
String iconPath = getWIDPropertyValue("icon", wid); //$NON-NLS-1$
if (iconPath != null) {
Path tempPath = new Path(iconPath);
@@ -271,10 +270,8 @@
ImageDescriptor image = ImageDescriptor.createFromURL(url);
CustomTaskImageProvider.registerImage(iconPath, image);
}
- } catch (CoreException e1) {
+ } catch (Exception e1) {
e1.printStackTrace();
- } catch (MalformedURLException e) {
- e.printStackTrace();
}
}
@@ -441,7 +438,8 @@
String[] basicProps = new String[] { "taskName", "displayName", "icon" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
for (int i = 0; i < basicProps.length; i++) {
Property prop = getPropertyFromWID(basicProps[i], wid);
- ct.getProperties().add(prop);
+ if (prop!=null)
+ ct.getProperties().add(prop);
}
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/drools/util/DroolsResourceImpl.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/drools/util/DroolsResourceImpl.java
index 21c2e44..4992ad0 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/drools/util/DroolsResourceImpl.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/drools/util/DroolsResourceImpl.java
@@ -13,7 +13,6 @@
package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.util;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -32,7 +31,6 @@
import org.eclipse.bpmn2.DataStore;
import org.eclipse.bpmn2.Definitions;
import org.eclipse.bpmn2.Event;
-import org.eclipse.bpmn2.ExtensionAttributeValue;
import org.eclipse.bpmn2.InputSet;
import org.eclipse.bpmn2.Interface;
import org.eclipse.bpmn2.ItemAwareElement;
@@ -46,7 +44,10 @@
import org.eclipse.bpmn2.ThrowEvent;
import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl;
import org.eclipse.bpmn2.modeler.core.model.ModelDecorator;
+import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl.Bpmn2ModelerXmlHelper;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntimeAdapter;
import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.JBPM5RuntimeExtension;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.ProcessVariableNameChangeAdapter;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.DroolsFactory;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.DroolsPackage;
@@ -68,13 +69,14 @@
import org.eclipse.emf.ecore.util.BasicFeatureMap;
import org.eclipse.emf.ecore.util.BasicInternalEList;
import org.eclipse.emf.ecore.util.ExtendedMetaData;
-import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.xmi.XMLHelper;
import org.eclipse.emf.ecore.xmi.XMLLoad;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.XMLSave;
import org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl;
import org.eclipse.emf.ecore.xmi.impl.XMLString;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
@@ -456,7 +458,12 @@
public DroolsXmlHandler(XMLResource xmiResource, XMLHelper helper, Map<?, ?> options) {
super(xmiResource, helper, options);
}
-
+
+ @Override
+ protected String getTargetNamespace(Definitions defs) {
+ return JBPM5RuntimeExtension.DROOLS_NAMESPACE;
+ }
+
@Override
protected EStructuralFeature getFeature(EObject object, String prefix, String name, boolean isElement)
{
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmCustomTaskPropertySection.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmCustomTaskPropertySection.java
index ea57875..d63a8fc 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmCustomTaskPropertySection.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmCustomTaskPropertySection.java
@@ -40,9 +40,9 @@
public boolean appliesTo(IWorkbenchPart part, ISelection selection) {
if (super.appliesTo(part, selection)) {
// only show this property section if the selected Task is a "custom task"
- // that is, it has a "displayName" extension attribute
+ // that is, it has a "taskName" extension attribute
EObject be = getBusinessObjectForSelection(selection);
- return ModelDecorator.getAnyAttribute(be, "displayName") != null; //$NON-NLS-1$
+ return ModelDecorator.getAnyAttribute(be, "taskName") != null; //$NON-NLS-1$
}
return false;
}
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 33e170a..5120a30 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
@@ -329,7 +329,10 @@
}
private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EObject object) {
- TargetRuntime rt = TargetRuntime.getRuntime(object);
+ ObjectPropertyProvider factoryAdapter = ObjectPropertyProvider.getAdapter(object.eClass().getEPackage().getEFactoryInstance());
+ TargetRuntime rt = TargetRuntime.getRuntime(factoryAdapter.getResource());
+ if (rt==null)
+ rt = TargetRuntime.getRuntime(object);
PropertyExtensionDescriptor ped = rt.getPropertyExtension(object.getClass());
if (ped==null && rt != TargetRuntime.getDefaultRuntime())
ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(object.getClass());