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/03/04 15:42:22 UTC

svn commit: r919028 [1/2] - in /incubator/hise/trunk: hise-services/ hise-services/src/main/java/org/apache/hise/ 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/h...

Author: rr
Date: Thu Mar  4 15:42:21 2010
New Revision: 919028

URL: http://svn.apache.org/viewvc?rev=919028&view=rev
Log:
Added OpenJPA enhancer, Improved messages to tasks routing, extended itest

Added:
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/Handler.java   (with props)
    incubator/hise/trunk/hise-services/src/main/resources/META-INF/
    incubator/hise/trunk/hise-services/src/main/resources/META-INF/persistence.xml   (with props)
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/SampleUsers.java   (with props)
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/Test.java   (with props)
    incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/TestImpl.java   (with props)
    incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/hise-itest.xml   (with props)
Removed:
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/SampleUsers.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/Test.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/TestImpl.java
Modified:
    incubator/hise/trunk/hise-services/pom.xml
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java
    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/HISEJaxWSService.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/TaskDD.java
    incubator/hise/trunk/hise-test-example-osgi/pom.xml
    incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/beans.xml
    incubator/hise/trunk/hise-test-example-osgi/src/main/resources/testHtd1.xml
    incubator/hise/trunk/itest/hise-soapui-project.xml

Modified: incubator/hise/trunk/hise-services/pom.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/pom.xml?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/pom.xml (original)
+++ incubator/hise/trunk/hise-services/pom.xml Thu Mar  4 15:42:21 2010
@@ -45,6 +45,37 @@
                     </execution>
                 </executions>
             </plugin>
+
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>openjpa-enhancer</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <tasks>
+                <property name="maven.runtime.classpath" refid="maven.compile.classpath"/>
+                <path id="classpath">
+		   <pathelement path="${maven.runtime.classpath}"/>
+		</path>
+		<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask" classpathref="classpath"/>
+                <openjpac>
+		    <fileset dir="${basedir}/src/main">
+                <include name="org/apache/hise/dao/*.java" />
+		    </fileset>
+		    <classpath>
+		     <pathelement location="${basedir}/target/classes"/>
+		     <pathelement path="${maven.runtime.classpath}"/>
+		    </classpath>
+		 </openjpac>
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
         </plugins>
     </build>
     <profiles>

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/HISEEngine.java Thu Mar  4 15:42:21 2010
@@ -2,6 +2,7 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.hise.dao.HISEDao;
 import org.apache.hise.engine.store.HISEDD;
 import org.apache.hise.engine.store.TaskDD;
 import org.apache.hise.lang.TaskDefinition;
@@ -10,12 +11,12 @@
 
 public interface HISEEngine {
     public static class TaskInfo {
-        public String taskKey;
         public TaskDefinition taskDefinition;
         public HISEDD parent;
         public TaskDD dd;
     }
     
     public void registerTask(TaskInfo ti);
-    public Node receive(QName portType, String operation, Element body, Node requestHeader);
+    public Node receive(Handler handler, QName portType, String operation, Element body, Node requestHeader);
+    public HISEDao getHiseDao();
 }

Added: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/Handler.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/Handler.java?rev=919028&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/Handler.java (added)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/Handler.java Thu Mar  4 15:42:21 2010
@@ -0,0 +1,5 @@
+package org.apache.hise.api;
+
+public interface Handler {
+	public String getId();
+}

Propchange: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/api/Handler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/HISEDao.java Thu Mar  4 15:42:21 2010
@@ -345,7 +345,7 @@
                                     " or e.name in (:groups) and e.type = :constGroup", 
                                     new JQBParam("constGroup", TaskOrgEntity.OrgEntityType.GROUP)
                                 }),
-                            ") and e.genericHumanRole = :role",
+                            ") and e.genericHumanRole = :role and t.actualOwner is null",
                             new JQBParam("role", query.getGenericHumanRole())
                     })
                     .setMaxResults(query.getMaxTasks())

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/dao/Task.java Thu Mar  4 15:42:21 2010
@@ -163,9 +163,9 @@
     /**
      * Task operations. Enumeration used to trigger comments.
      */
-    private static enum Operations {
-        CREATE, STATUS, NOMINATE, CLAIM, START, DELEGATE, RELEASE, COMPLETE, FAIL; 
-    }
+//    public static enum Operations {
+//        CREATE, STATUS, NOMINATE, CLAIM, START, DELEGATE, RELEASE, COMPLETE, FAIL; 
+//    }
 
     /**
      * Task's id. Autogenerated.

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=919028&r1=919027&r2=919028&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 Thu Mar  4 15:42:21 2010
@@ -30,6 +30,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.hise.api.HISEEngine;
 import org.apache.hise.api.HISEUserDetails;
+import org.apache.hise.api.Handler;
 import org.apache.hise.dao.HISEDao;
 import org.apache.hise.dao.Job;
 import org.apache.hise.engine.jaxws.HISEJaxWSClient;
@@ -83,18 +84,21 @@
         return new QName(ns, q.getLocalPart());
     }
     
-    public static String tasksKey(QName portType, String operation) {
-        return getCanonicalQName(portType) + ";" + operation; 
+    public static String tasksKey(Handler handler, QName portType, String operation) {
+        return "" + System.identityHashCode(handler) + ";" + getCanonicalQName(portType) + ";" + operation; 
     }
 
     public void registerTask(TaskInfo ti) {
-        log.debug("registering route " + ti.taskKey + " -> " + ti.taskDefinition.getTaskName());
+        TaskDefinition d = ti.taskDefinition;
+        String taskKey = HISEEngineImpl.tasksKey(ti.dd.getHandler(), d.getTaskInterface().getPortType(), d.getTaskInterface().getOperation());
+        log.debug("registering route " + taskKey + " -> " + ti.taskDefinition.getTaskName());
         
-        if (tasks.containsKey(ti.taskDefinition.getTaskName()) || tasksMap.containsKey(ti.taskKey)) {
+        QName taskName = ti.taskDefinition.getTaskName();
+        if (tasks.containsKey(taskName) || tasksMap.containsKey(taskKey)) {
             log.warn("Unable to deploy " + ti + " is already deployed.");
         }
         
-        tasksMap.put(ti.taskKey, ti.taskDefinition.getTaskName());
+        tasksMap.put(taskKey, ti.taskDefinition.getTaskName());
         tasks.put(ti.taskDefinition.getTaskName(), ti);
         
         log.debug("registered");
@@ -105,9 +109,11 @@
         return tasks.get(taskName).taskDefinition;
     }
     
-    public QName getTaskName(QName portType, String operation) {
-        QName n = tasksMap.get(tasksKey(portType, operation));
-        Validate.notNull(n, "Task for " + portType + " " + operation + " not found in routing table.");
+    public QName getTaskName(Handler handler, QName portType, String operation) {
+    	java.util.logging.Logger l;
+    	String key = tasksKey(handler, portType, operation);
+        QName n = tasksMap.get(key);
+        Validate.notNull(n, "Task for " + portType + " " + operation + " not found in routing table. Key: " + key);
         return n;
     }
     
@@ -118,10 +124,10 @@
         return r.size() == 1 ? (String) r.get(0) : "";
     }
     
-    public Node receive(QName portType, String operation, Element body, Node requestHeader) {
+    public Node receive(Handler handler, QName portType, String operation, Element body, Node requestHeader) {
         String createdBy = fetchCreatedBy(requestHeader);
         
-        QName taskName = getTaskName(portType, operation);
+        QName taskName = getTaskName(handler, portType, operation);
         assert(taskName != null);
         log.debug("routed " + portType + " " + operation + " -> " + taskName);
         TaskDefinition def = getTaskDefinition(taskName);

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java Thu Mar  4 15:42:21 2010
@@ -35,6 +35,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hise.api.HISEEngine;
+import org.apache.hise.api.Handler;
 import org.apache.hise.engine.HISEEngineImpl;
 import org.springframework.orm.jpa.JpaCallback;
 import org.springframework.orm.jpa.JpaTemplate;
@@ -50,7 +51,7 @@
 
 @WebServiceProvider
 @ServiceMode(value = Service.Mode.MESSAGE)
-public class HISEJaxWSService implements Provider<SOAPMessage> {
+public class HISEJaxWSService implements Provider<SOAPMessage>, Handler {
     private static Log __log = LogFactory.getLog(HISEJaxWSService.class);
 
     private HISEEngine hiseEngine;
@@ -58,6 +59,7 @@
     private PlatformTransactionManager transactionManager;
     private MessageFactory messageFactory;
     private TransactionTemplate transactionTemplate;
+    private String id;
 
     public HISEJaxWSService() throws Exception {
         messageFactory = MessageFactory.newInstance();
@@ -67,7 +69,15 @@
         transactionTemplate = new TransactionTemplate(transactionManager);
     }
     
-    public void setHiseEngine(HISEEngine hiseEngine) {
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public void setHiseEngine(HISEEngine hiseEngine) {
         this.hiseEngine = hiseEngine;
     }
 
@@ -98,7 +108,7 @@
 
                     Element body = request.getSOAPBody();
                     __log.debug("invoking " + request + " operation:" + operation + " portType:" + portType + " operation2:" + operation2);
-                    Node approveResponseHeader = hiseEngine.receive(portType, operation.getLocalPart(), body, request.getSOAPHeader());
+                    Node approveResponseHeader = hiseEngine.receive(HISEJaxWSService.this, portType, operation.getLocalPart(), body, request.getSOAPHeader());
                     SOAPMessage m = messageFactory.createMessage();
                     
                     Document doc = m.getSOAPHeader().getOwnerDocument();

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HISEDeployer.java Thu Mar  4 15:42:21 2010
@@ -42,7 +42,6 @@
             org.apache.hise.api.HISEEngine.TaskInfo ti = new org.apache.hise.api.HISEEngine.TaskInfo();
             ti.dd = t;
             ti.parent = di;
-            ti.taskKey = HISEEngineImpl.tasksKey(d.getTaskInterface().getPortType(), d.getTaskInterface().getOperation());
             ti.taskDefinition = d;
             hiseEngine.registerTask(ti);
         }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/TaskDD.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/TaskDD.java?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/TaskDD.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/TaskDD.java Thu Mar  4 15:42:21 2010
@@ -24,8 +24,8 @@
 public class TaskDD {
 
     public QName taskName;
-    public Object handler;
-    public Object sender;
+    public org.apache.hise.engine.jaxws.HISEJaxWSService handler;
+    public org.apache.hise.engine.jaxws.HISEJaxWSClient sender;
 
     public QName getTaskName() {
         return taskName;
@@ -35,19 +35,19 @@
         this.taskName = taskName;
     }
 
-    public Object getHandler() {
+    public org.apache.hise.engine.jaxws.HISEJaxWSService getHandler() {
         return handler;
     }
 
-    public void setHandler(Object handler) {
+    public void setHandler(org.apache.hise.engine.jaxws.HISEJaxWSService handler) {
         this.handler = handler;
     }
 
-    public Object getSender() {
+    public org.apache.hise.engine.jaxws.HISEJaxWSClient getSender() {
         return sender;
     }
 
-    public void setSender(Object sender) {
+    public void setSender(org.apache.hise.engine.jaxws.HISEJaxWSClient sender) {
         this.sender = sender;
     }
 

Added: incubator/hise/trunk/hise-services/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/resources/META-INF/persistence.xml?rev=919028&view=auto
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/resources/META-INF/persistence.xml (added)
+++ incubator/hise/trunk/hise-services/src/main/resources/META-INF/persistence.xml Thu Mar  4 15:42:21 2010
@@ -0,0 +1,35 @@
+<?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">
+    <class>org.apache.hise.dao.Attachment</class>
+    <class>org.apache.hise.dao.Comment</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/>
+
+    <!--  OpenJPA & HSQL -->
+    <!-- 
+    <properties>
+      <property name="openjpa.ConnectionDriverName" value="org.h2.Driver"/>
+      <property name="openjpa.ConnectionURL" value="jdbc:h2:file:hise-h2-db;DB_CLOSE_ON_EXIT=false"/>
+      <property name="openjpa.ConnectionUserName" value="sa"/>
+      <property name="openjpa.ConnectionPassword" value=""/>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
+      <property name="openjpa.Log" value="commons"/>
+        value="DefaultLevel=INFO, Runtime=TRACE, Tool=INFO,
+SQL=TRACE" /> 
+      <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=72"/>
+    </properties>
+     -->
+  </persistence-unit>
+</persistence>

Propchange: incubator/hise/trunk/hise-services/src/main/resources/META-INF/persistence.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/hise/trunk/hise-test-example-osgi/pom.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/pom.xml?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/pom.xml (original)
+++ incubator/hise/trunk/hise-test-example-osgi/pom.xml Thu Mar  4 15:42:21 2010
@@ -57,8 +57,8 @@
    org.springframework.osgi.service,
    org.springframework.osgi.service.importer,
                         </Import-Package>
+                        <Private-Package>org.apache.hise.test</Private-Package>
                         <!--
-                        <Private-Package>org.apache.hise*</Private-Package>
                         <Export-Package>org.apache.hise*,org.w3._2001.xmlschema</Export-Package>
                         -->
                         <DynamicImport-Package>*</DynamicImport-Package>
@@ -111,5 +111,10 @@
       <scope>test</scope>
     </dependency>
      -->
+    <dependency>
+      <groupId>org.apache.hise</groupId>
+      <artifactId>hise-services</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 </project>

Added: incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/SampleUsers.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/SampleUsers.java?rev=919028&view=auto
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/SampleUsers.java (added)
+++ incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/SampleUsers.java Thu Mar  4 15:42:21 2010
@@ -0,0 +1,86 @@
+package org.apache.hise.test;
+
+import org.apache.hise.api.HISEEngine;
+import org.apache.hise.dao.OrgEntity;
+import org.apache.hise.dao.TaskOrgEntity;
+import org.springframework.orm.jpa.JpaSystemException;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.TransactionCallback;
+import org.springframework.transaction.support.TransactionTemplate;
+
+public class SampleUsers {
+    
+    private HISEEngine hiseEngine;
+    private PlatformTransactionManager transactionManager;
+
+    public void setHiseEngine(HISEEngine hiseEngine) {
+		this.hiseEngine = hiseEngine;
+	}
+
+	public void setTransactionManager(PlatformTransactionManager transactionManager) {
+        this.transactionManager = transactionManager;
+    }
+    
+    private void addUser(String name, String pass) {
+        OrgEntity o = new OrgEntity();
+        o.setName(name);
+        o.setType(TaskOrgEntity.OrgEntityType.USER);
+        o.setUserPassword(pass);
+        hiseEngine.getHiseDao().persist(o);
+    }
+
+    public void init() {
+    	try {
+        TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
+        
+        transactionTemplate.execute(new TransactionCallback() {
+            public Object doInTransaction(TransactionStatus arg0) {
+                {
+                    OrgEntity g = new OrgEntity();
+                    g.setName("group1");
+                    g.setType(TaskOrgEntity.OrgEntityType.GROUP);
+                    hiseEngine.getHiseDao().persist(g);
+                }
+                OrgEntity someGroup = new OrgEntity();
+                {
+                	OrgEntity g = someGroup;
+                    g.setName("someGroup");
+                    g.setType(TaskOrgEntity.OrgEntityType.GROUP);
+                    hiseEngine.getHiseDao().persist(g);
+                }
+                {
+                    OrgEntity o = new OrgEntity();
+                    o.setName("someUser");
+                    o.setType(TaskOrgEntity.OrgEntityType.USER);
+                    o.setUserPassword("someUser");
+                    o.getUserGroups().add(someGroup);
+                    hiseEngine.getHiseDao().persist(o);
+                }
+                {
+                    OrgEntity o = new OrgEntity();
+                    o.setName("someUser2");
+                    o.setType(TaskOrgEntity.OrgEntityType.USER);
+                    o.setUserPassword("someUser2");
+                    o.getUserGroups().add(someGroup);
+                    hiseEngine.getHiseDao().persist(o);
+                }
+                {
+                    OrgEntity o = new OrgEntity();
+                    o.setName("someUser3");
+                    o.setType(TaskOrgEntity.OrgEntityType.USER);
+                    o.setUserPassword("someUser3");
+                    o.getUserGroups().add(someGroup);
+                    hiseEngine.getHiseDao().persist(o);
+                }
+                addUser("user1", "user1pass");
+                addUser("user2", "user2pass");
+                addUser("user5", "user5pass");
+                return null;
+            }
+        });
+    	} catch (RuntimeException e) {
+    		e.printStackTrace();
+    	}
+    }
+}

Propchange: incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/SampleUsers.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/Test.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/Test.java?rev=919028&view=auto
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/Test.java (added)
+++ incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/Test.java Thu Mar  4 15:42:21 2010
@@ -0,0 +1,8 @@
+package org.apache.hise.test;
+
+import javax.jws.WebService;
+
+@WebService
+public interface Test {
+    void cleanup() throws Exception;
+}

Propchange: incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/TestImpl.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/TestImpl.java?rev=919028&view=auto
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/TestImpl.java (added)
+++ incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/TestImpl.java Thu Mar  4 15:42:21 2010
@@ -0,0 +1,39 @@
+package org.apache.hise.test;
+
+import javax.jws.WebService;
+
+import org.apache.hise.api.HISEEngine;
+import org.apache.hise.dao.Job;
+import org.apache.hise.dao.Task;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.TransactionCallback;
+import org.springframework.transaction.support.TransactionTemplate;
+
+@WebService(endpointInterface = "org.apache.hise.test.Test")
+public class TestImpl implements Test {
+    
+    private PlatformTransactionManager transactionManager;
+    
+    private HISEEngine e;
+    
+    public void setE(HISEEngine hiseEngine) {
+		this.e = hiseEngine;
+	}
+
+	public void setTransactionManager(PlatformTransactionManager transactionManager) {
+        this.transactionManager = transactionManager;
+    }
+
+    public void cleanup() throws Exception {
+        TransactionTemplate tt = new TransactionTemplate(transactionManager);
+        tt.execute(new TransactionCallback() {
+            public Object doInTransaction(TransactionStatus status) {
+//                hiseDao.clearAllRecords(OrgEntity.class);
+                e.getHiseDao().clearAllRecords(Task.class);
+                e.getHiseDao().clearAllRecords(Job.class);
+                return null;
+            }
+        });
+    }
+}

Propchange: incubator/hise/trunk/hise-test-example-osgi/src/main/java/org/apache/hise/test/TestImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/beans.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/beans.xml?rev=919028&r1=919027&r2=919028&view=diff
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/beans.xml (original)
+++ incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/beans.xml Thu Mar  4 15:42:21 2010
@@ -30,6 +30,17 @@
               <property name="handler" ref="hiseJaxWSService1"/>
               <property name="sender" ref="hiseJaxWSSender1"/>
             </bean>
+
+            <bean class="org.apache.hise.engine.store.TaskDD">
+              <property name="taskName">
+                <bean class="javax.xml.namespace.QName" factory-method="valueOf">
+                  <constructor-arg type="java.lang.String" value="{http://www.insurance.example.com/claims}Task4"></constructor-arg>
+                </bean>
+              </property>
+              <property name="handler" ref="hiseJaxWSService2"/>
+              <property name="sender" ref="hiseJaxWSSender2"/>
+            </bean>
+            
             
             <bean class="org.apache.hise.engine.store.TaskDD">
               <property name="taskName">
@@ -46,30 +57,12 @@
   </bean>
 
   <bean id="hiseJaxWSService1" class="org.apache.hise.engine.jaxws.HISEJaxWSService" init-method="init">
+    <property name="id" value="hiseJaxWSService1"/>
     <property name="hiseEngine" ref="hiseEngine"/>
     <property name="transactionManager" ref="transactionManager"></property>
   </bean>
 
-  <jaxws:endpoint id="testHtd1" address="/ClaimsHandlingService/" implementor="#hiseJaxWSService1" serviceName="ins:ClaimsHandlingService" endpointName="ins:ClaimsHandlingPort" publish="true" wsdlLocation="classpath:ExampleTasks.wsdl">
-  <!-- 
-    <jaxws:handlers>
-      <ref bean="transactionHandler"/>
-    </jaxws:handlers>
-    <jaxws:inInterceptors>
-      <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
-        <constructor-arg>
-          <map>
-            <entry key="action" value="UsernameToken"/>
-            <entry key="passwordType" value="PasswordDigest"/>
-            <entry key="passwordCallbackRef">
-              <ref bean="hisePasswordCallback"/>
-            </entry>
-          </map>
-        </constructor-arg>
-      </bean>
-    </jaxws:inInterceptors>
-     -->
-  </jaxws:endpoint>
+  <jaxws:endpoint id="testHtd1" address="/ClaimsHandlingService/" implementor="#hiseJaxWSService1" serviceName="ins:ClaimsHandlingService" endpointName="ins:ClaimsHandlingPort" publish="true" wsdlLocation="classpath:ExampleTasks.wsdl"/>
 
   <bean id="hiseJaxWSSender1" class="org.apache.hise.engine.jaxws.HISEJaxWSClient" init-method="init">
     <property name="wsdlDocumentLocation" value="classpath:ExampleTasks.wsdl"></property>
@@ -83,7 +76,25 @@
 <!-- 
   <jaxws:client id="testHtd1Sender" address="http://localhost:9999" wsdlLocation="classpath:ExampleTasks.wsdl"/>
    -->
-  <jaxws:endpoint id="testHtd2" address="/ClaimApprovalReminderService/" implementor="#hiseJaxWSService1" serviceName="ins:ClaimApprovalReminderService" endpointName="ins:ClaimApprovalReminderPort" publish="true" wsdlLocation="classpath:ExampleTasks.wsdl"/>
+  <jaxws:endpoint id="testHtdReminder" address="/ClaimApprovalReminderService/" implementor="#hiseJaxWSService1" serviceName="ins:ClaimApprovalReminderService" endpointName="ins:ClaimApprovalReminderPort" publish="true" wsdlLocation="classpath:ExampleTasks.wsdl"/>
    
+
+
+  <bean id="hiseJaxWSService2" class="org.apache.hise.engine.jaxws.HISEJaxWSService" init-method="init">
+    <property name="id" value="hiseJaxWSService2"/>
+    <property name="hiseEngine" ref="hiseEngine"/>
+    <property name="transactionManager" ref="transactionManager"></property>
+  </bean>
+  <jaxws:endpoint id="testHtd2" address="/ClaimsHandlingService2/" implementor="#hiseJaxWSService2" serviceName="ins:ClaimsHandlingService" endpointName="ins:ClaimsHandlingPort" publish="true" wsdlLocation="classpath:ExampleTasks.wsdl"/>
+
+  <bean id="hiseJaxWSSender2" class="org.apache.hise.engine.jaxws.HISEJaxWSClient" init-method="init">
+    <property name="wsdlDocumentLocation" value="classpath:ExampleTasks.wsdl"></property>
+    <property name="serviceName">
+      <bean class="javax.xml.namespace.QName" factory-method="valueOf">
+        <constructor-arg type="java.lang.String" value="{http://www.insurance.example.com/claims}ClaimsResolvingService"></constructor-arg>
+      </bean>
+    </property>
+  </bean>
+
 </beans>    
 

Added: incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/hise-itest.xml
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/hise-itest.xml?rev=919028&view=auto
==============================================================================
--- incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/hise-itest.xml (added)
+++ incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/hise-itest.xml Thu Mar  4 15:42:21 2010
@@ -0,0 +1,35 @@
+<?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"
+xmlns:osgi="http://www.springframework.org/schema/osgi"
+  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
+       http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd
+       ">
+
+<osgi:reference id="hiseEngine" interface="org.apache.hise.api.HISEEngine" bean-name="hiseEngine"/>
+<osgi:reference id="transactionManager" interface="org.springframework.transaction.PlatformTransactionManager" bean-name="transactionManager"/>
+
+  <jaxws:endpoint id="test" address="/test/" implementor="#test2" publish="true"/>
+  
+  <bean id="test2" class="org.apache.hise.test.TestImpl">
+    <property name="transactionManager" ref="transactionManager"/>
+    <property name="e" ref="hiseEngine"></property>
+  </bean>
+  
+    <bean id="sampleUsers" class="org.apache.hise.test.SampleUsers" init-method="init">
+        <property name="hiseEngine" ref="hiseEngine"></property>
+        <property name="transactionManager" ref="transactionManager"></property>
+    </bean>
+  
+</beans>

Propchange: incubator/hise/trunk/hise-test-example-osgi/src/main/resources/META-INF/spring/hise-itest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

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=919028&r1=919027&r2=919028&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 Thu Mar  4 15:42:21 2010
@@ -425,6 +425,109 @@
     </htd:completionDeadline>
   </htd:deadlines>
         </htd:task>    
+
+        <htd:task name="Task4">
+            
+            <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:ClaimsResolvingPT" responseOperation="resolve"/>
+            <htd:priority> htd:getInput("ClaimApprovalRequest")/priority </htd:priority>
+            
+            <htd:peopleAssignments>
+            	<htd:potentialOwners>
+                  <htd:from>
+                    <htd:literal>
+                        <htd:organizationalEntity>
+                            <htd:groups>
+                                <htd:group>someGroup</htd:group>
+                            </htd:groups>
+                        </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: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">
+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">
+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">
+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:description xml:lang="en-US" contentType="text/plain"> Approve this claim following corporate guideline #4711.0815/7 for {$firstname} {$lastname} </htd:description>
+
+            </htd:presentationElements>
+            
+            <htd:outcome>
+                <![CDATA[
+                  <cla:resolve xmlns:cla="http://www.insurance.example.com/claims" xmlns:htd="http://www.example.org/WS-HT">
+                     <claimId>{htd:getInput("request")/ClaimApprovalRequest/cla:cust/cla:id/text()}</claimId>
+                     <ok>{$outcome}</ok>
+                  </cla:resolve>
+                ]]>
+            </htd:outcome>
+        </htd:task>    
     </htd:tasks>    
     
     <htd:notifications>