提交 c452b619 编写于 作者: T Tijs Rademakers

Fix for ACT-1965

上级 41a01f2d
......@@ -18,7 +18,6 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.Association;
import org.activiti.bpmn.model.BaseElement;
import org.apache.commons.lang3.StringUtils;
/**
* @author Tijs Rademakers
......@@ -57,10 +56,6 @@ public class AssociationXMLConverter extends BaseBpmnXMLConverter {
writeDefaultAttribute(ATTRIBUTE_FLOW_SOURCE_REF, association.getSourceRef(), xtw);
writeDefaultAttribute(ATTRIBUTE_FLOW_TARGET_REF, association.getTargetRef(), xtw);
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -65,8 +65,6 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
protected Process activeProcess;
protected Map<String, BaseChildElementParser> childElementParsers = new HashMap<String, BaseChildElementParser>();
protected boolean didWriteExtensionStartElement = false;
protected static final List<ExtensionAttribute> defaultElementAttributes = Arrays.asList(
new ExtensionAttribute(ATTRIBUTE_ID),
new ExtensionAttribute(ATTRIBUTE_NAME)
......@@ -151,7 +149,7 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
this.model = model;
xtw.writeStartElement(getXMLElementName());
didWriteExtensionStartElement = false;
boolean didWriteExtensionStartElement = false;
writeDefaultAttribute(ATTRIBUTE_ID, baseElement.getId(), xtw);
if (baseElement instanceof FlowElement) {
writeDefaultAttribute(ATTRIBUTE_NAME, ((FlowElement) baseElement).getName(), xtw);
......@@ -195,8 +193,8 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
}
}
writeExtensionChildElements(baseElement, xtw);
didWriteExtensionStartElement = writeListeners(baseElement, xtw);
didWriteExtensionStartElement = writeExtensionChildElements(baseElement, didWriteExtensionStartElement, xtw);
didWriteExtensionStartElement = writeListeners(baseElement, didWriteExtensionStartElement, xtw);
didWriteExtensionStartElement = BpmnXMLUtil.writeExtensionElements(baseElement, didWriteExtensionStartElement, xtw);
if (didWriteExtensionStartElement) {
......@@ -219,7 +217,9 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
protected abstract void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception;
protected abstract void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception;
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
return didWriteExtensionStartElement;
}
protected abstract void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception;
......@@ -308,7 +308,7 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
return BpmnXMLUtil.convertToDelimitedString(stringList);
}
protected void writeFormProperties(FlowElement flowElement, XMLStreamWriter xtw) throws Exception {
protected boolean writeFormProperties(FlowElement flowElement, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
List<FormProperty> propertyList = null;
if (flowElement instanceof UserTask) {
......@@ -360,9 +360,11 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
}
}
}
return didWriteExtensionStartElement;
}
protected boolean writeListeners(BaseElement element, XMLStreamWriter xtw) throws Exception {
protected boolean writeListeners(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
return ActivitiListenerExport.writeListeners(element, didWriteExtensionStartElement, xtw);
}
......
......@@ -81,10 +81,6 @@ public class BoundaryEventXMLConverter extends BaseBpmnXMLConverter {
}
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
BoundaryEvent boundaryEvent = (BoundaryEvent) element;
......
......@@ -76,10 +76,6 @@ public class BusinessRuleTaskXMLConverter extends BaseBpmnXMLConverter {
}
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
......
......@@ -68,18 +68,19 @@ public class CallActivityXMLConverter extends BaseBpmnXMLConverter {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
CallActivity callActivity = (CallActivity) element;
writeIOParameters(ELEMENT_CALL_ACTIVITY_IN_PARAMETERS, callActivity.getInParameters(), xtw);
writeIOParameters(ELEMENT_CALL_ACTIVITY_OUT_PARAMETERS, callActivity.getOutParameters(), xtw);
didWriteExtensionStartElement = writeIOParameters(ELEMENT_CALL_ACTIVITY_IN_PARAMETERS, callActivity.getInParameters(), didWriteExtensionStartElement, xtw);
didWriteExtensionStartElement = writeIOParameters(ELEMENT_CALL_ACTIVITY_OUT_PARAMETERS, callActivity.getOutParameters(), didWriteExtensionStartElement, xtw);
return didWriteExtensionStartElement;
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
private void writeIOParameters(String elementName, List<IOParameter> parameterList, XMLStreamWriter xtw) throws Exception {
if (parameterList.size() == 0) return;
private boolean writeIOParameters(String elementName, List<IOParameter> parameterList, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
if (parameterList.size() == 0) return didWriteExtensionStartElement;
for (IOParameter ioParameter : parameterList) {
if (didWriteExtensionStartElement == false) {
......@@ -100,6 +101,8 @@ public class CallActivityXMLConverter extends BaseBpmnXMLConverter {
xtw.writeEndElement();
}
return didWriteExtensionStartElement;
}
public class InParameterParser extends BaseChildElementParser {
......
......@@ -50,10 +50,6 @@ public class CatchEventXMLConverter extends BaseBpmnXMLConverter {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
IntermediateCatchEvent catchEvent = (IntermediateCatchEvent) element;
......
package org.activiti.bpmn.converter;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.DataObject;
import org.activiti.bpmn.model.ItemDefinition;
/**
* @author Lori Small
*/
public class DataObjectXMLConverter extends BaseBpmnXMLConverter {
protected boolean didWriteExtensionStartElement = false;
public static String getXMLType() {
return ELEMENT_DATA_OBJECT;
}
public static Class<? extends BaseElement> getBpmnElementType() {
return DataObject.class;
}
@Override
protected String getXMLElementName() {
return ELEMENT_DATA_OBJECT;
}
@Override
protected BaseElement convertXMLToElement(XMLStreamReader xtr) throws Exception {
DataObject dataObject = new DataObject();
ItemDefinition itemSubjectRef = new ItemDefinition();
BpmnXMLUtil.addXMLLocation(dataObject, xtr);
dataObject.setId(xtr.getAttributeValue(null, ATTRIBUTE_DATA_ID));
dataObject.setName(xtr.getAttributeValue(null, ATTRIBUTE_DATA_NAME));
itemSubjectRef.setStructureRef(xtr.getAttributeValue(null, ATTRIBUTE_DATA_ITEM_REF));
dataObject.setItemSubjectRef(itemSubjectRef);
parseChildElements(xtr, dataObject);
return dataObject;
}
@Override
public void convertToXML(XMLStreamWriter xtw, BaseElement baseElement, BpmnModel model) throws Exception {
xtw.writeStartElement(getXMLElementName());
didWriteExtensionStartElement = false;
writeDefaultAttribute(ATTRIBUTE_DATA_ID, baseElement.getId(), xtw);
writeDefaultAttribute(ATTRIBUTE_DATA_NAME, ((DataObject) baseElement).getName(), xtw);
writeDefaultAttribute(ATTRIBUTE_DATA_ITEM_REF, ((DataObject) baseElement).getItemSubjectRef().getStructureRef(), xtw);
writeExtensionChildElements(baseElement, xtw);
xtw.writeEndElement();
}
@Override
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
private void parseChildElements(XMLStreamReader xtr, BaseElement parentElement) throws Exception {
}
}
......@@ -48,10 +48,6 @@ public class EndEventXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -49,10 +49,6 @@ public class EventGatewayXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -49,10 +49,6 @@ public class ExclusiveGatewayXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -49,10 +49,6 @@ public class InclusiveGatewayXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -49,10 +49,6 @@ public class ManualTaskXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -49,10 +49,6 @@ public class ParallelGatewayXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -49,10 +49,6 @@ public class ReceiveTaskXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
......
......@@ -69,10 +69,6 @@ public class ScriptTaskXMLConverter extends BaseBpmnXMLConverter {
writeQualifiedAttribute(ATTRIBUTE_TASK_SCRIPT_AUTO_STORE_VARIABLE, String.valueOf(scriptTask.isAutoStoreVariables()), xtw);
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
ScriptTask scriptTask = (ScriptTask) element;
......
......@@ -68,9 +68,10 @@ public class SendTaskXMLConverter extends BaseBpmnXMLConverter {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
SendTask sendTask = (SendTask) element;
didWriteExtensionStartElement = FieldExtensionExport.writeFieldExtensions(sendTask.getFieldExtensions(), didWriteExtensionStartElement, xtw);
return didWriteExtensionStartElement;
}
@Override
......
......@@ -58,10 +58,6 @@ public class SequenceFlowXMLConverter extends BaseBpmnXMLConverter {
writeDefaultAttribute(ATTRIBUTE_FLOW_TARGET_REF, sequenceFlow.getTargetRef(), xtw);
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
SequenceFlow sequenceFlow = (SequenceFlow) element;
......
......@@ -101,7 +101,7 @@ public class ServiceTaskXMLConverter extends BaseBpmnXMLConverter {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
ServiceTask serviceTask = (ServiceTask) element;
if (serviceTask.getCustomProperties().size() > 0) {
......@@ -131,6 +131,8 @@ public class ServiceTaskXMLConverter extends BaseBpmnXMLConverter {
} else {
didWriteExtensionStartElement = FieldExtensionExport.writeFieldExtensions(serviceTask.getFieldExtensions(), didWriteExtensionStartElement, xtw);
}
return didWriteExtensionStartElement;
}
@Override
......
......@@ -73,9 +73,10 @@ public class StartEventXMLConverter extends BaseBpmnXMLConverter {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
StartEvent startEvent = (StartEvent) element;
writeFormProperties(startEvent, xtw);
didWriteExtensionStartElement = writeFormProperties(startEvent, didWriteExtensionStartElement, xtw);
return didWriteExtensionStartElement;
}
@Override
......
......@@ -50,10 +50,6 @@ public class TaskXMLConverter extends BaseBpmnXMLConverter {
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
......
......@@ -59,10 +59,6 @@ public class TextAnnotationXMLConverter extends BaseBpmnXMLConverter {
writeDefaultAttribute(ATTRIBUTE_TEXTFORMAT, textAnnotation.getTextFormat(), xtw);
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
TextAnnotation textAnnotation = (TextAnnotation) element;
......
......@@ -48,11 +48,7 @@ public class ThrowEventXMLConverter extends BaseBpmnXMLConverter {
@Override
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
ThrowEvent throwEvent = (ThrowEvent) element;
......
......@@ -125,9 +125,10 @@ public class UserTaskXMLConverter extends BaseBpmnXMLConverter {
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
UserTask userTask = (UserTask) element;
writeFormProperties(userTask, xtw);
didWriteExtensionStartElement = writeFormProperties(userTask, didWriteExtensionStartElement, xtw);
return didWriteExtensionStartElement;
}
@Override
......
package org.activiti.bpmn.converter;
import java.util.Date;
import java.util.List;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
......@@ -8,9 +9,9 @@ import javax.xml.stream.XMLStreamWriter;
import org.activiti.bpmn.converter.util.BpmnXMLUtil;
import org.activiti.bpmn.model.BaseElement;
import org.activiti.bpmn.model.BooleanDataObject;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.DateDataObject;
import org.activiti.bpmn.model.DoubleDataObject;
import org.activiti.bpmn.model.ExtensionElement;
import org.activiti.bpmn.model.IntegerDataObject;
import org.activiti.bpmn.model.ItemDefinition;
import org.activiti.bpmn.model.LongDataObject;
......@@ -22,6 +23,7 @@ import org.joda.time.format.ISODateTimeFormat;
/**
* @author Lori Small
* @author Tijs Rademakers
*/
public class ValuedDataObjectXMLConverter extends BaseBpmnXMLConverter {
......@@ -46,22 +48,29 @@ public class ValuedDataObjectXMLConverter extends BaseBpmnXMLConverter {
ItemDefinition itemSubjectRef = new ItemDefinition();
String structureRef = xtr.getAttributeValue(null, ATTRIBUTE_DATA_ITEM_REF);
String dataType = structureRef.substring(structureRef.indexOf(':') + 1);
if (StringUtils.isNotEmpty(structureRef) && structureRef.contains(":")) {
String dataType = structureRef.substring(structureRef.indexOf(':') + 1);
if (dataType.equals("string")) {
dataObject = new StringDataObject();
} else if (dataType.equals("int")) {
dataObject = new IntegerDataObject();
} else if (dataType.equals("long")) {
dataObject = new LongDataObject();
} else if (dataType.equals("double")) {
dataObject = new DoubleDataObject();
} else if (dataType.equals("boolean")) {
dataObject = new BooleanDataObject();
} else if (dataType.equals("datetime")) {
dataObject = new DateDataObject();
} else {
// TODO should throw exception here for unsupported data type
}
if (dataType.equals("string")) {
dataObject = new StringDataObject();
} else if (dataType.equals("int")) {
dataObject = new IntegerDataObject();
} else if (dataType.equals("long")) {
dataObject = new LongDataObject();
} else if (dataType.equals("double")) {
dataObject = new DoubleDataObject();
} else if (dataType.equals("boolean")) {
dataObject = new BooleanDataObject();
} else if (dataType.equals("datetime")) {
dataObject = new DateDataObject();
} else {
// TODO should throw exception here for unsupported data type
// use String as default type
dataObject = new StringDataObject();
structureRef = "xsd:string";
}
if (dataObject != null) {
......@@ -73,34 +82,40 @@ public class ValuedDataObjectXMLConverter extends BaseBpmnXMLConverter {
itemSubjectRef.setStructureRef(structureRef);
dataObject.setItemSubjectRef(itemSubjectRef);
parseChildElements(xtr, dataObject);
parseChildElements(getXMLElementName(), dataObject, xtr);
List<ExtensionElement> valuesElement = dataObject.getExtensionElements().get("value");
if (valuesElement != null && valuesElement.size() > 0) {
ExtensionElement valueElement = valuesElement.get(0);
if (StringUtils.isNotEmpty(valueElement.getElementText())) {
if (dataObject instanceof DateDataObject) {
dataObject.setValue(DateTime.parse(valueElement.getElementText(), ISODateTimeFormat.dateOptionalTimeParser()).toDate());
} else {
dataObject.setValue(valueElement.getElementText());
}
}
// remove value element
dataObject.getExtensionElements().remove("value");
}
}
return dataObject;
}
@Override
public void convertToXML(XMLStreamWriter xtw, BaseElement baseElement, BpmnModel model) throws Exception {
xtw.writeStartElement(getXMLElementName());
didWriteExtensionStartElement = false;
writeDefaultAttribute(ATTRIBUTE_DATA_ID, baseElement.getId(), xtw);
writeDefaultAttribute(ATTRIBUTE_DATA_NAME, ((ValuedDataObject) baseElement).getName(), xtw);
writeDefaultAttribute(ATTRIBUTE_DATA_ITEM_REF, ((ValuedDataObject) baseElement).getItemSubjectRef().getStructureRef(), xtw);
writeExtensionChildElements(baseElement, xtw);
xtw.writeEndElement();
}
@Override
protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception {
ValuedDataObject dataObject = (ValuedDataObject) element;
if (dataObject.getItemSubjectRef() != null && StringUtils.isNotEmpty(dataObject.getItemSubjectRef().getStructureRef())) {
writeDefaultAttribute(ATTRIBUTE_DATA_ITEM_REF, dataObject.getItemSubjectRef().getStructureRef(), xtw);
}
}
@Override
protected void writeExtensionChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
ValuedDataObject dObj = (ValuedDataObject)element;
protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
ValuedDataObject dataObject = (ValuedDataObject) element;
if (StringUtils.isNotEmpty(dObj.getId())) {
if (StringUtils.isNotEmpty(dataObject.getId()) && dataObject.getValue() != null) {
if (didWriteExtensionStartElement == false) {
xtw.writeStartElement(ELEMENT_EXTENSIONS);
......@@ -108,48 +123,23 @@ public class ValuedDataObjectXMLConverter extends BaseBpmnXMLConverter {
}
xtw.writeStartElement(ACTIVITI_EXTENSIONS_PREFIX, ELEMENT_DATA_VALUE, ACTIVITI_EXTENSIONS_NAMESPACE);
if (dObj.getValue() != null) {
if (dataObject.getValue() != null) {
String value = null;
if (dObj instanceof DateDataObject) {
DateTime dateTime = new DateTime((Date) dObj.getValue());
if (dataObject instanceof DateDataObject) {
DateTime dateTime = new DateTime((Date) dataObject.getValue());
value = ISODateTimeFormat.dateTimeNoMillis().print(dateTime);
} else {
value = dObj.getValue().toString();
value = dataObject.getValue().toString();
}
xtw.writeCharacters(value);
}
xtw.writeEndElement();
xtw.writeEndElement();
}
return didWriteExtensionStartElement;
}
@Override
protected void writeAdditionalChildElements(BaseElement element, XMLStreamWriter xtw) throws Exception {
}
private void parseChildElements(XMLStreamReader xtr, ValuedDataObject dataObject) throws Exception {
boolean readyWithDataObject = false;
try {
while (readyWithDataObject == false && xtr.hasNext()) {
xtr.next();
if (xtr.isStartElement() && ELEMENT_DATA_VALUE.equalsIgnoreCase(xtr.getLocalName())) {
String value = xtr.getElementText();
if (StringUtils.isNotEmpty(value)) {
if (dataObject instanceof DateDataObject) {
dataObject.setValue(DateTime.parse(value, ISODateTimeFormat.dateOptionalTimeParser()).toDate());
} else {
dataObject.setValue(value);
}
}
} else if (xtr.isEndElement() && ELEMENT_DATA_OBJECT.equalsIgnoreCase(xtr.getLocalName())) {
readyWithDataObject = true;
}
}
} catch (Exception e) {
LOGGER.warn("Error parsing data object child elements", e);
}
}
}
......@@ -30,16 +30,16 @@ import org.apache.commons.lang3.StringUtils;
public class ActivitiListenerExport implements BpmnXMLConstants {
public static boolean writeListeners(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception {
if(element instanceof HasExecutionListeners) {
if (element instanceof HasExecutionListeners) {
didWriteExtensionStartElement = writeListeners(ELEMENT_EXECUTION_LISTENER, ((HasExecutionListeners) element).getExecutionListeners(), didWriteExtensionStartElement, xtw);
}
// In case of a usertaks, also add task-listeners
if(element instanceof UserTask) {
if (element instanceof UserTask) {
didWriteExtensionStartElement = writeListeners(ELEMENT_TASK_LISTENER, ((UserTask) element).getTaskListeners(), didWriteExtensionStartElement, xtw);
}
// In case of a process-element, write the event-listeners
if(element instanceof Process) {
if (element instanceof Process) {
didWriteExtensionStartElement = writeEventListeners(((Process) element).getEventListeners(), didWriteExtensionStartElement, xtw);
}
......
......@@ -46,32 +46,43 @@ public class DataObjectConverterTest extends AbstractConverterTest {
assertEquals("start1", flowElement.getId());
// verify the main process data objects
List<ValuedDataObject> dataObjects = model.getProcess(null).getDataObjects();
assertEquals(6, dataObjects.size());
List<ValuedDataObject> dataObjects = model.getMainProcess().getDataObjects();
assertEquals(7, dataObjects.size());
for (ValuedDataObject dataObj : dataObjects) {
if (dataObj.getId().equals("dObj1")) {
assertEquals("StringTest", dataObj.getName());
assertEquals("xsd:string", dataObj.getItemSubjectRef().getStructureRef());
} else if (dataObj.getId().equals("dObj2")) {
assertEquals("BooleanTest", dataObj.getName());
assertEquals("xsd:boolean", dataObj.getItemSubjectRef().getStructureRef());
} else if (dataObj.getId().equals("dObj3")) {
assertEquals("DateTest", dataObj.getName());
assertEquals("xsd:datetime", dataObj.getItemSubjectRef().getStructureRef());
} else if (dataObj.getId().equals("dObj4")) {
assertEquals("DoubleTest", dataObj.getName());
assertEquals("xsd:double", dataObj.getItemSubjectRef().getStructureRef());
} else if (dataObj.getId().equals("dObj5")) {
assertEquals("IntegerTest", dataObj.getName());
assertEquals("xsd:int", dataObj.getItemSubjectRef().getStructureRef());
} else {
assertEquals("dObj6", dataObj.getId());
assertEquals("LongTest", dataObj.getName());
assertEquals("xsd:long", dataObj.getItemSubjectRef().getStructureRef());
}
Map<String, ValuedDataObject> objectMap = new HashMap<String, ValuedDataObject>();
for (ValuedDataObject valueObj : dataObjects) {
objectMap.put(valueObj.getId(), valueObj);
}
ValuedDataObject dataObj = objectMap.get("dObj1");
assertEquals("dObj1", dataObj.getId());
assertEquals("StringTest", dataObj.getName());
assertEquals("xsd:string", dataObj.getItemSubjectRef().getStructureRef());
dataObj = objectMap.get("dObj2");
assertEquals("BooleanTest", dataObj.getName());
assertEquals("xsd:boolean", dataObj.getItemSubjectRef().getStructureRef());
dataObj = objectMap.get("dObj3");
assertEquals("DateTest", dataObj.getName());
assertEquals("xsd:datetime", dataObj.getItemSubjectRef().getStructureRef());
dataObj = objectMap.get("dObj4");
assertEquals("DoubleTest", dataObj.getName());
assertEquals("xsd:double", dataObj.getItemSubjectRef().getStructureRef());
dataObj = objectMap.get("dObj5");
assertEquals("IntegerTest", dataObj.getName());
assertEquals("xsd:int", dataObj.getItemSubjectRef().getStructureRef());
dataObj = objectMap.get("dObj6");
assertEquals("LongTest", dataObj.getName());
assertEquals("xsd:long", dataObj.getItemSubjectRef().getStructureRef());
dataObj = objectMap.get("dObjWithoutType");
assertEquals("UnknownTypeTest", dataObj.getName());
assertEquals("xsd:string", dataObj.getItemSubjectRef().getStructureRef());
flowElement = model.getMainProcess().getFlowElement("userTask1");
assertNotNull(flowElement);
assertTrue(flowElement instanceof UserTask);
......@@ -90,12 +101,12 @@ public class DataObjectConverterTest extends AbstractConverterTest {
dataObjects = subProcess.getDataObjects();
assertEquals(6, dataObjects.size());
Map<String, ValuedDataObject> objectMap = new HashMap<String, ValuedDataObject>();
objectMap = new HashMap<String, ValuedDataObject>();
for (ValuedDataObject valueObj : dataObjects) {
objectMap.put(valueObj.getId(), valueObj);
}
ValuedDataObject dataObj = objectMap.get("dObj7");
dataObj = objectMap.get("dObj7");
assertEquals("dObj7", dataObj.getId());
assertEquals("StringSubTest", dataObj.getName());
assertEquals("xsd:string", dataObj.getItemSubjectRef().getStructureRef());
......
......@@ -12,6 +12,7 @@ import java.util.List;
import java.util.Map;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.ExtensionElement;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.SubProcess;
......@@ -104,6 +105,12 @@ public class ValuedDataObjectConverterTest extends AbstractConverterTest {
assertEquals("xsd:long", dataObj.getItemSubjectRef().getStructureRef());
assertTrue(dataObj.getValue() instanceof Long);
assertEquals(new Long(-123456), dataObj.getValue());
assertEquals(1, dataObj.getExtensionElements().size());
List<ExtensionElement> testValues = dataObj.getExtensionElements().get("testvalue");
assertNotNull(testValues);
assertEquals(1, testValues.size());
assertEquals("testvalue", testValues.get(0).getName());
assertEquals("test", testValues.get(0).getElementText());
flowElement = model.getMainProcess().getFlowElement("userTask1");
assertNotNull(flowElement);
......
......@@ -7,6 +7,7 @@
<dataObject id="dObj4" name="DoubleTest" itemSubjectRef="xsd:double"/>
<dataObject id="dObj5" name="IntegerTest" itemSubjectRef="xsd:int"/>
<dataObject id="dObj6" name="LongTest" itemSubjectRef="xsd:long"/>
<dataObject id="dObjWithoutType" name="UnknownTypeTest"/>
<startEvent id="start1"></startEvent>
<endEvent id="end1"></endEvent>
<subProcess id="subprocess1" name="subProcess">
......
......@@ -29,6 +29,7 @@
<dataObject id="dObj6" name="LongTest" itemSubjectRef="xsd:long">
<extensionElements>
<activiti:value>-123456</activiti:value>
<activiti:testvalue>test</activiti:testvalue>
</extensionElements>
</dataObject>
<startEvent id="start1"></startEvent>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册