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; }