[jboss-svn-commits] JBL Code SVN: r11118 - in labs/jbossesb/trunk/product/services/jbpm: src/main/java/org/jboss/soa/esb/services/jbpm and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 19 04:09:51 EDT 2007


Author: estebanschifman
Date: 2007-04-19 04:09:51 -0400 (Thu, 19 Apr 2007)
New Revision: 11118

Added:
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml
Removed:
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/util/
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml
Modified:
   labs/jbossesb/trunk/product/services/jbpm/build.xml
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java
   labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java
Log:


Modified: labs/jbossesb/trunk/product/services/jbpm/build.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/build.xml	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/build.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -15,10 +15,11 @@
 		<pathelement location="build/test/classes" />
 		<fileset dir="lib/ext" includes="*.jar" />
 		<fileset dir="${esb.product.lib.dir}" includes="*.jar" /> <!-- Product Jars. -->
+		<fileset dir="../../lib/ext" includes="*.jar" />
 	</path>
 
 	<target name="compile" depends="prepare">
-		<javac srcdir="src/main/java" destdir="build/jbpm.esb">
+		<javac srcdir="src/main/java" destdir="build/jbpm.esb" debug="on" >
 			<classpath refid="classpath" />
 		</javac>
 	</target>
@@ -48,9 +49,12 @@
     <target name="test" depends="esb">
     	<mkdir dir="build/test/classes"/>
     	<mkdir dir="build/test/report"/>
-    	<javac srcdir="src/test/java" destdir="build/test/classes">
+    	<javac srcdir="src/test/java" destdir="build/test/classes" debug="on" >
 			<classpath refid="classpath" />
 		</javac>
+    	<copy todir="build/test/classes" >
+    		<fileset dir="src/test/java" includes="**/*.xml" />
+    	</copy>
 		<junit fork="yes" haltonfailure="true" haltonerror="true" showoutput="off">
 			<formatter type="plain" usefile="false" />
 			<classpath refid="classpath" />

Added: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,139 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.services.jbpm;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.services.jbpm.actions.CommandInterpreter;
+import org.jboss.soa.esb.util.ClassUtil;
+
+public class Constants {
+	
+	private static Logger _logger = Logger.getLogger(Constants.class);
+	
+	// Names to be used as keys both in the ESB message and in the Jbpm context (process & token)
+	public static final String COMMAND_CODE					="jbpmCommandCode";
+
+	public static final String PROCESS_DEFINITION			="jbpmProcessDefinition";
+	public static final String PROCESS_DEFINITION_XML		="jbpmProcessDefinitionXml";
+	public static final String PROCESS_DEFINITION_NAME		="jbpmProcessDefName";
+	public static final String PROCESS_DEFINITION_VERSION	="jbpmProcessDefVersion";
+	public static final String PROCESS_INSTANCE_ID			="jbpmProcessInstId";
+	public static final String TASK_INSTANCE_ID				="jbpmTaskInstId";
+	public static final String TOKEN_ID						="jbpmTokenId";
+	public static final String CREATE_START_TASK			="jbpmCreateStartTask";
+	public static final String INCLUDE_VARIABLES			="jbpmIncludeVariables";
+	public static final String INCLUDE_LOGS					="jbpmIncludeLogs";
+	public static final String VARIABLE_NAMES_LIST			="jbpmVariableNamesList";
+	public static final String ACTOR_ID						="jbpmActorId";
+	public static final String ACTOR_LIST					="jbpmActorList";
+	public static final String OVERWRITE_SWIMLANE			="jbpmOverwriteSwim";
+
+	public static final String TRANSITION_NAME				="jbpmTransitionName";
+	public static final String CURRENT_NODE_NAME			="jbpmCurrentNodeName";
+	public static final String VARIABLE_VALUES				="jbpmVariableValuesMap";
+	public static final String JBPM_RETURN_OBJECT			="jbpmReturnObject";
+	public static final String EXCEPTION     				="jbpmException";
+	public static final String ERROR_MESSAGE   				="jbpmErrorMsg";
+	public static final String RETURN_CODE					="jbpmReturnCode";
+	
+	// Possible values of return codes after execution of an action
+	public static final String RETCODE_OK					="jbpmReturnOK";
+	public static final String RETCODE_INVALID_OPCODE		="jbpmReturnInvalidOpCode";
+	public static final String RETCODE_EXCEPTION			="jbpmReturnExceptionThrown";
+	public static final String RETCODE_ERROR				="jbpmReturnError";
+
+	// tag names for xml configuration of actions
+	public static final String PROCESS_DEFINITION_XML_TAG	="ProcessDefinitionXml";
+	public static final String PROCESS_DEFINITION_NAME_TAG	="ProcessDefinitionName";
+	public static final String TRANSITION_NAME_TAG			="TransitionName";
+	public static final String VARIABLES_TAG				="variables";
+
+	public enum OpCode
+	{
+		DeployProcessDefinition
+//		AbstractCancelCommand
+//		,AbstractGetObjectBaseCommand
+//		,AsynchronousCommand
+		,CancelProcessInstanceCommand
+		,CancelTokenCommand
+		,CancelWorkOnTaskCommand
+//		,ChangeProcessInstanceVersionCommand
+//		,Command
+//		,CommandService
+//		,CompositeCommand
+//		,GetProcessDefinitionCommand
+		,GetProcessInstanceCommand
+//		,GetProcessInstancesCommand
+		,GetTaskInstanceCommand
+		,GetTaskListCommand
+		,NewProcessInstanceCommand
+		,SignalCommand
+		,StartProcessInstanceCommand
+		,StartWorkOnTaskCommand
+		,TaskInstanceEndCommand
+		,VariablesCommand
+		;
+		public Class getClazz() throws ClassNotFoundException
+		{
+			return _mapName2class.get(toString());
+		}
+	}
+	private static Map<String,Class>	_mapName2class = new HashMap<String, Class>();
+	private static Map<Class ,String>	_mapClass2name = new HashMap<Class, String>();
+	
+	public static String getCommandCode(Class clazz)
+	{
+		String cmd = _mapClass2name.get(clazz);
+		if (null==cmd)
+			throw new IllegalArgumentException("No command code mapped to <"+clazz+">");
+		return cmd;
+	}
+	
+	static
+	{
+		String name = null,  qName= null;
+		// at present, we assume all command implementors are in the org.jbpm.commmand pkg
+		// if this changes, you'll have to replace the for loop with individual put(name,Class)
+		for(OpCode curr : OpCode.values())
+		{
+			name = curr.toString();
+			if (curr.equals(OpCode.DeployProcessDefinition))
+				qName= CommandInterpreter.DeployProcessDefCommand.class.getName();
+			else
+				qName= "org.jbpm.command."+name;
+			try 
+			{
+				Class clazz = ClassUtil.forName(qName, Constants.class);
+				_mapName2class.put(name,clazz);
+				_mapClass2name.put(clazz,name);
+			}
+			catch (ClassNotFoundException e)
+			{
+				_logger.fatal("",e);
+			}
+		}
+	}
+	
+}


Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/Constants.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/BaseActionHandler.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -22,13 +22,16 @@
 package org.jboss.soa.esb.services.jbpm.actions;
 
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.UUID;
 
+import org.apache.log4j.Logger;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.addressing.Call;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
-import org.jboss.soa.esb.listeners.ListenerUtil;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
 import org.jbpm.graph.def.ActionHandler;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ExecutionContext;
@@ -53,56 +56,57 @@
  *
  */
 
-public class BaseActionHandler implements ActionHandler 
+public abstract class BaseActionHandler implements ActionHandler 
 {
 	
 	private static final long serialVersionUID = 1L;
 	
-	public String getContentVariableName() { return "esbUserObjectVariable"; }
-	
 	public String 		esbCategoryName;
 	public String 		esbServiceName;
 	
-	public void execute(ExecutionContext context) throws Exception 
+	protected Logger	_logger = Logger.getLogger(getClass());
+	
+	public Message getTemplate(ExecutionContext context) throws Exception 
 	{
 		if (null==esbCategoryName)
 			throw new ConfigurationException("Service category (esbCategoryName element) must not be null");
 		if (null==esbServiceName)
 			throw new ConfigurationException("Service name (esbServiceName element) must not be null");
 		
-		Object userObject	= context.getContextInstance().getVariable(getContentVariableName());
-		if (null==userObject)
-			throw new IllegalArgumentException("User object to be sent to ESB (variable="
-					+getContentVariableName()+") is <null>");
+		Message template = MessageFactory.getInstance().getMessage();
+		URI	 uri	= null;
+		try  { uri = new URI(UUID.randomUUID().toString()); }
+		catch (URISyntaxException e)
+		{
+			_logger.fatal("Problem with UUID.randomUUID() - This should not happen");
+			return null;
+		}
+		template.getHeader().getCall().setMessageID(uri);
+
 		
-		CommandVehicle command = new CommandVehicle(CommandVehicle.Operation.sendMessageToEsb);
-		
 		ProcessDefinition process	= context.getProcessDefinition();
 		if (null!=process)
 		{
-			command.setProcessDefinitionName(process.getName());
-			command.setProcessVersion		(process.getVersion());
+			Helper.setObjectValue(template, Constants.PROCESS_DEFINITION_NAME, process.getName());
+			Helper.setIntValue(template, Constants.PROCESS_DEFINITION_VERSION, process.getVersion());
 		}
 		
 		ProcessInstance instance = context.getProcessInstance();
 		if (null!=instance)
 		{
-			command.setInstanceId			(context.getProcessInstance().getId());
+			Helper.setLongValue(template,Constants.PROCESS_INSTANCE_ID,context.getProcessInstance().getId());
 		}
+		
 		Token token	= context.getToken();
-		
 		if (null!=token)
 		{
-			command.setTokenId				(token.getId());
+			Helper.setLongValue(template,Constants.TOKEN_ID,token.getId());
 		}
 		
-		command.setUserObject(userObject);
-	
-		Message message	= command.toCommandMessage();
-		Call call = message.getHeader().getCall();
+		Call call = template.getHeader().getCall();
 		call.setMessageID(new URI(UUID.randomUUID().toString()));
 		
-		ListenerUtil.tryToDeliver(message, esbCategoryName, esbServiceName);
+		return template;
 	}
 
 }

Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -21,27 +21,46 @@
  */
 package org.jboss.soa.esb.services.jbpm.actions;
 
-import java.util.HashMap;
+import java.io.Serializable;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.actions.ActionLifecycle;
 import org.jboss.soa.esb.actions.ActionLifecycleException;
+import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.MalformedEPRException;
 import org.jboss.soa.esb.couriers.Courier;
 import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.couriers.CourierFactory;
 import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
+import org.jboss.soa.esb.message.Body;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
+import org.jboss.soa.esb.util.Util;
 import org.jbpm.JbpmConfiguration;
 import org.jbpm.JbpmContext;
+import org.jbpm.command.CancelProcessInstanceCommand;
+import org.jbpm.command.CancelTokenCommand;
+import org.jbpm.command.CancelWorkOnTaskCommand;
+import org.jbpm.command.Command;
+import org.jbpm.command.CommandService;
+import org.jbpm.command.GetProcessInstanceCommand;
+import org.jbpm.command.GetTaskInstanceCommand;
+import org.jbpm.command.GetTaskListCommand;
+import org.jbpm.command.NewProcessInstanceCommand;
+import org.jbpm.command.SignalCommand;
+import org.jbpm.command.StartProcessInstanceCommand;
+import org.jbpm.command.StartWorkOnTaskCommand;
+import org.jbpm.command.TaskInstanceEndCommand;
+import org.jbpm.command.VariablesCommand;
+import org.jbpm.command.impl.CommandServiceImpl;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
+import org.jbpm.taskmgmt.exe.TaskInstance;
 
 /**
  * 
@@ -91,317 +110,375 @@
 		return message;
 	} // ________________________________
 
-	public Message process(Message message)
-		throws MalformedEPRException, CourierException
+	protected Message replyMessage(Message input, Message output)
+		throws CourierException, MalformedEPRException
 	{
-		_command = new CommandVehicle(message);
-		Enum operator = _command.getOperator();
-		
-		
-		if 		(operator.equals(CommandVehicle.Operation.signalToken))			
-			signalToken();
-		else if (operator.equals(CommandVehicle.Operation.signalProcess))		
-			signalProcess();
-		else if (operator.equals(CommandVehicle.Operation.hasInstanceEnded))		
-			checkInstanceEnded();
-		else if (operator.equals(CommandVehicle.Operation.getProcessInstanceVariables))
-			getProcessInstanceVariabes();
-		else if (operator.equals(CommandVehicle.Operation.setProcessInstanceVariables))
-			setProcessInstanceVariables();
-		else if (operator.equals(CommandVehicle.Operation.getTokenVariables))	
-			getTokenVariabes();
-		else if (operator.equals(CommandVehicle.Operation.setTokenVariables))	
-			setTokenVariables();
-		else if (operator.equals(CommandVehicle.Operation.newProcessInstance))	
-			newProcessInstance();
-		else if (operator.equals(CommandVehicle.Operation.deployProcessDefinition))
-			deployProcessDefinition();
-		else
-		{
-			_logger.error("Unknown operator: "+operator.toString()+" - Returning message unchanged");
-			_command.setReturnCode(CommandVehicle.RETCODE_INVALID_OPCODE);
-		}
-		
-		Message retMsg = _command.toCommandMessage();
-		EPR toEpr	= message.getHeader().getCall().getTo();
+		EPR toEpr	= input.getHeader().getCall().getTo();
 		if (null!=toEpr)
-			retMsg.getHeader().getCall().setTo(toEpr);
-		EPR replyTo	= message.getHeader().getCall().getReplyTo();
+			output.getHeader().getCall().setTo(toEpr);
+		EPR replyTo	= input.getHeader().getCall().getReplyTo();
 		if (null!=replyTo)
-			retMsg.getHeader().getCall().setReplyTo	(replyTo);
-		EPR faultTo	= message.getHeader().getCall().getFaultTo();
+			output.getHeader().getCall().setReplyTo	(replyTo);
+		EPR faultTo	= input.getHeader().getCall().getFaultTo();
 		if (null!=faultTo)
-			retMsg.getHeader().getCall().setFaultTo	(faultTo);
-		return (null==replyTo)? retMsg : defaultReply(retMsg);
-	} // ________________________________
-	
-	public void deployProcessDefinition()
+			output.getHeader().getCall().setFaultTo	(faultTo);
+		return (null==replyTo)? output : defaultReply(output);
+	} //________________________________
+		
+	public Message process(Message message)
+		throws MalformedEPRException, CourierException, ActionProcessingException
 	{
+		Message response = null;
 		try
 		{
-			prepareJbpm();
-			String xmlString = _command.getProcessDefinitionXml();
-			ProcessDefinition def = ProcessDefinition.parseXmlString(xmlString);
-			_jbpmCtx.deployProcessDefinition(def);
-			_command.setProcessDefinitionName	(def.getName());
-			_command.setProcessVersion			(def.getVersion());
-			_command.setReturnCode(CommandVehicle.RETCODE_OK);
+			Constants.OpCode opCode =Constants.OpCode
+				.valueOf((String)message.getBody().get(Constants.COMMAND_CODE));
+			if (opCode.equals(Constants.OpCode.DeployProcessDefinition))
+				response = deployProcessDefinition(message);
+			if (opCode.equals(Constants.OpCode.CancelProcessInstanceCommand))
+				response = cancelProcessInstance(message);
+			if (opCode.equals(Constants.OpCode.CancelTokenCommand))
+				response = cancelToken(message);
+			if (opCode.equals(Constants.OpCode.CancelWorkOnTaskCommand))
+				response = cancelWorkOnTask(message);
+			if (opCode.equals(Constants.OpCode.GetProcessInstanceCommand))
+				response = getProcessInstance(message);
+			if (opCode.equals(Constants.OpCode.GetTaskInstanceCommand))
+				response = getTaskInstance(message);
+			if (opCode.equals(Constants.OpCode.GetTaskListCommand))
+				response = getTaskList(message);
+			if (opCode.equals(Constants.OpCode.NewProcessInstanceCommand))
+				response = newProcessInstance(message, false);
+			if (opCode.equals(Constants.OpCode.SignalCommand))
+				response = signal(message);
+			if (opCode.equals(Constants.OpCode.StartProcessInstanceCommand))
+				response = newProcessInstance(message, true);
+			if (opCode.equals(Constants.OpCode.StartWorkOnTaskCommand))
+				response = startWorkOnTask(message);
+			if (opCode.equals(Constants.OpCode.TaskInstanceEndCommand))
+				response = taskInstanceEnd(message);
+			if (opCode.equals(Constants.OpCode.VariablesCommand))
+				response = variables(message);
+			if (null==response)
+			{
+				// this should NEVER happen
+				Exception e = new Exception("Something VERY WRONG with this class");
+				_logger.fatal(e);
+				throw e;
+			}
 		}
 		catch (Exception e)
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			throw new ActionProcessingException(e);
 		}
-		finally	
-		{ 
-			cleanupJbpm(); 
-		} 
+		
+		return replyMessage(message,response);
 	} //________________________________
-	public void newProcessInstance()
+		
+	public Message doTheJob(Command command)
 	{
+		Message response = Helper.responseTemplate();
+		Body	body	= response.getBody();
+
 		try
 		{
-			prepareJbpm();
-			_processInstance = _jbpmCtx.newProcessInstance(_command.getProcessDefinitionName());
-			_jbpmCtx.save(_processInstance);
-			
-			_command.setProcessVersion(_processInstance.getProcessDefinition().getVersion());
-			_command.setInstanceId	(_processInstance.getId());
-			_command.setTokenId		(_processInstance.getRootToken().getId());
-			_command.setCurrentNodeName(_processInstance.getRootToken().getNode().getName());
-			_command.setReturnCode(CommandVehicle.RETCODE_OK);
+			Object obj = getJbpmCommandService().execute(command);
+			body.add(Constants.RETURN_CODE, Constants.RETCODE_OK);
+			if (null!=obj)
+				body.add(Constants.JBPM_RETURN_OBJECT, obj);
 		}
 		catch (Exception e)
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			body.add(Constants.RETURN_CODE, Constants.RETCODE_EXCEPTION);
+			body.add(Constants.EXCEPTION, e);
 		}
-		finally	
-		{ 
-			cleanupJbpm(); 
-		} 
+		
+		return response;
 	} //________________________________
 
-	public void signalProcess()
+	/**
+	 * Until there is an appropriate Command for this in the jBPM api, use the local implementation
+	 * @param request Message - containing either a process definition, or it's XML representation
+	 * @return
+	 * @throws Exception
+	 */
+	public Message deployProcessDefinition(Message request) throws Exception
 	{
-		try
+		ProcessDefinition def = null;
+		
+		Object obj = Helper.getObjectValue(request, Constants.PROCESS_DEFINITION);
+		if (null!=obj)
+			def	= (ProcessDefinition) obj;
+		else
 		{
-			long id	= _command.getInstanceId();
-			prepareJbpm();
-			_processInstance = _jbpmCtx.loadProcessInstanceForUpdate(id);
-			_processInstance.signal();
-			_jbpmCtx.save(_processInstance);
-
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setTokenId			(_processInstance.getRootToken().getId());
-			_command.setCurrentNodeName	(_processInstance.getRootToken().getNode().getName());
-			_command.setUserObject		(_processInstance.hasEnded());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
+			obj	= Helper.getObjectValue(request,Constants.PROCESS_DEFINITION_XML);
+			def = ProcessDefinition.parseXmlString((String)obj);
 		}
-		catch (Exception e)
+		Message response = doTheJob(new DeployProcessDefCommand(def));
+		Helper.setObjectValue(response, Constants.PROCESS_DEFINITION_NAME, def.getName());
+		Helper.setObjectValue(response, Constants.PROCESS_DEFINITION_VERSION, def.getVersion());
+		return response;
+	} // _______________________________
+	
+	public Message cancelProcessInstance(Message request) throws Exception
+	{
+		long processId = Helper.getLongValue(request,Constants.PROCESS_INSTANCE_ID);		
+		return doTheJob(new CancelProcessInstanceCommand(processId));
+	} // _______________________________
+	
+	public Message cancelToken(Message request) throws Exception
+	{
+		long tokenId = Helper.getLongValue(request,Constants.TOKEN_ID);		
+		return doTheJob(new CancelTokenCommand(tokenId));
+	} // _______________________________
+	
+	public Message cancelWorkOnTask(Message request) throws Exception
+	{
+		long taskId = Helper.getLongValue(request,Constants.TASK_INSTANCE_ID);		
+		return doTheJob(new CancelWorkOnTaskCommand(taskId));
+	} // _______________________________
+	
+	public Message getProcessInstance(Message request) throws Exception
+	{
+		GetProcessInstanceCommand command = new GetProcessInstanceCommand();
+		Long id 	= Helper.getLongValue(request,Constants.PROCESS_INSTANCE_ID);
+		if (null!=id)
+			command.setProcessInstanceId(id);
+		else
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			id	= Helper.getLongValue(request, Constants.TOKEN_ID);
+			if (null!=id)
+				command.setTokenId(id);
+			else
+			{
+				id = Helper.getLongValue(request, Constants.TASK_INSTANCE_ID);
+				if (null!=id)
+					command.setTaskInstanceId(id);
+				else
+					throw new Exception
+					("Either <"+Constants.PROCESS_INSTANCE_ID
+							+"> or <"+Constants.TOKEN_ID
+							+"> or <"+Constants.TASK_INSTANCE_ID
+							+"> object must be specified in Message body to know what to retrieve");
+				
+			}
+			
 		}
-		finally	
-		{ 
-			cleanupJbpm(); 
-		} 
-	} //________________________________
-
-	public void signalToken()
+		Boolean includeVars	= Helper.getBooleanValue(request, Constants.INCLUDE_VARIABLES);
+		if (null!=includeVars)
+			command.setIncludeAllVariables(includeVars);
+		Boolean includeLogs	= Helper.getBooleanValue(request, Constants.INCLUDE_LOGS);
+		if (null!=includeLogs)
+			command.setIncludeLogs(includeLogs);
+		return doTheJob(command);
+	} // _______________________________
+	
+	public Message getTaskInstance(Message request) throws Exception
 	{
-		try
+		long 	taskId 	= Helper.getLongValue(request,Constants.TASK_INSTANCE_ID);
+		GetTaskInstanceCommand command = new GetTaskInstanceCommand(taskId);
+		String[] vars = Helper.getStringListValue(request,Constants.VARIABLE_NAMES_LIST);
+		if (null!=vars)
 		{
-			long id	= _command.getTokenId();
-			prepareJbpm();
-			_token	= _jbpmCtx.loadTokenForUpdate(id);
-			_token.signal();
-			_jbpmCtx.save(_token);
-
-			_processInstance	= _token.getProcessInstance();
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setInstanceId		(_processInstance.getId());
-			_command.setCurrentNodeName	(_token.getNode().getName());
-			_command.setUserObject		(_processInstance.hasEnded());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
+			if (vars.length < 1)
+				command.setIncludeAllVariables(false);
+			else
+				command.setVariablesToInclude(vars);
 		}
-		catch (Exception e)
+		else
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			Boolean includeVars	= Helper.getBooleanValue(request, Constants.INCLUDE_VARIABLES);
+			if (null!=includeVars)
+				command.setIncludeAllVariables(includeVars);
 		}
-		finally	
-		{ 
-			cleanupJbpm(); 
-		} 
-	} //________________________________
+		Boolean includeLogs	= Helper.getBooleanValue(request, Constants.INCLUDE_LOGS);
+		if (null!=includeLogs)
+			command.setIncludeLogs(includeLogs);
 
-	public void getProcessInstanceVariabes()
-	{
-		try
+		Message response = doTheJob(command);
+		TaskInstance tInst = (TaskInstance)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+		if (null!=tInst)
 		{
-			long id	= _command.getInstanceId();
-			prepareJbpm();
-			_processInstance = _jbpmCtx.loadProcessInstance(id);
-			Map allVars	= _processInstance.getContextInstance().getVariables();
-			_command.setVariableValues	(pickVarsFromMap(allVars));
-
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setTokenId			(_processInstance.getRootToken().getId());
-			_command.setCurrentNodeName	(_processInstance.getRootToken().getNode().getName());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
+			Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID	,tInst.getProcessInstance().getId());
+			Helper.setLongValue(response, Constants.TOKEN_ID			,tInst.getToken().getId());
+			Helper.setLongValue(response, Constants.TASK_INSTANCE_ID	,tInst.getId());
 		}
-		catch (Exception e)
-		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
-		}
-		finally	{ cleanupJbpm(); } 
-	} //________________________________
 
-	public void checkInstanceEnded()
+		return response;
+	} // _______________________________
+	
+	public Message getTaskList(Message request) throws Exception
 	{
-		try
+		String[] actors = Helper.getStringListValue(request,Constants.ACTOR_LIST);
+		if (null==actors || actors.length<1)
+			throw new Exception(Helper.argumentException(Constants.ACTOR_LIST));
+		
+		GetTaskListCommand command = new GetTaskListCommand(actors);
+
+		String[] vars = Helper.getStringListValue(request,Constants.VARIABLE_NAMES_LIST);
+		if (null!=vars)
 		{
-			long id	= _command.getInstanceId();
-			prepareJbpm();
-			_processInstance = _jbpmCtx.loadProcessInstance(id);
-			_command.setUserObject(_processInstance.hasEnded());
-
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setTokenId			(_processInstance.getRootToken().getId());
-			_command.setCurrentNodeName	(_processInstance.getRootToken().getNode().getName());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
+			if (vars.length < 1)
+				command.setIncludeAllVariables(false);
+			else
+				command.setVariablesToInclude(vars);
 		}
-		catch (Exception e)
+		else
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			Boolean includeVars	= Helper.getBooleanValue(request, Constants.INCLUDE_VARIABLES);
+			if (null!=includeVars)
+				command.setIncludeAllVariables(includeVars);
 		}
-		finally	{ cleanupJbpm(); } 
-	} //________________________________
 
-	public void setProcessInstanceVariables()
+		return doTheJob(command);
+	} // _______________________________
+	
+	public Message newProcessInstance(Message request, boolean start) throws Exception
 	{
-		try
+		String processName = Helper.getStringValue(request,Constants.PROCESS_DEFINITION_NAME);
+		if (Util.isNullString(processName))
+			throw new Exception(Helper.argumentException(Constants.PROCESS_DEFINITION_NAME));
+		NewProcessInstanceCommand command = null;
+		if (start)
 		{
-			Map<String,Object>newVals = _command.getVariableValues();
-			if (null==newVals || newVals.size()<1)
+			StartProcessInstanceCommand startCmd = new StartProcessInstanceCommand();
+			String transition = Helper.getStringValue(request, Constants.TRANSITION_NAME);
+			if (null!=transition)
+				startCmd.setStartTransitionName(transition);
+			command = startCmd;
+		}
+		else
+			command = new NewProcessInstanceCommand(); 
+
+		command.setProcessName(processName);
+		
+		String actorId	= Helper.getStringValue(request, Constants.ACTOR_ID);
+		if (null!=actorId)
+			command.setActorId(actorId);
+		Boolean createStartTask = Helper.getBooleanValue(request, Constants.CREATE_START_TASK);
+		if (null!=createStartTask)
+			command.setCreateStartTask(createStartTask);
+		Map<String, Serializable> variables = Helper.getVariablesMap(request, Constants.VARIABLE_VALUES);
+		if (null!=variables)
+			command.setVariables(variables);
+
+		Message response = doTheJob(command);
+
+		String retCode = Helper.getStringValue(response, Constants.RETURN_CODE);
+		if (Constants.RETCODE_OK.equals(retCode))
+		{
+			Object obj = Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+			if (obj instanceof TaskInstance)
 			{
-				_command.setReturnCode(CommandVehicle.RETCODE_ERROR);
-				_command.setErrorMessage("Null or empty variable Map");
-				return;
+				TaskInstance tInst = (TaskInstance)obj;
+				Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID	,tInst.getProcessInstance().getId());
+				Helper.setLongValue(response, Constants.TOKEN_ID			,tInst.getToken().getId());
+				Helper.setLongValue(response, Constants.TASK_INSTANCE_ID	,tInst.getId());
 			}
-			long id	= _command.getInstanceId();
-			prepareJbpm();
-			_processInstance = _jbpmCtx.loadProcessInstanceForUpdate(id);
-			_processInstance.getContextInstance().addVariables(newVals);
-			_jbpmCtx.save(_processInstance);
-
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setInstanceId		(_processInstance.getId());
-			_command.setTokenId			(_processInstance.getRootToken().getId());
-			_command.setCurrentNodeName	(_processInstance.getRootToken().getNode().getName());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
+			else if (obj instanceof ProcessInstance)
+			{
+				ProcessInstance pInst = (ProcessInstance)obj;
+				Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID, pInst.getId());
+				Helper.setLongValue(response, Constants.TOKEN_ID			,pInst.getRootToken().getId());
+			}
 		}
-		catch (Exception e)
-		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
-		}
-		finally	
-		{ 
-			cleanupJbpm(); 
-		} 
-	} //________________________________
-
-	public void getTokenVariabes()
+		return response;
+	} // _______________________________
+	
+	public Message signal(Message request) throws Exception
 	{
-		try
+		SignalCommand command = new SignalCommand();
+		String transition = Helper.getStringValue(request, Constants.TRANSITION_NAME);
+		if (null!=transition)
+			command.setTransitionName(transition);
+		
+		// try token id first
+		Long tokenId = Helper.getLongValue(request,Constants.TOKEN_ID);		
+		if (null== tokenId)
 		{
-			long id	= _command.getTokenId();
-			prepareJbpm();
-			_token = _jbpmCtx.loadToken(id);
-			Map allVars	= _token.getProcessInstance().getContextInstance().getVariables(_token);
-			_command.setVariableValues(pickVarsFromMap(allVars));
-
-			_processInstance	= _token.getProcessInstance();
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setInstanceId		(_processInstance.getId());
-			_command.setCurrentNodeName	(_token.getNode().getName());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
+			// now try with the process id (use root token)
+			Long processId = Helper.getLongValue(request,Constants.PROCESS_INSTANCE_ID);
+			if (null== processId)
+				throw new Exception("Either <"+Constants.TOKEN_ID+"> or <"+Constants.PROCESS_INSTANCE_ID
+					+"> object must be specified in Message body to know who to signal");
+			ProcessInstance inst = (ProcessInstance)getJbpmCommandService().execute(new GetProcessInstanceCommand(processId));
+			tokenId	= inst.getRootToken().getId();
 		}
-		catch (Exception e)
+		command.setTokenId(tokenId);
+		
+		Message response = doTheJob(command);
+		Token token = (Token)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+		if (null!=token)
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			Helper.setLongValue(response, Constants.TOKEN_ID			,token.getId());			
+			Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID, token.getProcessInstance().getId());
 		}
-		finally	{ cleanupJbpm(); } 
-	} //________________________________
+		return response;
+	} // _______________________________
+	
+	public Message startWorkOnTask(Message request) throws Exception
+	{
+		StartWorkOnTaskCommand command = new StartWorkOnTaskCommand();
+		Long taskId	= Helper.getLongValue(request, Constants.TASK_INSTANCE_ID);
+		if (null!=taskId)
+			command.setTaskInstanceId(taskId);
+		Boolean overwrite = Helper.getBooleanValue(request, Constants.OVERWRITE_SWIMLANE);
+		if (null!=overwrite)
+			command.setOverwriteSwimlane(overwrite);
+		return doTheJob(command);
+	} // _______________________________
 
-	public void setTokenVariables()
+	public Message taskInstanceEnd(Message request) throws Exception
 	{
-		try
-		{
-			Map<String,Object>newVals = _command.getVariableValues();
-			if (null==newVals || newVals.size()<1)
-			{
-				_command.setReturnCode(CommandVehicle.RETCODE_ERROR);
-				_command.setErrorMessage("Null or empty variable Map");
-				return;
-			}
-			long id	= _command.getTokenId();
-			prepareJbpm();
-			_token = _jbpmCtx.loadToken(id);
-			_token.getProcessInstance().getContextInstance().addVariables(newVals,_token);
-			_jbpmCtx.save(_token);
+		TaskInstanceEndCommand command = new TaskInstanceEndCommand();
+		Long taskId 	= Helper.getLongValue(request,Constants.TASK_INSTANCE_ID);
+		if (null!=taskId)
+			command.setTaskInstanceId(taskId);
+		Map<String, Serializable> variables = Helper.getVariablesMap(request, Constants.VARIABLE_VALUES);
+		if (null!=variables)
+			command.setVariables(variables);
 
-			_command.setProcessDefinitionName (_processInstance.getProcessDefinition().getName());
-			_command.setProcessVersion	(_processInstance.getProcessDefinition().getVersion());
-			_command.setInstanceId		(_processInstance.getId());
-			_command.setTokenId			(_processInstance.getRootToken().getId());
-			_command.setCurrentNodeName	(_processInstance.getRootToken().getNode().getName());
-			_command.setReturnCode		(CommandVehicle.RETCODE_OK);
-		}
-		catch (Exception e)
+		String transition = Helper.getStringValue(request, Constants.TRANSITION_NAME);
+		if (null!=transition)
+			command.setTransitionName(transition);
+
+		Message response = doTheJob(command);
+		TaskInstance tInst = (TaskInstance)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+		if (null!=tInst)
 		{
-			_command.setReturnCode(CommandVehicle.RETCODE_EXCEPTION);
-			_command.setException(e);
+			Helper.setLongValue(response, Constants.PROCESS_INSTANCE_ID	,tInst.getProcessInstance().getId());
+			Helper.setLongValue(response, Constants.TOKEN_ID			,tInst.getToken().getId());
+			Helper.setLongValue(response, Constants.TASK_INSTANCE_ID	,tInst.getId());
 		}
-		finally	
-		{ 
-			cleanupJbpm(); 
-		} 
-	} //________________________________
+		return response;
+	} // _______________________________
 	
-	/**
-	 * Get list of variables requested in command, from map in arg0.
-	 * <br/>List of requested variables is obtained from command invoking the getVariableNames() method.
-	 * <br/>If the list of variable names is NULL, all variables in the map will be returned.
-	 * <br/>If it's an empty List, an empty map will be returned (why would anybody ask for an empty list of vars ?)
-	 * @param variables
-	 * @return
-	 */
-	@SuppressWarnings("unchecked")
-	protected Map<String,Object>pickVarsFromMap(Map variables)
+	public Message variables(Message request) throws Exception
 	{
-		Set<String>names = _command.getVariableNames();
-		if (null==names)
-			return variables;
+		VariablesCommand command = new VariablesCommand();
+		Long id 	= Helper.getLongValue(request, Constants.TOKEN_ID);
+		if (null!=id)
+			command.setTokenId(id);
+		else
+		{
+			id = Helper.getLongValue(request, Constants.TASK_INSTANCE_ID);
+			if (null!=id)
+				command.setTaskInstanceId(id);
+			else
+				throw new Exception
+				("Either <"+Constants.TOKEN_ID
+						+"> or <"+Constants.TASK_INSTANCE_ID
+						+"> object must be specified in Message body to know what to retrieve");
+			
+		}
+
+		Map<String, Serializable> variables = Helper.getVariablesMap(request, Constants.VARIABLE_VALUES);
+		if (null!=variables)
+			command.setVariables(variables);
+
 		
-		Map<String,Object>retMap = new HashMap<String, Object>();
-		for(String curr : names)
-			retMap.put(curr, variables.get(curr));
-		
-		return retMap;
-	} //________________________________
+		return doTheJob(command);
+	} // _______________________________
 	
 	/**
 	 * Should this class need any extra configuration, this is the placeholder where to check
@@ -412,24 +489,26 @@
 	{
 	} // _______________________________
     
-	protected void prepareJbpm()
-	{
-		_jbpmCtx	= null;
-		_jbpmCtx 	= getJbpmConfig().createJbpmContext();
-	} //________________________________
-	protected void cleanupJbpm()
-	{
-		if (null!=_jbpmCtx) 	_jbpmCtx.close();
-		_jbpmCtx		= null;
-		_processInstance= null;
-		_token			= null;
-	} //________________________________
-	
 	/**
-	 * Encapsulate obtention of jBPM configuration here.
+	 * Encapsulate obtention of jBPM CommandService here
 	 * <br/>If it can't be cached, we only need to change this method.
-	 * @return JbpmConfiguration
+	 * @return CommandService
 	 */
+	protected static CommandService getJbpmCommandService()
+	{
+		if (null== s_jbpmService)
+			synchronized (s_oSynch)
+			{
+				if (null!= s_jbpmService)
+					return s_jbpmService;
+				
+				if (null==s_jbpmConfig)
+					s_jbpmConfig = JbpmConfiguration.getInstance();
+				s_jbpmService = new CommandServiceImpl(s_jbpmConfig);
+			}
+		return s_jbpmService;
+	} //________________________________
+
 	protected static JbpmConfiguration getJbpmConfig()
 	{
 		if (null== s_jbpmConfig)
@@ -440,15 +519,48 @@
 			}
 		return s_jbpmConfig;
 	} //________________________________
+
+	/**
+	 * Set an ad hoc jbpm configuration (generally used for testing)
+	 * @param xmlConfig String - The jbpm.cfg.xml compliant xml string
+	 * @throws Exception - If jbpm configuration was already set
+	 */
+	public static void setJbpmConfig(String xmlConfig) throws Exception
+	{
+		if (null== s_jbpmConfig)
+			synchronized (s_oSynch)
+			{
+				if (null==s_jbpmConfig)
+				{
+					s_jbpmConfig = JbpmConfiguration.getInstance(xmlConfig);
+					return;
+				}
+			}
+		throw new Exception("Jbpm configuration has already been set");
+	} //________________________________
 	
-	protected ConfigTree 		_config;
-	protected CommandVehicle 	_command;
-	private static final Object			s_oSynch = new Integer(0);
-	private static JbpmConfiguration	s_jbpmConfig;
-	protected JbpmContext 		_jbpmCtx;
-	protected ProcessInstance	_processInstance;
-	protected Token				_token;
+	protected ConfigTree 			_config;
+	private static Logger _logger = Logger.getLogger(CommandInterpreter.class);
+
+	private static final Object		s_oSynch = new Integer(0);
+	private static JbpmConfiguration s_jbpmConfig;
+	private static CommandService	s_jbpmService;
 	
-	protected static Logger _logger = Logger.getLogger(CommandInterpreter.class);
+	public static class DeployProcessDefCommand implements Command
+	{
+		private static final long serialVersionUID = 1L;
+		ProcessDefinition _def;
+		
+		public DeployProcessDefCommand(ProcessDefinition def) 
+		{
+			_def	= def;
+		}
 
+		public Object execute(JbpmContext jbpmCtx) throws Exception 
+		{
+			jbpmCtx.deployProcessDefinition(_def);
+			return null;
+		}
+		
+	}
 }

Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/SingleCommandProcessor.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -19,92 +19,130 @@
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
+
 package org.jboss.soa.esb.services.jbpm.actions;
 
 import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.addressing.MalformedEPRException;
+import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
-import org.jboss.soa.esb.util.Util;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
 
 public class SingleCommandProcessor extends CommandInterpreter 
 {
-	public static final String SINGLE_COMMAND_ELEMENT_TAG = "command";
-	public static final String METHOD_TAG	= "method";
+	public static final String COMMAND_ATTRIBUTE_TAG	= "command";
 	
 	public SingleCommandProcessor(ConfigTree config) throws ConfigurationException
 	{
 		super(config);
 	} // ________________________________
+	
+	public Message process (Message message)
+		throws MalformedEPRException, CourierException, ActionProcessingException
 
+	{
+		if (null==_thisProcessor)
+			throw new ActionProcessingException("Problems with configuration - this should never happen");
+
+		return super.process(_thisProcessor.preProcess(message));
+	} //________________________________
+
 	protected void checkMyParms() throws ConfigurationException
 	{
 		super.checkMyParms();
-		ConfigTree[] oa = _config.getChildren(SINGLE_COMMAND_ELEMENT_TAG);
-		if (oa.length != 1)
-			throw new ConfigurationException("Configuration must have a single <command> child element");
-		_config	= oa[0];
-		
-		String aux = _config.getAttribute(METHOD_TAG);
-		if (Util.isNullString(aux))
-			throw new ConfigurationException("Missing '"+METHOD_TAG+"' attribute");
-		
-		try { _oper = CommandVehicle.Operation.valueOf(aux); }
+
+		String sAux = _config.getRequiredAttribute(COMMAND_ATTRIBUTE_TAG);
+		try { _oper = Constants.OpCode.valueOf(sAux); }
 		catch (IllegalArgumentException e)
 		{
-			throw new ConfigurationException("Attribute '"+METHOD_TAG+"' has an invalid value"
+			throw new ConfigurationException("Attribute '"+COMMAND_ATTRIBUTE_TAG+"' has an invalid value"
 						+"- see CommandVehicle.Operation enum for possible values");
 		}
-		if 	   (_oper.equals(CommandVehicle.Operation.deployProcessDefinition)) 	parmsProcessDef		();
-		else if(_oper.equals(CommandVehicle.Operation.getProcessInstanceVariables)) parmsGetProcessVars	();
-		else if(_oper.equals(CommandVehicle.Operation.getTokenVariables)) 			parmsGetTokenVars	();
-		else if(_oper.equals(CommandVehicle.Operation.hasInstanceEnded)) 			parmsInstanceEnded	();
-		else if(_oper.equals(CommandVehicle.Operation.newProcessInstance)) 			parmsNewInstance	();
-		else if(_oper.equals(CommandVehicle.Operation.setProcessInstanceVariables)) parmsSetProcessVars	();
-		else if(_oper.equals(CommandVehicle.Operation.setTokenVariables)) 			parmsSetTokenVars	();
-		else if(_oper.equals(CommandVehicle.Operation.signalProcess)) 				parmsSignalProcess	();
-		else if(_oper.equals(CommandVehicle.Operation.signalToken)) 				parmsSignalToken	();
-		else
-			throw new ConfigurationException(_oper.toString()
-					+" is not a valid operation for this action class");		
+
 	} // _______________________________
 	
-	protected void parmsProcessDef() throws ConfigurationException
+	protected void implementDeployProcessDef() throws ConfigurationException
 	{
+		ConfigTree[] childs = _config.getChildren(Constants.PROCESS_DEFINITION_NAME_TAG);
+		if (null==childs || childs.length<1)
+			throw new ConfigurationException("Missing or invalid <"+Constants.PROCESS_DEFINITION_NAME_TAG+"> element");
+		if (childs.length>1)
+			throw new ConfigurationException("Only one <"+Constants.PROCESS_DEFINITION_NAME_TAG+"> element can be specified");
+		final String xmlString = childs[0].toString();
+		try
+		{
+			_thisProcessor = new CommandSpecificProcessor()
+			{
+				public Message preProcess(Message message)
+				{
+					Helper.setObjectValue(message, Constants.COMMAND_CODE,Constants.OpCode.DeployProcessDefinition);
+					Helper.setObjectValue(message, Constants.PROCESS_DEFINITION_XML, xmlString);
+					return message;
+				}
+			};
+		}
+		catch (Exception e)
+		{
+			throw new ConfigurationException(e);
+		}
 	} // _______________________________
     
-	protected void parmsGetProcessVars() throws ConfigurationException
+	protected void implementGetProcessVars() throws ConfigurationException
 	{
 	} // _______________________________
     
-	protected void parmsGetTokenVars() throws ConfigurationException
+	protected void implementGetTokenVars() throws ConfigurationException
 	{
 	} // _______________________________
     
-	protected void parmsInstanceEnded() throws ConfigurationException
+	protected void implementHasInstanceEnded() throws ConfigurationException
 	{
 		// this is just a placeholder - No extra attributes nor elements needed by this op
 		// process instance id must come in each incoming message
 	} // _______________________________
     
-	protected void parmsNewInstance() throws ConfigurationException
+	protected void implementNewProcessInstance() throws ConfigurationException
 	{
 	} // _______________________________
     
-	protected void parmsSetProcessVars() throws ConfigurationException
+	protected void implementSetProcessVars() throws ConfigurationException
 	{
 	} // _______________________________
     
-	protected void parmsSetTokenVars() throws ConfigurationException
+	protected void implementSetTokenVars() throws ConfigurationException
 	{
 	} // _______________________________
     
-	protected void parmsSignalProcess() throws ConfigurationException
+	protected void implementSignalProcess() throws ConfigurationException
 	{
 	} // _______________________________
     
-	protected void parmsSignalToken() throws ConfigurationException
+	protected void implementSignalToken() throws ConfigurationException
 	{
 	} // _______________________________
-    
-	CommandVehicle.Operation	_oper;
+	
+	
+	/**
+	 * Map source variable name to target variable name - Default is same name.
+	 * <br/>Depending on the operation code, this will translate jBPM context names to
+	 * esb Message body object names, or vice-versa
+	 * @param sourceName String - The variable name to translate
+	 * @return String - The target variable name, or arg0 if it was not mapped
+	 */
+	protected String getTargetVarName(String sourceName) 
+	{ 
+		return sourceName; 
+	}
+	
+	protected Constants.OpCode 				_oper;
+	protected CommandSpecificProcessor		_thisProcessor;
+	
+	// Use this command pattern to specialize behaviour for each individual command
+	protected abstract class CommandSpecificProcessor
+	{
+		abstract Message preProcess(Message message) throws ActionProcessingException;
+	}
 }

Deleted: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/CommandVehicle.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,130 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.soa.esb.services.jbpm.util;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.util.AbstractCommandVehicle;
-
-/**
- * 
- * Base class to use when a jBPM command should go through the wire to a jBPM aware ESB action class.
- * 
- * <p/>When more commands are added to the 'Command' enumeration, corresponding action class 
- * (org.jboss.soa.esb.actions.JbpmCommandInterpreter) should be modified accordingly in order to 
- * execute new commands
- * 
- * @author <a href="mailto:schifest at heuristica.com.ar">schifest at heuristica.com.ar</a> 
- *
- */
-public class CommandVehicle extends AbstractCommandVehicle 
-{
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public String getCommandValuesTag() { return "jBPMCommandValues"; }
-	@Override
-	public String getCommandOpcodeKey() { return "jBPMOpCode";}
-	
-	public static final String PROCESS_DEFINITION_XML		="processDefinitionXml";
-	public static final String PROCESS_DEFINITION_NAME		="processDefName";
-	public static final String PROCESS_DEFINITION_VERSION	="processDefVersion";
-	public static final String PROCESS_INSTANCE_ID			="instanceId";
-	public static final String TOKEN_ID						="tokenId";
-	public static final String TRANSITION_NAME				="transitionName";
-	public static final String CURRENT_NODE_NAME			="currentNodeName";
-	public static final String VARIABLE_NAMES_LIST			="variableNamesList";
-	public static final String VARIABLE_VALUES				="variableValuesMap";
-	public static final String USER_OBJECT					="userObject";
-	public static final String EXCEPTION     				="jbpmException";
-	public static final String ERROR_MESSAGE   				="errorMsg";
-
-	public static final String RETURN_CODE					="returnCode";
-	
-	public static final String RETCODE_OK					="OK";
-	public static final String RETCODE_INVALID_OPCODE		="invalidOpCode";
-	public static final String RETCODE_EXCEPTION			="exceptionThrown";
-	public static final String RETCODE_ERROR				="error";
-	
-
-	public static enum Operation
-	{
-		// Operations that the CommandInterpreter can perform
-		deployProcessDefinition
-		,newProcessInstance
-		,signalProcess
-		,signalToken
-		,getProcessInstanceVariables
-		,setProcessInstanceVariables
-		,getTokenVariables
-		,setTokenVariables
-		,hasInstanceEnded
-		
-		// Operations originated in jBPM ActionHandlers
-		,responseToRequest
-		,sendMessageToEsb
-	}
-	@Override
-	public Operation operatorFromString(String value) {return Operation.valueOf(value); }
-	
-	public CommandVehicle(Enum command) 	 { super(command); }
-	public CommandVehicle(Message message){ super(message); }
-
-	public Object getReturnCode		()			{ return			_values.get(RETURN_CODE); }
-	public String getProcessDefinitionXml()		{ return (String)	_values.get(PROCESS_DEFINITION_XML); }
-	public String getProcessDefinitionName	()	{ return (String)	_values.get(PROCESS_DEFINITION_NAME); }
-	public int	  getProcessVersion	() 			{ return (Integer)	_values.get(PROCESS_DEFINITION_VERSION); }
-	public long	  getInstanceId		() 			{ return (Long)		_values.get(PROCESS_INSTANCE_ID); }
-	public long   getTokenId		() 			{ return (Long)		_values.get(TOKEN_ID); }
-	public String getTransitionName	() 			{ return (String)	_values.get(TRANSITION_NAME); }
-	public String getCurrentNodeName() 			{ return (String)	_values.get(CURRENT_NODE_NAME); }
-	@SuppressWarnings("unchecked")
-	public Set<String> getVariableNames	()		{ return (Set<String>)_values.get(VARIABLE_NAMES_LIST); }
-	@SuppressWarnings("unchecked")
-	public Map<String,Object>getVariableValues()
-	{ 
-		return (Map)_values.get(VARIABLE_VALUES); 
-	}
-	public Object getUserObject			()		{ return _values.get(USER_OBJECT); }
-	public Exception getException		()		{ return (Exception)_values.get(EXCEPTION); }
-	public String	getErrorMessage		()		{ return (String)	_values.get(ERROR_MESSAGE); }
-
-	public void	setReturnCode		(Object obj){ super.setValue(RETURN_CODE			,obj); }
-	public void	setProcessDefinitionXml(String obj){ super.setValue(PROCESS_DEFINITION_XML	,obj); }
-	public void	setProcessDefinitionName(String obj){ super.setValue(PROCESS_DEFINITION_NAME,obj); }
-	public void	setProcessVersion	(int	obj){ super.setValue(PROCESS_DEFINITION_VERSION,obj); }
-	public void	setInstanceId		(long	obj){ super.setValue(PROCESS_INSTANCE_ID	,obj); }
-	public void	setTokenId			(long	obj){ super.setValue(TOKEN_ID				,obj); }
-	public void	setTransitionName 	(String	obj){ super.setValue(TRANSITION_NAME		,obj); }
-	public void	setCurrentNodeName 	(String	obj){ super.setValue(CURRENT_NODE_NAME		,obj); }
-	public void setVariableNames	(Set<String> obj){ super.setValue(VARIABLE_NAMES_LIST,obj); }
-	public void setVariableValues(Map<String,Object>obj)
-	{ 
-		super.setValue(VARIABLE_VALUES,obj); 
-	}
-	public void	setUserObject	(Object obj)	{ super.setValue(USER_OBJECT,obj); }
-	public void	setException	(Exception obj) { super.setValue(EXCEPTION, obj); }
-	public void	setErrorMessage	(String	  obj)	{ super.setValue(ERROR_MESSAGE, obj); }
-
-}

Added: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,152 @@
+package org.jboss.soa.esb.services.jbpm.util;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+
+public class Helper 
+{
+	private static Logger _logger = Logger.getLogger(Helper.class);
+	
+	public static String argumentException(String str) throws Exception
+	{
+		throw new Exception("Missing or invalid <"+str+"> object in Message body");
+	} //________________________________
+
+	public static Message responseTemplate() 			
+	{
+		Message template = MessageFactory.getInstance().getMessage();
+		URI	 uri	= null;
+		try  { uri = new URI(UUID.randomUUID().toString()); }
+		catch (URISyntaxException e)
+		{
+			_logger.fatal("Problem with UUID.randomUUID() - This should not happen");
+			return null;
+		}
+		template.getHeader().getCall().setMessageID(uri);
+
+		return template;
+	} //________________________________
+
+	public static void setLongValue(Message message, String key, Long value)
+	{
+		setObjectValue(message, key, value);
+	}
+	public static void setIntValue(Message message, String key, Integer value)
+	{
+		setObjectValue(message, key, value);
+	}
+	public static void setBooleanValue(Message message, String key, Boolean value)
+	{
+		setObjectValue(message, key, value);
+	}
+	public static void setObjectValue(Message message, String key, Serializable value)
+	{
+		message.getBody().add(key, value);
+	}
+
+	public static void setStringValue(Message msg,String key,Object obj)
+	{
+		setStringValue(msg, key, obj.toString());
+	} //________________________________
+
+	public static void setStringValue(Message msg,String key,String str)
+	{
+		setObjectValue(msg, key, str);
+	} //________________________________
+
+	public static void setStringListValue(Message msg,String key,String[] list)
+	{
+		boolean addComma = false;
+		StringBuilder sb = new StringBuilder();
+		for (String curr : list)
+		{
+			sb.append((addComma)?",":"").append(curr);
+			addComma = true;
+		}
+		setObjectValue(msg,key, sb.toString());
+	} //________________________________
+
+	public static void setVariablesMap(Message msg,String key,Map<String,Serializable> value) throws Exception
+	{
+		msg.getBody().add(key, value);
+	} //________________________________
+
+	public static Integer getIntValue(Message msg,String key) throws Exception
+	{
+		Object obj = msg.getBody().get(key);
+		if (obj instanceof Integer)		return (Integer)obj;
+		if (obj instanceof String)		return Integer.parseInt((String)obj);
+		throw new Exception(argumentException(key));
+	} //________________________________
+
+	public static Long getLongValue(Message msg,String key) throws Exception
+	{
+		Object obj = msg.getBody().get(key);
+		if (null==obj)					return null;
+		if (obj instanceof Long)		return (Long)obj;
+		if (obj instanceof String)		return Long.parseLong((String)obj);
+		if (obj instanceof Integer)		return new Long(obj.toString());
+		throw new Exception(argumentException(key));
+	} //________________________________
+
+	public static Boolean getBooleanValue(Message msg,String key) throws Exception
+	{
+		return getBooleanValue(msg, key, null);
+	} //________________________________
+
+	public static Boolean getBooleanValue(Message msg,String key, Boolean dflt) throws Exception
+	{
+		Object obj = msg.getBody().get(key);
+		if (null==obj)					return dflt;
+		if (obj instanceof Boolean)		return (Boolean)obj;
+		if (obj instanceof String)		return Boolean.parseBoolean((String)obj);
+		throw new Exception(argumentException(key));
+	} //________________________________
+
+	public static String[] getStringListValue(Message msg,String key) throws Exception
+	{
+		return getStringListValue(msg, key, null);
+	} //________________________________
+
+	public static String[] getStringListValue(Message msg,String key,String[] dflt) throws Exception
+	{
+		Object obj = msg.getBody().get(key);
+		if (null==obj)					return dflt;
+		if (obj instanceof String)		return ((String)obj).split(",");
+		throw new Exception(argumentException(key));
+	} //________________________________
+
+	public static String getStringValue(Message msg,String key) throws Exception
+	{
+		return getStringValue(msg, key, null);
+	} //________________________________
+	public static String getStringValue(Message msg,String key, String dflt) throws Exception
+	{
+		Object obj = msg.getBody().get(key);
+		if (null==obj)					return dflt;
+		if (obj instanceof String)		return (String)obj;
+		throw new Exception(argumentException(key));
+	} //________________________________
+
+	@SuppressWarnings("unchecked")
+	public static Map<String,Serializable>getVariablesMap(Message msg,String key) throws Exception
+	{
+		Object obj = msg.getBody().get(key);
+		if (null==obj)			return null;
+		if (obj instanceof Map)	return (Map<String,Serializable>)obj;
+		throw new Exception(argumentException(key));
+	} //________________________________
+
+	public static Object getObjectValue(Message msg,String key)
+	{
+		return msg.getBody().get(key); 
+	} //________________________________
+
+}


Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/util/Helper.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!--                                                                       -->
+<!--  Log4j Configuration                                                  -->
+<!--                                                                       -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml,v 1.26.2.5 2005/09/15 09:31:02 dimitris Exp $ -->
+
+<!--
+   | For more configuration infromation and examples see the Jakarta Log4j
+   | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+   <!-- ============================== -->
+   <!-- Append messages to the console -->
+   <!-- ============================== -->
+
+   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+      <param name="Target" value="System.out"/>
+
+      <layout class="org.apache.log4j.PatternLayout">
+         <!-- The default pattern: Date Priority [Category] Message\n -->
+         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t][%c{1}] %m%n"/>
+      </layout>
+   </appender>
+
+   <!-- ================ -->
+   <!-- Limit categories -->
+   <!-- ================ -->
+
+   <category name="org.jbpm">
+      <priority value="INFO"/>
+   </category>
+   <category name="org.hibernate">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.jboss">
+      <priority value="WARN"/>
+   </category>
+   <category name="org.jboss.soa.esb">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.jboss.internal.soa.esb">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.apache">
+      <priority value="ERROR"/>
+   </category>
+   <category name="org.jboss.soa.esb.services.jbpm">
+      <priority value="DEBUG"/>
+   </category>
+   <!-- ======================= -->
+   <!-- Setup the Root category -->
+   <!-- ======================= -->
+
+   <root>
+      <appender-ref ref="CONSOLE"/>
+   </root>
+
+</log4j:configuration>


Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/test/java/log4j.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Modified: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreterUnitTest.java	2007-04-19 08:09:51 UTC (rev 11118)
@@ -19,31 +19,31 @@
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
+
 package org.jboss.soa.esb.services.jbpm.actions;
 
 import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URISyntaxException;
 
 import junit.framework.JUnit4TestAdapter;
 
 import org.apache.log4j.Logger;
-import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.listeners.message.Invoker;
 import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.services.jbpm.util.CommandVehicle;
+import org.jboss.soa.esb.services.jbpm.Constants;
+import org.jboss.soa.esb.services.jbpm.util.Helper;
+import org.jbpm.JbpmConfiguration;
+import org.jbpm.graph.exe.Token;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
 /**
  * Test the jBPM command interpreter class
  *
@@ -57,9 +57,10 @@
 	private static Class 		thisClass = CommandInterpreterUnitTest.class;
 	static Logger 				_logger = Logger.getLogger(thisClass);
 	static CommandInterpreter	_interp;
-	static String				_processDefinitionXml;
-	private static final String PROCESS_DEFINITION_NAME = "simple";
+	private static final String TEST_PROCESS_NAME = "simple";
 	
+	private static File		_hibernateConfFile;
+	
     public static junit.framework.Test suite()
     {
         return new JUnit4TestAdapter(thisClass);
@@ -77,12 +78,7 @@
     public static void runBeforeAllTests()
     {
     	_logger.info("@BeforeClass invoked");
-    	try { _processDefinitionXml = stringFromFile("processdefinition.xml"); }
-    	catch (IOException e)
-    	{
-    		_logger.fatal("Unable to load process definition ",e);
-    		assertTrue(false);
-    	}
+//    	initializeJbpmForTest();
     }
 
 
@@ -90,6 +86,12 @@
     public static void runAfterAllTests() throws Exception
     {
     	_logger.info("@AfterClass invoked");
+		// Remove the hibernate.cfg.xml file we copied to the classpath root
+    	if (null!=_hibernateConfFile)
+    	{
+    		JbpmConfiguration.getInstance().dropSchema();
+    		_hibernateConfFile.delete();
+    	}
     }
 
     @Test
@@ -99,98 +101,108 @@
     	_logger.info("Mock test invoked");
     	assertTrue(true);
     }
+    
+    private static void initializeJbpmForTest()
+    {   	
+    	try 
+    	{
+    		copyHibernateCfgToRootCP();
+    		JbpmConfiguration.getInstance().createSchema();
+    	}
+    	catch (Exception e)
+    	{
+    		e.printStackTrace();
+    		assertTrue(false);
+    	}
+    }
 
-//  Once the hibernate.cfg.xml and jbpm.cfg.xml are properly located
-// the following line can be uncommented
-//  @Test
+//    @Test
     public void testFullProcessLifecycle()
     {
-	   	 long 			instanceId=0		, tokenId=0;
-	   	 CommandVehicle	vhc = null			,response=null;
-    	 CommandVehicle.Operation operation=null;
+    	initializeJbpmForTest();
+    	long 			instanceId=0		, tokenId=0;
     	 Exception excJbpm;
+    	 Constants.OpCode opCode = null;
+    	 Message	request, response;
 
     	 _logger.info("testFullProcessLifecycle() invoked");
         try
         {
-        	vhc = new CommandVehicle(CommandVehicle.Operation.deployProcessDefinition);        	
-        	vhc.setProcessDefinitionXml(_processDefinitionXml);
+        	opCode	= Constants.OpCode.DeployProcessDefinition;
+        	request = Helper.responseTemplate();
+        	Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
+        	Helper.setStringValue(request, Constants.PROCESS_DEFINITION_XML, stringFromFile("process_01.xml"));
 
-        	response = invokeJbpm(vhc); 
+        	response = invokeJbpm(request); 
 
-        	_logger.info("Invoked : "+vhc.getOperator().toString());
-        	_logger.info("Return code = "+response.getReturnCode());
-        	_logger.info("Error messg = "+response.getErrorMessage());
-        	Exception e = response.getException();
-        	if (null==e)
+        	_logger.info("Invoked : "+opCode.toString());
+        	_logger.info("Return code = "+Helper.getStringValue(response,Constants.RETURN_CODE));
+        	excJbpm = (Exception)Helper.getObjectValue(response,Constants.EXCEPTION);
+        	if (null==excJbpm)
         	{
-        		_logger.info("PrcDef name = "+response.getProcessDefinitionName());
-        		_logger.info("PrcDef vers = "+response.getProcessVersion());
+        		_logger.info("PrcDef name = "+Helper.getObjectValue(response,Constants.PROCESS_DEFINITION_NAME));
+        		_logger.info("PrcDef vers = "+Helper.getObjectValue(response,Constants.PROCESS_DEFINITION_VERSION));
     		}
         	else
-        		_logger.error("Problems in jbpm.CommandInterpreter",e);
+        		_logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
 			_logger.info("_______________________________________________________________________");
         	
-        	assertTrue(CommandVehicle.RETCODE_OK.equals(response.getReturnCode()));
+        	assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
         	
-	     	vhc = new CommandVehicle(CommandVehicle.Operation.newProcessInstance);
-			vhc.setProcessDefinitionName(PROCESS_DEFINITION_NAME);
+        	opCode	= Constants.OpCode.NewProcessInstanceCommand;
+        	request = Helper.responseTemplate();
+        	Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
+        	Helper.setStringValue(request, Constants.PROCESS_DEFINITION_NAME, TEST_PROCESS_NAME);
 	    	
-			response = invokeJbpm(vhc);
-	    	
-			_logger.info("Invoked : "+vhc.getOperator().toString());
-	    	_logger.info("Return code = "+response.getReturnCode());
-	    	_logger.info("Error messg = "+response.getErrorMessage());
-	    	excJbpm = response.getException();
-	    	if (null==excJbpm)
-			{
-				_logger.info("PrcDef name = "+response.getProcessDefinitionName());
-				_logger.info("PrcDef vers = "+response.getProcessVersion());
-				_logger.info("Instance id = "+response.getInstanceId());
-				_logger.info("Token    id = "+response.getTokenId());
-				_logger.info("Current node= "+response.getCurrentNodeName());
-				
-				instanceId = response.getInstanceId();
-				tokenId	= response.getTokenId();
-			}
-			else
-				_logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
+        	response = invokeJbpm(request); 
+
+        	_logger.info("Invoked : "+opCode.toString());
+        	_logger.info("Return code = "+Helper.getStringValue(response,Constants.RETURN_CODE));
+        	excJbpm = (Exception)Helper.getObjectValue(response,Constants.EXCEPTION);
+        	if (null==excJbpm)
+        	{
+        		instanceId	= Helper.getLongValue(response,Constants.PROCESS_INSTANCE_ID);
+        		tokenId		= Helper.getLongValue(response,Constants.TOKEN_ID);
+        		_logger.info("Process Id = "+instanceId);
+        		_logger.info("Token   Id = "+tokenId);
+    		}
+        	else
+        		_logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
 			_logger.info("_______________________________________________________________________");
 
-			assertTrue(CommandVehicle.RETCODE_OK.equals(response.getReturnCode()));
-	 		boolean signalToken = true;
+        	assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
+
+        	boolean signalToken = true;
 			for (boolean continueLooping = true; continueLooping;)
 			{
-				operation	= (signalToken) ? CommandVehicle.Operation.signalToken
-								: CommandVehicle.Operation.signalProcess;
+				opCode	= Constants.OpCode.SignalCommand;
 				// for this test, alternatively signal:  token - process - token ...
-				signalToken = ! signalToken;
 				
-	 	     	vhc = new CommandVehicle(operation);
-	 	     	if (CommandVehicle.Operation.signalToken.equals(vhc.getOperator()))
-					vhc.setTokenId(tokenId);
+	        	request = Helper.responseTemplate();
+	        	Helper.setStringValue(request, Constants.COMMAND_CODE, opCode);
+	 	     	if (signalToken)
+	 	     		Helper.setLongValue(request, Constants.TOKEN_ID, tokenId);
 	 	     	else
-	 	     		vhc.setInstanceId(instanceId);
+	 	     		Helper.setLongValue(request, Constants.PROCESS_INSTANCE_ID, instanceId);
+				signalToken = ! signalToken;
 
-	 	     	response = invokeJbpm(vhc);
+	 	     	response = invokeJbpm(request);
 
 	 	     	if (null!=response)
 				{
-					_logger.info("Invoked : "+operation.toString());
-					_logger.info("Return code = "+response.getReturnCode());
-					_logger.info("Error messg = "+response.getErrorMessage());
-					excJbpm = response.getException();
+	 	        	_logger.info("Invoked : "+opCode.toString());
+	 	        	_logger.info("Return code = "+Helper.getStringValue(response,Constants.RETURN_CODE));
+	 	        	excJbpm = (Exception)Helper.getObjectValue(response,Constants.EXCEPTION);
 					if (null==excJbpm)
 					{
-						_logger.info("PrcDef name = "+response.getProcessDefinitionName());
-						_logger.info("PrcDef vers = "+response.getProcessVersion());
-						_logger.info("Instance id = "+response.getInstanceId());
-						_logger.info("Token    id = "+response.getTokenId());
-						_logger.info("Current node= "+response.getCurrentNodeName());
-						Object obj = response.getUserObject();
-						String ended = (null==obj)?"<null>":obj.toString();
-						_logger.info("Has ended   = "+ ended);
-						continueLooping	= "false".equals(ended);
+		        		instanceId	= Helper.getLongValue(response,Constants.PROCESS_INSTANCE_ID);
+		        		tokenId		= Helper.getLongValue(response,Constants.TOKEN_ID);
+						Token token = (Token)Helper.getObjectValue(response, Constants.JBPM_RETURN_OBJECT);
+						boolean hasEnded = token.hasEnded();
+						_logger.info("Has ended   = "+ hasEnded);
+						_logger.info("Current State = "+token.getNode().getName());
+						
+						continueLooping	= ! hasEnded;
 					}
 					else
 						_logger.error("Problems in jbpm.CommandInterpreter",excJbpm);
@@ -199,7 +211,7 @@
 					_logger.info("Response was not received");
 				_logger.info("_______________________________________________________________________");
 				
-				assertTrue(CommandVehicle.RETCODE_OK.equals(response.getReturnCode()));
+	        	assertTrue(Constants.RETCODE_OK.equals(Helper.getObjectValue(response, Constants.RETURN_CODE)));
 			}
 
         }
@@ -213,60 +225,75 @@
 
 	protected static String stringFromFile(String pFileName) throws IOException
 	{
-		String userDir = System.getProperty("user.dir");
-		String baseDir = (userDir.endsWith("product")) 
-		? userDir +"/services/jbpm/src/test/java"
-		: userDir +"/product/services/jbpm/src/test/java";
-		System.out.println("Base dir=<"+baseDir+">");
-	    InputStream in = new FileInputStream(new File(baseDir,pFileName));
+	    InputStream in = thisClass.getResourceAsStream(pFileName);
 		ByteArrayOutputStream out = new ByteArrayOutputStream();
 		byte[]ba = new byte[1000];
 		int iQ = -1;
 		while (-1<(iQ=in.read(ba)))
 			if (iQ>0)	out.write(ba,0,iQ);
+		in.close();
 		return out.toString();
 	}
 	
-   protected CommandVehicle invokeJbpm(CommandVehicle vhc) throws Exception
+	protected static void copyFile(String resource, File target) throws IOException
+	{
+	    InputStream in = thisClass.getResourceAsStream(resource);
+		FileOutputStream out = new FileOutputStream(target);
+		byte[]ba = new byte[1000];
+		int iQ = -1;
+		while (-1<(iQ=in.read(ba)))
+			if (iQ>0)	out.write(ba,0,iQ);
+		out.close();
+		in.close();
+	}
+	
+	protected static void copyHibernateCfgToRootCP()
+		throws URISyntaxException, IOException
+	{
+		String configName = "hibernate.cfg.xml";
+		File localHibernateXml = new File(thisClass.getResource(configName).toURI());
+		String path = localHibernateXml.toString();
+		int i = path.indexOf("org/jboss/soa/esb/services/jbpm/actions");
+		File classRoot = new File(path.substring(0,i-1));
+		_hibernateConfFile = new File(classRoot,configName);
+		copyFile(configName, _hibernateConfFile);
+	}
+	
+   protected Message invokeJbpm(Message request) throws Exception
    {
-	   return jbpmViaService(vhc);
-   }
-
-   protected CommandVehicle jbpmStraight(CommandVehicle vhc) throws Exception
-   {
   	 if (null==_interp)
   		 _interp	= new CommandInterpreter(new ConfigTree("empty"));
-		return new CommandVehicle (_interp.process(vhc.toCommandMessage()));
+	return _interp.process(request);
    }
 
 
    //TODO Once the test is able to locate hibernate.cfg.xml in the path
    // get rid of what follows, and change invokeJbpm so it uses jbpmStraight()
-   protected CommandVehicle jbpmViaService(CommandVehicle vhc) throws Exception
-   {
-	   if (! _registrySet)
-		   setupRegistry();
-	   Message response = Invoker.invokeAndAwaitResponse
-	   		(vhc, "categoryJbpmService","nameJbpmService" , 20000);
-	   return (null==response)?null:new CommandVehicle(response);
-   } //_______________________________
+//   protected CommandVehicle jbpmViaService(CommandVehicle vhc) throws Exception
+//   {
+//	   if (! _registrySet)
+//		   setupRegistry();
+//	   Message response = Invoker.invokeAndAwaitResponse
+//	   		(vhc, "categoryJbpmService","nameJbpmService" , 20000);
+//	   return (null==response)?null:new CommandVehicle(response);
+//   } //_______________________________
      
-    private static boolean _registrySet = false;
- 	protected static void setupRegistry() 
- 	{
-		_registrySet = true;
-		PropertyManager mgr = null;	
-		mgr = ModulePropertyManager.getPropertyManager("registry");
-		mgr.setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS,"org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl");
-		mgr.setProperty(Environment.REGISTRY_QUERY_MANAGER_URI,"jnp://localhost:1099/InquiryService?org.apache.juddi.registry.rmi.Inquiry#inquire");
-		mgr.setProperty(Environment.REGISTRY_LIFECYCLE_MANAGER_URI,"jnp://localhost:1099/PublishService?org.apache.juddi.registry.rmi.Publish#publish");
-		mgr.setProperty(Environment.REGISTRY_FACTORY_CLASS,"org.apache.ws.scout.registry.ConnectionFactoryImpl");
-		mgr.setProperty(Environment.REGISTRY_SCOUT_TRANSPORT_CLASS,"org.apache.ws.scout.transport.RMITransport");
-		mgr.setProperty(Environment.REGISTRY_USER,"jbossesb");
-		mgr.setProperty(Environment.REGISTRY_PASSWORD,"password");
-		System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
-        mgr = ModulePropertyManager.getPropertyManager(ModulePropertyManager.CORE_MODULE) ;
-        mgr.setProperty(Environment.REGISTRY_FILE_HELPER_DIR, System.getProperty("java.io.tmpdir","/tmp")) ;
-	}
+//    private static boolean _registrySet = false;
+// 	protected static void setupRegistry() 
+// 	{
+//		_registrySet = true;
+//		PropertyManager mgr = null;	
+//		mgr = ModulePropertyManager.getPropertyManager("registry");
+//		mgr.setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS,"org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl");
+//		mgr.setProperty(Environment.REGISTRY_QUERY_MANAGER_URI,"jnp://localhost:1099/InquiryService?org.apache.juddi.registry.rmi.Inquiry#inquire");
+//		mgr.setProperty(Environment.REGISTRY_LIFECYCLE_MANAGER_URI,"jnp://localhost:1099/PublishService?org.apache.juddi.registry.rmi.Publish#publish");
+//		mgr.setProperty(Environment.REGISTRY_FACTORY_CLASS,"org.apache.ws.scout.registry.ConnectionFactoryImpl");
+//		mgr.setProperty(Environment.REGISTRY_SCOUT_TRANSPORT_CLASS,"org.apache.ws.scout.transport.RMITransport");
+//		mgr.setProperty(Environment.REGISTRY_USER,"jbossesb");
+//		mgr.setProperty(Environment.REGISTRY_PASSWORD,"password");
+//		System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
+//        mgr = ModulePropertyManager.getPropertyManager(ModulePropertyManager.CORE_MODULE) ;
+//        mgr.setProperty(Environment.REGISTRY_FILE_HELPER_DIR, System.getProperty("java.io.tmpdir","/tmp")) ;
+//	}
 
 }
\ No newline at end of file

Deleted: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,179 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-
-<!DOCTYPE hibernate-configuration PUBLIC
-          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
-  <session-factory>
-    <!-- jdbc connection properties -->
-    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
-    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
-    <property name="hibernate.connection.url">jdbc:hsqldb:mem:.;sql.enforce_strict_size=true</property>
-    <property name="hibernate.hbm2ddl.auto">create</property>
-<!--
-    <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/juddi</property>
--->
-    <property name="hibernate.connection.username">sa</property>
-    <property name="hibernate.connection.password"></property>
-<!--
-    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
-    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
-    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/JbpmDB</property>
-    <property name="hibernate.connection.username">postgres</property>
-    <property name="hibernate.connection.password"></property>
--->
-
-
-    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
-        
-    <!-- other hibernate properties 
-    <property name="hibernate.show_sql">true</property>
-    <property name="hibernate.format_sql">true</property>
-    <property name="hibernate.use_sql_comments">true</property>
-    -->
-
-    <!-- ############################################ -->
-    <!-- # mapping files with external dependencies # -->
-    <!-- ############################################ -->
-
-    <!-- following mapping file has a dependendy on   -->
-    <!-- 'bsh-{version}.jar'.                         -->
-    <!-- uncomment this if you don't have bsh on your -->
-    <!-- classpath.  you won't be able to use the     -->
-    <!-- script element in process definition files   -->
-    <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
-
-    <!-- following mapping files have a dependendy on  -->
-    <!-- 'jbpm-identity-{version}.jar', mapping files  -->
-    <!-- of the pluggable jbpm identity component.     -->
-    <!-- comment out the following 3 lines if you don't-->
-    <!-- want to use the default jBPM identity mgmgt   -->
-    <!-- component                                     -->
-    <mapping resource="org/jbpm/identity/User.hbm.xml"/>
-    <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
-    <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
-
-    <!-- ###################### -->
-    <!-- # jbpm mapping files # -->
-    <!-- ###################### -->
-
-    <!-- hql queries and type defs -->
-    <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
-    
-    <!-- graph.def mapping files -->
-    <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
-    <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
-
-    <!-- graph.node mapping files -->
-    <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
-
-    <!-- context.def mapping files -->
-    <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
-    <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
-
-    <!-- taskmgmt.def mapping files -->
-    <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
-
-    <!-- module.def mapping files -->
-    <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
-
-    <!-- bytes mapping files -->
-    <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
-
-    <!-- file.def mapping files -->
-    <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
-
-    <!-- scheduler.def mapping files -->
-    <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
-    <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
-
-    <!-- graph.exe mapping files -->
-    <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
-
-    <!-- module.exe mapping files -->
-    <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
-        
-    <!-- context.exe mapping files -->
-    <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
-
-    <!-- msg.db mapping files -->
-    <mapping resource="org/jbpm/msg/Message.hbm.xml"/>
-    <mapping resource="org/jbpm/msg/db/TextMessage.hbm.xml"/>
-    <mapping resource="org/jbpm/command/ExecuteActionCommand.hbm.xml"/>
-    <mapping resource="org/jbpm/command/ExecuteNodeCommand.hbm.xml"/>
-    <mapping resource="org/jbpm/command/SignalCommand.hbm.xml"/>
-    <mapping resource="org/jbpm/command/TaskInstanceEndCommand.hbm.xml"/>
-
-    <!-- taskmgmt.exe mapping files -->
-    <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
-
-    <!-- scheduler.exe mapping files -->
-    <mapping resource="org/jbpm/scheduler/exe/Timer.hbm.xml"/>
-
-    <!-- logging mapping files -->
-    <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
-    <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
-    <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
-    <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
-    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
-    
-  </session-factory>
-</hibernate-configuration>

Added: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,189 @@
+<?xml version='1.0' encoding='utf-8'?>
+
+<!DOCTYPE hibernate-configuration PUBLIC
+          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+  <session-factory>
+
+    <!-- hibernate dialect -->
+    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
+
+    <!-- JDBC connection properties (begin) -->
+    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
+    <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>
+    <property name="hibernate.connection.username">sa</property>
+    <property name="hibernate.connection.password"></property>
+    <!-- JDBC connection properties (end) -->
+    
+    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
+    
+    <!-- DataSource properties (begin) ===
+    <property name="hibernate.connection.datasource">java:/JbpmDS</property>
+    ==== DataSource properties (end) -->
+    
+    <!-- JTA transaction properties (begin) ===
+    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
+    <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
+    ==== JTA transaction properties (end) -->
+
+    <!-- CMT transaction properties (begin) ===
+    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
+    <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
+    ==== CMT transaction properties (end) -->
+
+    <!-- logging properties (begin) ===
+    <property name="hibernate.show_sql">true</property>
+    <property name="hibernate.format_sql">true</property>
+    <property name="hibernate.use_sql_comments">true</property>
+    ==== logging properties (end) -->
+    
+    <!-- ############################################ -->
+    <!-- # mapping files with external dependencies # -->
+    <!-- ############################################ -->
+
+    <!-- following mapping file has a dependendy on   -->
+    <!-- 'bsh-{version}.jar'.                         -->
+    <!-- uncomment this if you don't have bsh on your -->
+    <!-- classpath.  you won't be able to use the     -->
+    <!-- script element in process definition files   -->
+    <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
+
+    <!-- following mapping files have a dependendy on  -->
+    <!-- 'jbpm-identity.jar', mapping files            -->
+    <!-- of the pluggable jbpm identity component.     -->
+    <!-- Uncomment the following 3 lines if you        -->
+    <!-- want to use the jBPM identity mgmgt           -->
+    <!-- component.                                    -->
+    <!-- identity mappings (begin) -->
+    <mapping resource="org/jbpm/identity/User.hbm.xml"/>
+    <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
+    <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
+    <!-- identity mappings (end) -->
+    
+    <!-- following mapping files have a dependendy on  -->
+    <!-- the JCR API                                   -->
+    <!-- jcr mappings (begin) ===
+    <mapping resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
+    ==== jcr mappings (end) -->
+
+
+    <!-- ###################### -->
+    <!-- # jbpm mapping files # -->
+    <!-- ###################### -->
+
+    <!-- hql queries and type defs -->
+    <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
+    
+    <!-- graph.def mapping files -->
+    <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
+    <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
+
+    <!-- graph.node mapping files -->
+    <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
+
+    <!-- context.def mapping files -->
+    <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
+    <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
+
+    <!-- taskmgmt.def mapping files -->
+    <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
+
+    <!-- module.def mapping files -->
+    <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
+
+    <!-- bytes mapping files -->
+    <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
+
+    <!-- file.def mapping files -->
+    <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
+
+    <!-- scheduler.def mapping files -->
+    <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
+    <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
+
+    <!-- graph.exe mapping files -->
+    <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
+
+    <!-- module.exe mapping files -->
+    <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
+        
+    <!-- context.exe mapping files -->
+    <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
+
+    <!-- job mapping files -->
+    <mapping resource="org/jbpm/job/Job.hbm.xml"/>
+    <mapping resource="org/jbpm/job/Timer.hbm.xml"/>
+    <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
+    <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
+
+    <!-- taskmgmt.exe mapping files -->
+    <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
+
+    <!-- logging mapping files -->
+    <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
+    <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
+    <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
+    <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
+    <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
+    
+  </session-factory>
+</hibernate-configuration>


Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/hibernate.cfg.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Deleted: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/jbpm.cfg.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,9 +0,0 @@
-<jbpm-configuration>
-
-  <!-- 
-    The default configurations can be found in org/jbpm/default.jbpm.cfg.xml 
-    Those configurations can be overwritten by putting this file called 
-    jbpm.cfg.xml on the root of the classpath and put in the customized values.
-  -->
-
-</jbpm-configuration>

Added: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<process-definition 
+  xmlns="urn:jbpm.org:jpdl-3.1"
+  name="simple">
+   <start-state name="start">
+      <transition name="to_state" to="first">
+         
+      </transition>
+   </start-state>
+   <state name="first">
+      <transition name="to_end" to="end">
+         
+      </transition>
+   </state>
+   <end-state name="end"></end-state>
+</process-definition>
\ No newline at end of file


Property changes on: labs/jbossesb/trunk/product/services/jbpm/src/test/java/org/jboss/soa/esb/services/jbpm/actions/process_01.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml

Deleted: labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml	2007-04-19 08:06:56 UTC (rev 11117)
+++ labs/jbossesb/trunk/product/services/jbpm/src/test/java/processdefinition.xml	2007-04-19 08:09:51 UTC (rev 11118)
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<process-definition 
-  xmlns="urn:jbpm.org:jpdl-3.1"
-  name="simple">
-   <start-state name="start">
-      <transition name="to_state" to="first">
-         
-      </transition>
-   </start-state>
-   <state name="first">
-      <transition name="to_end" to="end">
-         
-      </transition>
-   </state>
-   <end-state name="end"></end-state>
-</process-definition>
\ No newline at end of file




More information about the jboss-svn-commits mailing list