diff options
Diffstat (limited to 'wso2bpel-ext/wso2bpel-core/BPEL4RESTLight/src/main/java/de/unistuttgart/iaas/bpel/util/BPELVariableInjectionUtil.java')
-rw-r--r-- | wso2bpel-ext/wso2bpel-core/BPEL4RESTLight/src/main/java/de/unistuttgart/iaas/bpel/util/BPELVariableInjectionUtil.java | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/wso2bpel-ext/wso2bpel-core/BPEL4RESTLight/src/main/java/de/unistuttgart/iaas/bpel/util/BPELVariableInjectionUtil.java b/wso2bpel-ext/wso2bpel-core/BPEL4RESTLight/src/main/java/de/unistuttgart/iaas/bpel/util/BPELVariableInjectionUtil.java deleted file mode 100644 index 2298bf1..0000000 --- a/wso2bpel-ext/wso2bpel-core/BPEL4RESTLight/src/main/java/de/unistuttgart/iaas/bpel/util/BPELVariableInjectionUtil.java +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Copyright 2011 - * - * @author Uwe Breitenbuecher - * - * This class provides some methods for BPEL-Variable-Injection - */ - package de.unistuttgart.iaas.bpel.util; - -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.ode.bpel.common.FaultException; -import org.apache.ode.bpel.runtime.extension.ExtensionContext; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - - -public class BPELVariableInjectionUtil { - - /** - * This method serializes a Node into a String - * - * @param node - * @return String representation of the node - */ - public static String nodeToString(Node node) { - try { - - if (node != null && node.getLocalName().equals("temporary-simple-type-wrapper")) { - // this is a temporary hack for string variables and the likes, - // as you may see ODE wrappes simpletypes in wrapper-elements, - // but this isn't great here - return node.getTextContent(); - } - - // Create transformer - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - - // Transform Node into a String representation by regarding some - // formatting rules - StringWriter stringWriter = new StringWriter(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "3"); - transformer.transform(new DOMSource(node), new StreamResult(stringWriter)); - - // Return build string - return stringWriter.toString(); - } catch (Exception e) { - e.printStackTrace(); - } - - // If any error occurs, return empty string - return ""; - } - - /** - * This method executes the BPEL-Variable-Injection. It replaces referenced - * BPEL-Variables with corresponding content - * - * @param context ExtensionContext of process - * @param element DOM-Representation of the BPEL-Code in which the - * Variable-Injection has to be done - * @return modified BPEL-Code as DOM-Representation - */ - public static Element replaceExtensionVariables(ExtensionContext context, Element element) { - - try { - String BPELCodeAsString; - - // Transform BPEL-Code (DOM-Representation) into a String - BPELCodeAsString = nodeToString(element); - - // Find and replace referenced BPEL-Variables - int startIndex = BPELCodeAsString.indexOf("$bpelvar["); - if (startIndex != -1) { - while (startIndex != -1) { - int endIndex = startIndex; - while (BPELCodeAsString.charAt(endIndex) != ']') { - endIndex++; - } - - // Extract name of referenced variable - String variableName = BPELCodeAsString.substring(startIndex + 9, endIndex); - - // Extract content of referenced variable - Node variableContent = context.readVariable(variableName); - - System.out.println("Replacing variable " + variableName + "(" + variableContent.getNamespaceURI() + " " + variableContent.getLocalName() + ") with content: \n"); - System.out.println("NodeValue(): " + variableContent.getNodeValue() + "\n"); - System.out.println("TextContent(): " + variableContent.getTextContent()); - System.out.println("The full bpel script (before change) as string: \n" + BPELCodeAsString + "\n"); - - // Replace variable-reference with corresponding content - BPELCodeAsString = BPELCodeAsString.replace("$bpelvar[" + variableName + "]", nodeToString(variableContent)); - - System.out.println("The full bpel script as string: \n" + BPELCodeAsString + "\n"); - startIndex = BPELCodeAsString.indexOf("$bpelvar["); - } - - // Transform modified code (String) into DOM-Representation - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - - InputSource inputSource = new InputSource(); - inputSource.setCharacterStream(new StringReader(BPELCodeAsString)); - Document newDocument = builder.parse(inputSource); - - // Return first child (because Document root is not needed) - return (Element) newDocument.getFirstChild(); - - } else { - - // If no referenced variables are found, return original code - return element; - } - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } catch (SAXException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (FaultException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return null; - } - -} |