public static boolean writeFlowableListeners(XMLStreamWriter xtw, String xmlElementName, List<FlowableListener> listeners, boolean didWriteExtensionStartElement) throws Exception {
if (listeners != null) {
for (FlowableListener listener : listeners) {
if (!didWriteExtensionStartElement) {
xtw.writeStartElement(CmmnXmlConstants.ELEMENT_EXTENSION_ELEMENTS);
didWriteExtensionStartElement = true;
}
xtw.writeStartElement(CmmnXmlConstants.FLOWABLE_EXTENSIONS_PREFIX, xmlElementName, CmmnXmlConstants.FLOWABLE_EXTENSIONS_NAMESPACE);
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_EVENT, listener.getEvent(), xtw);
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_SOURCE_STATE, listener.getSourceState(), xtw);
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_TARGET_STATE, listener.getTargetState(), xtw);
if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(listener.getImplementationType())) {
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_CLASS, listener.getImplementation(), xtw);
} else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.equals(listener.getImplementationType())) {
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_EXPRESSION, listener.getImplementation(), xtw);
} else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals(listener.getImplementationType())) {
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_DELEGATEEXPRESSION, listener.getImplementation(), xtw);
}
CmmnXmlUtil.writeDefaultAttribute(CmmnXmlConstants.ATTRIBUTE_LISTENER_ON_TRANSACTION, listener.getOnTransaction(), xtw);
FieldExport.writeFieldExtensions(listener.getFieldExtensions(), true, xtw);
xtw.writeEndElement();
}
}
return didWriteExtensionStartElement;
}