Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/RemoteWorkerIdentity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/Tod.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/Tod.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/Tod.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/Tod.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,14 @@
+package org.apache.uima.ducc.container.jd.dispatch;
+
+public class Tod {
+
+       private long tod = 0;
+       
+       public void set() {
+               tod = System.currentTimeMillis();
+       }
+       
+       public long get() {
+               return tod;
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/Tod.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/WorkItem.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/WorkItem.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/WorkItem.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/WorkItem.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,69 @@
+package org.apache.uima.ducc.container.jd.dispatch;
+
+import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+
+public class WorkItem implements IWorkItem {
+
+       private IMetaCas metaCas = null;
+       private IFsm fsm = null;
+       
+       private Tod todGet = new Tod();
+       private Tod todAck = new Tod();
+       private Tod todEnd = new Tod();
+       
+       public WorkItem(IMetaCas metaCas, IFsm fsm) {
+               setMetaCas(metaCas);
+               setFsm(fsm);
+       }
+       
+       @Override
+       public void setMetaCas(IMetaCas value) {
+               metaCas = value;
+       }
+       
+       @Override
+       public IMetaCas getMetaCas() {
+               return metaCas;
+       }
+       
+       @Override
+       public void setFsm(IFsm value) {
+               fsm = value;
+       }       
+       
+       @Override
+       public IFsm getFsm() {
+               return fsm;
+       }
+
+       @Override
+       public void setTodGet() {
+               todGet.set();
+       }
+
+       @Override
+       public long getTodGet() {
+               return todGet.get();
+       }
+
+       @Override
+       public void setTodAck() {
+               todAck.set();
+       }
+
+       @Override
+       public long getTodAck() {
+               return todAck.get();
+       }
+
+       @Override
+       public void setTodEnd() {
+               todEnd.set();
+       }
+
+       @Override
+       public long getTodEnd() {
+               return todEnd.get();
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/dispatch/WorkItem.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionAckCAS.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionAckCAS.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionAckCAS.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionAckCAS.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,54 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.common.DuccLogger;
+import org.apache.uima.ducc.container.common.IDuccId;
+import org.apache.uima.ducc.container.common.IDuccLogger;
+import org.apache.uima.ducc.container.common.MessageBuffer;
+import org.apache.uima.ducc.container.common.Standardize;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+import org.apache.uima.ducc.container.jd.dispatch.IRemoteWorkerIdentity;
+import org.apache.uima.ducc.container.jd.dispatch.IWorkItem;
+import org.apache.uima.ducc.container.jd.dispatch.RemoteWorkerIdentity;
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
+
+public class ActionAckCAS implements IAction {
+       
+       private IDuccLogger logger = DuccLogger.getLogger(ActionAckCAS.class, 
IDuccLogger.Component.JD.name());
+       
+       @Override
+       public String getName() {
+               return ActionAckCAS.class.getName();
+       }
+
+       @Override
+       public void engage(Object objectData) {
+               String location = "engage";
+               logger.debug(location, IDuccId.null_id, "");
+               IActionData actionData = (IActionData) objectData;
+               try {
+                       IWorkItem wi = actionData.getWorkItem();
+                       IMetaCasTransaction trans = 
actionData.getMetaCasTransaction();
+                       IRemoteWorkerIdentity rwi = new 
RemoteWorkerIdentity(trans);
+                       //
+                       IMetaCas metaCas = wi.getMetaCas();
+                       //
+                       if(metaCas != null) {
+                               wi.setTodAck();
+                               MessageBuffer mb = new MessageBuffer();
+                               
mb.append(Standardize.Label.transNo.get()+trans.getTransactionId().toString());
+                               
mb.append(Standardize.Label.seqNo.get()+metaCas.getSystemKey());
+                               
mb.append(Standardize.Label.remote.get()+rwi.toString());
+                               logger.info(location, IDuccId.null_id, 
mb.toString());
+                       }
+                       else {MessageBuffer mb = new MessageBuffer();
+                               mb.append("No CAS found for processing");
+                               logger.info(location, IDuccId.null_id, 
mb.toString());
+                       }
+               }
+               catch(Exception e) {
+                       logger.error(location, IDuccId.null_id, e);
+               }
+       }
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionAckCAS.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionData.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionData.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionData.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionData.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,45 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.jd.dispatch.IRemoteWorkerIdentity;
+import org.apache.uima.ducc.container.jd.dispatch.IWorkItem;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
+
+public class ActionData implements IActionData {
+       
+       private IWorkItem workItem = null;
+       private IRemoteWorkerIdentity remoteWorkerIdentity = null;
+       private IMetaCasTransaction metaCasTransaction = null;
+       
+       public ActionData(IWorkItem workItem, IRemoteWorkerIdentity 
remoteWorkerIdentity, IMetaCasTransaction metaCasTransaction) {
+               setWorkItem(workItem);
+               setRemoteWorkerIdentity(remoteWorkerIdentity);
+               setMetaCasTransaction(metaCasTransaction);
+       }
+       
+       @Override
+       public IWorkItem getWorkItem() {
+               return workItem;
+       }
+       
+       private void setWorkItem(IWorkItem value) {
+               workItem = value;
+       }
+       
+       @Override
+       public IRemoteWorkerIdentity getRemoteWorkerIdentity() {
+               return remoteWorkerIdentity;
+       }
+       
+       private void setRemoteWorkerIdentity(IRemoteWorkerIdentity value) {
+               remoteWorkerIdentity = value;
+       }
+       
+       @Override
+       public IMetaCasTransaction getMetaCasTransaction() {
+               return metaCasTransaction;
+       }
+       
+       private void setMetaCasTransaction(IMetaCasTransaction value) {
+               metaCasTransaction = value;
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndCAS.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndCAS.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndCAS.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndCAS.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,53 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.common.DuccLogger;
+import org.apache.uima.ducc.container.common.IDuccId;
+import org.apache.uima.ducc.container.common.IDuccLogger;
+import org.apache.uima.ducc.container.common.MessageBuffer;
+import org.apache.uima.ducc.container.common.Standardize;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+import org.apache.uima.ducc.container.jd.dispatch.IRemoteWorkerIdentity;
+import org.apache.uima.ducc.container.jd.dispatch.IWorkItem;
+import org.apache.uima.ducc.container.jd.dispatch.RemoteWorkerIdentity;
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
+
+public class ActionEndCAS implements IAction {
+       
+       private IDuccLogger logger = DuccLogger.getLogger(ActionEndCAS.class, 
IDuccLogger.Component.JD.name());
+       
+       @Override
+       public String getName() {
+               return ActionEndCAS.class.getName();
+       }
+
+       @Override
+       public void engage(Object objectData) {
+               String location = "engage";
+               logger.debug(location, IDuccId.null_id, "");
+               IActionData actionData = (IActionData) objectData;
+               try {
+                       IWorkItem wi = actionData.getWorkItem();
+                       IMetaCasTransaction trans = 
actionData.getMetaCasTransaction();
+                       IRemoteWorkerIdentity rwi = new 
RemoteWorkerIdentity(trans);
+                       IMetaCas metaCas = wi.getMetaCas();
+                       //
+                       if(metaCas != null) {
+                               wi.setTodEnd();
+                               MessageBuffer mb = new MessageBuffer();
+                               
mb.append(Standardize.Label.transNo.get()+trans.getTransactionId().toString());
+                               
mb.append(Standardize.Label.seqNo.get()+metaCas.getSystemKey());
+                               
mb.append(Standardize.Label.remote.get()+rwi.toString());
+                               logger.info(location, IDuccId.null_id, 
mb.toString());
+                       }
+                       else {MessageBuffer mb = new MessageBuffer();
+                               mb.append("No CAS found for processing");
+                               logger.info(location, IDuccId.null_id, 
mb.toString());
+                       }
+               }
+               catch(Exception e) {
+                       logger.error(location, IDuccId.null_id, e);
+               }
+       }
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndCAS.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGetCAS.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGetCAS.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGetCAS.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGetCAS.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,60 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.common.DuccLogger;
+import org.apache.uima.ducc.container.common.IDuccId;
+import org.apache.uima.ducc.container.common.IDuccLogger;
+import org.apache.uima.ducc.container.common.MessageBuffer;
+import org.apache.uima.ducc.container.common.Standardize;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+import org.apache.uima.ducc.container.jd.JobDriverCasManager;
+import org.apache.uima.ducc.container.jd.JobDriverCommon;
+import org.apache.uima.ducc.container.jd.dispatch.IRemoteWorkerIdentity;
+import org.apache.uima.ducc.container.jd.dispatch.IWorkItem;
+import org.apache.uima.ducc.container.jd.dispatch.RemoteWorkerIdentity;
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
+
+public class ActionGetCAS implements IAction {
+       
+       private IDuccLogger logger = DuccLogger.getLogger(ActionGetCAS.class, 
IDuccLogger.Component.JD.name());
+       
+       @Override
+       public String getName() {
+               return ActionGetCAS.class.getName();
+       }
+
+       @Override
+       public void engage(Object objectData) {
+               String location = "engage";
+               logger.debug(location, IDuccId.null_id, "");
+               IActionData actionData = (IActionData) objectData;
+               try {
+                       IWorkItem wi = actionData.getWorkItem();
+                       IMetaCasTransaction trans = 
actionData.getMetaCasTransaction();
+                       IRemoteWorkerIdentity rwi = new 
RemoteWorkerIdentity(trans);
+                       //
+                       JobDriverCasManager jdcm = 
JobDriverCommon.getInstance().getCasManager();
+                       IMetaCas metaCas = jdcm.getMetaCas();
+                       trans.setMetaCas(metaCas);
+                       //
+                       if(metaCas != null) {
+                               wi.setTodGet();
+                               MessageBuffer mb = new MessageBuffer();
+                               
mb.append(Standardize.Label.transNo.get()+trans.getTransactionId().toString());
+                               
mb.append(Standardize.Label.seqNo.get()+metaCas.getSystemKey());
+                               
mb.append(Standardize.Label.remote.get()+rwi.toString());
+                               logger.info(location, IDuccId.null_id, 
mb.toString());
+                       }
+                       else {MessageBuffer mb = new MessageBuffer();
+                               mb.append("No CAS found for processing");
+                               logger.info(location, IDuccId.null_id, 
mb.toString());
+                       }
+                       
+               }
+               catch(Exception e) {
+                       logger.error(location, IDuccId.null_id, e);
+               }
+               
+       }
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGetCAS.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionIgnore.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionIgnore.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionIgnore.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionIgnore.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,23 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.common.DuccLogger;
+import org.apache.uima.ducc.container.common.IDuccId;
+import org.apache.uima.ducc.container.common.IDuccLogger;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+
+public class ActionIgnore implements IAction {
+       
+       private IDuccLogger logger = DuccLogger.getLogger(ActionIgnore.class, 
IDuccLogger.Component.JD.name());
+       
+       @Override
+       public String getName() {
+               return ActionIgnore.class.getName();
+       }
+
+       @Override
+       public void engage(Object objectData) {
+               String location = "engage";
+               logger.debug(location, IDuccId.null_id, "");
+               IActionData actionData = (IActionData) objectData;
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionIgnore.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionSendCAS.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionSendCAS.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionSendCAS.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionSendCAS.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,24 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.common.DuccLogger;
+import org.apache.uima.ducc.container.common.IDuccId;
+import org.apache.uima.ducc.container.common.IDuccLogger;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+
+public class ActionSendCAS implements IAction {
+       
+       private IDuccLogger logger = DuccLogger.getLogger(ActionSendCAS.class, 
IDuccLogger.Component.JD.name());
+       
+       @Override
+       public String getName() {
+               return ActionSendCAS.class.getName();
+       }
+
+       @Override
+       public void engage(Object objectData) {
+               String location = "engage";
+               logger.debug(location, IDuccId.null_id, "");
+               IActionData actionData = (IActionData) objectData;
+       }
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionSendCAS.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/IActionData.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/IActionData.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/IActionData.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/IActionData.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,12 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.jd.dispatch.IRemoteWorkerIdentity;
+import org.apache.uima.ducc.container.jd.dispatch.IWorkItem;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
+
+public interface IActionData {
+
+       public IWorkItem getWorkItem();
+       public IRemoteWorkerIdentity getRemoteWorkerIdentity();
+       public IMetaCasTransaction getMetaCasTransaction();
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/IActionData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,53 @@
+package org.apache.uima.ducc.container.jd.fsm.wi;
+
+import org.apache.uima.ducc.container.common.fsm.Event;
+import org.apache.uima.ducc.container.common.fsm.Fsm;
+import org.apache.uima.ducc.container.common.fsm.FsmException;
+import org.apache.uima.ducc.container.common.fsm.State;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+import org.apache.uima.ducc.container.common.fsm.iface.IEvent;
+import org.apache.uima.ducc.container.common.fsm.iface.IState;
+
+public class WiFsm extends Fsm {
+       
+       public static IState Start                              = new 
State("Start");
+       public static IState Get_Pending                = new 
State("Get_Pending");
+       public static IState CAS_Send                   = new State("CAS_Send");
+       public static IState CAS_Active                 = new 
State("CAS_Active");
+       
+       public static IEvent Get_Request                = new 
Event("Get_Request");
+       public static IEvent CAS_Available              = new 
Event("CAS_Available");
+       public static IEvent CAS_Unavailable    = new Event("CAS_Unavailable");
+       public static IEvent Ack_Request                = new 
Event("Ack_Request");
+       public static IEvent Send_Failure               = new 
Event("Send_Failure");
+       public static IEvent Ack_Timer_Pop              = new 
Event("Ack_Timer_Pop");
+       public static IEvent End_Request                = new 
Event("End_Request");
+       public static IEvent End_Timer_Pop              = new 
Event("End_Timer_Pop");
+       public static IEvent Host_Failure               = new 
Event("Host_Failure");
+       public static IEvent Process_Failure    = new Event("Process_Failure");
+       public static IEvent Process_Preempt    = new Event("Process_Premept");
+       
+       public IAction ActionGetCAS             = new ActionGetCAS();
+       public IAction ActionSendCAS    = new ActionSendCAS();
+       public IAction ActionAckCAS             = new ActionAckCAS();
+       public IAction ActionEndCAS             = new ActionEndCAS();
+       
+       public IAction ActionIgnore     = new ActionIgnore();
+       
+       public WiFsm() throws FsmException {
+               super();
+               initialize();
+       }
+       
+       private void initialize() throws FsmException {
+               
+               addInitial(Start, Get_Request, ActionGetCAS, Get_Pending);
+               
+               add(Get_Pending, CAS_Available, ActionSendCAS, CAS_Send);
+               add(Get_Pending, CAS_Unavailable, ActionSendCAS, Start);
+               
+               add(CAS_Send, Ack_Request, ActionAckCAS, CAS_Active);
+               
+               add(CAS_Active, End_Request, ActionEndCAS, Start);
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/WiFsm.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCas.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCas.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCas.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCas.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,18 @@
+package org.apache.uima.ducc.container.net.iface;
+
+import java.io.Serializable;
+
+public interface IMetaCas extends IMetaCasKeys, Serializable {
+       
+       // Performance metrics
+       public IPerformanceMetrics getPerformanceMetrics();
+       public void setPerformanceMetrics(IPerformanceMetrics value);
+       
+       // CAS (accessible in user space only)
+       public Object getUserSpaceCas();
+       public void setUserSpaceCas(Object value);
+       
+       // Exception (accessible in user space only)
+       public Object getUserSpaceException();
+       public void setUserSpaceException(Object value);
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCas.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasKeys.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasKeys.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasKeys.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasKeys.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,14 @@
+package org.apache.uima.ducc.container.net.iface;
+
+import java.io.Serializable;
+
+public interface IMetaCasKeys extends Serializable {
+
+       // System assigned key, e.g. a CAS sequence number
+       public String getSystemKey();                   
+       public void setSystemKey(String value);
+
+       // User provided key, e.g. getDocumentText()
+       public String getUserKey();
+       public void setUserKey(String value);
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasKeys.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasProvider.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasProvider.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasProvider.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasProvider.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,15 @@
+package org.apache.uima.ducc.container.net.iface;
+
+import java.io.Serializable;
+
+public interface IMetaCasProvider extends Serializable {
+       
+       public String getProviderKey();
+       public void setProviderKey(String value);
+       
+       public String getProviderName();
+       public void setProviderName(String value);
+       
+       public int getProviderPort();
+       public void setProviderPort(int value);
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasRequester.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasRequester.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasRequester.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasRequester.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,15 @@
+package org.apache.uima.ducc.container.net.iface;
+
+import java.io.Serializable;
+
+public interface IMetaCasRequester extends Serializable {
+       
+       public String getRequesterName();
+       public void setRequesterName(String value);
+       
+       public int getRequesterProcessId();
+       public void setRequesterProcessId(int value);
+       
+       public int getRequesterThreadId();
+       public void setRequesterThreadId(int value);
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasRequester.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasTransaction.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasTransaction.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasTransaction.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasTransaction.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,24 @@
+package org.apache.uima.ducc.container.net.iface;
+
+import java.io.Serializable;
+
+import org.apache.uima.ducc.container.net.impl.TransactionId;
+
+public interface IMetaCasTransaction extends IMetaCasProvider, 
IMetaCasRequester, Serializable {
+
+       public enum Type { Get, Ack, End };
+       
+       public Type getType();
+       public void setType(Type value);
+       
+       public enum Direction { Request, Response };
+       
+       public Direction getDirection();
+       public void setDirection(Direction value);
+       
+       public TransactionId getTransactionId();
+       public void setTransactionId(TransactionId value);
+       
+       public IMetaCas getMetaCas();
+       public void setMetaCas(IMetaCas value);
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IMetaCasTransaction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IPerformanceMetrics.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IPerformanceMetrics.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IPerformanceMetrics.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IPerformanceMetrics.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,7 @@
+package org.apache.uima.ducc.container.net.iface;
+
+import java.io.Serializable;
+
+public interface IPerformanceMetrics extends Serializable {
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/IPerformanceMetrics.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/ITransport.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/ITransport.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/ITransport.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/ITransport.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,6 @@
+package org.apache.uima.ducc.container.net.iface;
+
+public interface ITransport {
+
+       public void sendAndReceive(IMetaCasTransaction metaCastransaction) 
throws TimeoutException;
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/ITransport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/TimeoutException.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/TimeoutException.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/TimeoutException.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/TimeoutException.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,7 @@
+package org.apache.uima.ducc.container.net.iface;
+
+public class TimeoutException extends Exception {
+
+       private static final long serialVersionUID = 1L;
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/iface/TimeoutException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCas.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCas.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCas.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCas.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,101 @@
+package org.apache.uima.ducc.container.net.impl;
+
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IPerformanceMetrics;
+
+public class MetaCas implements IMetaCas {
+
+       private static final long serialVersionUID = 1L;
+       
+       private String systemKey = (new Integer(-1)).toString();
+       private String userKey = null;
+       private IPerformanceMetrics performanceMetrics = null;
+       private Object userSpaceCas = null;
+       private Object userSpaceException = null;
+
+       /////
+       
+       public MetaCas(int seqNo, String documentText, Object userSpaceCas) {
+               setSeqNo(seqNo);
+               setDocumentText(documentText);
+               setUserSpaceCas(userSpaceCas);
+       }
+       
+       public int getSeqNo() {
+               return Integer.parseInt(getSystemKey());
+       }
+       
+       public void setSeqNo(int value) {
+               setSystemKey(Integer.toString(value));
+       }
+       
+       public String getDocumentText() {
+               return getUserKey();
+       }
+       
+       public void setDocumentText(String value) {
+               setUserKey(value);
+       }
+       
+       public String getSerializedCas() {
+               return (String)getUserSpaceCas();
+       }
+       
+       public void setSerializedCas(String value) {
+               setUserSpaceCas(value);
+       }
+       
+       /////
+       
+       @Override
+       public String getSystemKey() {
+               return systemKey;
+       }
+
+       @Override
+       public void setSystemKey(String value) {
+               systemKey = value;
+       }
+
+       @Override
+       public String getUserKey() {
+               return userKey;
+       }
+
+       @Override
+       public void setUserKey(String value) {
+               userKey = value;
+       }
+
+       @Override
+       public IPerformanceMetrics getPerformanceMetrics() {
+               return performanceMetrics;
+       }
+
+       @Override
+       public void setPerformanceMetrics(IPerformanceMetrics value) {
+               performanceMetrics = value;
+       }
+
+       @Override
+       public Object getUserSpaceCas() {
+               return userSpaceCas;
+       }
+
+       @Override
+       public void setUserSpaceCas(Object value) {
+               userSpaceCas = value;
+       }
+
+       @Override
+       public Object getUserSpaceException() {
+               return userSpaceException;
+       }
+
+       @Override
+       public void setUserSpaceException(Object value) {
+               userSpaceException = value;
+       }
+
+       
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCas.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCasTransaction.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCasTransaction.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCasTransaction.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCasTransaction.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,129 @@
+package org.apache.uima.ducc.container.net.impl;
+
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
+
+public class MetaCasTransaction implements IMetaCasTransaction {
+
+       private static final long serialVersionUID = 1L;
+
+       private TransactionId transactionId = null;
+       
+       private Type type = null;
+       private Direction direction = null;
+       
+       private String providerKey = null;
+       private String providerName = null;
+       private int providerPort = 0;
+       
+       private String requesterName = null;
+       private int requesterPid = 0;
+       private int requesterTid = 0;
+       
+       private IMetaCas metaCas = null;
+       
+       public MetaCasTransaction() {
+               transactionId = new TransactionId(0,0);
+       }
+       
+       @Override
+       public String getProviderKey() {
+               return providerKey;
+       }
+       
+       @Override
+       public void setProviderKey(String value) {
+               providerKey = value;
+       }
+       
+       @Override
+       public String getProviderName() {
+               return providerName;
+       }
+
+       @Override
+       public void setProviderName(String value) {
+               providerName = value;
+       }
+
+       @Override
+       public int getProviderPort() {
+               return providerPort;
+       }
+
+       @Override
+       public void setProviderPort(int value) {
+               providerPort = value;
+       }
+
+       @Override
+       public String getRequesterName() {
+               return requesterName;
+       }
+
+       @Override
+       public void setRequesterName(String value) {
+               requesterName = value;
+       }
+
+       @Override
+       public int getRequesterProcessId() {
+               return requesterPid;
+       }
+
+       @Override
+       public void setRequesterProcessId(int value) {
+               requesterPid = value;
+       }
+
+       @Override
+       public int getRequesterThreadId() {
+               return requesterTid;
+       }
+
+       @Override
+       public void setRequesterThreadId(int value) {
+               requesterTid = value;
+       }
+
+       @Override
+       public Type getType() {
+               return type;
+       }
+
+       @Override
+       public void setType(Type value) {
+               type = value;
+       }
+
+       @Override
+       public Direction getDirection() {
+               return direction;
+       }
+
+       @Override
+       public void setDirection(Direction value) {
+               direction = value;
+       }
+
+       @Override
+       public TransactionId getTransactionId() {
+               return transactionId;
+       }
+
+       @Override
+       public void setTransactionId(TransactionId value) {
+               transactionId = value;
+       }
+
+       @Override
+       public IMetaCas getMetaCas() {
+               return metaCas;
+       }
+
+       @Override
+       public void setMetaCas(IMetaCas value) {
+               metaCas = value;
+       }
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/MetaCasTransaction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/TransactionId.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/TransactionId.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/TransactionId.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/TransactionId.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,37 @@
+package org.apache.uima.ducc.container.net.impl;
+
+public class TransactionId {
+
+       private int major = 0;
+       private int minor = 0;
+       
+       public TransactionId(int major, int minor) {
+               setMajor(major);
+               setMinor(minor);
+       }
+       
+       private int getMajor() {
+               return major;
+       }
+       
+       private void setMajor(int value) {
+               major = value;
+       }
+       
+       private int getMinor() {
+               return minor;
+       }
+       
+       private void setMinor(int value) {
+               minor = value;
+       }
+       
+       public void next() {
+               minor++;
+       }
+       
+       @Override
+       public String toString() {
+               return getMajor()+"."+getMinor();
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/net/impl/TransactionId.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestDispatcher.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestDispatcher.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestDispatcher.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestDispatcher.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,154 @@
+package org.apache.uima.ducc.test;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.net.URL;
+
+import org.apache.uima.ducc.container.jd.JobDriverCommon;
+import org.apache.uima.ducc.container.jd.dispatch.Dispatcher;
+import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction.Type;
+import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.container.net.impl.TransactionId;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TestDispatcher {
+
+       @BeforeClass
+       public static void setUpBeforeClass() throws Exception {
+       }
+
+       @AfterClass
+       public static void tearDownAfterClass() throws Exception {
+       }
+
+       @Before
+       public void setUp() throws Exception {
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+       
+       private boolean debug = true;
+       private boolean asExpected = true;
+       
+       private void out_println(String message) {
+               System.out.println(message);
+       }
+       
+       private void debug(String message) {
+               if(debug) {
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(String text) {
+               if(asExpected) {
+                       String message = "as expected: "+text;
+                       out_println(message);
+               }
+       }
+       
+       /*
+       private void asExpected(Exception e) {
+               if(asExpected) {
+                       String message = "as expected: "+e.getMessage();
+                       out_println(message);
+               }
+       }
+       */
+       
+       private MetaCasTransaction create(String node, int pid, int tid, Type 
type) {
+               MetaCasTransaction mct = new MetaCasTransaction();
+               mct.setRequesterName(node);
+               mct.setRequesterProcessId(pid);
+               mct.setRequesterThreadId(tid);
+               mct.setType(type);
+               return mct;
+       }
+       
+       private IMetaCas transCommon(Dispatcher dispatcher, MetaCasTransaction 
trans, int reqNo) {
+               dispatcher.handleMetaCasTransation(trans);
+               IMetaCas metaCas = trans.getMetaCas();
+               if(metaCas != null) {
+                       String seqNo = ""+reqNo;
+                       debug("system key:"+metaCas.getSystemKey());
+                       assertTrue(metaCas.getSystemKey().equals(seqNo));
+                       asExpected("system key == "+seqNo);
+                       debug("user key:"+metaCas.getUserKey());
+                       assertTrue(metaCas.getUserKey().equals(seqNo));
+                       asExpected("user key == "+seqNo);
+               }
+               else {
+                       debug("metaCas is null");
+               }
+               return metaCas;
+       }
+       
+       private IMetaCas transGet(Dispatcher dispatcher, String node, int pid, 
int tid, int reqNo) {
+               debug("Get");
+               MetaCasTransaction trans = create(node, pid, tid, Type.Get);
+               trans.setTransactionId(new TransactionId(reqNo,0));
+               return transCommon(dispatcher, trans, reqNo);
+       }
+       
+       private IMetaCas transAck(Dispatcher dispatcher, String node, int pid, 
int tid, int reqNo) {
+               debug("Ack");
+               MetaCasTransaction trans = create(node, pid, tid, Type.Ack);
+               trans.setTransactionId(new TransactionId(reqNo,1));
+               return transCommon(dispatcher, trans, reqNo);
+       }
+       
+       private IMetaCas transEnd(Dispatcher dispatcher, String node, int pid, 
int tid, int reqNo) {
+               debug("End");
+               MetaCasTransaction trans = create(node, pid, tid, Type.End);
+               trans.setTransactionId(new TransactionId(reqNo,2));
+               return transCommon(dispatcher, trans, reqNo);
+       }
+       
+       @Test
+       public void test_01() {
+               try {
+                       String[] jarList260 = { 
+                                       "/ducc-user.jar",
+                                       "/uimaj-as-core-2.6.0.jar",
+                                       "/uimaj-core-2.6.0.jar",
+                                       "/xstream-1.3.1.jar"
+                       };
+                       URL urlXml = this.getClass().getResource("/CR100.xml");
+                       File file = new File(urlXml.getFile());
+                       String crXml = file.getAbsolutePath();
+                       String crCfg = null;
+                       new JobDriverCommon(jarList260, crXml, crCfg);
+                       int size = 
JobDriverCommon.getInstance().getMap().size();
+                       debug("map size:"+size);
+                       Dispatcher dispatcher = new Dispatcher();
+                       String node = "node01";
+                       int pid = 23;
+                       int tid = 45;
+                       int casNo = 1;
+                       IMetaCas metaCasPrevious = null;
+                       IMetaCas metaCas = 
transGet(dispatcher,node,pid,tid,casNo);
+                       while(metaCas != null) {
+                               transAck(dispatcher,node,pid,tid,casNo);
+                               transEnd(dispatcher,node,pid,tid,casNo);
+                               casNo++;
+                               metaCasPrevious = metaCas;
+                               metaCas = 
transGet(dispatcher,node,pid,tid,casNo);
+                       }
+                       
assertTrue(metaCasPrevious.getSystemKey().equals("100"));
+                       asExpected("CASes processed count == 100");
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestDispatcher.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestJson.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestJson.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestJson.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestJson.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,129 @@
+package org.apache.uima.ducc.test;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.uima.ducc.container.common.files.json.JsonConverter;
+import org.apache.uima.ducc.container.common.files.json.JsonWorkItemState;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TestJson {
+
+       @BeforeClass
+       public static void setUpBeforeClass() throws Exception {
+       }
+
+       @AfterClass
+       public static void tearDownAfterClass() throws Exception {
+       }
+
+       @Before
+       public void setUp() throws Exception {
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+       
+       private boolean debug = true;
+       private boolean asExpected = true;
+       
+       private void out_println(String message) {
+               System.out.println(message);
+       }
+       
+       private void debug(String message) {
+               if(debug) {
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(String text) {
+               if(asExpected) {
+                       String message = "as expected: "+text;
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(Exception e) {
+               if(asExpected) {
+                       String message = "as expected: "+e.getMessage();
+                       out_println(message);
+               }
+       }
+       
+       private void compare(JsonWorkItemState jwisA, JsonWorkItemState jwisB) {
+               assertTrue(jwisA.getNode().equals(jwisB.getNode()));
+               assertTrue(jwisA.getPid() == jwisB.getPid());
+               assertTrue(jwisA.getTid() == jwisB.getTid());
+               assertTrue(jwisA.getProcessingTime() == 
jwisB.getProcessingTime());
+               assertTrue(jwisA.getTransferTime() == jwisB.getTransferTime());
+               assertTrue(jwisA.getSystemKey().equals(jwisB.getSystemKey()));
+               assertTrue(jwisA.getUserKey().equals(jwisB.getUserKey()));
+               assertTrue(jwisA.getStatus().equals(jwisB.getStatus()));
+       }
+       
+       @Test
+       public void test_01() {
+               try {
+                       JsonWorkItemState jwis1 = new JsonWorkItemState();
+                       jwis1.setNode("node01");
+                       jwis1.setPid(23);
+                       jwis1.setTid(45);
+                       jwis1.setProcessingTime(5000);
+                       jwis1.setTransferTime(1000);
+                       jwis1.setSystemKey("sys0001");
+                       jwis1.setUserKey("usr0001");
+                       jwis1.setStatus("running");
+                       JsonWorkItemState jwis2 = new JsonWorkItemState();
+                       jwis2.setNode("node01");
+                       jwis2.setPid(23);
+                       jwis2.setTid(46);
+                       jwis2.setProcessingTime(0000);
+                       jwis2.setTransferTime(0500);
+                       jwis2.setSystemKey("sys0002");
+                       jwis2.setUserKey("usr0002");
+                       jwis2.setStatus("transfer");
+                       ConcurrentHashMap<String,JsonWorkItemState> map1 = new 
ConcurrentHashMap<String,JsonWorkItemState>();
+                       map1.put(jwis1.getSystemKey(),jwis1);
+                       map1.put(jwis2.getSystemKey(),jwis2);
+                       String json = 
JsonConverter.workItemStateMapToJson(map1);
+                       asExpected(json);
+                       ConcurrentHashMap<String,JsonWorkItemState> map2 = 
JsonConverter.workItemStateMapFromJson(json);
+                       compare(jwis1, map2.get(jwis1.getSystemKey()));
+                       compare(jwis2, map2.get(jwis2.getSystemKey()));
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_02() {
+               try {
+                       JsonWorkItemState jwis1 = new JsonWorkItemState();
+                       jwis1.setNode("node01");
+                       jwis1.setPid(23);
+                       jwis1.setTid(45);
+                       jwis1.setProcessingTime(5000);
+                       jwis1.setTransferTime(1000);
+                       jwis1.setSystemKey("sys0001");
+                       jwis1.setUserKey("usr0001");
+                       jwis1.setStatus("running");
+                       JsonWorkItemState jwis2 = null;
+                       compare(jwis1, jwis2);
+                       debug(jwis1.getSystemKey());
+                       fail("No Exception?");
+               }
+               catch(Exception e) {
+                       asExpected(e);
+               }
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestJson.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestSuite.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestSuite.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestSuite.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestSuite.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,397 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.test;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.net.URL;
+
+import org.apache.uima.ducc.container.jd.JobDriverCasManager;
+import org.apache.uima.ducc.container.jd.JobDriverException;
+import org.apache.uima.ducc.container.jd.classload.JobDriverCollectionReader;
+import org.apache.uima.ducc.container.jd.dispatch.RemoteWorkerIdentity;
+import org.apache.uima.ducc.container.net.impl.MetaCas;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TestSuite {
+
+       @BeforeClass
+       public static void setUpBeforeClass() throws Exception {
+       }
+
+       @AfterClass
+       public static void tearDownAfterClass() throws Exception {
+       }
+
+       @Before
+       public void setUp() throws Exception {
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+       
+       private boolean debug = true;
+       private boolean asExpected = true;
+       
+       private void out_println(String message) {
+               System.out.println(message);
+       }
+       
+       private void debug(String message) {
+               if(debug) {
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(String text) {
+               if(asExpected) {
+                       String message = "as expected: "+text;
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(Exception e) {
+               if(asExpected) {
+                       String message = "as expected: "+e.getMessage();
+                       out_println(message);
+               }
+       }
+       
+       private String[] jarList242 = { 
+                       "/ducc-user.jar",
+                       "/uimaj-as-core-2.4.2.jar",
+                       "/uimaj-core-2.4.2.jar",
+                       "/xstream-1.3.1.jar"
+       };
+       
+       private String[] jarList260 = { 
+                       "/ducc-user.jar",
+                       "/uimaj-as-core-2.6.0.jar",
+                       "/uimaj-core-2.6.0.jar",
+                       "/xstream-1.3.1.jar"
+       };
+
+       private void testIncludeAll(String[] jarList, String crXml, String 
crCfg) {
+               try {
+                       URL[] classLoaderUrls = new URL[jarList.length];
+                       int i = 0;
+                       for(String jar : jarList) {
+                               classLoaderUrls[i] = 
this.getClass().getResource(jar);
+                               i++;
+                       }
+                       new JobDriverCollectionReader(classLoaderUrls, crXml, 
crCfg);
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_01() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               testIncludeAll(jarList242, crXml, crCfg);
+       }
+       
+       @Test
+       public void test_02() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               testIncludeAll(jarList260, crXml, crCfg);
+       }
+       
+       private void testExcludeOne(String[] jarList, String crXml, String 
crCfg, int skip) {
+               try {
+                       URL[] classLoaderUrls = new URL[jarList.length-1];
+                       int index = 0;
+                       for(int i=0; i<jarList.length; i++) {
+                               String jar = jarList[i];
+                               if(i == skip) {
+                                       debug(i+" skip: "+jar);
+                               }
+                               else {
+                                       debug(i+" use: "+jar);
+                                       classLoaderUrls[index] = 
this.getClass().getResource(jar);
+                                       index++;
+                               }
+                       }
+                       try {
+                               new JobDriverCollectionReader(classLoaderUrls, 
crXml, crCfg);
+                               fail("Exception missing...?");
+                       }
+                       catch(JobDriverException e) {
+                               asExpected(e);
+                       }
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       //@Test
+       public void test_03() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               testExcludeOne(jarList242, crXml, crCfg, 2);
+               for(int i=0; i<jarList242.length; i++) {
+                       testExcludeOne(jarList242, crXml, crCfg, i);
+               }
+       }
+       
+       //@Test
+       public void test_04() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               for(int i=0; i<jarList260.length; i++) {
+                       testExcludeOne(jarList260, crXml, crCfg, i);
+               }
+       }
+       
+       private void testNoXml(String[] jarList, String crXml, String crCfg) {
+               try {
+                       URL[] classLoaderUrls = new URL[jarList.length];
+                       int i = 0;
+                       for(String jar : jarList) {
+                               classLoaderUrls[i] = 
this.getClass().getResource(jar);
+                               i++;
+                       }
+                       new JobDriverCollectionReader(classLoaderUrls, crXml, 
crCfg);
+                       fail("Exception missing...?");
+               }
+               catch(JobDriverException e) {
+                       asExpected(e);
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_05() {
+               String crXml = null;
+               String crCfg = null;
+               testNoXml(jarList242, crXml, crCfg);
+               testNoXml(jarList260, crXml, crCfg);
+       }
+       
+       private void getTotal(String[] jarList, String crXml, String crCfg) {
+               try {
+                       URL[] classLoaderUrls = new URL[jarList.length];
+                       int i = 0;
+                       for(String jar : jarList) {
+                               classLoaderUrls[i] = 
this.getClass().getResource(jar);
+                               i++;
+                       }
+                       JobDriverCollectionReader jdui = new 
JobDriverCollectionReader(classLoaderUrls, crXml, crCfg);
+                       int total = jdui.getTotal();
+                       assertTrue(total == 100);
+                       debug("total: "+total);
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_06() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               getTotal(jarList242, crXml, crCfg);
+               getTotal(jarList260, crXml, crCfg);
+       }
+       
+       private void getMetaCas(String[] jarList, String crXml, String crCfg) {
+               try {
+                       URL[] classLoaderUrls = new URL[jarList.length];
+                       int i = 0;
+                       for(String jar : jarList) {
+                               classLoaderUrls[i] = 
this.getClass().getResource(jar);
+                               i++;
+                       }
+                       JobDriverCollectionReader jdui = new 
JobDriverCollectionReader(classLoaderUrls, crXml, crCfg);
+                       MetaCas mc = jdui.getMetaCas();
+                       int seqNo = mc.getSeqNo();
+                       asExpected("seqNo = "+seqNo);
+                       assertTrue(seqNo == 1);
+                       String serializedCas = (String)mc.getSerializedCas();
+                       asExpected("cas = "+serializedCas);
+                       String prefix = "<?xml version=\"1.0\" 
encoding=\"UTF-8\"?><xmi:XMI xmlns:cas=\"http:///uima/cas.ecore\"";;
+                       assertTrue(serializedCas.startsWith(prefix));
+                       String documentText = mc.getDocumentText();
+                       asExpected("documentText = "+documentText);
+                       assertTrue(documentText.equals("1"));
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       //@Test
+       public void test_07() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               getMetaCas(jarList242, crXml, crCfg);
+               getMetaCas(jarList260, crXml, crCfg);
+       }
+       
+       private void getMetaCases(JobDriverCollectionReader jdui, int total) 
throws JobDriverException {
+               for(int c=1; c <= total; c++) {
+                       MetaCas mc = jdui.getMetaCas();
+                       int seqNo = mc.getSeqNo();
+                       asExpected("seqNo = "+seqNo);
+                       assertTrue(seqNo == c);
+                       String serializedCas = (String)mc.getSerializedCas();
+                       asExpected("cas = "+serializedCas);
+                       String prefix = "<?xml version=\"1.0\" 
encoding=\"UTF-8\"?><xmi:XMI xmlns:cas=\"http:///uima/cas.ecore\"";;
+                       assertTrue(serializedCas.startsWith(prefix));
+                       String documentText = mc.getDocumentText();
+                       asExpected("documentText = "+documentText);
+                       assertTrue(documentText.equals(""+c));
+               }
+       }
+       
+       private void getMetaCases(String[] jarList, String crXml, String crCfg, 
int extra) {
+               try {
+                       URL[] classLoaderUrls = new URL[jarList.length];
+                       int i = 0;
+                       for(String jar : jarList) {
+                               classLoaderUrls[i] = 
this.getClass().getResource(jar);
+                               i++;
+                       }
+                       JobDriverCollectionReader jdui = new 
JobDriverCollectionReader(classLoaderUrls, crXml, crCfg);
+                       int total = jdui.getTotal();
+                       getMetaCases(jdui, total);
+                       if(extra > 0) {
+                               for(int j=0; j<extra; j++) {
+                                       MetaCas mc = jdui.getMetaCas();
+                                       assertTrue(mc == null);
+                               }
+                       }
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }       
+       
+       //@Test
+       public void test_08() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               getMetaCases(jarList242, crXml, crCfg, 0);
+               getMetaCases(jarList260, crXml, crCfg, 0);
+       }
+       
+       //@Test
+       public void test_09() {
+               URL urlXml = this.getClass().getResource("/CR100.xml");
+               File file = new File(urlXml.getFile());
+               String crXml = file.getAbsolutePath();
+               String crCfg = null;
+               getMetaCases(jarList242, crXml, crCfg, 10);
+               getMetaCases(jarList260, crXml, crCfg, 10);
+       }
+       
+       @Test
+       public void test_10() {
+               try {
+                       URL urlXml = this.getClass().getResource("/CR100.xml");
+                       File file = new File(urlXml.getFile());
+                       String crXml = file.getAbsolutePath();
+                       String crCfg = null;
+                       String[] jarList = jarList260;
+                       JobDriverCasManager jdcm = new 
JobDriverCasManager(jarList, crXml, crCfg);
+                       int total = jdcm.getTotal();
+                       assertTrue(total == 100);
+                       MetaCas metaCas = jdcm.getMetaCas();
+                       int puts = 3;
+                       while(metaCas != null) {
+                               if(jdcm.getPuts() < puts) {
+                                       jdcm.putMetaCas(metaCas);
+                               }
+                               metaCas = jdcm.getMetaCas();
+                       }
+                       assertTrue(jdcm.getGetsCr() == total);
+                       assertTrue(jdcm.getGets() == (puts+total));
+                       assertTrue(jdcm.getPuts() == puts);
+                       asExpected("puts == "+puts);
+                       asExpected("gets == "+(puts+total));
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_20() {
+               String n01 = "node01";
+               int p10 = 10;
+               int t20 = 20;
+               RemoteWorkerIdentity rwi01A = new 
RemoteWorkerIdentity(n01,p10,t20);
+               RemoteWorkerIdentity rwi01B = new 
RemoteWorkerIdentity(n01,p10,t20);
+               assertTrue(rwi01A.equals(rwi01A));
+               assertTrue(rwi01B.equals(rwi01B));
+               assertTrue(rwi01A.equals(rwi01B));
+               assertTrue(rwi01A.compareTo(rwi01A) == 0);
+               assertTrue(rwi01B.compareTo(rwi01B) == 0);
+               assertTrue(rwi01A.compareTo(rwi01B) == 0);
+               String n02 = "node02";
+               int p30 = 30;
+               int t40 = 40;
+               RemoteWorkerIdentity rwi02A = new 
RemoteWorkerIdentity(n02,p10,t20);
+               RemoteWorkerIdentity rwi01C = new 
RemoteWorkerIdentity(n01,p30,t20);
+               RemoteWorkerIdentity rwi01D = new 
RemoteWorkerIdentity(n01,p10,t40);
+               assertTrue(!rwi01A.equals(rwi02A));
+               assertTrue(!rwi01A.equals(rwi01C));
+               assertTrue(!rwi01A.equals(rwi01D));
+               assertTrue(rwi01A.compareTo(rwi02A) != 0);
+               assertTrue(rwi01A.compareTo(rwi01C) != 0);
+               assertTrue(rwi01A.compareTo(rwi01D) != 0);
+               assertTrue(rwi01A.getNode().equals(n01));
+               assertTrue(rwi01A.getPid() == p10);
+               assertTrue(rwi01A.getTid() == t20);
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestSuite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestWiFsm.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestWiFsm.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestWiFsm.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestWiFsm.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,210 @@
+package org.apache.uima.ducc.test;
+
+import static org.junit.Assert.*;
+
+import org.apache.uima.ducc.container.common.fsm.Action;
+import org.apache.uima.ducc.container.common.fsm.Event;
+import org.apache.uima.ducc.container.common.fsm.Fsm;
+import org.apache.uima.ducc.container.common.fsm.State;
+import org.apache.uima.ducc.container.common.fsm.StateEventKey;
+import org.apache.uima.ducc.container.common.fsm.iface.IAction;
+import org.apache.uima.ducc.container.common.fsm.iface.IEvent;
+import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
+import org.apache.uima.ducc.container.common.fsm.iface.IFsmBuilder;
+import org.apache.uima.ducc.container.common.fsm.iface.IState;
+import org.apache.uima.ducc.container.jd.fsm.wi.WiFsm;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TestWiFsm {
+
+       @BeforeClass
+       public static void setUpBeforeClass() throws Exception {
+       }
+
+       @AfterClass
+       public static void tearDownAfterClass() throws Exception {
+       }
+
+       @Before
+       public void setUp() throws Exception {
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+       
+       private boolean debug = false;
+       private boolean asExpected = true;
+       
+       private void out_println(String message) {
+               System.out.println(message);
+       }
+       
+       private void debug(String message) {
+               if(debug) {
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(String text) {
+               if(asExpected) {
+                       String message = "as expected: "+text;
+                       out_println(message);
+               }
+       }
+       
+       private void asExpected(Exception e) {
+               if(asExpected) {
+                       String message = "as expected: "+e.getMessage();
+                       out_println(message);
+               }
+       }
+       
+       @Test
+       public void test_01() {
+               try {
+                       IState s0 = new State("a");
+                       IState s1 = new State("a");
+                       IState s2 = new State("b");
+                       assertTrue(s0.equals(s1));
+                       asExpected("State "+s0.getName()+" == "+s1.getName());
+                       assertTrue(!s0.equals(s2));
+                       asExpected("State "+s0.getName()+" != "+s2.getName());
+                       assertTrue(!s1.equals(s2));
+                       asExpected("State "+s1.getName()+" != "+s2.getName());
+                       try {
+                               new State(null);
+                               fail("expected Exception");
+                       }
+                       catch(Exception e) {
+                               asExpected(e);
+                       }
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_02() {
+               try {
+                       IEvent e0 = new Event("c");
+                       IEvent e1 = new Event("c");
+                       IEvent e2 = new Event("d");
+                       assertTrue(e0.equals(e1));
+                       asExpected("Event "+e0.getName()+" == "+e1.getName());
+                       assertTrue(!e0.equals(e2));
+                       asExpected("Event "+e0.getName()+" != "+e2.getName());
+                       assertTrue(!e1.equals(e2));
+                       asExpected("Event "+e1.getName()+" != "+e2.getName());
+                       try {
+                               new Event(null);
+                               fail("expected Exception");
+                       }
+                       catch(Exception e) {
+                               asExpected(e);
+                       }
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_03() {
+               try {
+                       IState s0 = new State("a");
+                       IState s1 = new State("b");
+                       IEvent e0 = new Event("c");
+                       IEvent e1 = new Event("d");
+                       StateEventKey se00A = new StateEventKey(s0, e0);
+                       StateEventKey se00B = new StateEventKey(s0, e0);
+                       assertTrue(se00A.equals(se00B));
+                       StateEventKey se00 = new StateEventKey(s0, e0);
+                       StateEventKey se01 = new StateEventKey(s0, e1);
+                       StateEventKey se10 = new StateEventKey(s1, e0);
+                       StateEventKey se11 = new StateEventKey(s1, e1);
+                       assertTrue(!se00.equals(se01));
+                       assertTrue(!se00.equals(se10));
+                       assertTrue(!se00.equals(se11));
+                       assertTrue(!se01.equals(se10));
+                       assertTrue(!se01.equals(se11));
+                       assertTrue(!se10.equals(se11));
+                       try {
+                               new StateEventKey(null, e0);;
+                               fail("expected Exception");
+                       }
+                       catch(Exception e) {
+                               asExpected(e);
+                       }
+                       try {
+                               new StateEventKey(s0, null);;
+                               fail("expected Exception");
+                       }
+                       catch(Exception e) {
+                               asExpected(e);
+                       }
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_04() {
+               try {
+                       IState s1 = new State("s1");
+                       IState s2 = new State("s2");
+                       IEvent e1 = new Event("e1");
+                       IEvent e2 = new Event("e2");
+                       IAction a0 = new Action();
+                       IFsmBuilder fsmBuilder = new Fsm();
+                       IFsm fsm = fsmBuilder;
+                       debug("s1:"+s1.getName());
+                       debug("s2:"+s2.getName());
+                       debug("e1:"+e1.getName());
+                       debug("e2:"+e2.getName());
+                       fsmBuilder.addInitial(s1, e1, a0, s1);
+                       fsmBuilder.add(s1, e2, a0, s2);
+                       
assertTrue(fsm.getStateCurrent().getName().equals(s1.getName()));
+                       asExpected("state == "+s1.getName());
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
+       @Test
+       public void test_05() {
+               try {
+                       WiFsm wiFsm = new WiFsm();
+                       Object actionData = null;
+                       
assertTrue(wiFsm.getStateCurrent().getName().equals(WiFsm.Start.getName()));
+                       asExpected("state == "+WiFsm.Start.getName());
+                       wiFsm.transition(WiFsm.Get_Request, actionData);
+                       
assertTrue(wiFsm.getStateCurrent().getName().equals(WiFsm.Get_Pending.getName()));
+                       asExpected("state == "+WiFsm.Get_Pending.getName());
+                       wiFsm.transition(WiFsm.CAS_Available, actionData);
+                       
assertTrue(wiFsm.getStateCurrent().getName().equals(WiFsm.CAS_Send.getName()));
+                       asExpected("state == "+WiFsm.CAS_Send.getName());
+                       wiFsm.transition(WiFsm.Ack_Request, actionData);
+                       
assertTrue(wiFsm.getStateCurrent().getName().equals(WiFsm.CAS_Active.getName()));
+                       asExpected("state == "+WiFsm.CAS_Active.getName());
+                       wiFsm.transition(WiFsm.End_Request, actionData);
+                       
assertTrue(wiFsm.getStateCurrent().getName().equals(WiFsm.Start.getName()));
+                       asExpected("state == "+WiFsm.Start.getName());
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/test/TestWiFsm.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/user/jd/test/helper/CR100.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/user/jd/test/helper/CR100.java?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/user/jd/test/helper/CR100.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/user/jd/test/helper/CR100.java
 Tue Oct 28 22:00:48 2014
@@ -0,0 +1,46 @@
+package org.apache.uima.ducc.user.jd.test.helper;
+
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.collection.CollectionException;
+import org.apache.uima.collection.CollectionReader_ImplBase;
+import org.apache.uima.util.Progress;
+import org.apache.uima.util.ProgressImpl;
+
+public class CR100 extends CollectionReader_ImplBase {
+
+       private int casLimit = 100;
+       private AtomicInteger casCounter = new AtomicInteger(0);
+       
+       @Override
+       public void getNext(CAS aCAS) throws IOException, CollectionException {
+               aCAS.reset();
+               int item = casCounter.incrementAndGet();
+               if(item <= casLimit) {
+                       aCAS.setSofaDataString(""+item, "text");
+               }
+       }
+
+       @Override
+       public boolean hasNext() throws IOException, CollectionException {
+               boolean retVal = false;
+               if(casCounter.get() < casLimit) {
+                       retVal = true;
+               }
+               return retVal;
+       }
+
+       @Override
+       public Progress[] getProgress() {
+               ProgressImpl[] retVal = new ProgressImpl[1];
+               retVal[0] = new ProgressImpl(casCounter.get(), casLimit, 
"CASes");
+               return retVal;
+       }
+
+       @Override
+       public void close() throws IOException {
+       }
+
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/user/jd/test/helper/CR100.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/CR100.xml
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/CR100.xml?rev=1634998&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/CR100.xml 
(added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/CR100.xml 
Tue Oct 28 22:00:48 2014
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+       <!--
+        ***************************************************************
+        * Licensed to the Apache Software Foundation (ASF) under one
+        * or more contributor license agreements.  See the NOTICE file
+        * distributed with this work for additional information
+        * regarding copyright ownership.  The ASF licenses this file
+        * to you under the Apache License, Version 2.0 (the
+        * "License"); you may not use this file except in compliance
+        * with the License.  You may obtain a copy of the License at
+         *
+        *   http://www.apache.org/licenses/LICENSE-2.0
+        * 
+        * Unless required by applicable law or agreed to in writing,
+        * software distributed under the License is distributed on an
+        * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+        * KIND, either express or implied.  See the License for the
+        * specific language governing permissions and limitations
+        * under the License.
+        ***************************************************************
+   -->
+   
+<!-- A simple collection reader that reads text files from a directory in the
+     filesystem.  The Java class for this collection reader is in 
uima_core.jar. -->
+
+<collectionReaderDescription  xmlns="http://uima.apache.org/resourceSpecifier";>
+    <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+    
<implementationName>org.apache.uima.ducc.user.jd.test.helper.CR100</implementationName>
+    <processingResourceMetaData>
+        <name>Driver Collection Reader</name>
+        <description>Generates CASes comprising indices.</description>
+        <version>1.0</version>
+        <vendor>The Apache Software Foundation</vendor>
+        
+        <configurationParameters>
+
+               <configurationParameter>
+                       <name>compression</name>
+                       <description>Compression</description>
+                       <type>String</type>
+                       <multiValued>false</multiValued>
+                       <mandatory>false</mandatory>
+               </configurationParameter>
+
+               <configurationParameter>
+                       <name>jobfile</name>
+                       <description>JobFile</description>
+                       <type>String</type>
+                       <multiValued>false</multiValued>
+                       <mandatory>false</mandatory>
+               </configurationParameter>
+
+               <configurationParameter>
+                       <name>error_rate</name>
+                       <description>ErrorRate</description>
+                       <type>String</type>
+                       <multiValued>false</multiValued>
+                       <mandatory>false</mandatory>
+               </configurationParameter>
+
+       </configurationParameters>
+
+               <configurationParameterSettings>
+
+                 <nameValuePair>
+                   <name>compression</name>
+                   <value>
+                     <string>10</string>
+                   </value>
+                 </nameValuePair>
+
+                 <nameValuePair>
+                   <name>error_rate</name>
+                   <value>
+                     <string>0</string>
+                   </value>
+                 </nameValuePair>
+
+                 <nameValuePair>
+                   <name>jobfile</name>
+                   <value>
+                     <string>../ducc_test/jobs/1.job</string>
+                   </value>
+                 </nameValuePair>
+
+       </configurationParameterSettings>
+       
+        <!-- Type System of CASes returned by this Collection Reader -->
+
+        <typeSystemDescription>
+          <imports>
+            <import name="org.apache.uima.examples.SourceDocumentInformation"/>
+          </imports>
+        </typeSystemDescription>
+
+        <capabilities>
+               <capability>
+                       <inputs/>
+                       <outputs>
+                               <type 
allAnnotatorFeatures="true">org.apache.uima.examples.SourceDocumentInformation</type>
+                       </outputs>
+               </capability>
+        </capabilities>
+               <operationalProperties>
+                       <modifiesCas>false</modifiesCas>
+                       
<multipleDeploymentAllowed>false</multipleDeploymentAllowed>
+                       <outputsNewCASes>true</outputsNewCASes>
+               </operationalProperties>                
+    </processingResourceMetaData>
+</collectionReaderDescription>

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/CR100.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/ducc-user.jar
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/ducc-user.jar?rev=1634998&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/ducc-user.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-as-core-2.4.2.jar
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-as-core-2.4.2.jar?rev=1634998&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-as-core-2.4.2.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-as-core-2.6.0.jar
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-as-core-2.6.0.jar?rev=1634998&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-as-core-2.6.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-core-2.4.2.jar
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-core-2.4.2.jar?rev=1634998&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-core-2.4.2.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-core-2.6.0.jar
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-core-2.6.0.jar?rev=1634998&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/uimaj-core-2.6.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/xstream-1.3.1.jar
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/xstream-1.3.1.jar?rev=1634998&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/resources/xstream-1.3.1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream


Reply via email to