[jboss-svn-commits] JBL Code SVN: r21496 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/xml/processes and 14 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 12 19:28:14 EDT 2008
Author: KrisVerlaenen
Date: 2008-08-12 19:28:14 -0400 (Tue, 12 Aug 2008)
New Revision: 21496
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/TypeObject.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ValueObject.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/DateDataType.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ParameterHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/TypeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ValueHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/VariableHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ParameterDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/variable/Variable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ObjectDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ParameterDefinitionImpl.java
labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/action/VerticalAutoLayoutAction.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/Editor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/BooleanEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EditorComposite.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EmptyEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/FloatEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/IntegerEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/StringEditor.java
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java
Log:
JBRULES-1730: Add support for other data types when writing processes to XML
- pluggable data types support
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/BaseAbstractHandler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -26,15 +26,15 @@
*
*/
public abstract class BaseAbstractHandler {
- protected Set validPeers;
- protected Set validParents;
+ protected Set<Class<?>> validPeers;
+ protected Set<Class<?>> validParents;
protected boolean allowNesting;
- public Set getValidParents() {
+ public Set<Class<?>> getValidParents() {
return this.validParents;
}
- public Set getValidPeers() {
+ public Set<Class<?>> getValidPeers() {
return this.validPeers;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/Handler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -36,11 +36,11 @@
String localName,
ExtensibleXmlParser xmlPackageReader) throws SAXException;
- Set getValidParents();
+ Set<Class<?>> getValidParents();
- Set getValidPeers();
+ Set<Class<?>> getValidPeers();
boolean allowNesting();
- Class generateNodeFor();
+ Class<?> generateNodeFor();
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlWorkflowProcessDumper.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -10,6 +10,7 @@
import org.drools.process.core.context.variable.Variable;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.core.datatype.DataType;
+import org.drools.process.core.datatype.impl.type.ObjectDataType;
import org.drools.workflow.core.Connection;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.WorkflowProcess;
@@ -116,7 +117,7 @@
visitDataType(variable.getType(), xmlDump);
Object value = variable.getValue();
if (value != null) {
- visitValue(variable.getValue(), xmlDump);
+ visitValue(variable.getValue(), variable.getType(), xmlDump);
}
xmlDump.append(" </variable>" + EOL);
}
@@ -134,16 +135,17 @@
}
}
- private void visitDataType(DataType dataType, StringBuffer xmlDump) {
- xmlDump.append(" <type name=\"" + dataType.getClass().getName() + "\" />" + EOL);
+ public static void visitDataType(DataType dataType, StringBuffer xmlDump) {
+ xmlDump.append(" <type name=\"" + dataType.getClass().getName() + "\" ");
+ // TODO make this pluggable so datatypes can write out other properties as well
+ if (dataType instanceof ObjectDataType) {
+ xmlDump.append("className=\"" + ((ObjectDataType) dataType).getClassName() + "\" ");
+ }
+ xmlDump.append("/>" + EOL);
}
- private void visitValue(Object value, StringBuffer xmlDump) {
- if (value instanceof String) {
- xmlDump.append(" <value>" + XmlDumper.replaceIllegalChars((String) value) + "</value>" + EOL);
- } else {
- throw new IllegalArgumentException("Unsupported value type: " + value);
- }
+ public static void visitValue(Object value, DataType dataType, StringBuffer xmlDump) {
+ xmlDump.append(" <value>" + XmlDumper.replaceIllegalChars(dataType.writeValue(value)) + "</value>" + EOL);
}
private void visitNodes(WorkflowProcess process, StringBuffer xmlDump, boolean includeMeta) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ParameterHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ParameterHandler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ParameterHandler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -1,111 +1,75 @@
package org.drools.xml.processes;
-import java.io.Serializable;
import java.util.HashSet;
import org.drools.process.core.ParameterDefinition;
+import org.drools.process.core.TypeObject;
+import org.drools.process.core.ValueObject;
import org.drools.process.core.Work;
import org.drools.process.core.datatype.DataType;
-import org.drools.process.core.datatype.impl.type.BooleanDataType;
-import org.drools.process.core.datatype.impl.type.FloatDataType;
-import org.drools.process.core.datatype.impl.type.IntegerDataType;
-import org.drools.process.core.datatype.impl.type.StringDataType;
import org.drools.process.core.impl.ParameterDefinitionImpl;
import org.drools.xml.BaseAbstractHandler;
import org.drools.xml.ExtensibleXmlParser;
import org.drools.xml.Handler;
-import org.w3c.dom.Element;
-import org.w3c.dom.Text;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-public class ParameterHandler extends BaseAbstractHandler
- implements
- Handler {
+public class ParameterHandler extends BaseAbstractHandler implements Handler {
+
public ParameterHandler() {
- if ( (this.validParents == null) && (this.validPeers == null) ) {
- this.validParents = new HashSet();
- this.validParents.add( Work.class );
-
- this.validPeers = new HashSet();
- this.validPeers.add( null );
-
+ if ((this.validParents == null) && (this.validPeers == null)) {
+ this.validParents = new HashSet<Class<?>>();
+ this.validParents.add(Work.class);
+ this.validPeers = new HashSet<Class<?>>();
+ this.validPeers.add(null);
this.allowNesting = false;
}
}
-
-
public Object start(final String uri,
final String localName,
final Attributes attrs,
final ExtensibleXmlParser parser) throws SAXException {
- parser.startElementBuilder( localName,
- attrs );
- return null;
+ parser.startElementBuilder(localName, attrs);
+ final String name = attrs.getValue("name");
+ emptyAttributeCheck(localName, "name", name, parser);
+ Work work = (Work) parser.getParent();
+ ParameterDefinition parameterDefinition = new ParameterDefinitionImpl();
+ parameterDefinition.setName(name);
+ work.addParameterDefinition(parameterDefinition);
+ return new ParameterWrapper(parameterDefinition, work);
}
public Object end(final String uri,
final String localName,
final ExtensibleXmlParser parser) throws SAXException {
- final Element element = parser.endElementBuilder();
- Work work = (Work) parser.getParent();
- final String name = element.getAttribute("name");
- emptyAttributeCheck(localName, "name", name, parser);
- final String type = element.getAttribute("type");
- emptyAttributeCheck(localName, "type", type, parser);
- DataType dataType = null;
- try {
- dataType = (DataType) Class.forName(type).newInstance();
- } catch (ClassNotFoundException e) {
- throw new SAXParseException(
- "Could not find datatype " + name, parser.getLocator());
- } catch (InstantiationException e) {
- throw new SAXParseException(
- "Could not instantiate datatype " + name, parser.getLocator());
- } catch (IllegalAccessException e) {
- throw new SAXParseException(
- "Could not access datatype " + name, parser.getLocator());
- }
- String text = ((Text)element.getChildNodes().item( 0 )).getWholeText();
- if (text != null) {
- text = text.trim();
- if ("".equals(text)) {
- text = null;
- }
- }
- Object value = restoreValue(text, dataType, parser);
- ParameterDefinition parameterDefinition = new ParameterDefinitionImpl(name, dataType);
- work.addParameterDefinition(parameterDefinition);
- work.setParameter(name, value);
+ parser.endElementBuilder();
return null;
}
- private Serializable restoreValue(String text, DataType dataType, ExtensibleXmlParser parser) throws SAXException {
- if (text == null || "".equals(text)) {
- return null;
- }
- if (dataType == null) {
- throw new SAXParseException(
- "Null datatype", parser.getLocator());
- }
- if (dataType instanceof StringDataType) {
- return text;
- } else if (dataType instanceof IntegerDataType) {
- return new Integer(text);
- } else if (dataType instanceof FloatDataType) {
- return new Float(text);
- } else if (dataType instanceof BooleanDataType) {
- return new Boolean(text);
- } else {
- throw new SAXParseException(
- "Unknown datatype " + dataType, parser.getLocator());
- }
+ public Class<?> generateNodeFor() {
+ return ParameterWrapper.class;
}
-
- public Class generateNodeFor() {
- return null;
+
+ public class ParameterWrapper implements TypeObject, ValueObject {
+ private Work work;
+ private ParameterDefinition parameterDefinition;
+ public ParameterWrapper(ParameterDefinition parameterDefinition, Work work) {
+ this.work = work;
+ this.parameterDefinition = parameterDefinition;
+ }
+ public DataType getType() {
+ return parameterDefinition.getType();
+ }
+ public void setType(DataType type) {
+ parameterDefinition.setType(type);
+ }
+ public Object getValue() {
+ return work.getParameter(parameterDefinition.getName());
+ }
+ public void setValue(Object value) {
+ work.setParameter(parameterDefinition.getName(), value);
+ }
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/TypeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/TypeHandler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/TypeHandler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -2,8 +2,9 @@
import java.util.HashSet;
-import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.TypeObject;
import org.drools.process.core.datatype.DataType;
+import org.drools.process.core.datatype.impl.type.ObjectDataType;
import org.drools.xml.BaseAbstractHandler;
import org.drools.xml.ExtensibleXmlParser;
import org.drools.xml.Handler;
@@ -16,10 +17,10 @@
Handler {
public TypeHandler() {
if ( (this.validParents == null) && (this.validPeers == null) ) {
- this.validParents = new HashSet();
- this.validParents.add( Variable.class );
+ this.validParents = new HashSet<Class<?>>();
+ this.validParents.add( TypeObject.class );
- this.validPeers = new HashSet();
+ this.validPeers = new HashSet<Class<?>>();
this.validPeers.add( null );
this.allowNesting = false;
@@ -34,12 +35,18 @@
final ExtensibleXmlParser parser) throws SAXException {
parser.startElementBuilder( localName,
attrs );
- Variable variable = (Variable) parser.getParent();
+ TypeObject typeable = (TypeObject) parser.getParent();
final String name = attrs.getValue("name");
emptyAttributeCheck(localName, "name", name, parser);
DataType dataType = null;
try {
dataType = (DataType) Class.forName(name).newInstance();
+ // TODO make this pluggable so datatypes can read in other properties as well
+ if (dataType instanceof ObjectDataType) {
+ final String className = attrs.getValue("className");
+ emptyAttributeCheck(localName, "className", className, parser);
+ ((ObjectDataType) dataType).setClassName(className);
+ }
} catch (ClassNotFoundException e) {
throw new SAXParseException(
"Could not find datatype " + name, parser.getLocator());
@@ -51,7 +58,7 @@
"Could not access datatype " + name, parser.getLocator());
}
- variable.setType(dataType);
+ typeable.setType(dataType);
return dataType;
}
@@ -62,7 +69,7 @@
return null;
}
- public Class generateNodeFor() {
+ public Class<?> generateNodeFor() {
return DataType.class;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ValueHandler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/ValueHandler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -1,14 +1,9 @@
package org.drools.xml.processes;
-import java.io.Serializable;
import java.util.HashSet;
-import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.ValueObject;
import org.drools.process.core.datatype.DataType;
-import org.drools.process.core.datatype.impl.type.BooleanDataType;
-import org.drools.process.core.datatype.impl.type.FloatDataType;
-import org.drools.process.core.datatype.impl.type.IntegerDataType;
-import org.drools.process.core.datatype.impl.type.StringDataType;
import org.drools.xml.BaseAbstractHandler;
import org.drools.xml.ExtensibleXmlParser;
import org.drools.xml.Handler;
@@ -18,15 +13,14 @@
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
-public class ValueHandler extends BaseAbstractHandler
- implements
- Handler {
+public class ValueHandler extends BaseAbstractHandler implements Handler {
+
public ValueHandler() {
if ( (this.validParents == null) && (this.validPeers == null) ) {
- this.validParents = new HashSet();
- this.validParents.add( Variable.class );
+ this.validParents = new HashSet<Class<?>>();
+ this.validParents.add( ValueObject.class );
- this.validPeers = new HashSet();
+ this.validPeers = new HashSet<Class<?>>();
this.validPeers.add( null );
this.allowNesting = false;
@@ -48,7 +42,7 @@
final String localName,
final ExtensibleXmlParser parser) throws SAXException {
final Element element = parser.endElementBuilder();
- Variable variable = (Variable) parser.getParent();
+ ValueObject valueObject = (ValueObject) parser.getParent();
String text = ((Text)element.getChildNodes().item( 0 )).getWholeText();
if (text != null) {
text.trim();
@@ -56,12 +50,12 @@
text = null;
}
}
- Serializable value = restoreValue(text, variable.getType(), parser);
- variable.setValue(value);
+ Object value = restoreValue(text, valueObject.getType(), parser);
+ valueObject.setValue(value);
return null;
}
- private Serializable restoreValue(String text, DataType dataType, ExtensibleXmlParser parser) throws SAXException {
+ private Object restoreValue(String text, DataType dataType, ExtensibleXmlParser parser) throws SAXException {
if (text == null || "".equals(text)) {
return null;
}
@@ -69,21 +63,10 @@
throw new SAXParseException(
"Null datatype", parser.getLocator());
}
- if (dataType instanceof StringDataType) {
- return text;
- } else if (dataType instanceof IntegerDataType) {
- return new Integer(text);
- } else if (dataType instanceof FloatDataType) {
- return new Float(text);
- } else if (dataType instanceof BooleanDataType) {
- return new Boolean(text);
- } else {
- throw new SAXParseException(
- "Unknown datatype " + dataType, parser.getLocator());
- }
+ return dataType.readValue(text);
}
- public Class generateNodeFor() {
+ public Class<?> generateNodeFor() {
return null;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/VariableHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/VariableHandler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/VariableHandler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -20,10 +20,10 @@
Handler {
public VariableHandler() {
if ( (this.validParents == null) && (this.validPeers == null) ) {
- this.validParents = new HashSet();
+ this.validParents = new HashSet<Class<?>>();
this.validParents.add( Process.class );
- this.validPeers = new HashSet();
+ this.validPeers = new HashSet<Class<?>>();
this.validPeers.add( null );
this.allowNesting = false;
@@ -68,7 +68,7 @@
return null;
}
- public Class generateNodeFor() {
+ public Class<?> generateNodeFor() {
return Variable.class;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -4,10 +4,11 @@
import org.drools.process.core.ParameterDefinition;
import org.drools.process.core.Work;
+import org.drools.process.core.datatype.DataType;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.WorkItemNode;
import org.drools.xml.ExtensibleXmlParser;
-import org.drools.xml.XmlDumper;
+import org.drools.xml.XmlWorkflowProcessDumper;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
@@ -29,7 +30,7 @@
return new WorkItemNode();
}
- public Class generateNodeFor() {
+ public Class<?> generateNodeFor() {
return WorkItemNode.class;
}
@@ -76,18 +77,15 @@
if (work != null) {
xmlDump.append(" <work name=\"" + work.getName() + "\" >" + EOL);
for (ParameterDefinition paramDefinition: work.getParameterDefinitions()) {
- xmlDump.append(" <parameter name=\"" + paramDefinition.getName() + "\" " +
- "type=\"" + paramDefinition.getType().getClass().getName() + "\" ");
+ DataType dataType = paramDefinition.getType();
+ xmlDump.append(" <parameter name=\"" + paramDefinition.getName() + "\" >" + EOL + " ");
+ XmlWorkflowProcessDumper.visitDataType(dataType, xmlDump);
Object value = work.getParameter(paramDefinition.getName());
- if (value == null) {
- xmlDump.append("/>" + EOL);
- } else {
- if (value instanceof String) {
- xmlDump.append(">" + XmlDumper.replaceIllegalChars((String) value) + "</parameter>" + EOL);
- } else {
- throw new IllegalArgumentException("Unsupported value type: " + value);
- }
+ if (value != null) {
+ xmlDump.append(" ");
+ XmlWorkflowProcessDumper.visitValue(value, dataType, xmlDump);
}
+ xmlDump.append(" </parameter>" + EOL);
}
xmlDump.append(" </work>" + EOL);
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd 2008-08-12 23:28:14 UTC (rev 21496)
@@ -69,6 +69,7 @@
<xs:element name="type">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="className" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="value">
@@ -269,12 +270,11 @@
</xs:element>
<xs:element name="parameter">
<xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- </xs:extension>
- </xs:simpleContent>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="drools:type"/>
+ <xs:element ref="drools:value"/>
+ </xs:choice>
+ <xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="mapping">
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -10,12 +10,14 @@
import junit.framework.TestCase;
+import org.drools.Person;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.process.core.ParameterDefinition;
import org.drools.process.core.Work;
import org.drools.process.core.context.swimlane.Swimlane;
import org.drools.process.core.context.variable.Variable;
import org.drools.process.core.datatype.impl.type.IntegerDataType;
+import org.drools.process.core.datatype.impl.type.ListDataType;
import org.drools.process.core.datatype.impl.type.ObjectDataType;
import org.drools.process.core.datatype.impl.type.StringDataType;
import org.drools.process.core.event.EventTypeFilter;
@@ -131,6 +133,23 @@
variable.setType(new IntegerDataType());
variable.setValue(2);
variables.add(variable);
+ variable = new Variable();
+ variable.setName("variable3");
+ variable.setType(new ObjectDataType("org.drools.Person"));
+ Person person = new Person();
+ person.setName("John");
+ variable.setValue(person);
+ variables.add(variable);
+ variable = new Variable();
+ variable.setName("variable3");
+ ListDataType listDataType = new ListDataType();
+ listDataType.setType(new ObjectDataType("java.lang.Integer"));
+ variable.setType(listDataType);
+ List<Integer> list = new ArrayList<Integer>();
+ list.add(10);
+ list.add(20);
+ variable.setValue(list);
+ variables.add(variable);
process.getVariableScope().setVariables(variables);
Swimlane swimlane = new Swimlane();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ParameterDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ParameterDefinition.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ParameterDefinition.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -1,17 +1,13 @@
package org.drools.process.core;
-import org.drools.process.core.datatype.DataType;
/**
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public interface ParameterDefinition {
+public interface ParameterDefinition extends TypeObject {
String getName();
void setName(String name);
- DataType getType();
- void setType(DataType type);
-
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/TypeObject.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/TypeObject.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/TypeObject.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -0,0 +1,10 @@
+package org.drools.process.core;
+
+import org.drools.process.core.datatype.DataType;
+
+public interface TypeObject {
+
+ DataType getType();
+ void setType(DataType type);
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ValueObject.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ValueObject.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/ValueObject.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -0,0 +1,8 @@
+package org.drools.process.core;
+
+public interface ValueObject extends TypeObject {
+
+ Object getValue();
+
+ void setValue(Object value);
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/variable/Variable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/variable/Variable.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/variable/Variable.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -18,7 +18,8 @@
import java.io.Serializable;
-import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.TypeObject;
+import org.drools.process.core.ValueObject;
import org.drools.process.core.datatype.DataType;
import org.drools.process.core.datatype.impl.type.UndefinedDataType;
@@ -27,13 +28,13 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class Variable implements Serializable {
+public class Variable implements TypeObject, ValueObject, Serializable {
private static final long serialVersionUID = 400L;
- private String name;
- private DataType type;
- private Serializable value;
+ private String name;
+ private DataType type;
+ private Object value;
public Variable() {
this.type = UndefinedDataType.getInstance();
@@ -58,11 +59,11 @@
this.type = type;
}
- public Serializable getValue() {
+ public Object getValue() {
return this.value;
}
- public void setValue(final Serializable value) {
+ public void setValue(final Object value) {
if ( this.type.verifyDataType( value ) ) {
this.value = value;
} else {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -29,5 +29,9 @@
* Returns true if the given value is a valid value of this data type.
*/
boolean verifyDataType(Object value);
+
+ String writeValue(Object value);
+
+ Object readValue(String value);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -45,4 +45,12 @@
}
return false;
}
+
+ public Object readValue(String value) {
+ return new Boolean(value);
+ }
+
+ public String writeValue(Object value) {
+ return (Boolean) value ? "true" : "false";
+ }
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/DateDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/DateDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/DateDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -1,47 +0,0 @@
-package org.drools.process.core.datatype.impl.type;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.Date;
-
-import org.drools.process.core.datatype.DataType;
-
-/**
- * Representation of a date datatype.
- *
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public final class DateDataType implements DataType {
-
- private static final long serialVersionUID = 400L;
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- }
-
- public boolean verifyDataType(final Object value) {
- if ( value instanceof Date ) {
- return true;
- }
- return false;
- }
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -48,4 +48,13 @@
return false;
}
}
+
+ public Object readValue(String value) {
+ return new Float(value);
+ }
+
+ public String writeValue(Object value) {
+ Float f = (Float) value;
+ return f == null ? "" : f.toString();
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -48,4 +48,14 @@
return false;
}
}
+
+ public Object readValue(String value) {
+ return new Integer(value);
+ }
+
+ public String writeValue(Object value) {
+ Integer i = (Integer) value;
+ return i == null ? "" : i.toString();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -16,25 +16,30 @@
* limitations under the License.
*/
-import org.drools.process.core.datatype.DataType;
-
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Iterator;
import java.util.List;
+import org.drools.process.core.TypeObject;
+import org.drools.process.core.datatype.DataType;
+
/**
* Representation of a list datatype.
* All elements in the list must have the same datatype.
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ListDataType implements DataType {
+public class ListDataType extends ObjectDataType implements TypeObject {
private static final long serialVersionUID = 400L;
private DataType dataType;
+
+ public ListDataType() {
+ setClassName("java.util.List");
+ }
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
dataType = (DataType)in.readObject();
@@ -44,18 +49,15 @@
out.writeObject(dataType);
}
- public ListDataType() {
- }
-
public ListDataType(DataType dataType) {
- setDataType(dataType);
+ setType(dataType);
}
- public void setDataType(final DataType dataType) {
+ public void setType(final DataType dataType) {
this.dataType = dataType;
}
- public DataType getDataType() {
+ public DataType getType() {
return this.dataType;
}
@@ -64,8 +66,8 @@
return true;
}
if (value instanceof List) {
- for (final Iterator<?> it = ((List<?>) value).iterator(); it.hasNext();) {
- if (!this.dataType.verifyDataType(it.next())) {
+ for (Object o: (List<?>) value) {
+ if (dataType != null && !dataType.verifyDataType(o)) {
return false;
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ObjectDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ObjectDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ObjectDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -22,12 +22,14 @@
import org.drools.process.core.datatype.DataType;
+import com.thoughtworks.xstream.XStream;
+
/**
* Representation of an object datatype.
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public final class ObjectDataType implements DataType {
+public class ObjectDataType implements DataType {
private static final long serialVersionUID = 4L;
@@ -49,9 +51,11 @@
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ className = in.readUTF();
}
public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeUTF(className);
}
public boolean verifyDataType(final Object value) {
@@ -66,4 +70,14 @@
}
return false;
}
+
+ public Object readValue(String value) {
+ XStream xstream = new XStream();
+ return xstream.fromXML(value);
+ }
+
+ public String writeValue(Object value) {
+ XStream xstream = new XStream();
+ return xstream.toXML(value);
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -27,9 +27,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class StringDataType
- implements
- DataType {
+public class StringDataType implements DataType {
private static final long serialVersionUID = 400L;
@@ -48,4 +46,13 @@
return false;
}
}
+
+ public Object readValue(String value) {
+ return value;
+ }
+
+ public String writeValue(Object value) {
+ return (String) value;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -51,4 +51,13 @@
}
return false;
}
+
+ public Object readValue(String value) {
+ throw new IllegalArgumentException("Undefined datatype");
+ }
+
+ public String writeValue(Object value) {
+ throw new IllegalArgumentException("Undefined datatype");
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ParameterDefinitionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ParameterDefinitionImpl.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/impl/ParameterDefinitionImpl.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -14,8 +14,11 @@
private static final long serialVersionUID = 400L;
private String name;
- private DataType type;
-
+ private DataType type;
+
+ public ParameterDefinitionImpl() {
+ }
+
public ParameterDefinitionImpl(String name, DataType type) {
setName(name);
setType(type);
Modified: labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf 2008-08-12 23:28:14 UTC (rev 21496)
@@ -3,7 +3,6 @@
// The allowed properties are name, parameters, displayName, icon and customEditor
// The returned result should thus be of type List<Map<String, Object>>
import org.drools.process.core.datatype.impl.type.StringDataType;
-import org.drools.process.core.datatype.impl.type.DateDataType;
[
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -42,7 +42,7 @@
ListDataType listDataType = new ListDataType();
ObjectDataType personDataType = new ObjectDataType();
personDataType.setClassName("org.drools.Person");
- listDataType.setDataType(personDataType);
+ listDataType.setType(personDataType);
variable.setType(listDataType);
variables.add(variable);
process.getVariableScope().setVariables(variables);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/action/VerticalAutoLayoutAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/action/VerticalAutoLayoutAction.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/action/VerticalAutoLayoutAction.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -20,8 +20,8 @@
import java.util.Map;
import org.drools.eclipse.flow.common.editor.GenericModelEditor;
+import org.drools.eclipse.flow.common.editor.core.DefaultElementWrapper;
import org.drools.eclipse.flow.common.editor.core.ProcessWrapper;
-import org.drools.eclipse.flow.ruleflow.core.AbstractNodeWrapper;
import org.drools.workflow.core.Connection;
import org.drools.workflow.core.WorkflowProcess;
import org.eclipse.draw2d.geometry.Dimension;
@@ -60,9 +60,9 @@
layout.visit(graph);
for (Map.Entry<Long, Node> entry: mapping.entrySet()) {
Node node = entry.getValue();
- AbstractNodeWrapper nodeWrapper = (AbstractNodeWrapper)
+ DefaultElementWrapper elementWrapper = (DefaultElementWrapper)
((ProcessWrapper) ((GenericModelEditor) editor).getModel()).getElement(entry.getKey() + "");
- nodeWrapper.setConstraint(new Rectangle(node.x, node.y, node.width, node.height));
+ elementWrapper.setConstraint(new Rectangle(node.x, node.y, node.width, node.height));
}
// TODO: implement changes as a command, so we can support undo
editor.doSave(null);
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/editpart/figure/ElementContainerFigure.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -1,11 +1,13 @@
package org.drools.eclipse.flow.common.editor.editpart.figure;
import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.FlowLayout;
import org.eclipse.draw2d.FreeformLayer;
import org.eclipse.draw2d.FreeformLayout;
import org.eclipse.draw2d.FreeformViewport;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.Layer;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.ScrollPane;
import org.eclipse.draw2d.StackLayout;
@@ -15,6 +17,7 @@
private IFigure pane;
private boolean selected = false;
+ private Label label = new Label();
public ElementContainerFigure() {
setSize(200, 150);
@@ -23,13 +26,19 @@
pane.setLayoutManager(new FreeformLayout());
setLayoutManager(new StackLayout());
add(scrollpane);
+ IFigure panel = new Layer();
+ FlowLayout flowLayout = new FlowLayout();
+ flowLayout.setMajorAlignment(FlowLayout.ALIGN_CENTER);
+ panel.setLayoutManager(flowLayout);
+ panel.add(label);
+ add(panel);
scrollpane.setViewport(new FreeformViewport());
scrollpane.setContents(pane);
setBorder(new LineBorder(1));
}
public Label getLabel() {
- return null;
+ return label;
}
public boolean isSelected() {
@@ -46,7 +55,7 @@
}
public void setText(String text) {
- // Do nothing
+ label.setText(text);
}
public IFigure getPane() {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/Editor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/Editor.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/Editor.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.process.core.datatype.DataType;
@@ -29,9 +27,9 @@
void setDataType(DataType dataType);
- Serializable getValue();
+ Object getValue();
- void setValue(Serializable value);
+ void setValue(Object value);
void reset();
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/BooleanEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/BooleanEditor.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/BooleanEditor.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.eclipse.flow.common.view.datatype.editor.Editor;
import org.drools.process.core.datatype.DataType;
import org.drools.process.core.datatype.impl.type.BooleanDataType;
@@ -50,11 +48,11 @@
}
}
- public Serializable getValue() {
+ public Object getValue() {
return Boolean.valueOf(combo.getSelectionIndex() == 0);
}
- public void setValue(Serializable value) {
+ public void setValue(Object value) {
if (value == null) {
combo.select(1);
} else if (value instanceof Boolean) {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EditorComposite.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EditorComposite.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EditorComposite.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,7 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import org.drools.eclipse.DroolsEclipsePlugin;
@@ -78,11 +77,11 @@
}
}
- public void setValue(Serializable value) {
+ public void setValue(Object value) {
editor.setValue(value);
}
- public Serializable getValue() {
+ public Object getValue() {
return editor.getValue();
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EmptyEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EmptyEditor.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/EmptyEditor.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.eclipse.flow.common.view.datatype.editor.DataTypeEditor;
import org.drools.eclipse.flow.common.view.datatype.editor.Editor;
import org.drools.process.core.datatype.DataType;
@@ -34,7 +32,7 @@
public class EmptyEditor extends Composite implements Editor, DataTypeEditor {
private DataType dataType;
- private Serializable value;
+ private Object value;
private Label label;
public EmptyEditor(Composite parent) {
@@ -52,11 +50,11 @@
this.dataType = dataType;
}
- public Serializable getValue() {
+ public Object getValue() {
return value;
}
- public void setValue(Serializable value) {
+ public void setValue(Object value) {
this.value = value;
}
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/FloatEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/FloatEditor.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/FloatEditor.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.eclipse.flow.common.view.datatype.editor.Editor;
import org.drools.process.core.datatype.DataType;
import org.drools.process.core.datatype.impl.type.FloatDataType;
@@ -46,7 +44,7 @@
}
}
- public Serializable getValue() throws IllegalArgumentException {
+ public Object getValue() throws IllegalArgumentException {
String valueString = text.getText();
if ("".equals(valueString)) {
return null;
@@ -59,7 +57,7 @@
}
}
- public void setValue(Serializable value) {
+ public void setValue(Object value) {
if (value == null) {
text.setText("");
} else if (value instanceof Float) {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/IntegerEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/IntegerEditor.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/IntegerEditor.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.eclipse.flow.common.view.datatype.editor.Editor;
import org.drools.process.core.datatype.DataType;
import org.drools.process.core.datatype.impl.type.IntegerDataType;
@@ -46,7 +44,7 @@
}
}
- public Serializable getValue() {
+ public Object getValue() {
String valueString = text.getText();
if ("".equals(valueString)) {
return null;
@@ -59,7 +57,7 @@
}
}
- public void setValue(Serializable value) {
+ public void setValue(Object value) {
if (value == null) {
text.setText("");
} else if (value instanceof Integer) {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/StringEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/StringEditor.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/view/datatype/editor/impl/StringEditor.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.eclipse.flow.common.view.datatype.editor.Editor;
import org.drools.process.core.datatype.DataType;
import org.drools.process.core.datatype.impl.type.StringDataType;
@@ -46,11 +44,11 @@
}
}
- public Serializable getValue() {
+ public Object getValue() {
return text.getText();
}
- public void setValue(Serializable value) {
+ public void setValue(Object value) {
if (value == null) {
text.setText("");
} else if (value instanceof String) {
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java 2008-08-12 23:02:17 UTC (rev 21495)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/ruleflow/core/WorkItemWrapper.java 2008-08-12 23:28:14 UTC (rev 21496)
@@ -27,6 +27,7 @@
import org.drools.process.core.ParameterDefinition;
import org.drools.process.core.Work;
import org.drools.process.core.WorkDefinition;
+import org.drools.process.core.datatype.DataType;
import org.drools.process.core.impl.WorkImpl;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.WorkItemNode;
@@ -149,11 +150,12 @@
} else if (id instanceof String) {
String name = (String) id;
if (workParameterExists(name)) {
+ DataType type = getWorkItemNode().getWork().getParameterDefinition(name).getType();
Object value = getWorkItemNode().getWork().getParameter(name);
- if (value instanceof String) {
- return value;
+ if (value == null) {
+ return "";
}
- return "";
+ return type.writeValue(value);
}
}
return super.getPropertyValue(id);
@@ -181,7 +183,8 @@
} else if (RESULT_MAPPING.equals(id)) {
getWorkItemNode().setOutMappings((Map<String, String>) value);
} else if (id instanceof String && workParameterExists((String) id)) {
- getWorkItemNode().getWork().setParameter((String) id, value);
+ DataType type = getWorkItemNode().getWork().getParameterDefinition((String) id).getType();
+ getWorkItemNode().getWork().setParameter((String) id, type.readValue((String) value));
} else {
super.setPropertyValue(id, value);
}
More information about the jboss-svn-commits
mailing list