diff options
author | Bob Brodt | 2012-10-22 17:28:31 +0000 |
---|---|---|
committer | Bob Brodt | 2012-10-22 17:28:31 +0000 |
commit | faa04380d4194a94eeff33954e745330789f403a (patch) | |
tree | 3d252f82e34419e85e1ffd3a515d59ed138f3a7b | |
parent | 092179721cd6c90459852a4605434fb6f7f6d61b (diff) | |
download | org.eclipse.bpmn2-modeler-0.1.0.Final-master.tar.gz org.eclipse.bpmn2-modeler-0.1.0.Final-master.tar.xz org.eclipse.bpmn2-modeler-0.1.0.Final-master.zip |
Fix exceptions thrown in SchemaImportDialog and SchemaSelectionDialog. This is only a partial fix for the Interface.implementationRef selector.0.1.0.Final-master
8 files changed, 80 insertions, 15 deletions
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java index f32f76ca..c7a8535e 100644 --- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java +++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java @@ -1030,9 +1030,14 @@ public class ModelUtil { return null; } - public static boolean setValue(TransactionalEditingDomain domain, final EObject object, final EStructuralFeature feature, final Object value) { + public static boolean setValue(TransactionalEditingDomain domain, final EObject object, final EStructuralFeature feature, Object value) { ExtendedPropertiesAdapter adapter = AdapterUtil.adapt(object, ExtendedPropertiesAdapter.class); Object oldValue = adapter==null ? object.eGet(feature) : adapter.getFeatureDescriptor(feature).getValue(); + if (isStringWrapper(oldValue)) { + oldValue = getStringWrapperValue(oldValue); + if (value instanceof String) + value = ModelUtil.createStringWrapper((String)value); + } final Object newValue = (feature instanceof EReference && !(value instanceof EObject)) ? null : value; boolean valueChanged = (newValue != oldValue); diff --git a/org.eclipse.bpmn2.modeler.ui/plugin.xml b/org.eclipse.bpmn2.modeler.ui/plugin.xml index 5f1781ef..49e5acae 100644 --- a/org.eclipse.bpmn2.modeler.ui/plugin.xml +++ b/org.eclipse.bpmn2.modeler.ui/plugin.xml @@ -422,6 +422,8 @@ <!-- process --> <enable object="Process"/> <enable object="SubProcess"/> + <enable object="Transaction"/> + <enable object="AdHocSubProcess"/> <!-- gateways --> <enable object="ExclusiveGateway"/> diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/InterfacePropertiesAdapter.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/InterfacePropertiesAdapter.java index 1e91aa4f..54a8d12b 100644 --- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/InterfacePropertiesAdapter.java +++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/InterfacePropertiesAdapter.java @@ -13,17 +13,32 @@ package org.eclipse.bpmn2.modeler.ui.adapters.properties; +import javax.xml.namespace.QName; + import org.eclipse.bpmn2.Bpmn2Package; import org.eclipse.bpmn2.Interface; +import org.eclipse.bpmn2.Process; import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter; import org.eclipse.bpmn2.modeler.core.adapters.FeatureDescriptor; import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor; import org.eclipse.bpmn2.modeler.core.utils.ModelUtil; +import org.eclipse.bpmn2.modeler.core.utils.NamespaceUtil; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.wst.wsdl.Fault; +import org.eclipse.wst.wsdl.Input; +import org.eclipse.wst.wsdl.Message; +import org.eclipse.wst.wsdl.Operation; +import org.eclipse.wst.wsdl.Output; +import org.eclipse.wst.wsdl.Part; +import org.eclipse.wst.wsdl.PortType; +import org.eclipse.xsd.XSDAttributeDeclaration; +import org.eclipse.xsd.XSDElementDeclaration; +import org.eclipse.xsd.XSDSchema; +import org.eclipse.xsd.XSDTypeDefinition; /** * @author Bob Brodt @@ -66,12 +81,33 @@ public class InterfacePropertiesAdapter extends ExtendedPropertiesAdapter<Interf @Override public Object getValue(Object context) { final Interface iface = adopt(context); - return iface.getImplementationRef(); + if (iface.getImplementationRef()!=null) + return iface.getImplementationRef(); + return ModelUtil.createStringWrapper(""); } @Override public void setValue(Object context, Object value) { - if (value instanceof String) { + Interface object = adopt(context); + Resource resource = ModelUtil.getResource(object); + + if (value instanceof PortType) { + PortType portType = (PortType)value; + QName qname = portType.getQName(); + String prefix = NamespaceUtil.getPrefixForNamespace(resource, qname.getNamespaceURI()); + if (prefix==null) + prefix = NamespaceUtil.addNamespace(resource, qname.getNamespaceURI()); + if (prefix!=null) + value = prefix + ":"; + value += qname.getLocalPart(); + } + else if (value instanceof Process) { + Process process = (Process)value; + if (process.getSupportedInterfaceRefs().size()>0) + value = process.getSupportedInterfaceRefs().get(0).getImplementationRef(); + } + + if (value instanceof String) { value = ModelUtil.createStringWrapper((String)value); } else if (!ModelUtil.isStringWrapper(value)) { diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java index 3434159b..47ecfafb 100644 --- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java +++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java @@ -1063,21 +1063,21 @@ public class SchemaImportDialog extends SelectionStatusDialog { fTreeViewer.setContentProvider(fTreeContentProvider); fResourceKind = "xml"; - String[] wsdl_FILTER_EXTENSIONS = { + String[] xml_FILTER_EXTENSIONS = { "*.xml", "*.xsd", "*.wsdl", "*.*" }; - FILTER_EXTENSIONS = wsdl_FILTER_EXTENSIONS; + FILTER_EXTENSIONS = xml_FILTER_EXTENSIONS; - String[] wsdl_FILTER_NAMES = { + String[] xml_FILTER_NAMES = { "XML Files", "XML Schema Files", "WSDL Definition Files", "All" }; - FILTER_NAMES = wsdl_FILTER_NAMES; + FILTER_NAMES = xml_FILTER_NAMES; resourceFilter = ".xml"; if (fResourceComposite!=null) diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaSelectionDialog.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaSelectionDialog.java index 68b17760..bd6b8467 100644 --- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaSelectionDialog.java +++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaSelectionDialog.java @@ -20,6 +20,7 @@ import org.eclipse.bpmn2.modeler.core.utils.ImportUtil; import org.eclipse.bpmn2.modeler.core.utils.ModelUtil; import org.eclipse.bpmn2.modeler.ui.Activator; import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor; +import org.eclipse.bpmn2.modeler.ui.property.providers.BPMN2DefinitionsTreeContentProvider; import org.eclipse.bpmn2.modeler.ui.property.providers.ModelTreeLabelProvider; import org.eclipse.bpmn2.modeler.ui.property.providers.ServiceTreeContentProvider; import org.eclipse.bpmn2.modeler.ui.property.providers.TreeNode; @@ -224,12 +225,15 @@ public class SchemaSelectionDialog extends SelectionStatusDialog { void attemptLoad() { String path = null; - if ("xsd".equals(importType)) { + if ("xsd".equals(importType) || "xml".equals(importType)) { treeContentProvider = new VariableTypeTreeContentProvider(true, true); path = importLocation; } else if ("wsdl".equals(importType)) { treeContentProvider = new ServiceTreeContentProvider(true); path = importLocation; + } else if ("bpmn".equals(importType)) { + treeContentProvider = new BPMN2DefinitionsTreeContentProvider(true); + path = importLocation; } else { treeContentProvider = null; input = null; @@ -316,6 +320,7 @@ public class SchemaSelectionDialog extends SelectionStatusDialog { tree.getVerticalBar().setSelection(0); updateStatus(new Status(IStatus.OK, Activator.getDefault().PLUGIN_ID, 0, "Loaded "+importLocation, null)); + updateOK(false); } } @@ -341,6 +346,9 @@ public class SchemaSelectionDialog extends SelectionStatusDialog { return "wsdl"; if ("http://www.w3.org/2001/XMLSchema".equals(type)) return "xsd"; + if ("http://www.omg.org/spec/BPMN/20100524/MODEL".equals(type)) + return "bpmn"; + return "xml"; } return null; } diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/editors/SchemaObjectEditor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/editors/SchemaObjectEditor.java index 6a0a5efc..a31d7b0d 100644 --- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/editors/SchemaObjectEditor.java +++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/editors/SchemaObjectEditor.java @@ -15,7 +15,9 @@ package org.eclipse.bpmn2.modeler.ui.property.editors; import javax.xml.namespace.QName; +import org.eclipse.bpmn2.Definitions; import org.eclipse.bpmn2.Import; +import org.eclipse.bpmn2.Process; import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractDetailComposite; import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.TextAndButtonObjectEditor; import org.eclipse.bpmn2.modeler.core.utils.NamespaceUtil; @@ -173,6 +175,10 @@ public class SchemaObjectEditor extends TextAndButtonObjectEditor { value = prefix + ":"; value += "schema"; } + if (result instanceof Process) { + Process process = (Process)result; + process.getSupportedInterfaceRefs(); + } if (value.isEmpty()) { MessageDialog.openWarning(parent.getShell(), "Invalid Selection","The selection, "+ selectionType+" is not a valid type definition."); diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/BPMN2DefinitionsTreeContentProvider.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/BPMN2DefinitionsTreeContentProvider.java index ccb1f851..8b5cb529 100644 --- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/BPMN2DefinitionsTreeContentProvider.java +++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/BPMN2DefinitionsTreeContentProvider.java @@ -11,6 +11,7 @@ package org.eclipse.bpmn2.modeler.ui.property.providers; import org.eclipse.bpmn2.Definitions; +import org.eclipse.bpmn2.DocumentRoot; import org.eclipse.bpmn2.Interface; import org.eclipse.bpmn2.Process; import org.eclipse.bpmn2.modeler.ui.util.ListMap; @@ -47,6 +48,9 @@ public class BPMN2DefinitionsTreeContentProvider extends ModelTreeContentProvide return new Object[] { result } ; } + if (inputElement instanceof DocumentRoot) { + inputElement = ((DocumentRoot)inputElement).getDefinitions(); + } if (inputElement instanceof Definitions) { diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/JavaTypeTreeNode.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/JavaTypeTreeNode.java index 0a5c5ec3..967f1efb 100644 --- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/JavaTypeTreeNode.java +++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/providers/JavaTypeTreeNode.java @@ -60,14 +60,18 @@ public class JavaTypeTreeNode extends TreeNode { @Override public Object[] getChildren() { List<JavaMemberTreeNode> kids = new ArrayList<JavaMemberTreeNode>(); - Class c = (Class)modelObject; - for (Field f : c.getDeclaredFields()) { - if ((Modifier.PUBLIC & f.getModifiers()) != 0) - kids.add(new JavaMemberTreeNode(f,isCondensed)); + try { + Class c = (Class)modelObject; + for (Field f : c.getDeclaredFields()) { + if ((Modifier.PUBLIC & f.getModifiers()) != 0) + kids.add(new JavaMemberTreeNode(f,isCondensed)); + } + for (Method m : c.getDeclaredMethods()) { + if ((Modifier.PUBLIC & m.getModifiers()) != 0) + kids.add(new JavaMemberTreeNode(m,isCondensed)); + } } - for (Method m : c.getDeclaredMethods()) { - if ((Modifier.PUBLIC & m.getModifiers()) != 0) - kids.add(new JavaMemberTreeNode(m,isCondensed)); + catch (Exception e) { } return kids.toArray(new Object[kids.size()]); } |