diff options
author | Bob Brodt | 2015-09-11 17:30:06 +0000 |
---|---|---|
committer | Bob Brodt | 2015-09-11 17:38:11 +0000 |
commit | bd28e52fa29dc479279b091bebf622463986d2df (patch) | |
tree | fe9c6fa9b1230b50befea063754da9e8c1c28c9a | |
parent | 1dbf792b50e70c19e608ab77f74e35564c199b2c (diff) | |
download | org.eclipse.bpmn2-modeler-bd28e52fa29dc479279b091bebf622463986d2df.tar.gz org.eclipse.bpmn2-modeler-bd28e52fa29dc479279b091bebf622463986d2df.tar.xz org.eclipse.bpmn2-modeler-bd28e52fa29dc479279b091bebf622463986d2df.zip |
https://bugzilla.redhat.com/show_bug.cgi?id=1235689 - Custom Service
Task is losing information after round-tripping from Web Designer to
JBDS
https://bugs.eclipse.org/bugs/show_bug.cgi?id=477103 - Incorrect use of
"targetNamespace" to identify the Target Runtime of a bpmn2 file
9 files changed, 52 insertions, 43 deletions
diff --git a/features/org.eclipse.bpmn2.modeler/.project b/features/org.eclipse.bpmn2.modeler/.project index 615b7abd..8c9a2814 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 7334a199..89789bdd 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 @@ public class ObjectPropertyProvider extends AdapterImpl implements IResourceProv 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 801119e6..e2ea2934 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 @@ public class Bpmn2ModelerResourceImpl extends Bpmn2ResourceImpl { */ 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 @@ public class Bpmn2ModelerResourceImpl extends Bpmn2ResourceImpl { } 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 7a01986c..d097b430 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.dialogs.MessageDialog; 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.IWorkbench; 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 @@ public class Bpmn2Preferences implements IResourceChangeListener, IPropertyChang 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 fff6ea28..53c33163 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 class ModelExtensionDescriptor extends BaseRuntimeExtensionDescriptor { */ 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 146fb917..26af0756 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 @@ import org.xml.sax.InputSource; 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 @@ public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension { 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 @@ public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension { * @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 @@ public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension { 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 @@ public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension { 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 @@ public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension { 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 21c2e449..4992ad03 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.DataOutputAssociation; 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.RootElement; 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.impl.EAttributeImpl; 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 class DroolsResourceImpl extends Bpmn2ModelerResourceImpl { 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 ea578756..d63a8fc9 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 class JbpmCustomTaskPropertySection extends JbpmTaskPropertySection imple 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 33e170a1..5120a30d 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 @@ public class Bpmn2EditorItemProviderAdapterFactory extends Bpmn2ItemProviderAdap } 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()); |