You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hise-commits@incubator.apache.org by rr...@apache.org on 2010/01/13 23:20:58 UTC
svn commit: r898994 [4/7] - in /incubator/hise/trunk: ./ hise-services/
hise-services/src/main/java/org/apache/hise/api/
hise-services/src/main/java/org/apache/hise/dao/
hise-services/src/main/java/org/apache/hise/engine/
hise-services/src/main/java/or...
Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise.utils;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+/**
+ * Utility class used to merge presentation parameters into template strings using regexp replace.
+ * @author Witek WoÅejszo
+ */
+public class RegexpTemplateEngine {
+
+ private final Log log = LogFactory.getLog(RegexpTemplateEngine.class);
+
+ /**
+ * Replaces occurrences of "$key$" in a template string with values provided in presentationParameters.
+ * Removes blocks starting with ?IF-key? and ending with ?ENDIF-key? if key is not present in presentationParameters.
+ * @param template The template String.
+ * @param presentationParameterValues Presentation parameters.
+ * @return The template string with filled in values.
+ */
+ public String merge(String template, Map<String, Object> presentationParameterValues) {
+
+ Pattern blockPattern = Pattern.compile("\\?IF\\-[A-Za-z0-9]*\\?.*\\?ENDIF\\-[A-Za-z0-9]*\\?");
+ Matcher m = blockPattern.matcher(template);
+
+ //- remove blocks from template if the key is not in presentationParameterValues.keySet or value is null
+ //- remove block markers otherwise
+ while (m.find() == true) {
+
+ String key = m.group().substring(4).replaceAll("\\?.*$", "");
+
+ if (presentationParameterValues.get(key) == null) {
+ template = m.replaceFirst("");
+ } else {
+ template = template.replace("?IF-" + key + "?", "").replace("?ENDIF-" + key + "?", "");
+ }
+
+ m = blockPattern.matcher(template);
+ }
+
+ Pattern replacePattern = Pattern.compile("\\$[A-Za-z0-9]*\\$");
+ m = replacePattern.matcher(template);
+
+ while (m.find() == true) {
+
+ String key = m.group().replace("$", "");
+ Object substitution = ((presentationParameterValues == null) ? null : presentationParameterValues.get(key));
+ String substitutionString = (substitution == null) ? "error:" + key : substitution.toString();
+
+ if (substitutionString == null) {
+
+ log.warn("Cannot find presentation parameter: " + key);
+
+ } else {
+
+ template = m.replaceFirst(substitutionString);
+ m = replacePattern.matcher(template);
+ }
+ }
+
+ return template;
+ }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/RegexpTemplateEngine.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TaskXmlUtils.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TaskXmlUtils.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TaskXmlUtils.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TaskXmlUtils.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,202 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathFactory;
+import javax.xml.xpath.XPathFunction;
+import javax.xml.xpath.XPathFunctionException;
+import javax.xml.xpath.XPathFunctionResolver;
+
+import net.sf.saxon.dom.NodeOverNodeInfo;
+import net.sf.saxon.om.NodeInfo;
+
+import org.apache.commons.lang.Validate;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hise.dao.Message;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+
+public class TaskXmlUtils {
+
+ private final Log __log = LogFactory.getLog(TaskXmlUtils.class);
+
+ private XPathFactory xPathFactory = null;
+
+ private NamespaceContext namespaceContext;
+
+ private Map<String, Message> input;
+ private Map<String, Message> output;
+
+ public TaskXmlUtils(NamespaceContext namespaceContext, Map<String, Message> input, Map<String, Message> output) {
+ super();
+ this.xPathFactory = DOMUtils.getXPathFactory();
+ this.namespaceContext = namespaceContext;
+ this.input = input;
+ this.output = output;
+ }
+
+ /**
+ * Creates {@link XPath} aware of request namespaces.
+ */
+ synchronized XPath createXPathInstance() {
+
+ XPath xpath = this.xPathFactory.newXPath();
+
+ xpath.setNamespaceContext(this.namespaceContext);
+ xpath.setXPathFunctionResolver(new XPathFunctionResolver() {
+
+ public XPathFunction resolveFunction(QName functionName, int arity) {
+
+ if (functionName == null) {
+ throw new NullPointerException("The function name cannot be null.");
+ }
+
+ if (functionName.equals(new QName("http://www.example.org/WS-HT", "getInput", "htd"))) {
+
+ return new GetXPathFunction(input);
+ }
+
+ if (functionName.equals(new QName("http://www.example.org/WS-HT", "getOutput", "htd"))) {
+
+ return new GetXPathFunction(output);
+ }
+
+ return null;
+ }
+ });
+
+ return xpath;
+ }
+
+ /**
+ * Evaluates XPath expression in context of the Task. Expression can contain
+ * XPath Extension functions as defined by WS-HumanTask v1. Following
+ * XPath functions are implemented:
+ * <ul>
+ * <li> {@link GetInputXPathFunction} </li>
+ * <li> {@link GetOutputXPathFunction} </li>
+ * </ul>
+ * @param xPathString The XPath 1.0 expression.
+ * @param returnType The desired return type. See {@link XPathConstants}.
+ * @return The result of evaluating the <code>XPath</code> function as an <code>Object</code>.
+ */
+ public Object evaluateXPath(String xPathString, QName returnType) {
+
+ Validate.notNull(xPathString);
+ Validate.notNull(returnType);
+
+ Object o = null;
+
+ XPath xpath = createXPathInstance();
+
+ try {
+
+ //TODO create empty document only once
+ DocumentBuilder builder = DOMUtils.getDocumentBuilderFactory().newDocumentBuilder();
+ Document emptyDocument;
+ emptyDocument = builder.parse(new ByteArrayInputStream("<empty/>".getBytes()));
+ XPathExpression expr = xpath.compile(xPathString);
+ o = expr.evaluate(emptyDocument, returnType);
+ __log.debug("evaluated " + o);
+ if (o instanceof NodeInfo) {
+ NodeInfo o2 = (NodeInfo) o;
+ Node o3 = NodeOverNodeInfo.wrap(o2);
+ __log.debug("returned " + DOMUtils.domToString(o3));
+ return o3;
+ } else {
+ return o;
+ }
+ } catch (Exception e) {
+ __log.error("Error evaluating XPath: " + xPathString, e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Implements getInput {@link XPathFunction} - get the data for the part of the task's input message.
+ * @author Witek WoÅejszo
+ */
+ private static class GetXPathFunction implements XPathFunction {
+
+ private final Log log = LogFactory.getLog(GetXPathFunction.class);
+ private Map<String, Message> data;
+
+
+ public GetXPathFunction(Map<String, Message> data) {
+ this.data = data;
+ }
+
+ /**
+ * <p>Evaluate the function with the specified arguments.</p>
+ * @see XPathFunction#evaluate(List)
+ * @param args The arguments, <code>null</code> is a valid value.
+ * @return The result of evaluating the <code>XPath</code> function as an <code>Object</code>.
+ * @throws XPathFunctionException If <code>args</code> cannot be evaluated with this <code>XPath</code> function.
+ */
+ public Object evaluate(List args) throws XPathFunctionException {
+
+ String partName = (String) args.get(0);
+
+ Message message = data.get(partName);
+ Document document = null;
+
+ if (message == null) {
+ throw new XPathFunctionException("Task's input does not contain partName: " + args.get(0));
+ }
+
+// try {
+//
+// document = message.getDomDocument();
+//
+// } catch (ParserConfigurationException e) {
+//
+// throw new XPathFunctionException(e);
+// } catch (SAXException e) {
+//
+// throw new XPathFunctionException(e);
+// } catch (IOException e) {
+//
+// throw new XPathFunctionException(e);
+// }
+
+ if (document == null) return null;
+ NodeList l = document.getElementsByTagName(partName);
+ Validate.isTrue(l.getLength() == 1, "Exactly one part must exist.");
+ return l.item(0);
+ }
+
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/TaskXmlUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,117 @@
+package org.apache.hise.utils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import net.sf.saxon.Configuration;
+import net.sf.saxon.dom.DocumentWrapper;
+import net.sf.saxon.dom.NodeOverNodeInfo;
+import net.sf.saxon.expr.JPConverter;
+import net.sf.saxon.functions.FunctionLibrary;
+import net.sf.saxon.functions.FunctionLibraryList;
+import net.sf.saxon.functions.JavaExtensionLibrary;
+import net.sf.saxon.om.NodeInfo;
+import net.sf.saxon.om.StructuredQName;
+import net.sf.saxon.om.ValueRepresentation;
+import net.sf.saxon.query.DynamicQueryContext;
+import net.sf.saxon.query.StaticQueryContext;
+import net.sf.saxon.query.XQueryExpression;
+import net.sf.saxon.trans.XPathException;
+import net.sf.saxon.value.SequenceType;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Node;
+
+public class XQueryEvaluator {
+ private static Log __log = LogFactory.getLog(XQueryEvaluator.class);
+
+ public static ThreadLocal<Object> contextObjectTL = new ThreadLocal<Object>() ;
+
+ private Map<QName, Object> vars = new HashMap<QName, Object>();
+ private Configuration config = Configuration.makeConfiguration(null, null);
+ private JavaExtensionLibrary jel = new JavaExtensionLibrary(config);
+
+ private Object contextObject;
+
+ public void bindVariable(QName var, Object value) {
+ vars.put(var, value);
+ }
+
+ public void declareJavaClass(String uri, Class clazz) {
+ jel.declareJavaClass(uri, clazz);
+ }
+
+ public void setContextObject(Object contextObject) {
+ this.contextObject = contextObject;
+ }
+
+ public static ValueRepresentation convertJavaToSaxon(Object obj) {
+ try {
+ if (obj == null) obj = "";
+ return JPConverter.allocate(obj.getClass(), null).convert(obj, null);
+ } catch (XPathException e) {
+ throw new RuntimeException("", e);
+ }
+ }
+
+ public List evaluateExpression(String expr, org.w3c.dom.Node contextNode) {
+ try {
+ contextObjectTL.set(contextObject);
+ {
+ FunctionLibraryList fll = new FunctionLibraryList();
+ fll.addFunctionLibrary(jel);
+ config.setExtensionBinder("java", fll);
+ }
+
+ StaticQueryContext sqc = new StaticQueryContext(config);
+ for (QName var : vars.keySet()) {
+ sqc.declareGlobalVariable(StructuredQName.fromClarkName(var.toString()), SequenceType.SINGLE_ITEM, convertJavaToSaxon(vars.get(var)) , false);
+ }
+ DynamicQueryContext dqc = new DynamicQueryContext(config);
+ XQueryExpression e = sqc.compileQuery(expr);
+
+ if (contextNode != null) {
+ if (!(contextNode instanceof Document || contextNode instanceof DocumentFragment) ) {
+ try {
+ contextNode = DOMUtils.parse(DOMUtils.domToString(contextNode));
+ } catch (Exception e1) {
+ throw new RuntimeException("", e1);
+ }
+// DocumentFragment frag = contextNode.getOwnerDocument().createDocumentFragment();
+// frag.appendChild(contextNode);
+// contextNode = frag;
+ }
+ dqc.setContextItem(new DocumentWrapper(contextNode, "", config));
+ }
+
+ List value = e.evaluate(dqc);
+ List value2 = new ArrayList();
+ for (Object o : value) {
+ Object o2 = o;
+ if (o2 instanceof NodeInfo) {
+ try {
+ Node o3 = DOMUtils.parse(DOMUtils.domToString(NodeOverNodeInfo.wrap((NodeInfo) o2))).getDocumentElement();
+ o2 = o3;
+ } catch (Exception e1) {
+ throw new RuntimeException("Error converting result", e1);
+ }
+ }
+ value2.add(o2);
+ }
+ __log.debug("result for expression " + expr + " " + value2 + " value class " + (value2 == null ? null : value2.getClass()));
+ return value2;
+ } catch (XPathException e) {
+ __log.error("", e);
+ throw new RuntimeException(e);
+ } finally {
+ contextObjectTL.set(null);
+ }
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XQueryEvaluator.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XmlUtils.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XmlUtils.java?rev=898994&r1=898993&r2=898994&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XmlUtils.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/utils/XmlUtils.java Wed Jan 13 23:20:54 2010
@@ -34,32 +34,32 @@
*/
public class XmlUtils {
- public static final QName SCHEMA_STRING = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "string");
- public static final QName SCHEMA_DOUBLE = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "double");
- public static final QName SCHEMA_BOOLEAN = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "boolean");
-
- /**
- * Calculates XPath return type based on XMLSchema type.
- * @param type Schema type: string, boolean or double.
- * @return The return type. See {@link XPathConstants}.
- */
- public QName getReturnType(QName type) {
-
- if (type.equals(SCHEMA_STRING)) {
-
- return XPathConstants.STRING;
-
- } if (type.equals(SCHEMA_DOUBLE)) {
-
- return XPathConstants.NUMBER;
-
- } if (type.equals(SCHEMA_BOOLEAN)) {
-
- return XPathConstants.BOOLEAN;
- }
-
- throw new RuntimeException("Cannot map: " + type + " to XPath result type.");
- }
+// public static final QName SCHEMA_STRING = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "string");
+// public static final QName SCHEMA_DOUBLE = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "double");
+// public static final QName SCHEMA_BOOLEAN = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "boolean");
+//
+// /**
+// * Calculates XPath return type based on XMLSchema type.
+// * @param type Schema type: string, boolean or double.
+// * @return The return type. See {@link XPathConstants}.
+// */
+// public QName getReturnType(QName type) {
+//
+// if (type.equals(SCHEMA_STRING)) {
+//
+// return XPathConstants.STRING;
+//
+// } if (type.equals(SCHEMA_DOUBLE)) {
+//
+// return XPathConstants.NUMBER;
+//
+// } if (type.equals(SCHEMA_BOOLEAN)) {
+//
+// return XPathConstants.BOOLEAN;
+// }
+//
+// throw new RuntimeException("Cannot map: " + type + " to XPath result type.");
+// }
public Object getElementByLocalPart(List<Object> any, String localPart) {
for (Object o : any) {
@@ -98,4 +98,8 @@
//
// }
// }
+
+ public static <T> T notNull(T a, T defaultValue) {
+ return a == null ? defaultValue : a;
+ }
}
Added: incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml (added)
+++ incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+ <persistence-unit name="org.apache.hise">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <class>org.apache.hise.dao.Attachment</class>
+ <class>org.apache.hise.dao.Comment</class>
+ <class>org.apache.hise.dao.Deadline</class>
+ <class>org.apache.hise.dao.Fault</class>
+ <class>org.apache.hise.dao.JpaBase</class>
+ <class>org.apache.hise.dao.Message</class>
+ <class>org.apache.hise.dao.OrgEntity</class>
+ <class>org.apache.hise.dao.TaskOrgEntity</class>
+ <class>org.apache.hise.dao.PresentationParameter</class>
+ <class>org.apache.hise.dao.Task</class>
+ <class>org.apache.hise.dao.Job</class>
+ <exclude-unlisted-classes/>
+ </persistence-unit>
+</persistence>
Propchange: incubator/hise/trunk/hise-services/src/main/resources/org/apache/hise/persistence.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/ClientTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/ClientTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/ClientTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/ClientTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,15 @@
+package org.apache.hise;
+
+import junit.framework.Assert;
+
+import org.apache.hise.engine.jaxws.HISEJaxWSClient;
+import org.apache.hise.utils.DOMUtils;
+import org.junit.Test;
+
+public class ClientTest {
+ @Test
+ public void testEpr() throws Exception {
+ HISEJaxWSClient c = new HISEJaxWSClient();
+ Assert.assertEquals("http://localhost:8082/ClaimsResponseService/", c.getAddressFromEpr(DOMUtils.parse(getClass().getResourceAsStream("/epr2.xml")).getDocumentElement()));
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/ClientTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+
+import org.apache.hise.engine.store.CompileException;
+import org.apache.hise.engine.store.HumanInteractionsCompiler;
+import org.apache.hise.lang.HumanInteractions;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+
+public class CompilerTest {
+ @Test
+ public void testCompile() throws Exception {
+ Resource htdXml = new ClassPathResource("testHtd1.xml");
+ HumanInteractions hi = HumanInteractionsCompiler.compile(htdXml);
+ Set<QName> s = hi.getTaskDefinitions().keySet();
+ Assert.assertNotNull(hi);
+ Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Task1")));
+ Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Task2")));
+ Assert.assertTrue(s.contains(QName.valueOf("{http://www.insurance.example.com/claims}Task3")));
+ Assert.assertEquals("someOutput", hi.getTaskDefinitions().get(QName.valueOf("{http://www.insurance.example.com/claims}Task1")).getOutcomeExpression());
+ }
+
+ @Test
+ public void testDuplicateTaskDef() throws Exception {
+ Resource htdXml = new ClassPathResource("duplicateTaskDef.xml");
+ try {
+ HumanInteractions hi = HumanInteractionsCompiler.compile(htdXml);
+ } catch (CompileException e) {
+ Assert.assertTrue(e.getCause().getMessage().contains("Duplicate task found, name: {http://www.insurance.example.com/claims}Task1"));
+ return;
+ }
+ Assert.assertTrue(false);
+ }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/CompilerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/DaoTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/DaoTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/DaoTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/DaoTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,159 @@
+package org.apache.hise;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.hise.dao.GenericHumanRole;
+import org.apache.hise.dao.HISEDao;
+import org.apache.hise.dao.Job;
+import org.apache.hise.dao.Message;
+import org.apache.hise.dao.OrgEntity;
+import org.apache.hise.dao.Task;
+import org.apache.hise.dao.TaskOrgEntity;
+import org.apache.hise.dao.Task.Status;
+import org.apache.hise.dao.TaskOrgEntity.OrgEntityType;
+import org.apache.hise.lang.xsd.htda.TStatus;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.TransactionCallback;
+import org.springframework.transaction.support.TransactionTemplate;
+
+@ContextConfiguration(locations = "classpath:/dao.xml")
+public class DaoTest extends AbstractTransactionalJUnit4SpringContextTests {
+
+ @Autowired
+ private HISEDao hiseDao;
+
+ @Autowired
+ private JpaTransactionManager transactionManager;
+
+ private OrgEntity o, o2;
+
+ private Long addTask() throws Exception {
+ Assert.assertTrue(hiseDao != null);
+
+ o2 = new OrgEntity();
+ o2.setName("group1");
+ o2.setType(OrgEntityType.GROUP);
+ hiseDao.saveOrgEntity(o2);
+
+ o = new OrgEntity();
+ o.setName("user1");
+ o.setType(OrgEntityType.USER);
+ o.setUserPassword("abc");
+ o.getUserGroups().add(o2);
+ hiseDao.saveOrgEntity(o);
+
+ Task t = new Task();
+ t.setStatus(Status.CREATED);
+ t.setTaskDefinitionKey("asd");
+ t.setActualOwner(o);
+
+ t.getInput().put("abc", new Message("abc", "def"));
+ hiseDao.saveTask(t);
+ return t.getId();
+ }
+
+ private void addTask2() throws Exception {
+ addTask();
+ Task t = new Task();
+ t.setStatus(Status.READY);
+ t.setTaskDefinitionKey("asd2");
+ Set<TaskOrgEntity> pa = new HashSet<TaskOrgEntity>();
+ TaskOrgEntity x = new TaskOrgEntity();
+ x.setName("user1");
+ x.setType(OrgEntityType.USER);
+ x.setGenericHumanRole(GenericHumanRole.POTENTIALOWNERS);
+ x.setTask(t);
+ pa.add(x);
+ t.setPeopleAssignments(pa);
+ hiseDao.saveTask(t);
+ }
+
+ private void addTask3() throws Exception {
+ addTask();
+ Task t = new Task();
+ t.setStatus(Status.READY);
+ t.setTaskDefinitionKey("asd3");
+ Set<TaskOrgEntity> pa = new HashSet<TaskOrgEntity>();
+ TaskOrgEntity x = new TaskOrgEntity();
+ x.setName("group1");
+ x.setType(OrgEntityType.GROUP);
+ x.setGenericHumanRole(GenericHumanRole.POTENTIALOWNERS);
+ x.setTask(t);
+ pa.add(x);
+ t.setPeopleAssignments(pa);
+ hiseDao.saveTask(t);
+ }
+
+
+ @Test
+ public void testDao() throws Exception {
+ addTask();
+ }
+
+ @Test
+ public void testUserTasks() throws Exception {
+ addTask();
+ List<Task> r = hiseDao.getUserTasks(o, "", GenericHumanRole.ACTUALOWNER, "", Collections.EMPTY_LIST, "", null, 100);
+ Assert.assertEquals("asd", r.get(0).getTaskDefinitionKey());
+ }
+
+ @Test
+ public void testUserTasks2() throws Exception {
+ addTask2();
+ List<Task> r = hiseDao.getUserTasks(o, "", GenericHumanRole.POTENTIALOWNERS, "", Collections.EMPTY_LIST, "", null, 100);
+ Assert.assertEquals("asd2", r.get(0).getTaskDefinitionKey());
+ }
+
+ @Test
+ public void testInputs() throws Exception {
+ TransactionTemplate tt = new TransactionTemplate(transactionManager);
+ final Long tid = (Long) tt.execute(new TransactionCallback() {
+ public Object doInTransaction(TransactionStatus arg0) {
+ try {
+ return addTask();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ tt.execute(new TransactionCallback() {
+ public Object doInTransaction(TransactionStatus arg0) {
+ try {
+ Assert.assertTrue(hiseDao.loadTask(tid).getInput().get("abc").getMessage().equals("def"));
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+ });
+
+ }
+
+ @Test
+ public void testGrupQuery() throws Exception {
+ addTask3();
+ List<Task> r = hiseDao.getUserTasks(o, "", GenericHumanRole.POTENTIALOWNERS, "", Collections.EMPTY_LIST, "", null, 100);
+ Assert.assertEquals("asd3", r.get(0).getTaskDefinitionKey());
+ }
+
+ @Test
+ public void testJobs() throws Exception {
+ Job j = new Job();
+ j.setFire(new Date(1213L));
+ j.setAction("abc");
+ hiseDao.persist(j);
+
+ List<Job> r = hiseDao.listJobs(new Date(1214L), 12);
+ Assert.assertEquals("abc", r.get(0).getAction());
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/DaoTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MessageTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MessageTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MessageTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MessageTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.hise.dao.Message;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+
+/**
+ * {@link Message} tests.
+ * @author Witek WoÅejszo
+ */
+@Ignore
+public class MessageTest {
+
+// @Test
+// public void testGetDomDocument() throws ParserConfigurationException, SAXException, IOException {
+// Message message = new Message("<ClaimApprovalRequest><cust><firstname>witek</firstname></cust></ClaimApprovalRequest>");
+// Document doc = message.getDomDocument();
+// assertNotNull(doc);
+// }
+//
+// @Test
+// public void testGetRootNodeName() {
+// Message message = new Message("<ClaimApprovalRequest><cust><firstname>witek</firstname></cust></ClaimApprovalRequest>");
+// String r = message.getRootNodeName();
+// assertEquals("ClaimApprovalRequest", r);
+// }
+//
+// @Test
+// public void testGetRootNodeName_XML_WithProcessingInstruction() {
+// Message message = new Message("<?xml version=\"1.0\" encoding=\"UTF-8\"?><ClaimApprovalRequest><cust><firstname>witek</firstname></cust></ClaimApprovalRequest>");
+// String r = message.getRootNodeName();
+// assertEquals("ClaimApprovalRequest", r);
+// }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MessageTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockHiseDao.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockHiseDao.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockHiseDao.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockHiseDao.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,26 @@
+package org.apache.hise;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.hise.dao.GenericHumanRole;
+import org.apache.hise.dao.HISEDao;
+import org.apache.hise.dao.OrgEntity;
+import org.apache.hise.dao.Task;
+import org.apache.hise.dao.Task.Status;
+import org.apache.hise.lang.xsd.htda.TStatus;
+
+public class MockHiseDao extends HISEDao {
+
+ @Override
+ public List<Task> getUserTasks(OrgEntity user, String taskType, GenericHumanRole genericHumanRole, String workQueue, List<TStatus> status, String whereClause, String createdOnClause, Integer maxTasks) {
+ Task t = new Task();
+ t.setId(123L);
+ t.setTaskDefinitionKey("{asdf}asdf");
+ t.setStatus(Status.CREATED);
+ t.setCreatedOn(new Date(1234L));
+ return Collections.singletonList(t);
+ }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockHiseDao.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTask.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTask.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTask.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTask.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,9 @@
+package org.apache.hise;
+
+import org.apache.hise.runtime.Task;
+
+public class MockTask extends Task {
+ public MockTask() {
+ super();
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTaskOperationsImpl.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTaskOperationsImpl.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTaskOperationsImpl.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTaskOperationsImpl.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,22 @@
+package org.apache.hise;
+
+import org.apache.hise.dao.OrgEntity;
+import org.apache.hise.dao.TaskOrgEntity.OrgEntityType;
+import org.apache.hise.engine.jaxws.TaskOperationsImpl;
+
+public class MockTaskOperationsImpl extends TaskOperationsImpl {
+
+ @Override
+ protected String getUserString() {
+ return "user1";
+ }
+
+ @Override
+ protected OrgEntity loadUser() {
+ OrgEntity oe = new OrgEntity();
+ oe.setName("user1");
+ oe.setType(OrgEntityType.USER);
+ return oe;
+ }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/MockTaskOperationsImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hise.utils.RegexpTemplateEngine;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+/**
+ * Tests for {@link RegexpTemplateEngine}.
+ * @author Witek WoÅejszo
+ */
+public class RegexpTemplateEngineTest {
+
+ @Test
+ public void mergeTest1() {
+
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+ String r1 = te.merge("Raz dwa trzy.", null);
+
+ Assert.assertEquals("Raz dwa trzy.", r1);
+
+ Map<String, Object> pp = new HashMap<String, Object>();
+
+ pp.put("Raz", "1");
+ String r2 = te.merge("$Raz$ dwa trzy.", pp);
+ Assert.assertEquals("1 dwa trzy.", r2);
+
+ pp.put("dwa", "2");
+ String r3 = te.merge("$Raz$ $dwa$ trzy.", pp);
+ Assert.assertEquals("1 2 trzy.", r3);
+
+ pp.put("trzy", "3");
+ String r4 = te.merge("$Raz$ $dwa$ $trzy$.", pp);
+ Assert.assertEquals("1 2 3.", r4);
+ }
+
+ @Test
+ public void mergeTest2() {
+
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+
+ Map<String, Object> pp = new HashMap<String, Object>();
+ pp.put("euroAmount", Double.valueOf(1));
+ pp.put("firstname", "jan");
+ pp.put("lastname", "kowalski");
+
+ String r1 = te.merge("Approve the insurance claim for â¬$euroAmount$ on behalf of $firstname$ $lastname$", pp);
+ Assert.assertEquals("Approve the insurance claim for â¬1.0 on behalf of jan kowalski", r1);
+ }
+
+ @Test
+ public void removeTest1() {
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+ Map<String, Object> pp = new HashMap<String, Object>();
+ //no x in pp
+ String r1 = te.merge("?IF-x?bla bla bla?ENDIF-x?", pp);
+ Assert.assertEquals("", r1);
+ }
+
+ @Test
+ public void noRemoveTest1() {
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+ Map<String, Object> pp = new HashMap<String, Object>();
+ pp.put("x", "1");
+ pp.put("y", "bleh");
+ String r1 = te.merge("?IF-x?bla $y$ bla?ENDIF-x?", pp);
+ Assert.assertEquals("bla bleh bla", r1);
+ }
+
+ @Test
+ public void noRemoveTest2() {
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+ Map<String, Object> pp = new HashMap<String, Object>();
+ pp.put("correctedItemName1", "pozycja");
+ pp.put("correctedItemNewNetValue1", "1");
+ String r1 = te.merge("?IF-correctedItemName1?Pozycja: $correctedItemName1$ Na: $correctedItemNewNetValue1$?ENDIF-correctedItemName1?", pp);
+ Assert.assertEquals("Pozycja: pozycja Na: 1", r1);
+ }
+
+ @Test
+ public void noRemoveTest3() {
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+ Map<String, Object> pp = new HashMap<String, Object>();
+ pp.put("correctedItemName1", "pozycja");
+ pp.put("correctedItemNewNetValue1", "1");
+ pp.put("correctedItemName2", null);
+ pp.put("correctedItemNewNetValue2", null);
+ String r1 = te.merge("?IF-correctedItemName1?Pozycja: $correctedItemName1$ Na: $correctedItemNewNetValue1$?ENDIF-correctedItemName1??IF-correctedItemName2?Pozycja: $correctedItemName2$ Na: $correctedItemNewNetValue2$?ENDIF-correctedItemName2?", pp);
+ Assert.assertEquals("Pozycja: pozycja Na: 1", r1);
+ }
+
+ @Test
+ public void combinedTest1() {
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+ Map<String, Object> pp = new HashMap<String, Object>();
+ pp.put("y", "1");
+ String r1 = te.merge("?IF-x?bla bla bla?ENDIF-x?$y$", pp);
+ Assert.assertEquals("1", r1);
+ }
+
+ @Test
+ public void mergeTestNoPresentationValue() {
+
+ RegexpTemplateEngine te = new RegexpTemplateEngine();
+
+ Map<String, Object> pp = new HashMap<String, Object>();
+ String r1 = te.merge("$Raz$ dwa $trzy$.", pp);
+
+ Assert.assertEquals("error:Raz dwa error:trzy.", r1);
+ }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/RegexpTemplateEngineTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/SchedulerTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/SchedulerTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/SchedulerTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/SchedulerTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,17 @@
+package org.apache.hise;
+
+import org.apache.hise.engine.Scheduler;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class SchedulerTest {
+
+ @Test
+ public void test() throws Exception {
+ Scheduler s = new Scheduler();
+ s.init();
+ Thread.sleep(30000);
+ s.destroy();
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/SchedulerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,61 @@
+package org.apache.hise;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.Assert;
+
+import net.sf.saxon.dom.NodeOverNodeInfo;
+import net.sf.saxon.om.NodeInfo;
+
+import org.apache.hise.runtime.Task;
+import org.apache.hise.runtime.TaskEvaluator;
+import org.apache.hise.utils.DOMUtils;
+import org.apache.hise.utils.XQueryEvaluator;
+import org.junit.Test;
+import org.w3c.dom.Node;
+
+public class TaskEvaluatorTest {
+ @Test
+ public void testEval() throws Exception {
+ XQueryEvaluator e = new XQueryEvaluator();
+ List r = e.evaluateExpression("string(*/*/text())", DOMUtils.parse("<a><b/><c>ddx</c></a>"));
+ Assert.assertTrue(r.toString().equals("[ddx]"));
+ }
+
+ @Test
+ public void testEval2() throws Exception {
+ XQueryEvaluator e = new XQueryEvaluator();
+ e.bindVariable(QName.valueOf("abc"), null);
+ Object r = e.evaluateExpression("declare namespace htd='http://www.example.org/WS-HT'; for $i in htd:literal/htd:organizationalEntity/htd:users/htd:user return string($i)", DOMUtils.parse(getClass().getResourceAsStream("/taskEvaluator.xml")));
+ Assert.assertTrue(r.toString().equals("[user1, user2]"));
+ }
+
+ @Test
+ public void testEval3() throws Exception {
+ XQueryEvaluator e = new XQueryEvaluator();
+ Object r = e.evaluateExpression("declare namespace htd='http://www.example.org/WS-HT'; for $i in htd:literal/htd:organizationalEntity/htd:users/htd:user return string($i)", DOMUtils.parse(getClass().getResourceAsStream("/taskEvaluator.xml")).getFirstChild());
+ Assert.assertTrue(r.toString().equals("[user1, user2]"));
+ }
+
+ @Test
+ public void testEvalOutcome() throws Exception {
+ XQueryEvaluator e = new XQueryEvaluator();
+ e.bindVariable(QName.valueOf("outcome"), true);
+ Assert.assertEquals(true, e.evaluateExpression("$outcome", null).get(0));
+ }
+
+ @Test
+ public void testEvaluateApproveResponseHeader() throws Exception {
+ Task t = new MockTask();
+ org.apache.hise.dao.Task t2 = new org.apache.hise.dao.Task();
+ t2.setId(1234L);
+ t.setTaskDto(t2);
+
+ TaskEvaluator te = new TaskEvaluator(t);
+ Node n = te.evaluateApproveResponseHeader();
+ Assert.assertTrue(DOMUtils.domToString(n).contains(">1234<"));
+ }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,37 @@
+package org.apache.hise;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+
+import org.apache.hise.engine.HISEEngine;
+import org.apache.hise.engine.jaxws.TaskOperationsImpl;
+import org.apache.hise.lang.xsd.htda.TTask;
+import org.junit.Test;
+
+public class TaskOperationsTest {
+
+ @Test
+ public void testGetMyTasks() throws Exception {
+ TaskOperationsImpl ti = new MockTaskOperationsImpl();
+ HISEEngine he = new HISEEngine();
+ MockHiseDao hd = new MockHiseDao();
+ he.setHiseDao(hd);
+ ti.setHiseEngine(he);
+
+ List<TTask> r = ti.getMyTasks("ALL", "ACTUALOWNER", "", Collections.EMPTY_LIST, "", "", 100);
+ System.out.println(r.toString());
+
+ JAXBContext c = JAXBContext.newInstance("org.apache.hise.lang.xsd.htda");
+
+
+ Marshaller m = c.createMarshaller();
+ m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
+ m.marshal(new JAXBElement(QName.valueOf("{http://www.example.org/WS-HT/api/xsd}taskAbstract"), TTask.class, r.get(0)), System.out);
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskOperationsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,23 @@
+package org.apache.hise;
+
+import junit.framework.Assert;
+
+import org.apache.hise.runtime.Task;
+import org.apache.hise.runtime.TaskEvaluator;
+import org.apache.hise.utils.DOMUtils;
+import org.junit.Test;
+
+public class TaskTest {
+ @Test
+ public void testEpr() throws Exception {
+ Task t = new MockTask();
+ org.apache.hise.dao.Task t2 = new org.apache.hise.dao.Task();
+ t2.setId(1234L);
+ t.setTaskDto(t2);
+
+ TaskEvaluator e = new TaskEvaluator(t);
+ String r = DOMUtils.domToString(e.createEprFromHeader(DOMUtils.parse(getClass().getResourceAsStream("/epr.xml")).getDocumentElement()));
+ System.out.println(r);
+ Assert.assertTrue(r.contains("<wsa:EndpointReference xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"><wsa:Address xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">http://localhost:8082/ClaimsResponseService/</wsa:Address></wsa:EndpointReference>"));
+ }
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskXmlUtilsTest.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskXmlUtilsTest.java?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskXmlUtilsTest.java (added)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskXmlUtilsTest.java Wed Jan 13 23:20:54 2010
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hise;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.xpath.XPathConstants;
+
+import net.sf.saxon.dom.NodeWrapper;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hise.dao.Message;
+import org.apache.hise.utils.DOMUtils;
+import org.apache.hise.utils.TaskXmlUtils;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3c.dom.Node;
+
+@Ignore
+public class TaskXmlUtilsTest {
+ private static Log __log = LogFactory.getLog(TaskXmlUtilsTest.class);
+
+// @Test
+// public void testEvaluateXPath() {
+//
+// String xmlRequest = "<enterOrder xmlns:sch='http://www.hise/hise/schema' orderNumber='O26195' caseNumber='C81794' caseType='1' suggestedOwner='1' submitter='1' source='1' issueDate='1' priority='1' note='NiesÅychanie pilne. ProszÄ siÄ poÅpieszyÄ.'>" +
+// " <sch:correctiveInvoice customerId='1' customerCode='KLIENT_27959' correctedInvoiceNumber='1' correctionAmount='353.78' issueReason='1'>" +
+// " <sch:correctiveInvoiceItem name='UsÅugi telekomunikacyjne.' newNetValue='424.68' newVat='93.4296' newVatRate='22'/>" +
+// " <sch:correctiveInvoiceItem name='UsÅugi telekomunikacyjne.' newNetValue='1' newVat='0.22' newVatRate='22'/>" +
+// " </sch:correctiveInvoice>" +
+// "</enterOrder>";
+//
+// Map<String, Message> input = new HashMap<String, Message>();
+// input.put("enterOrder", new Message(xmlRequest));
+//
+// TaskXmlUtils txu = new TaskXmlUtils(new NamespaceContext() {
+//
+// public String getNamespaceURI(String prefix) {
+//
+// if (prefix.equals("hise")) {
+// return "http://www.hise/hise/schema";
+// }
+// if (prefix.equals("htd")) {
+// return "http://www.example.org/WS-HT";
+// }
+//
+// return null;
+// }
+//
+// public String getPrefix(String namespaceURI) {
+// return null;
+// }
+//
+// public Iterator getPrefixes(String namespaceURI) {
+// return null;
+// }
+//
+// }, input, null);
+//
+//// Object o = txu.evaluateXPath("htd:getInput(\"enterOrder\")/hise:correctiveInvoice/@customerId", XPathConstants.STRING);
+//// Object o = txu.evaluateXPath("htd:getInput(\"enterOrder\")/hise:correctiveInvoice/hise:correctiveInvoiceItem/@name", XPathConstants.NODE);
+// Object o = txu.evaluateXPath("htd:getInput(\"enterOrder\")/hise:correctiveInvoice/@correctedInvoiceNumber", XPathConstants.STRING);
+// //__log.debug(DOMUtils.domToString((Node) o));
+//
+// assertNotNull(o);
+// assertEquals("1", o);
+// }
+
+}
Propchange: incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskXmlUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/resources/dao.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/dao.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/dao.xml (added)
+++ incubator/hise/trunk/hise-services/src/test/resources/dao.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, ~ software distributed under the License is distributed on an ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~ KIND, either express or implied. See the License for the ~ specific
+ language governing permissions and limitations ~ under the License.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/core" xmlns:htd="http://www.example.org/WS-HT" xmlns:htda="http://www.example.org/WS-HT/api" xmlns:htdt="http://www.example.org/WS-HT/api/xsd" xmlns:htdaw="http://www.example.org/WS-HT/api/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ins="http://www.insurance.example.com/claims"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+ http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+ ">
+
+ <tx:annotation-driven transaction-manager="transactionManager"/>
+
+ <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="htEntityManagerFactory"/>
+ <property name="dataSource" ref="htDataSource"/>
+ </bean>
+
+ <bean id="htEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="htDataSource"/>
+ <property name="jpaVendorAdapter" ref="htJPAVendorAdapter"/>
+ <property name="jpaPropertyMap" ref="htJPAPropertyMap"/>
+ <property name="persistenceXmlLocation" value="classpath:/org/apache/hise/persistence.xml"/>
+ <property name="persistenceUnitName" value="org.apache.hise"/>
+ </bean>
+
+ <util:map id="htJPAPropertyMap">
+ <entry key="hibernate.hbm2ddl.auto" value="create-drop"/>
+ </util:map>
+
+ <bean id="htJPAVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="true"/>
+ <property name="generateDdl" value="true"/>
+ <property name="databasePlatform" value="org.hibernate.dialect.H2Dialect"/>
+ </bean>
+ <bean id="htDataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource" lazy-init="true">
+ <property name="driverClassName" value="org.h2.Driver"/>
+ <property name="url" value="jdbc:h2:mem:test"/>
+ <property name="username" value="sa"/>
+ <property name="password">
+ <value></value>
+ </property>
+ <property name="autoCommit" value="false"/>
+ <property name="suppressClose" value="true"/>
+ </bean>
+
+ <!--
+ <bean id="htJPAVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="false"/> <property name="generateDdl" value="true"/> <property name="databasePlatform" value="org.hibernate.dialect.OracleDialect"/> </bean> <bean id="htDataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource" lazy-init="true"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/> <property name="username" value="hise"/> <property name="password" value="hise"/> <property name="autoCommit" value="false"/> <property name="suppressClose" value="true"/> </bean>
+ -->
+
+ <bean id="hiseDao" class="org.apache.hise.dao.HISEDao">
+ <property name="entityManagerFactory" ref="htEntityManagerFactory"/>
+ </bean>
+
+<!--
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/core" xmlns:htd="http://www.example.org/WS-HT" xmlns:htda="http://www.example.org/WS-HT/api" xmlns:htdt="http://www.example.org/WS-HT/api/xsd" xmlns:htdaw="http://www.example.org/WS-HT/api/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ins="http://www.insurance.example.com/claims"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+ http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+ ">
+
+ -->
+</beans>
+
Propchange: incubator/hise/trunk/hise-services/src/test/resources/dao.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/resources/duplicateTaskDef.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/duplicateTaskDef.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/duplicateTaskDef.xml (added)
+++ incubator/hise/trunk/hise-services/src/test/resources/duplicateTaskDef.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a0c9ce4c-ee02-2a10-4b96-cb205464aa02
+
+© 2007 Active Endpoints Inc., Adobe Systems Inc., BEA Systems Inc., International
+Business Machines Corporation, Oracle Inc., and SAP AG. All rights reserved.
+ -->
+<htd:humanInteractions xmlns:htd="http://www.example.org/WS-HT"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.insurance.example.com/claims/"
+ targetNamespace="http://www.insurance.example.com/claims/"
+ xsi:schemaLocation="http://www.example.org/WS-HT file:/usr/share/schemas/ws-humantask.xsd">
+
+ <!--
+
+ Test human task definition. Contains: task definitions, different human roles definitions,
+ descriptions with parameters.
+
+ TODO:
+
+ - matching business request
+
+ -->
+
+ <htd:import importType="http://schemas.xmlsoap.org/wsdl/" location="ExampleTasks.wsdl" namespace="http://www.insurance.example.com/claims/"/>
+
+ <htd:logicalPeopleGroups>
+
+ <htd:logicalPeopleGroup name="lpg1">
+ <htd:documentation xml:lang="en-US">Employee group.</htd:documentation>
+ <htd:parameter name="region" type="xsd:string"/>
+ </htd:logicalPeopleGroup>
+
+ </htd:logicalPeopleGroups>
+
+ <htd:tasks>
+
+ <!-- Please change properties other than potential owners i both Task1 and Task2 -->
+
+ <!-- One potential owners -->
+ <htd:task name="Task1">
+
+ <htd:documentation xml:lang="en-US">This task is used to handle claims that require manual approval. </htd:documentation>
+ <htd:interface portType="tns:ClaimsHandlingPT" operation="approve" responsePortType="tns:ClaimsHandlingCallbackPT" responseOperation="approvalResponse"/>
+ <htd:priority> htd:getInput("ClaimApprovalRequest")/priority </htd:priority>
+
+ <htd:peopleAssignments>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user1</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+
+ <htd:businessAdministrators>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:groups>
+ <htd:group>group1</htd:group>
+ <htd:group>group2</htd:group>
+ </htd:groups>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:businessAdministrators>
+
+ <htd:businessAdministrators>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user1</htd:user>
+ <htd:user>user2</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:businessAdministrators>
+
+ <htd:businessAdministrators>
+ <htd:from logicalPeopleGroup="lpg1">
+ <htd:argument name="region"> htd:getInput("ClahimApprovalRequest")/region </htd:argument>
+ </htd:from>
+ </htd:businessAdministrators>
+
+ <htd:taskStakeholders>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user3</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:taskStakeholders>
+
+ </htd:peopleAssignments>
+
+ <htd:delegation potentialDelegatees="nobody"/>
+
+ <htd:presentationElements>
+
+ <htd:name xml:lang="en-US"> Approve Claim </htd:name>
+
+ <htd:presentationParameters>
+
+ <htd:presentationParameter name="firstname" type="xsd:string">
+ htd:getInput("ClaimApprovalRequest")/cust/firstname </htd:presentationParameter>
+
+ <htd:presentationParameter name="lastname" type="xsd:string">
+ htd:getInput("ClaimApprovalRequest")/cust/lastname </htd:presentationParameter>
+
+ <htd:presentationParameter name="euroAmount" type="xsd:double">
+ htd:getInput("ClaimApprovalRequest")/amount </htd:presentationParameter>
+
+ </htd:presentationParameters>
+
+ <htd:subject xml:lang="en-US"> Approve the insurance claim for PLN $euroAmount$ on behalf of $firstname$ $lastname$ </htd:subject>
+
+ <htd:description xml:lang="en-US" contentType="text/plain"> Approve this claim following corporate guideline #4711.0815/7 ... </htd:description>
+
+ </htd:presentationElements>
+
+ <htd:deadlines>
+ <htd:startDeadline>
+ <htd:for>'PT5S'</htd:for>
+ <htd:escalation name="reassignTask3">
+ <htd:reassignment>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user3</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+ </htd:reassignment>
+ </htd:escalation>
+ </htd:startDeadline>
+ <htd:completionDeadline>
+ <htd:for>'PT10S'</htd:for>
+ <htd:escalation name="reassignTask3Completion">
+ <htd:reassignment>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user4</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+ </htd:reassignment>
+ </htd:escalation>
+ </htd:completionDeadline>
+ </htd:deadlines>
+ </htd:task>
+
+ <!-- Two potential owners -->
+ <htd:task name="Task2">
+
+ <htd:documentation xml:lang="en-US">This task is used to handle claims that require manual approval. </htd:documentation>
+ <htd:interface portType="tns:ClaimsHandlingPT" operation="approve2" responsePortType="tns:ClaimsHandlingCallbackPT" responseOperation="approvalResponse"/>
+ <htd:priority> htd:getInput("ClaimApprovalRequest")/prio </htd:priority>
+
+ <htd:peopleAssignments>
+
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user1</htd:user>
+ <htd:user>user2</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+
+ <htd:businessAdministrators>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:groups>
+ <htd:group>group1</htd:group>
+ <htd:group>group2</htd:group>
+ </htd:groups>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:businessAdministrators>
+
+ <htd:businessAdministrators>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user1</htd:user>
+ <htd:user>user2</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:businessAdministrators>
+
+ <htd:businessAdministrators>
+ <htd:from logicalPeopleGroup="lpg1">
+ <htd:argument name="region"> htd:getInput("ClahimApprovalRequest")/region </htd:argument>
+ </htd:from>
+ </htd:businessAdministrators>
+
+ <htd:taskStakeholders>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user3</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:taskStakeholders>
+
+ </htd:peopleAssignments>
+
+ <htd:delegation potentialDelegatees="nobody"/>
+
+ <htd:presentationElements>
+
+ <htd:name xml:lang="en-US"> Approve Claim </htd:name>
+
+ <htd:presentationParameters>
+
+ <htd:presentationParameter name="firstname" type="xsd:string">
+ htd:getInput("ClaimApprovalRequest")/cust/firstname </htd:presentationParameter>
+
+ <htd:presentationParameter name="lastname" type="xsd:string">
+ htd:getInput("ClaimApprovalRequest")/cust/lastname </htd:presentationParameter>
+
+ <htd:presentationParameter name="euroAmount" type="xsd:double">
+ htd:getInput("ClaimApprovalRequest")/amount </htd:presentationParameter>
+
+ </htd:presentationParameters>
+
+ <htd:subject xml:lang="en-US"> Approve the insurance claim for PLN $euroAmount$ on behalf of $firstname$ $lastname$ </htd:subject>
+
+ <htd:description xml:lang="en-US" contentType="text/plain"> Approve this claim following corporate guideline #4711.0815/7 ... </htd:description>
+
+ </htd:presentationElements>
+
+ </htd:task>
+
+
+ <!-- Escalation -->
+ <htd:task name="Task1">
+
+ <htd:documentation xml:lang="en-US">This task is used to handle claims that require manual approval. </htd:documentation>
+ <htd:interface portType="tns:ClaimsHandlingPT" operation="approve3"/>
+
+ <htd:peopleAssignments>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user1</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+
+ <htd:businessAdministrators>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user2</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:businessAdministrators>
+ </htd:peopleAssignments>
+
+ <htd:presentationElements>
+
+ <htd:name xml:lang="en-US"> Approve Claim </htd:name>
+
+ <htd:presentationParameters>
+
+ <htd:presentationParameter name="firstname" type="xsd:string">
+ htd:getInput("ClaimApprovalRequest")/cust/firstname </htd:presentationParameter>
+
+ <htd:presentationParameter name="lastname" type="xsd:string">
+ htd:getInput("ClaimApprovalRequest")/cust/lastname </htd:presentationParameter>
+
+ <htd:presentationParameter name="euroAmount" type="xsd:double">
+ htd:getInput("ClaimApprovalRequest")/amount </htd:presentationParameter>
+
+ </htd:presentationParameters>
+
+ <htd:subject xml:lang="en-US"> Approve the insurance claim for PLN $euroAmount$ on behalf of $firstname$ $lastname$ </htd:subject>
+
+ <htd:description xml:lang="en-US" contentType="text/plain"> Approve this claim following corporate guideline #4711.0815/7 ... </htd:description>
+
+ </htd:presentationElements>
+
+ <htd:deadlines>
+ <htd:startDeadline>
+ <htd:for>PT5S</htd:for>
+ <htd:escalation name="reassignTask3">
+ <htd:reassignment>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user3</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+ </htd:reassignment>
+ </htd:escalation>
+ </htd:startDeadline>
+ <htd:completionDeadline>
+ <htd:for>PT10S</htd:for>
+ <htd:escalation name="reassignTask3Completion">
+ <htd:reassignment>
+ <htd:potentialOwners>
+ <htd:from>
+ <htd:literal>
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user4</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+ </htd:literal>
+ </htd:from>
+ </htd:potentialOwners>
+ </htd:reassignment>
+ </htd:escalation>
+ </htd:completionDeadline>
+ </htd:deadlines>
+ </htd:task>
+ </htd:tasks>
+</htd:humanInteractions>
Propchange: incubator/hise/trunk/hise-services/src/test/resources/duplicateTaskDef.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/resources/epr.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/epr.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/epr.xml (added)
+++ incubator/hise/trunk/hise-services/src/test/resources/epr.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
+ <wsse:Security soapenv:mustUnderstand="1" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+ <wsse:UsernameToken wsu:Id="UsernameToken-14728487" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
+ <wsse:Username>user2</wsse:Username>
+ <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">25T8md2OY7AKF4I9wPVsSjow9YI=</wsse:Password>
+ <wsse:Nonce>RCZ1KP85PrRcQrYHT94ZTQ==</wsse:Nonce>
+ <wsu:Created>2010-01-12T12:34:03.568Z</wsu:Created>
+ </wsse:UsernameToken>
+ </wsse:Security>
+ <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://www.insurance.example.com/claims/ClaimsHandlingPT/approveRequest</wsa:Action>
+ <wsa:ReplyTo xmlns:wsa="http://www.w3.org/2005/08/addressing">
+ <wsa:Address>http://localhost:8082/ClaimsResponseService/</wsa:Address>
+ </wsa:ReplyTo>
+</soapenv:Header>
\ No newline at end of file
Propchange: incubator/hise/trunk/hise-services/src/test/resources/epr.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/resources/epr2.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/epr2.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/epr2.xml (added)
+++ incubator/hise/trunk/hise-services/src/test/resources/epr2.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
+ <wsa:Address xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">http://localhost:8082/ClaimsResponseService/</wsa:Address>
+</wsa:EndpointReference>
Propchange: incubator/hise/trunk/hise-services/src/test/resources/epr2.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/resources/outcome.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/outcome.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/outcome.xml (added)
+++ incubator/hise/trunk/hise-services/src/test/resources/outcome.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,5 @@
+<cla:resolve xmlns:cla="http://www.insurance.example.com/claims">
+ <claimId>htd:getInput("ClaimApprovalRequest")/cla:cust/cla:id/text()</claimId>
+ <ok>{$outcome}</ok>
+</cla:resolve>
+
\ No newline at end of file
Propchange: incubator/hise/trunk/hise-services/src/test/resources/outcome.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/hise/trunk/hise-services/src/test/resources/taskEvaluator.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/test/resources/taskEvaluator.xml?rev=898994&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/resources/taskEvaluator.xml (added)
+++ incubator/hise/trunk/hise-services/src/test/resources/taskEvaluator.xml Wed Jan 13 23:20:54 2010
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<htd:literal xmlns:htd="http://www.example.org/WS-HT">
+ <htd:organizationalEntity>
+ <htd:users>
+ <htd:user>user1</htd:user>
+ <htd:user>user2</htd:user>
+ </htd:users>
+ </htd:organizationalEntity>
+</htd:literal>
Propchange: incubator/hise/trunk/hise-services/src/test/resources/taskEvaluator.xml
------------------------------------------------------------------------------
svn:eol-style = native