public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); Node node = (Node) parser.getCurrent(); // determine type of event definition, so the correct type of node // can be generated org.w3c.dom.Node xmlNode = element.getFirstChild(); while (xmlNode != null) { String nodeName = xmlNode.getNodeName(); if ("signalEventDefinition".equals(nodeName)) { // reuse already created EventNode handleSignalNode(node, element, uri, localName, parser); break; } else if ("messageEventDefinition".equals(nodeName)) { // reuse already created EventNode handleMessageNode(node, element, uri, localName, parser); break; } else if ("timerEventDefinition".equals(nodeName)) { // create new timerNode TimerNode timerNode = new TimerNode(); timerNode.setId(node.getId()); timerNode.setName(node.getName()); timerNode.setMetaData("UniqueId", node.getMetaData().get("UniqueId")); node = timerNode; handleTimerNode(node, element, uri, localName, parser); break; } else if ("conditionalEventDefinition".equals(nodeName)) { // create new stateNode StateNode stateNode = new StateNode(); stateNode.setId(node.getId()); stateNode.setName(node.getName()); stateNode.setMetaData("UniqueId", node.getMetaData().get("UniqueId")); node = stateNode; handleStateNode(node, element, uri, localName, parser); break; } else if ("linkEventDefinition".equals(nodeName)) { CatchLinkNode linkNode = new CatchLinkNode(); linkNode.setId(node.getId()); node = linkNode; handleLinkNode(element, node, xmlNode, parser); break; } xmlNode = xmlNode.getNextSibling(); } NodeContainer nodeContainer = (NodeContainer) parser.getParent(); nodeContainer.addNode(node); return node; }
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException { final Element element = parser.endElementBuilder(); Node node = (Node) parser.getCurrent(); // determine type of event definition, so the correct type of node // can be generated boolean found = false; org.w3c.dom.Node xmlNode = element.getFirstChild(); while (xmlNode != null) { String nodeName = xmlNode.getNodeName(); if ("multiInstanceLoopCharacteristics".equals(nodeName)) { // create new timerNode ForEachNode forEachNode = new ForEachNode(); forEachNode.setId(node.getId()); forEachNode.setName(node.getName()); for (org.kie.api.definition.process.Node subNode : ((CompositeContextNode) node).getNodes()) { forEachNode.addNode(subNode); } forEachNode.setMetaData("UniqueId", ((CompositeContextNode) node).getMetaData("UniqueId")); forEachNode.setMetaData( ProcessHandler.CONNECTIONS, ((CompositeContextNode) node).getMetaData(ProcessHandler.CONNECTIONS)); VariableScope v = (VariableScope) ((CompositeContextNode) node).getDefaultContext(VariableScope.VARIABLE_SCOPE); ((VariableScope) ((CompositeContextNode) forEachNode.internalGetNode(2)) .getDefaultContext(VariableScope.VARIABLE_SCOPE)) .setVariables(v.getVariables()); node = forEachNode; handleForEachNode(node, element, uri, localName, parser); found = true; break; } xmlNode = xmlNode.getNextSibling(); } if (!found) { handleCompositeContextNode(node, element, uri, localName, parser); } NodeContainer nodeContainer = (NodeContainer) parser.getParent(); nodeContainer.addNode(node); return node; }