You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2018/07/17 13:49:48 UTC
svn commit: r1836115 [2/4] - in /uima/uima-ducc/trunk: src/main/assembly/
uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/
uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/
uima-ducc-container/src/main/java/org/...
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler.java Tue Jul 17 13:49:47 2018
@@ -22,18 +22,19 @@ import static org.junit.Assert.assertTru
import org.apache.uima.ducc.container.jd.mh.MessageHandler;
import org.apache.uima.ducc.container.jd.test.TestBase;
-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.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.iface.IMetaTaskTransaction.Type;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
+import org.apache.uima.ducc.ps.net.impl.TransactionId;
+
public class TestMessageHandler extends TestBase {
protected boolean enforce = true;
protected boolean skipAll = true;
- private MetaCasTransaction create(String node, int pid, int tid, Type type) {
- MetaCasTransaction mct = new MetaCasTransaction();
+ private MetaTaskTransaction create(String node, int pid, int tid, Type type) {
+ MetaTaskTransaction mct = new MetaTaskTransaction();
mct.setRequesterNodeName(node);
mct.setRequesterProcessName(pid+"");
mct.setRequesterProcessId(pid);
@@ -42,9 +43,9 @@ public class TestMessageHandler extends
return mct;
}
- private IMetaCas transCommon(MessageHandler messageHandler, MetaCasTransaction trans, int reqNo) {
+ private IMetaTask transCommon(MessageHandler messageHandler, MetaTaskTransaction trans, int reqNo) {
messageHandler.handleMetaCasTransation(trans);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCas = trans.getMetaTask();
if(metaCas != null) {
if(reqNo > 0) {
String seqNo = ""+reqNo;
@@ -66,22 +67,22 @@ public class TestMessageHandler extends
return metaCas;
}
- protected MetaCasTransaction transGet(MessageHandler messageHandler, String node, int pid, int tid, int reqNo) {
+ protected MetaTaskTransaction transGet(MessageHandler messageHandler, String node, int pid, int tid, int reqNo) {
debug("Get");
- MetaCasTransaction trans = create(node, pid, tid, Type.Get);
+ MetaTaskTransaction trans = create(node, pid, tid, Type.Get);
trans.setTransactionId(new TransactionId(reqNo,0));
transCommon(messageHandler, trans, reqNo);
return trans;
}
- protected void transAck(MessageHandler messageHandler, MetaCasTransaction trans, int reqNo) {
+ protected void transAck(MessageHandler messageHandler, MetaTaskTransaction trans, int reqNo) {
debug("Ack");
trans.setType(Type.Ack);
trans.setTransactionId(new TransactionId(reqNo,1));
transCommon(messageHandler, trans, reqNo);
}
- protected void transEnd(MessageHandler messageHandler, MetaCasTransaction trans, int reqNo) {
+ protected void transEnd(MessageHandler messageHandler, MetaTaskTransaction trans, int reqNo) {
debug("End");
trans.setType(Type.End);
trans.setTransactionId(new TransactionId(reqNo,2));
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler01.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler01.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler01.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler01.java Tue Jul 17 13:49:47 2018
@@ -33,8 +33,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.junit.Test;
public class TestMessageHandler01 extends TestMessageHandler {
@@ -83,16 +83,16 @@ public class TestMessageHandler01 extend
int pid = ti.getPid();
int tid = ti.getTid();
int casNo = 1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,node,pid,tid,casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,node,pid,tid,casNo);
+ IMetaTask metaCas = trans.getMetaTask();
while(metaCas != null) {
transAck(messageHandler,trans,casNo);
transEnd(messageHandler,trans,casNo);
casNo++;
metaCasPrevious = metaCas;
trans = transGet(messageHandler,node,pid,tid,casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
assertTrue(metaCasPrevious.getSystemKey().equals("100"));
asExpected("CASes processed count == 100");
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02a.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02a.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02a.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02a.java Tue Jul 17 13:49:47 2018
@@ -33,8 +33,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.junit.Test;
public class TestMessageHandler02a extends TestMessageHandler {
@@ -85,9 +85,9 @@ public class TestMessageHandler02a exten
ThreadInfo ti = tif.getRandom();
debug("random:"+ti.toKey());
int casNo = 1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
while(metaCas != null) {
IOperatingInfo oi = messageHandler.handleGetOperatingInfo();
@@ -105,7 +105,7 @@ public class TestMessageHandler02a exten
ti = tif.getRandom();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
assertTrue(metaCasPrevious.getSystemKey().equals("100"));
asExpected("CASes processed count == 100");
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02b.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02b.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02b.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler02b.java Tue Jul 17 13:49:47 2018
@@ -35,8 +35,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.junit.Test;
public class TestMessageHandler02b extends TestMessageHandler {
@@ -88,9 +88,9 @@ public class TestMessageHandler02b exten
ThreadInfo ti = tif.getUnique();
debug("random:"+ti.toKey());
int casNo = 1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
IOperatingInfo oi = messageHandler.handleGetOperatingInfo();
while(oi.getWorkItemCrFetches() < 100) {
@@ -104,7 +104,7 @@ public class TestMessageHandler02b exten
ti = tif.getUnique();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
oi = messageHandler.handleGetOperatingInfo();
ArrayList<IWorkItemInfo> list = oi.getActiveWorkItemInfo();
debug("list:"+list.size());
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler03.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler03.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler03.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler03.java Tue Jul 17 13:49:47 2018
@@ -36,8 +36,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.junit.Test;
public class TestMessageHandler03 extends TestMessageHandler {
@@ -88,9 +88,9 @@ public class TestMessageHandler03 extend
ThreadInfo ti = tif.getRandom();
debug("random:"+ti.toKey());
int casNo = -1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
while(metaCas != null) {
randomPreemptTest03(messageHandler,ti);
@@ -110,7 +110,7 @@ public class TestMessageHandler03 extend
ti = tif.getRandom();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
assertTrue(metaCasPrevious.getSystemKey().equals("100"));
asExpected("CASes processed count == 100");
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler04.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler04.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler04.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler04.java Tue Jul 17 13:49:47 2018
@@ -34,8 +34,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.apache.uima.ducc.user.error.iface.Transformer;
import org.junit.Test;
@@ -93,9 +93,9 @@ public class TestMessageHandler04 extend
ThreadInfo ti = tif.getRandom();
debug("random:"+ti.toKey());
int casNo = -1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
int inject = 0;
int index = 0;
@@ -121,7 +121,7 @@ public class TestMessageHandler04 extend
ti = tif.getRandom();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
//assertTrue(metaCasPrevious.getSystemKey().equals("100"));
//asExpected("CASes processed count == 100");
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05a.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05a.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05a.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05a.java Tue Jul 17 13:49:47 2018
@@ -34,8 +34,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.apache.uima.ducc.user.error.iface.Transformer;
import org.junit.Test;
@@ -91,9 +91,9 @@ public class TestMessageHandler05a exten
ThreadInfo ti = tif.getRandom();
debug("random:"+ti.toKey());
int casNo = -1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
int inject = 0;
while(metaCas != null) {
@@ -111,7 +111,7 @@ public class TestMessageHandler05a exten
ti = tif.getRandom();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
assertTrue(metaCasPrevious.getSystemKey().equals("100"));
asExpected("CASes processed count == 100");
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05b.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05b.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05b.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler05b.java Tue Jul 17 13:49:47 2018
@@ -34,8 +34,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.apache.uima.ducc.user.error.iface.Transformer;
import org.junit.Test;
@@ -93,9 +93,9 @@ public class TestMessageHandler05b exten
ThreadInfo ti = tif.getRandom();
debug("random:"+ti.toKey());
int casNo = -1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
int inject = 0;
while(metaCas != null) {
@@ -113,7 +113,7 @@ public class TestMessageHandler05b exten
ti = tif.getRandom();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
IOperatingInfo oi = messageHandler.handleGetOperatingInfo();
long endSuccess = oi.getWorkItemEndSuccesses();
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler06.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler06.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler06.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/messagehandler/TestMessageHandler06.java Tue Jul 17 13:49:47 2018
@@ -34,8 +34,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfo;
import org.apache.uima.ducc.container.jd.test.helper.ThreadInfoFactory;
import org.apache.uima.ducc.container.jd.test.helper.Utilities;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCasTransaction;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTaskTransaction;
import org.apache.uima.ducc.user.error.iface.Transformer;
import org.junit.Test;
@@ -95,9 +95,9 @@ public class TestMessageHandler06 extend
ThreadInfo ti = tif.getRandom();
debug("random:"+ti.toKey());
int casNo = -1;
- IMetaCas metaCasPrevious = null;
- MetaCasTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- IMetaCas metaCas = trans.getMetaCas();
+ IMetaTask metaCasPrevious = null;
+ MetaTaskTransaction trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
+ IMetaTask metaCas = trans.getMetaTask();
assertTrue(metaCas != null);
int inject = 0;
int index = 0;
@@ -119,7 +119,7 @@ public class TestMessageHandler06 extend
ti = tif.getRandom();
debug("random:"+ti.toKey());
trans = transGet(messageHandler,ti.getNodeName(),ti.getPid(),ti.getTid(),casNo);
- metaCas = trans.getMetaCas();
+ metaCas = trans.getMetaTask();
}
assertTrue(metaCasPrevious.getSystemKey().equals("100"));
asExpected("CASes processed count == 100");
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/wi/tracker/TestWiTracker.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/wi/tracker/TestWiTracker.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/wi/tracker/TestWiTracker.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/wi/tracker/TestWiTracker.java Tue Jul 17 13:49:47 2018
@@ -31,8 +31,8 @@ import org.apache.uima.ducc.container.jd
import org.apache.uima.ducc.container.jd.wi.IWorkItem;
import org.apache.uima.ducc.container.jd.wi.WiTracker;
import org.apache.uima.ducc.container.jd.wi.WorkItem;
-import org.apache.uima.ducc.container.net.iface.IMetaCas;
-import org.apache.uima.ducc.container.net.impl.MetaCas;
+import org.apache.uima.ducc.ps.net.iface.IMetaTask;
+import org.apache.uima.ducc.ps.net.impl.MetaTask;
import org.junit.Before;
import org.junit.Test;
@@ -53,17 +53,17 @@ public class TestWiTracker extends TestB
return fsm;
}
- private IMetaCas getMetaCas(int seqNo) {
- IMetaCas metaCas = null;
+ private IMetaTask getMetaCas(int seqNo) {
+ IMetaTask metaCas = null;
String text = ""+seqNo;
Object cas = null;
- metaCas = new MetaCas(seqNo, text, cas);
+ metaCas = new MetaTask(seqNo, text, cas);
return metaCas;
}
private IWorkItem getWi(int seqNo) {
IWorkItem wi = null;
- IMetaCas metaCas = getMetaCas(seqNo);
+ IMetaTask metaCas = getMetaCas(seqNo);
IFsm fsm = getFsm();
wi = new WorkItem(metaCas, fsm);
return wi;
@@ -90,7 +90,7 @@ public class TestWiTracker extends TestB
IRemoteWorkerThread rwt01A = getRemoteWorkerThread();
IWorkItem wi01A = tracker.link(rwt01A);
tracker.assign(rwt01A);
- IMetaCas metaCas = getMetaCas(1);
+ IMetaTask metaCas = getMetaCas(1);
wi01A.setMetaCas(metaCas);
//
assertTrue(tracker.getSize() == 1);
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java Tue Jul 17 13:49:47 2018
@@ -36,7 +36,100 @@ public class ServiceConfiguration {
private String customRegistryClass;
private String customProcessorClass;
private String serviceJmxConnectURL;
-
+ private String jobDirectory;
+ private String aeDescriptor;
+ private String ccDescriptor;
+ private String cmDescriptor;
+ private String jpFlowController;
+ private String ccOverrides;
+ private String cmOverrides;
+ private String aeOverrides;
+ private ClassLoader sysCL=null;
+
+ public ClassLoader getSysCL() {
+ return sysCL;
+ }
+ public void setSysCL(ClassLoader sysCL) {
+ this.sysCL = sysCL;
+ }
+ public String getJobDirectory() {
+ return jobDirectory;
+ }
+ public void setJobDirectory(String jobDirectory) {
+ this.jobDirectory = jobDirectory;
+ }
+ public String getAeDescriptor() {
+ return aeDescriptor;
+ }
+ public void setAeDescriptor(String aeDescriptor) {
+ this.aeDescriptor = aeDescriptor;
+ }
+ public String getCcDescriptor() {
+ return ccDescriptor;
+ }
+ public void setCcDescriptor(String ccDescriptor) {
+ this.ccDescriptor = ccDescriptor;
+ }
+ public String getCmDescriptor() {
+ return cmDescriptor;
+ }
+ public void setCmDescriptor(String cmDescriptor) {
+ this.cmDescriptor = cmDescriptor;
+ }
+ public String getJpFlowController() {
+ return jpFlowController;
+ }
+ public void setJpFlowController(String jpFlowController) {
+ this.jpFlowController = jpFlowController;
+ }
+ public String getCcOverrides() {
+ return ccOverrides;
+ }
+ public void setCcOverrides(String ccOverrides) {
+ this.ccOverrides = ccOverrides;
+ }
+ public String getCmOverrides() {
+ return cmOverrides;
+ }
+ public void setCmOverrides(String cmOverrides) {
+ this.cmOverrides = cmOverrides;
+ }
+ public String getAeOverrides() {
+ return aeOverrides;
+ }
+ public void setAeOverrides(String aeOverrides) {
+ this.aeOverrides = aeOverrides;
+ }
+ public void setClientURL(String clientURL) {
+ this.clientURL = clientURL;
+ }
+ public void setDuccHome(String duccHome) {
+ this.duccHome = duccHome;
+ }
+ public void setJobId(String jobId) {
+ this.jobId = jobId;
+ }
+ public void setDuccProcessId(String duccProcessId) {
+ this.duccProcessId = duccProcessId;
+ }
+ public void setDuccProcessUniqueId(String duccProcessUniqueId) {
+ this.duccProcessUniqueId = duccProcessUniqueId;
+ }
+ public void setMonitorPort(String monitorPort) {
+ this.monitorPort = monitorPort;
+ }
+ public void setAnalysisEngineDescriptorPath(String analysisEngineDescriptorPath) {
+ this.analysisEngineDescriptorPath = analysisEngineDescriptorPath;
+ }
+ public void setAssignedJmxPort(String assignedJmxPort) {
+ this.assignedJmxPort = assignedJmxPort;
+ }
+ public void setCustomRegistryClass(String customRegistryClass) {
+ this.customRegistryClass = customRegistryClass;
+ }
+ public void setCustomProcessorClass(String customProcessorClass) {
+ this.customProcessorClass = customProcessorClass;
+ }
public String getJpType() {
return jpType;
}
@@ -138,3 +231,4 @@ public class ServiceConfiguration {
analysisEngineDescriptorPath = args[0];
}
}
+
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGeneration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGeneration.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGeneration.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGeneration.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,161 @@
+/*
+ * 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.ps.service.dgen;
+
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.ducc.ps.service.ServiceConfiguration;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDeployableGeneration;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaAggregateComponent;
+import org.apache.uima.ducc.ps.service.utils.Utils;
+
+public class DeployableGeneration implements IDeployableGeneration {
+
+ private ServiceConfiguration serviceConfiguration;
+
+ public DeployableGeneration(ServiceConfiguration serviceConfiguration) {
+ this.serviceConfiguration = serviceConfiguration;
+ }
+
+ private void conditionalAddComponent(ArrayList<IDuccGeneratorUimaAggregateComponent> dgenComponents, String descriptor, List<String> overrides) {
+ if(descriptor != null) {
+ DuccUimaAggregateComponent dgenComponent = new DuccUimaAggregateComponent(descriptor, overrides);
+ dgenComponents.add(dgenComponent);
+ }
+ }
+
+ private void show(String text) {
+ System.out.println(text);
+ }
+
+ private void show(String name, String value) {
+ show(name+"="+value);
+ }
+
+ private void show(String name, List<String> value) {
+ if(value == null) {
+ show(name+"="+value);
+ }
+ else {
+ show(name+"="+value.toString());
+ }
+ }
+
+ private String fabricateTargetDirectoryName(String baseDir, String jobId) {
+ StringBuffer sb = new StringBuffer();
+ if(baseDir != null) {
+ sb.append(baseDir);
+ if(!baseDir.endsWith(File.separator)) {
+ sb.append(File.separator);
+ }
+ if(jobId != null) {
+ sb.append(jobId);
+ }
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public String generate(Boolean createUniqueFilename ) throws Exception
+// String directory,
+// String id,
+// Integer dgenThreadCount,
+// String dgenFlowController,
+// String cmDescriptor,
+// List<String> cmOverrides,
+// String aeDescriptor,
+// List<String> aeOverrides,
+// String ccDescriptor,
+// List<String> ccOverrides,
+
+ {
+ String retVal = null;
+ try {
+ show("directory", serviceConfiguration.getJobDirectory());//directory);
+ show("id", serviceConfiguration.getJobId());//id);
+ show("dgenThreadCount", serviceConfiguration.getThreadCount());//dgenThreadCount.toString());
+ show("dgenFlowController", serviceConfiguration.getJpFlowController());//dgenFlowController);
+ show("cmDescriptor", serviceConfiguration.getCmDescriptor());//cmDescriptor);
+ show("cmOverrides", serviceConfiguration.getCmOverrides());//cmOverrides);
+ show("aeDescriptor", serviceConfiguration.getAeDescriptor()); //aeDescriptor);
+ show("aeOverrides", serviceConfiguration.getAeOverrides()); //aeOverrides);
+ show("ccDescriptor", serviceConfiguration.getCcDescriptor());//ccDescriptor);
+ show("ccOverrides", serviceConfiguration.getCcOverrides()); //ccOverrides);
+ show("createUniqueFilename", createUniqueFilename?"true":"false");
+ String targetDirectory =
+ fabricateTargetDirectoryName(serviceConfiguration.getJobDirectory(), serviceConfiguration.getJobId());
+ DeployableGenerator deployableGenerator =
+ new DeployableGenerator(targetDirectory);
+ ArrayList<IDuccGeneratorUimaAggregateComponent> dgenComponents = new ArrayList<IDuccGeneratorUimaAggregateComponent>();
+// conditionalAddComponent(dgenComponents, cmDescriptor, cmOverrides);
+// conditionalAddComponent(dgenComponents, aeDescriptor, aeOverrides);
+// conditionalAddComponent(dgenComponents, ccDescriptor, ccOverrides);
+// DuccUimaAggregate configuration = new DuccUimaAggregate(dgenThreadCount, dgenFlowController, dgenComponents);
+// retVal = deployableGenerator.generateAe(configuration, id, createUniqueFilename);
+
+ List<String> cmOverrides = Utils.tokenizeList(serviceConfiguration.getCmOverrides(), true);
+ List<String> ccOverrides = Utils.tokenizeList(serviceConfiguration.getCcOverrides(), true);
+ List<String> aeOverrides = Utils.tokenizeList(serviceConfiguration.getAeOverrides(), true);
+
+ conditionalAddComponent(dgenComponents, serviceConfiguration.getCmDescriptor(), cmOverrides);
+ conditionalAddComponent(dgenComponents, serviceConfiguration.getAeDescriptor(), aeOverrides);
+ conditionalAddComponent(dgenComponents, serviceConfiguration.getCcDescriptor(), ccOverrides);
+ DuccUimaAggregate configuration =
+ new DuccUimaAggregate(serviceConfiguration, dgenComponents);
+ retVal = deployableGenerator.generateAe(configuration, serviceConfiguration.getJobId(), createUniqueFilename);
+
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ throw new Exception(e.toString());
+ }
+ return retVal;
+ }
+
+ @Override
+ public String generate(
+ String directory,
+ String id,
+ Integer dgenThreadCount,
+ String ddName,
+ Boolean createUniqueFilename
+ ) throws Exception
+ {
+ String retVal = null;
+ try {
+ show("directory", directory);
+ show("id", id);
+ show("dgenThreadCount", dgenThreadCount.toString());
+ show("ddName", ddName);
+ show("createUniqueFilename", createUniqueFilename?"true":"false");
+ String targetDirectory = fabricateTargetDirectoryName(directory, id);
+ DeployableGenerator deployableGenerator = new DeployableGenerator(targetDirectory);
+ DuccUimaReferenceByName configuration = new DuccUimaReferenceByName(dgenThreadCount, ddName);
+ retVal = deployableGenerator.generateDd(configuration, id, createUniqueFilename);
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ throw new Exception(e.toString());
+ }
+ return retVal;
+ }
+}
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGenerator.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGenerator.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGenerator.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DeployableGenerator.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,310 @@
+/*
+ * 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.ps.service.dgen;
+
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.StringWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.uima.UIMAFramework;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaAggregate;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaAggregateComponent;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaReferenceByName;
+import org.apache.uima.ducc.ps.service.processor.uima.UimaAsServiceProcessor;
+import org.apache.uima.ducc.ps.service.utils.UimaUtils;
+import org.apache.uima.util.Level;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+public class DeployableGenerator {
+ private static final String ACCESS_EXTERNAL_STYLESHEET = "http://javax.xml.XMLConstants/property/accessExternalStylesheet";
+ private static final String ACCESS_EXTERNAL_DTD = "http://javax.xml.XMLConstants/property/accessExternalDTD";
+ private static final String DISALLOW_DOCTYPE_DECL = "http://apache.org/xml/features/disallow-doctype-decl";
+ private static final String LOAD_EXTERNAL_DTD = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
+ private String userLogDir = null;
+ private Document doc;
+ private String registryURL;
+
+ public DeployableGenerator(String userLogDir) {
+ setUserLogDir(userLogDir);
+ }
+
+ private void setUserLogDir(String value) {
+ userLogDir = value;
+ }
+
+ public String generateAe(IDuccGeneratorUimaAggregate aggregateConfiguration, String jobId, boolean createUniqueFilename) throws Exception {
+ List<String> descriptorPaths = new ArrayList<String>();
+ List<List<String>> overrides = new ArrayList<List<String>>();
+ for( IDuccGeneratorUimaAggregateComponent component: aggregateConfiguration.getComponents()) {
+ descriptorPaths.add(component.getDescriptor());
+ overrides.add(component.getOverrides());
+ }
+ String aed = createAED(
+ aggregateConfiguration.getFlowController(),
+ aggregateConfiguration.getThreadCount(),
+ userLogDir,
+ createUniqueFilename ? null : jobId+"-"+"uima-ae-descriptor"+".xml",
+ overrides,
+ descriptorPaths.toArray(new String[descriptorPaths.size()])
+ );
+ return aed;
+ }
+
+ private static String createAED (
+ String flowController,
+ int scaleup,
+ String directory,
+ String fname,
+ List<List<String>> overrides,
+ String... aeDescriptors) throws Exception {
+
+ AnalysisEngineDescription aed = UimaUtils.createAggregateDescription(flowController, (scaleup > 1), overrides, aeDescriptors);
+ aed.getMetaData().setName("DUCC.job");
+ File dir = new File(directory);
+ if (!dir.exists()) {
+ dir.mkdir();
+ }
+ FileOutputStream fos = null;
+ try {
+ File file = File.createTempFile("uima-ae-", ".xml", dir);
+ fos = new FileOutputStream(file);
+ aed.toXML(fos);
+ if (fname == null) { // Use the unique name
+ deleteOnExitCheck(file);
+ return file.getAbsolutePath();
+ }
+ // Use the atomic Files.move method (reportedly better than File:renameTo)
+ Path source = file.toPath();
+ Path target = source.resolveSibling(fname);
+ Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
+ return target.toString();
+ }
+ catch(Exception e) {
+ throw e;
+ }
+ finally {
+ if( fos != null ) {
+ fos.close();
+ }
+ }
+ }
+ private void secureDocumentBuilderFactory(DocumentBuilderFactory documentBuilderFactory) {
+ try {
+ documentBuilderFactory.setFeature(DISALLOW_DOCTYPE_DECL, true);
+ } catch (ParserConfigurationException e1) {
+ UIMAFramework.getLogger().log(Level.WARNING,
+ "DocumentBuilderFactory didn't recognize setting feature " + DISALLOW_DOCTYPE_DECL);
+ }
+
+ try {
+ documentBuilderFactory.setFeature(LOAD_EXTERNAL_DTD, false);
+ } catch (ParserConfigurationException e) {
+ UIMAFramework.getLogger().log(Level.WARNING,
+ "DocumentBuilderFactory doesn't support feature " + LOAD_EXTERNAL_DTD);
+ }
+
+ documentBuilderFactory.setXIncludeAware(false);
+ documentBuilderFactory.setExpandEntityReferences(false);
+ }
+ /*
+ * This method is used by the JD to convert a deployment descriptor's inputQueue element
+ * to make it suitable for the JP's internal broker.
+ * It is also used by the JP code since when running as a "pull" service it will be given an unconverted DD
+ */
+ public String generateDd(IDuccGeneratorUimaReferenceByName configuration, String jobId, Boolean createUniqueFilename) throws Exception {
+ // Create DOM from the DD ... file or class-like name
+ String location = configuration.getReferenceByName();
+ org.apache.uima.util.XMLInputSource xmlin = UimaUtils.getXMLInputSource(location); // Reads from FS or classpath
+
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ secureDocumentBuilderFactory(dbFactory);
+ DocumentBuilder db = dbFactory.newDocumentBuilder();
+
+ doc = db.parse(xmlin.getInputStream());
+
+ // Create converted descriptor if input is not a file or if endpoint or broker wrong
+ boolean createDescriptor = ! location.endsWith(".xml");
+
+ // locate the <inputQueue node within the xml ... should be only one
+ NodeList nodes = doc.getElementsByTagName("inputQueue");
+ Element element;
+ if (nodes.getLength() > 0) {
+ element = (Element) nodes.item(0);
+ // Check if the attributes are correct
+ String expected = "${" + UimaAsServiceProcessor.queuePropertyName + "}";
+ if ( ! element.getAttribute("endpoint").equals(expected)) {
+ element.setAttribute("endpoint", expected);
+ createDescriptor = true;
+ }
+ expected = "${" + UimaAsServiceProcessor.brokerPropertyName + "}";
+ if ( ! element.getAttribute("brokerURL").equals(expected)) {
+ element.setAttribute("brokerURL", expected);
+ createDescriptor = true;
+ }
+ // May specify the registry via an unsupported attribute
+ registryURL = element.getAttribute("registryURL"); // Defaults to an empty string
+ element.removeAttribute("registryURL");
+ } else {
+ throw new Exception("Invalid DD-" + configuration.getReferenceByName()
+ + ". Missing required element <inputQueue ...");
+ }
+
+ // Return the original descriptor or the converted one if necessary
+ return createDescriptor ? writeDDFile(xml2String(doc), jobId, createUniqueFilename) : location;
+ }
+
+ /*
+ * Deduce the scaleout for a deployment descriptor.
+ * If a top-level non-AS deployment check for a scaleout setting.
+ * Otherwise use the caspool size, with a default of 1
+ */
+ public int getScaleout() {
+ if (doc == null) { // Not a DD ?
+ return 1;
+ }
+
+ String soValue = "";
+ NodeList nodes = doc.getElementsByTagName("analysisEngine");
+ if (nodes.getLength() > 0) {
+ Element aeElement = (Element) nodes.item(0);
+ String async = aeElement.getAttribute("async");
+ // If async is omitted the default is false if there are no delegates
+ if (async.isEmpty()) {
+ if (aeElement.getElementsByTagName("delegates").getLength() == 0) {
+ async = "false";
+ }
+ }
+ // If async is false a scaleout setting can override the caspool size
+ if (async.equals("false")) {
+ nodes = aeElement.getElementsByTagName("scaleout");
+ if (nodes.getLength() > 0) {
+ Element soElement = (Element) nodes.item(0);
+ soValue = soElement.getAttribute("numberOfInstances");
+ }
+ }
+ }
+
+ if (soValue.isEmpty()) {
+ nodes = doc.getElementsByTagName("casPool");
+ if (nodes.getLength() > 0) {
+ Element cpElement = (Element) nodes.item(0);
+ soValue = cpElement.getAttribute("numberOfCASes");
+ }
+ }
+
+ return soValue.isEmpty() ? 1 : Integer.parseInt(soValue);
+ }
+
+ public String getRegistryUrl() {
+ return registryURL;
+ }
+ private void secureTransformerFactory(TransformerFactory transformerFactory) {
+ try {
+ transformerFactory.setAttribute(ACCESS_EXTERNAL_DTD, "");
+ } catch (IllegalArgumentException e) {
+ UIMAFramework.getLogger().log(Level.WARNING,
+ "TransformerFactory didn't recognize setting attribute " + ACCESS_EXTERNAL_DTD);
+ }
+
+ try {
+ transformerFactory.setAttribute(ACCESS_EXTERNAL_STYLESHEET, "");
+ } catch (IllegalArgumentException e) {
+ UIMAFramework.getLogger().log(Level.WARNING,
+ "TransformerFactory didn't recognize setting attribute " + ACCESS_EXTERNAL_STYLESHEET);
+ }
+
+ }
+ private String xml2String(Document xmlDoc) throws Exception {
+ StringWriter writer = null;
+
+ DOMSource domSource = new DOMSource(xmlDoc.getDocumentElement());
+
+ writer = new StringWriter();
+
+ StreamResult streamResult = new StreamResult(writer);
+
+ TransformerFactory factory = TransformerFactory.newInstance();
+ secureTransformerFactory(factory);
+
+ Transformer transformer = factory.newTransformer();
+ transformer.transform(domSource, streamResult);
+
+ StringBuffer serializedDD = writer.getBuffer();
+ return serializedDD.toString();
+ }
+
+ private String writeDDFile(String content, String jobId, boolean createUniqueFilename) throws Exception {
+ File dir = new File(userLogDir);
+ if ( !dir.exists()) {
+ dir.mkdir();
+ }
+ // compose the file name from a basename (from ducc.properties), constant (-uima-as.dd-) and PID
+ // Create as a temp file then rename atomically (unless the JP wants a unique temporary file)
+ BufferedWriter out = null;
+ try {
+ File file = File.createTempFile("uima-as-dd-", ".xml", dir);
+ out = new BufferedWriter(new FileWriter(file));
+ out.write(content);
+ if (createUniqueFilename) {
+ deleteOnExitCheck(file);
+ return file.getAbsolutePath();
+ }
+ Path source = file.toPath();
+ Path target = source.resolveSibling(jobId+"-uima-as-dd.xml");
+ Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
+ return target.toString();
+ } catch( Exception e) {
+ throw e;
+ } finally {
+ if ( out != null ) {
+ out.close();
+ }
+ }
+ }
+
+ // Don't delete descriptors if this environment variable is set
+ // (Can't put the key in IDuccUser as that is in the common project)
+ private static void deleteOnExitCheck(File f) {
+ if (System.getenv("DUCC_KEEP_TEMPORARY_DESCRIPTORS") == null) {
+ f.deleteOnExit();
+ }
+ }
+ }
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregate.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregate.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregate.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregate.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,79 @@
+/*
+ * 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.ps.service.dgen;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.ducc.ps.service.ServiceConfiguration;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaAggregate;
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaAggregateComponent;
+
+public class DuccUimaAggregate implements IDuccGeneratorUimaAggregate {
+
+ /**
+ * please increment this sUID when removing or modifying a field
+ */
+ private static final long serialVersionUID = 1L;
+
+ private List<IDuccGeneratorUimaAggregateComponent> components = new ArrayList<IDuccGeneratorUimaAggregateComponent>();
+
+ private int threadCount = 1;
+ private String flowController;
+
+ public DuccUimaAggregate(ServiceConfiguration serviceConfiguration, List<IDuccGeneratorUimaAggregateComponent> components) {
+ if ( serviceConfiguration.getThreadCount() == null || serviceConfiguration.getThreadCount().trim().isEmpty()) {
+ setThreadCount(1);
+ } else {
+ setThreadCount(Integer.valueOf(serviceConfiguration.getThreadCount()));
+ }
+ setFlowController(serviceConfiguration.getJpFlowController());
+ setComponents(components);
+ }
+
+
+ public List<IDuccGeneratorUimaAggregateComponent> getComponents() {
+ return components;
+ }
+
+
+ public void setComponents(List<IDuccGeneratorUimaAggregateComponent> components) {
+ this.components = components;
+ }
+
+ public int getThreadCount() {
+ return threadCount;
+ }
+
+
+ public void setThreadCount(int threadCount) {
+ this.threadCount = threadCount;
+ }
+
+ public String getFlowController() {
+ return flowController;
+ }
+
+
+ public void setFlowController(String flowController) {
+ this.flowController = flowController;
+ }
+}
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregateComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregateComponent.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregateComponent.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaAggregateComponent.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,60 @@
+/*
+ * 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.ps.service.dgen;
+
+
+import java.util.List;
+
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaAggregateComponent;
+
+public class DuccUimaAggregateComponent implements IDuccGeneratorUimaAggregateComponent {
+
+ /**
+ * please increment this sUID when removing or modifying a field
+ */
+ private static final long serialVersionUID = 1L;
+ private String descriptor;
+ private List<String> overrides;
+
+ public DuccUimaAggregateComponent(String descriptor, List<String> overrides) {
+ setDescriptor(descriptor);
+ setOverrides(overrides);
+ }
+
+
+ public String getDescriptor() {
+ return this.descriptor;
+ }
+
+
+ public void setDescriptor(String descriptor) {
+ this.descriptor = descriptor;
+ }
+
+
+ public List<String> getOverrides() {
+ return this.overrides;
+ }
+
+
+ public void setOverrides(List<String> overrides) {
+ this.overrides = overrides;
+ }
+
+}
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaReferenceByName.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaReferenceByName.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaReferenceByName.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/DuccUimaReferenceByName.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,58 @@
+/*
+ * 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.ps.service.dgen;
+
+
+import org.apache.uima.ducc.ps.service.dgen.iface.IDuccGeneratorUimaReferenceByName;
+
+public class DuccUimaReferenceByName implements IDuccGeneratorUimaReferenceByName {
+
+ /**
+ * please increment this sUID when removing or modifying a field
+ */
+ private static final long serialVersionUID = 1L;
+
+ private String referenceByName;
+
+ private int threadCount = 1;
+
+ public DuccUimaReferenceByName(int threadCount,String ddName) {
+ setThreadCount(threadCount);
+ setReferenceByName(ddName);
+ }
+
+ public String getReferenceByName() {
+ return referenceByName;
+ }
+
+ public void setReferenceByName(String referenceByName) {
+ this.referenceByName = referenceByName;
+ }
+
+ public int getThreadCount() {
+ return threadCount;
+ }
+
+
+ public void setThreadCount(int threadCount) {
+ this.threadCount = threadCount;
+ }
+
+}
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/InvalidOverrideParameterException.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/InvalidOverrideParameterException.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/InvalidOverrideParameterException.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/InvalidOverrideParameterException.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,32 @@
+/*
+ * 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.ps.service.dgen;
+
+public class InvalidOverrideParameterException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4948849140814646049L;
+
+ public InvalidOverrideParameterException(String msg) {
+ super(msg);
+ }
+}
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDeployableGeneration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDeployableGeneration.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDeployableGeneration.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDeployableGeneration.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,33 @@
+/*
+ * 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.ps.service.dgen.iface;
+
+public interface IDeployableGeneration {
+
+ public String generate(Boolean createUniqueFilename ) throws Exception;
+
+ public String generate(
+ String directory,
+ String id,
+ Integer dgenThreadCount,
+ String ddName,
+ Boolean createUniqueFilename
+ ) throws Exception;
+}
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregate.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregate.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregate.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregate.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,35 @@
+/*
+ * 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.ps.service.dgen.iface;
+
+
+import java.util.List;
+
+public interface IDuccGeneratorUimaAggregate extends IDuccGeneratorUimaDeployableConfiguration {
+
+ public List<IDuccGeneratorUimaAggregateComponent> getComponents();
+ public void setComponents(List<IDuccGeneratorUimaAggregateComponent> components);
+
+ public int getThreadCount();
+ public void setThreadCount(int threadCount);
+
+ public String getFlowController();
+ public void setFlowController(String flowController);
+}
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregateComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregateComponent.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregateComponent.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaAggregateComponent.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,33 @@
+/*
+ * 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.ps.service.dgen.iface;
+
+
+import java.io.Serializable;
+import java.util.List;
+
+public interface IDuccGeneratorUimaAggregateComponent extends Serializable {
+
+ public String getDescriptor();
+ public void setDescriptor(String descriptor);
+
+ public List<String> getOverrides();
+ public void setOverrides(List<String> overrides);
+}
\ No newline at end of file
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaDeployableConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaDeployableConfiguration.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaDeployableConfiguration.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaDeployableConfiguration.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,25 @@
+/*
+ * 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.ps.service.dgen.iface;
+
+import java.io.Serializable;
+
+public interface IDuccGeneratorUimaDeployableConfiguration extends Serializable {
+}
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaReferenceByName.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaReferenceByName.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaReferenceByName.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/dgen/iface/IDuccGeneratorUimaReferenceByName.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,30 @@
+/*
+ * 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.ps.service.dgen.iface;
+
+public interface IDuccGeneratorUimaReferenceByName extends IDuccGeneratorUimaDeployableConfiguration {
+
+ public String getReferenceByName();
+ public void setReferenceByName(String referenceByName);
+
+ public int getThreadCount();
+ public void setThreadCount(int threadCount);
+
+}
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/ServiceWrapper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/ServiceWrapper.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/ServiceWrapper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/ServiceWrapper.java Tue Jul 17 13:49:47 2018
@@ -18,18 +18,22 @@
*/
package org.apache.uima.ducc.ps.service.main;
+
import java.io.IOException;
import java.lang.reflect.Constructor;
+import java.util.Objects;
import java.util.concurrent.ExecutionException;
import org.apache.uima.UIMAFramework;
import org.apache.uima.ducc.ps.service.IService;
import org.apache.uima.ducc.ps.service.ServiceConfiguration;
import org.apache.uima.ducc.ps.service.builders.PullServiceStepBuilder;
+import org.apache.uima.ducc.ps.service.dgen.DeployableGeneration;
import org.apache.uima.ducc.ps.service.errors.ServiceException;
import org.apache.uima.ducc.ps.service.errors.ServiceInitializationException;
import org.apache.uima.ducc.ps.service.jmx.JMXAgent;
import org.apache.uima.ducc.ps.service.processor.IServiceProcessor;
+import org.apache.uima.ducc.ps.service.processor.uima.UimaAsServiceProcessor;
import org.apache.uima.ducc.ps.service.processor.uima.UimaServiceProcessor;
import org.apache.uima.ducc.ps.service.registry.IRegistryClient;
import org.apache.uima.util.Level;
@@ -43,7 +47,7 @@ public class ServiceWrapper {
new ServiceConfiguration();
// jmx agent to configure rmi registry so that jconsole clients can connect
private JMXAgent jmxAgent;
-
+
private void addShutdownHook() {
ServiceShutdownHook shutdownHook = new ServiceShutdownHook(this, logger);
Runtime.getRuntime().addShutdownHook(shutdownHook);
@@ -54,15 +58,19 @@ public class ServiceWrapper {
return jmxAgent.start(rmiRegistryPort);
}
+
/**
- * Creates instance of IServiceProcessor. By default it creates built-in UimaServiceProcessor
- * but a custom processor is also supported via -Dducc.deploy.custom.processor.class=XX
+ * Creates instance of IServiceProcessor. It checks -Dducc.deploy.JpType to determine which
+ * service type is being deployed. For 'uima' type, the method instantiates and returns
+ * UimaServiceProcessor and for 'uima-as' it returns UimaAsServiceProcessor. If none of
+ * the above is specified and -Dducc.deploy.custom.processor.class=XX is defined, the code
+ * instatiates user provided ServiceProcessor.
*
* @param analysisEngineDescriptorPath path to the AE descriptor
* @return IServiceProcessor instance
* @throws ServiceInitializationException
*/
- private IServiceProcessor createProcessor(String analysisEngineDescriptorPath)
+ private IServiceProcessor createProcessor(String analysisEngineDescriptorPath, String[] args)
throws ServiceInitializationException{
if ( serviceConfiguration.getCustomProcessorClass() != null ) {
try {
@@ -77,27 +85,79 @@ public class ServiceWrapper {
throw new ServiceInitializationException("Unable to instantiate Custom Processor from class:"+serviceConfiguration.getCustomProcessorClass());
}
} else {
- return new UimaServiceProcessor(analysisEngineDescriptorPath, serviceConfiguration);
- }
+ if ( "uima".equals(serviceConfiguration.getJpType() ) ){
+ return new UimaServiceProcessor(analysisEngineDescriptorPath, serviceConfiguration);
+ } else if ( "uima-as".equals(serviceConfiguration.getJpType()) ) {
+ return new UimaAsServiceProcessor(args, serviceConfiguration);
+ } else {
+ throw new RuntimeException("Invalid deployment. Set either -Dducc.deploy.JpType=[uima,uima-as] or provide -Dducc.deploy.custom.processor.class=XX where XX implements IServiceProcessor ");
+ }
+ }
+ }
+ /**
+ * Check if AE descriptor is provided or we need to create it from parts
+ *
+ * @param serviceConfiguration
+ * @return
+ */
+ private boolean isPiecesParts(ServiceConfiguration serviceConfiguration ) {
+ return ( "uima".equals(serviceConfiguration.getJpType()) && serviceConfiguration.getAnalysisEngineDescriptorPath() == null);
}
- public void initialize(String[] args) throws ServiceInitializationException, ServiceException {
+ public void initialize(String[] args ) throws ServiceInitializationException, ServiceException {
// collect -Ds and env vars
serviceConfiguration.collectProperties(args);
serviceConfiguration.validateProperties();
addShutdownHook();
// validateProperties() call above checked if a user provided AE descriptor path
- String analysisEngineDescriptorPath =
- serviceConfiguration.getAnalysisEngineDescriptorPath();
+ String analysisEngineDescriptorPath;
// create JMX agent
String serviceJmxConnectString = startJmxAgent();
serviceConfiguration.setServiceJmxConnectURL(serviceJmxConnectString);
+ IServiceProcessor processor;
+ if ( isPiecesParts(serviceConfiguration)) {
+ DeployableGeneration dg = new DeployableGeneration(serviceConfiguration);
+ try {
+ analysisEngineDescriptorPath = dg.generate(true);
+ logger.log(Level.INFO, "Deploying UIMA based service using generated (pieces-parts) AE descriptor "+analysisEngineDescriptorPath);
+ } catch( Exception e) {
+ throw new ServiceException("Unable to generate AE descriptor from parts");
+ }
+ } else {
+ analysisEngineDescriptorPath = serviceConfiguration.getAnalysisEngineDescriptorPath();
+ if ( analysisEngineDescriptorPath != null ) {
+ logger.log(Level.INFO, "Deploying UIMA based service using provided descriptor "+analysisEngineDescriptorPath);
+ }
+ }
+ processor = createProcessor(analysisEngineDescriptorPath, args);
+
+ Objects.requireNonNull(processor, "Unable to instantiate IServiceProcessor");
- IServiceProcessor processor =
- createProcessor(analysisEngineDescriptorPath);
- IRegistryClient registryClient= null;
+ if ( serviceConfiguration.getCustomRegistryClass() != null ) {
+ service = PullServiceStepBuilder.newBuilder()
+ .withProcessor(processor)
+ .withRegistry(getRegistryClient())
+ .withType(serviceConfiguration.getServiceType())
+ .withScaleout(Integer.valueOf(serviceConfiguration.getThreadCount()))
+ .withOptionalsDone().build();
+
+ } else {
+ service = PullServiceStepBuilder.newBuilder()
+ .withProcessor(processor)
+ .withClientURL(serviceConfiguration.getClientURL())
+ .withType(serviceConfiguration.getServiceType())
+ .withScaleout(Integer.valueOf(serviceConfiguration.getThreadCount()))
+ .withOptionalsDone().build();
+
+ }
+
+ service.initialize();
+
+ }
+ private IRegistryClient getRegistryClient() throws ServiceInitializationException {
+ IRegistryClient registryClient= null;
if ( serviceConfiguration.getCustomRegistryClass() != null ) {
try {
Class<?> clz = Class.forName(serviceConfiguration.getCustomRegistryClass()) ;
@@ -117,30 +177,10 @@ public class ServiceWrapper {
} catch( Exception e) {
logger.log(Level.WARNING,"",e);
throw new ServiceInitializationException("Unable to instantiate Custom Registry Client from class:"+serviceConfiguration.getCustomRegistryClass());
-
}
- service = PullServiceStepBuilder.newBuilder()
- .withProcessor(processor)
- .withRegistry(registryClient)
- .withType(serviceConfiguration.getServiceType())
- .withScaleout(Integer.valueOf(serviceConfiguration.getThreadCount()))
- .withOptionalsDone().build();
-
- } else {
- service = PullServiceStepBuilder.newBuilder()
- .withProcessor(processor)
- .withClientURL(serviceConfiguration.getClientURL())
- .withType(serviceConfiguration.getServiceType())
- .withScaleout(Integer.valueOf(serviceConfiguration.getThreadCount()))
- .withOptionalsDone().build();
-
}
-
-
- service.initialize();
-
+ return registryClient;
}
-
public void start() throws ServiceException, ExecutionException {
service.start();
}
@@ -156,14 +196,16 @@ public class ServiceWrapper {
}
public static void main(String[] args) {
- ServiceWrapper wrapper = new ServiceWrapper();
+ ServiceWrapper wrapper = null;
try {
-
+ wrapper = new ServiceWrapper();
wrapper.initialize(args);
wrapper.start();
} catch( Exception e) {
UIMAFramework.getLogger().log(Level.WARNING, "", e);
- wrapper.stop();
+ if ( wrapper != null ) {
+ wrapper.stop();
+ }
}
}
static class ServiceShutdownHook extends Thread {
@@ -174,7 +216,7 @@ public class ServiceWrapper {
this.serviceWrapper = serviceWrapper;
this.logger = logger;
}
-
+ @Override
public void run() {
try {
logger.log(Level.INFO, "Pull Service Caught SIGTERM Signal - Stopping ...");
@@ -187,3 +229,4 @@ public class ServiceWrapper {
}
}
}
+
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/monitor/builtin/RemoteStateObserver.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/monitor/builtin/RemoteStateObserver.java?rev=1836115&r1=1836114&r2=1836115&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/monitor/builtin/RemoteStateObserver.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/monitor/builtin/RemoteStateObserver.java Tue Jul 17 13:49:47 2018
@@ -76,7 +76,6 @@ public class RemoteStateObserver impleme
if ( socket == null ) {
return;
}
- //String serviceData = "";
if ( additionalData == null ) {
additionalData = new Properties();
}
@@ -84,7 +83,6 @@ public class RemoteStateObserver impleme
!serviceConfiguration.getAssignedJmxPort().trim().isEmpty()) {
additionalData.setProperty(SERVICE_JMS_PORT, serviceConfiguration.getAssignedJmxPort().trim());
}
- //serviceData = XStreamUtils.marshall(additionalData);
// Agent needs process unique ID to identify it within inventory.
// The unique id was added as an env var by an agent before this
// process was launched.
@@ -94,15 +92,9 @@ public class RemoteStateObserver impleme
.append(SEPARATOR)
.append(SERVICE_STATE)
.append(state);
-// .append(SEPARATOR)
-// .append(SERVICE_DATA)
-// .append(serviceData);
out = new DataOutputStream(socket.getOutputStream());
out.writeUTF(sb.toString());
out.flush();
-// if (logger.isLoggable(Level.FINE)) {
-// logger.log(Level.FINE, "Sent new State:" + state);
-// }
} catch (Exception e) {
} finally {
Added: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java?rev=1836115&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java Tue Jul 17 13:49:47 2018
@@ -0,0 +1,46 @@
+/*
+ * 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.ps.service.processor.uima;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.uima.ducc.ps.service.utils.UimaSerializer;
+import org.apache.uima.util.Level;
+import org.apache.uima.util.Logger;
+
+public class AbstractServiceProcessor {
+ // Map to store DuccUimaSerializer instances. Each has affinity to a thread
+ protected Map<Long, UimaSerializer> serializerMap = new HashMap<>();
+
+ protected void delay(Logger logger, long howLong) {
+ logger.log(Level.INFO, "Wait for the initialized state to propagate to the SM " +
+ "so any processing errors are not treates as initialization failures");
+ try {
+ Thread.sleep(30000);
+ } catch (InterruptedException e1) {
+ }
+
+ }
+ protected UimaSerializer getUimaSerializer() {
+
+ return serializerMap.get(Thread.currentThread().getId());
+ }
+
+}