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/02/24 16:08:22 UTC

svn commit: r915840 - in /incubator/hise/trunk: hise-services/src/main/java/org/apache/hise/engine/ hise-services/src/main/java/org/apache/hise/engine/jaxws/ hise-services/src/main/java/org/apache/hise/lang/ hise-services/src/main/java/org/apache/hise/...

Author: rr
Date: Wed Feb 24 16:08:22 2010
New Revision: 915840

URL: http://svn.apache.org/viewvc?rev=915840&view=rev
Log:
HISE-21: Added presentation subject and presentation description rendering

Modified:
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngineImpl.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
    incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java
    incubator/hise/trunk/hise-test-example-osgi/src/main/resources/testHtd1.xml

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngineImpl.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngineImpl.java?rev=915840&r1=915839&r2=915840&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngineImpl.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/HISEEngineImpl.java Wed Feb 24 16:08:22 2010
@@ -91,7 +91,7 @@
         log.debug("registering route " + ti.taskKey + " -> " + ti.taskDefinition.getTaskName());
         
         if (tasks.containsKey(ti.taskDefinition.getTaskName()) || tasksMap.containsKey(ti.taskKey)) {
-            throw new IllegalArgumentException("Unable to deploy " + ti + " is already deployed.");
+            log.warn("Unable to deploy " + ti + " is already deployed.");
         }
         
         tasksMap.put(ti.taskKey, ti.taskDefinition.getTaskName());

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java?rev=915840&r1=915839&r2=915840&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/TaskOperationsImpl.java Wed Feb 24 16:08:22 2010
@@ -118,7 +118,7 @@
         
         List<org.apache.hise.dao.Task> k = hiseEngine.getHiseDao().getUserTasks(query);
         for (org.apache.hise.dao.Task u : k) {
-            TTask t = convertTask(u);
+            TTask t = convertTask(u.getId());
             l.add(t);
         }
         return l;
@@ -238,7 +238,10 @@
     // return TStatus.fromValue(in.toString());
     // }
     
-    private static TTask convertTask(org.apache.hise.dao.Task u) {
+    private TTask convertTask(Long id) {
+        Task task = Task.load(hiseEngine, id);
+        org.apache.hise.dao.Task u = task.getTaskDto();
+
         TTask t = new TTask();
         t.setId("" + u.getId());
         t.setTaskType(u.isNotification() ? "NOTIFICATION" : "TASK");
@@ -246,13 +249,15 @@
         t.setActivationTime(u.getActivationTime());
         if (u.getActualOwner() != null) t.setActualOwner(u.getActualOwner());
         t.setCreatedBy(u.getCreatedBy());
+        t.setPresentationName(task.getTaskEvaluator().getPresentationName());
+        t.setPresentationSubject(task.getTaskEvaluator().evalPresentationSubject());
         t.setName(u.getTaskDefinitionName());
         t.setStatus(TStatus.valueOf(u.getStatus().toString()));
         return t;
     }
 
     public org.apache.hise.lang.xsd.htda.TTask getTaskInfo(String identifier) throws IllegalArgumentFault {
-        return convertTask(hiseEngine.getHiseDao().find(org.apache.hise.dao.Task.class, Long.parseLong(identifier)));
+        return convertTask(hiseEngine.getHiseDao().find(org.apache.hise.dao.Task.class, Long.parseLong(identifier)).getId());
     }
 
     public TTaskQueryResultSet query(String selectClause, String whereClause, String orderByClause, Integer maxTasks, Integer taskIndexOffset) throws IllegalArgumentFault, IllegalStateFault {
@@ -372,8 +377,9 @@
     }
 
     public String getTaskDescription(String identifier, String contentType) throws IllegalArgumentFault {
-        // TODO Auto-generated method stub
-        return null;
+        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
+        t.setCurrentUser(getUserString());
+        return t.getTaskEvaluator().evalPresentationDescription();
     }
 
     public void nominate(String identifier, TOrganizationalEntity organizationalEntity) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java?rev=915840&r1=915839&r2=915840&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java Wed Feb 24 16:08:22 2010
@@ -19,6 +19,8 @@
 
 package org.apache.hise.lang;
 
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.namespace.QName;
@@ -31,6 +33,8 @@
 import org.apache.hise.lang.xsd.htd.TLiteral;
 import org.apache.hise.lang.xsd.htd.TNotification;
 import org.apache.hise.lang.xsd.htd.TPeopleAssignments;
+import org.apache.hise.lang.xsd.htd.TPresentationElements;
+import org.apache.hise.lang.xsd.htd.TPresentationParameters;
 import org.apache.hise.lang.xsd.htd.TPriority;
 import org.apache.hise.lang.xsd.htd.TTask;
 import org.apache.hise.lang.xsd.htd.TTaskInterface;
@@ -324,6 +328,21 @@
     public String getOutcomeExpression() {
         return tTask.getOutcome().getContent().get(0).toString();
     }
+    
+    public TPresentationElements getPresentationElements() {
+    	return isNotification() ? tNote.getPresentationElements() : tTask.getPresentationElements();
+    }
+    
+    public List<org.apache.hise.lang.xsd.htd.TPresentationParameter> getPresentationParameters() {
+    	TPresentationElements v = getPresentationElements();
+    	if (v != null) {
+    		TPresentationParameters u = v.getPresentationParameters();
+    		if (u != null) {
+    			return u.getPresentationParameter();
+    		}
+    	}
+    	return Collections.EMPTY_LIST;
+    }
 
     /**
      * Returns namespace URI for namespace registered in HumanInteractionsManager.

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java?rev=915840&r1=915839&r2=915840&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java Wed Feb 24 16:08:22 2010
@@ -44,6 +44,7 @@
 import org.apache.hise.lang.xsd.htd.TFrom;
 import org.apache.hise.lang.xsd.htd.TGenericHumanRole;
 import org.apache.hise.lang.xsd.htd.TPeopleAssignments;
+import org.apache.hise.lang.xsd.htd.TPresentationParameter;
 import org.apache.hise.lang.xsd.htd.TToPart;
 import org.apache.hise.lang.xsd.htd.TToParts;
 import org.apache.hise.utils.DOMUtils;
@@ -214,4 +215,50 @@
     public static Node defaultHeader() {
         return DOMUtils.parse("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Header xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"/>").getDocumentElement();
     }
+    
+    public String getPresentationName() {
+    	try {
+    		return XmlUtils.getStringContent(task.getTaskDefinition().getPresentationElements().getName().get(0).getContent());
+    	} catch (Throwable t) {
+    		return null;
+    	}
+    }
+    
+    public XQueryEvaluator buildPresentationEvaluator() {
+        XQueryEvaluator evaluator = buildQueryEvaluator();
+        for (TPresentationParameter p : task.getTaskDefinition().getPresentationParameters()) {
+            XQueryEvaluator evaluator2 = buildQueryEvaluator();
+            Object v = evaluator2.evaluateExpression(XmlUtils.getStringContent(p.getContent()), null).get(0);
+            __log.debug("evaluated presentationParameter: " + p.getName() + " = " + v);
+        	evaluator.bindVariable(QName.valueOf(p.getName()), v);
+        }
+        return evaluator;
+    }
+    
+    public static String getTemplateExpr(List<Object> expr) {
+    	return "xs:string(<v>" + XmlUtils.getStringContent(expr) + "</v>)";
+    }
+    
+    
+    public String evalPresentationSubject() {
+    	String subjectExpr;
+    	try {
+	    	subjectExpr = getTemplateExpr(task.getTaskDefinition().getPresentationElements().getSubject().get(0).getContent());
+		} catch (Throwable t) {
+			return null;
+		}
+		XQueryEvaluator e = buildPresentationEvaluator();
+		return "" + e.evaluateExpression(subjectExpr, null).get(0);
+    }
+    
+    public String evalPresentationDescription() {
+    	String descExpr;
+    	try {
+	    	descExpr = getTemplateExpr(task.getTaskDefinition().getPresentationElements().getDescription().get(0).getContent());
+		} catch (Throwable t) {
+			return null;
+		}
+		XQueryEvaluator e = buildPresentationEvaluator();
+		return "" + e.evaluateExpression(descExpr, null).get(0);
+    }
 }

Modified: 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=915840&r1=915839&r2=915840&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java (original)
+++ incubator/hise/trunk/hise-services/src/test/java/org/apache/hise/TaskEvaluatorTest.java Wed Feb 24 16:08:22 2010
@@ -1,5 +1,6 @@
 package org.apache.hise;
 
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
@@ -56,7 +57,15 @@
         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 testEval4() throws Exception {
+        XQueryEvaluator e = new XQueryEvaluator();
+        e.bindVariable(QName.valueOf("abc"), "val");
+        Object r = e.evaluateExpression(TaskEvaluator.getTemplateExpr(Collections.singletonList((Object) "123 {$abc} 345")), null);
+        Assert.assertEquals(r.toString(), "[123 val 345]");
+    }
+
     @Test
     public void testEvalOutcome() throws Exception {
         XQueryEvaluator e = new XQueryEvaluator();

Modified: incubator/hise/trunk/hise-test-example-osgi/src/main/resources/testHtd1.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/src/main/resources/testHtd1.xml?rev=915840&r1=915839&r2=915840&view=diff
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/src/main/resources/testHtd1.xml (original)
+++ incubator/hise/trunk/hise-test-example-osgi/src/main/resources/testHtd1.xml Wed Feb 24 16:08:22 2010
@@ -114,19 +114,28 @@
                 <htd:presentationParameters>
                     
                     <htd:presentationParameter name="firstname" type="xsd:string">
-                        htd:getInput("ClaimApprovalRequest")/cust/firstname </htd:presentationParameter>
+declare namespace cla="http://www.insurance.example.com/claims";
+declare namespace htd="http://www.example.org/WS-HT";
+xs:string(htd:getInput("request")/ClaimApprovalRequest/cla:cust/cla:firstname)
+</htd:presentationParameter>
                     
                     <htd:presentationParameter name="lastname" type="xsd:string">
-                        htd:getInput("ClaimApprovalRequest")/cust/lastname </htd:presentationParameter>
+declare namespace cla="http://www.insurance.example.com/claims";
+declare namespace htd="http://www.example.org/WS-HT";
+xs:string(htd:getInput("request")/ClaimApprovalRequest/cla:cust/cla:lastname)
+</htd:presentationParameter>
                     
                     <htd:presentationParameter name="euroAmount" type="xsd:double">
-                        htd:getInput("ClaimApprovalRequest")/amount </htd:presentationParameter>
+declare namespace cla="http://www.insurance.example.com/claims";
+declare namespace htd="http://www.example.org/WS-HT";
+xs:double(htd:getInput("request")/ClaimApprovalRequest/cla: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: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:description xml:lang="en-US" contentType="text/plain"> Approve this claim following corporate guideline #4711.0815/7 for {$firstname} {$lastname} </htd:description>
 
             </htd:presentationElements>