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/11/29 17:23:09 UTC
svn commit: r1847732 [3/16] - in
/uima/uima-as/branches/uima-as-3/uimaj-as-core: ./ .settings/
src/main/java/org/apache/uima/aae/client/
src/main/java/org/apache/uima/aae/component/
src/main/java/org/apache/uima/aae/controller/ src/main/java/org/apache...
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/AsynchronousUimaASService.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/AsynchronousUimaASService.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/AsynchronousUimaASService.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/AsynchronousUimaASService.java Thu Nov 29 17:23:00 2018
@@ -19,6 +19,9 @@
package org.apache.uima.aae.service;
import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
@@ -26,11 +29,20 @@ import java.util.concurrent.LinkedBlocki
import org.apache.uima.aae.InProcessCache;
import org.apache.uima.aae.InProcessCache.CacheEntry;
import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.definition.connectors.Endpoints;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.MessageProcessor;
+import org.apache.uima.aae.message.Origin;
+import org.apache.uima.aae.message.Target;
+import org.apache.uima.aae.message.UimaAsOrigin;
+import org.apache.uima.aae.service.command.UimaAsMessageProcessor;
import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
import org.apache.uima.as.client.DirectMessage;
-import org.apache.uima.as.client.DirectMessageContext;
import org.apache.uima.cas.CAS;
import org.apache.uima.resource.ResourceSpecifier;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@@ -50,16 +62,20 @@ implements UimaASService {
private BlockingQueue<DirectMessage> replyQueue =
new LinkedBlockingQueue<>();
private String tlc_bean_name;
+ private UimaAsEndpoint directEndpoint;
+ private boolean initialized = false;
private AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext();
private String endpoint;
- public AsynchronousUimaASService(String endpoint) {
- this.endpoint = endpoint;
+ public AsynchronousUimaASService(String name) {
+ endpoint = super.name = name;
+ }
+ public AsynchronousUimaASService(UimaAsEndpoint endpoint) {
+ super(endpoint);
}
-
public void setTopLevelControlleBeanName(String beanName) {
tlc_bean_name = beanName;
}
@@ -129,7 +145,7 @@ implements UimaASService {
inProcessCache.remove(casReferenceId);
System.out.println("AsynchronousUimaASService.removeFromCache()-cache size:"+inProcessCache.getSize());
}
- private CacheEntry add2Cache( CAS cas, MessageContext messageContext, String casReferenceId ) throws Exception {
+ public CacheEntry add2Cache( CAS cas, MessageContext messageContext, String casReferenceId ) throws Exception {
return inProcessCache.register(cas, messageContext, casReferenceId);
}
public String getId() {
@@ -163,9 +179,63 @@ implements UimaASService {
public CAS getCAS() throws Exception {
return null;
}
+ private String getServiceUri(ConsumerType consumerType) {
+ return new StringBuilder(EndpointType.Direct.getName()).append(controller.getComponentName()).append(":").append(consumerType.name()).toString();
+ }
+ public void connect(UimaAsEndpoint clientEndpoint) throws Exception {
+ UimaAsEndpoint serviceEndpoint =
+ getDirectEndpoint();
+ Map<Target, UimaAsConsumer> serviceConsumers =
+ serviceEndpoint.getConsumers();
+
+// Origin clientOrigin = new UimaAsOrigin(EndpointType.Direct.getName()+"Client");
+ // Origin serviceOrigin = new UimaAsOrigin(controller.getComponentName(), EndpointType.Direct);
+ for( Entry<Target, UimaAsConsumer> serviceConsumer : serviceConsumers.entrySet() ) {
+ ConsumerType consumerType = serviceConsumer.getValue().getType();
+ // StringBuilder sb = new StringBuilder(EndpointType.Direct.getName()).
+ // append(clientOrigin.getName());
+ switch(consumerType) {
+ case GetMetaRequest:
+ // creates client producer for the service consumer and links the two
+ clientEndpoint.createProducer(serviceConsumer.getValue(), controller.getComponentName()); //getServiceUri(consumerType));
+ // creates client consumer for GetMeta replies
+ UimaAsConsumer clientGetMetaResponseConsumer
+ = clientEndpoint.createConsumer( ConsumerType.GetMetaResponse, 1);
+ // sb.append(":").append(ConsumerType.GetMetaResponse.name());
+ serviceEndpoint.createProducer(clientGetMetaResponseConsumer, "Client");
+ break;
+ case ProcessCASRequest:
+ clientEndpoint.createProducer(serviceConsumer.getValue(), controller.getComponentName()); //getServiceUri(consumerType));
+ UimaAsConsumer clientProcessCASResponseConsumer
+ = clientEndpoint.createConsumer( ConsumerType.ProcessCASResponse, 1);
+ // sb.append(":").append(ConsumerType.ProcessCASResponse.name());
+ serviceEndpoint.createProducer(clientProcessCASResponseConsumer, "Client");
+
+ break;
+ case CpcRequest:
+ clientEndpoint.createProducer(serviceConsumer.getValue(), controller.getComponentName()); //getServiceUri(consumerType));
+ UimaAsConsumer clientCpcResponseConsumer
+ = clientEndpoint.createConsumer( ConsumerType.CpcResponse, 1);
+ // sb.append(":").append(ConsumerType.CpcResponse.name());
+ serviceEndpoint.createProducer(clientCpcResponseConsumer, "Client");
+
+ break;
+
+ case FreeCASRequest:
+ clientEndpoint.createProducer(serviceConsumer.getValue(), controller.getComponentName()); //getServiceUri(consumerType));
+
+ break;
+
+ default:
+
+ }
+ }
+ }
public void process(CAS cas, String casReferenceId) throws Exception {
+ /*
+ * 10/19/19 JC replace with new methodology
DirectMessage processMessage =
new DirectMessage().
withCommand(AsynchAEMessage.Process).
@@ -177,12 +247,29 @@ implements UimaASService {
DirectMessageContext messageContext =
new DirectMessageContext(processMessage, CLIENT,"");
- add2Cache(cas, messageContext, casReferenceId);
+ */
- processRequestQueue.add(processMessage);
- }
+
+ UimaAsEndpoint serviceEndpoint = super.getDirectEndpoint();
+ MessageContext processMessage =
+ serviceEndpoint.newMessageBuilder()
+ .newProcessCASRequestMessage(new UimaAsOrigin(CLIENT, EndpointType.Direct))
+ .withCasReferenceId(casReferenceId)
+ .withPayload(AsynchAEMessage.CASRefID)
+ .build();
+
+ add2Cache(cas, processMessage, casReferenceId);
+
+ super.getDirectEndpoint().dispatch(processMessage, "direct:service");
+
+
+// processRequestQueue.add((DirectMessage)processMessage.getRawMessage());
+}
public void sendGetMetaRequest() throws Exception {
+ /*
+ *
+
DirectMessage getMetaMessage =
new DirectMessage().
withCommand(AsynchAEMessage.GetMeta).
@@ -190,10 +277,18 @@ implements UimaASService {
withOrigin(CLIENT).
withPayload(AsynchAEMessage.None).
withReplyQueue(replyQueue);
-
- getMetaRequestQueue.add(getMetaMessage);
+ */
+ UimaAsEndpoint serviceEndpoint = super.getDirectEndpoint();
+ MessageContext getMetaMessage =
+ serviceEndpoint.newMessageBuilder().
+ newGetMetaRequestMessage(new UimaAsOrigin(CLIENT, EndpointType.Direct))
+ .withPayload(AsynchAEMessage.None)
+ .build();
+ serviceEndpoint.dispatch(getMetaMessage,"direct:service");
+ //getMetaRequestQueue.add((DirectMessage)getMetaMessage.getRawMessage());
}
public void collectionProcessComplete() throws Exception {
+ /*
DirectMessage cpcMessage =
new DirectMessage().
withCommand(AsynchAEMessage.CollectionProcessComplete).
@@ -201,10 +296,19 @@ implements UimaASService {
withOrigin(CLIENT).
withPayload(AsynchAEMessage.None).
withReplyQueue(replyQueue);
-
- processRequestQueue.add(cpcMessage);
+ */
+ UimaAsEndpoint directEndpoint = super.getDirectEndpoint();
+ MessageContext cpcMessage =
+ directEndpoint.newMessageBuilder().
+ newCpCRequestMessage(new UimaAsOrigin(CLIENT, EndpointType.Direct))
+ .withPayload(AsynchAEMessage.None)
+ .build();
+
+ super.getDirectEndpoint().dispatch(cpcMessage,"direct:service");
+ //processRequestQueue.add((DirectMessage)cpcMessage.getRawMessage());
}
public void releaseCAS(String casReferenceId, BlockingQueue<DirectMessage> releaseCASQueue ) throws Exception {
+ /*
DirectMessage getMetaMessage =
new DirectMessage().
withCommand(AsynchAEMessage.ReleaseCAS).
@@ -213,11 +317,26 @@ implements UimaASService {
withCasReferenceId(casReferenceId).
withOrigin(CLIENT).
withPayload(AsynchAEMessage.None);
+ */
+ UimaAsEndpoint directEndpoint = super.getDirectEndpoint();
+ MessageContext freeCasMessage =
+ directEndpoint.newMessageBuilder().
+ newReleaseCASRequestMessage(new UimaAsOrigin(CLIENT, EndpointType.Direct))
+ .withPayload(AsynchAEMessage.CASRefID)
+ .withCasReferenceId(casReferenceId)
+ .build();
+ UimaAsEndpoint serviceEndpoint =
+ controller.getEndpoint(EndpointType.Direct);
+ Map<Target, UimaAsConsumer> serviceConsumers =
+ serviceEndpoint.getConsumers();
+
- releaseCASQueue.add(getMetaMessage);
+ super.getDirectEndpoint().dispatch(freeCasMessage,"direct:service");
+ //releaseCASQueue.add((DirectMessage)freeCasMessage.getRawMessage());
}
public AnalysisEngineMetaData getMetaData() throws Exception {
+ /*
DirectMessage getMetaMessage =
new DirectMessage().
withCommand(AsynchAEMessage.GetMeta).
@@ -226,14 +345,24 @@ implements UimaASService {
withReplyQueue(replyQueue).
withPayload(AsynchAEMessage.None);
+ */
+ UimaAsEndpoint directEndpoint = super.getDirectEndpoint();
+ MessageContext getMetaMessage =
+ directEndpoint.newMessageBuilder().
+ newGetMetaRequestMessage(new UimaAsOrigin(CLIENT, EndpointType.Direct))
+ .withPayload(AsynchAEMessage.None)
+ .build();
return getMetaData(getMetaMessage);
+// getMetaRequestQueue.add((DirectMessage)getMetaMessage.getRawMessage());
+// return getMetaData((DirectMessage)getMetaMessage.getRawMessage());
}
- public AnalysisEngineMetaData getMetaData(DirectMessage getMetaMessage) throws InterruptedException {
+ ///public AnalysisEngineMetaData getMetaData(DirectMessage getMetaMessage) throws InterruptedException {
+ public AnalysisEngineMetaData getMetaData(MessageContext getMetaMessage) throws Exception {
// getMetaMessage.put(AsynchAEMessage.Endpoint, replyQueue);
- getMetaRequestQueue.add(getMetaMessage);
-
+ //getMetaRequestQueue.add(getMetaMessage);
+ super.getDirectEndpoint().dispatch(getMetaMessage,"direct:service");
DirectMessage dm = replyQueue.take();
return (AnalysisEngineMetaData)dm.get(AsynchAEMessage.AEMetadata);
}
@@ -241,7 +370,156 @@ implements UimaASService {
controller.quiesceAndStop();
context.destroy();
}
+/*
+ private void parentDelegateConsumers(UimaAsEndpoint delegateDirectEndpoint,UimaAsEndpoint parentDirectEndpoint, ConsumerType type, int scaleout ) throws Exception {
+ UimaAsConsumer consumer =
+ delegateDirectEndpoint.createConsumer("direct:Client", type, scaleout);
+ parentDirectEndpoint.createProducer(consumer, new UimaAsOrigin("direct:"+EndpointType.Direct));
+
+ }
+ */
+
+
+ /**
+ * This is called for aggregates with asynch delegates
+ */
+ @Override
+ public void initialize(MessageProcessor messageProcessor, AnalysisEngineController parentController) throws Exception {
+ boolean addEndpoint=false;
+ if ( !controller.isPrimitive() ) {
+ System.out.println(".......... Aggregate:"+controller.getComponentName());
+ }
+ // create service producers for this client consumers
+ UimaAsEndpoint parentServiceEndpoint =
+ parentController.getEndpoint(EndpointType.Direct);
+ UimaAsEndpoint delegateDirectEndpoint;
+ if ( ( delegateDirectEndpoint = controller.getEndpoint(EndpointType.Direct) ) == null ){
+ delegateDirectEndpoint = Endpoints.newEndpoint(EndpointType.Direct, getName(), messageProcessor);
+ addEndpoint = true;
+ }
+// directEndpoint = new DirectUimaAsEndpoint(messageProcessor, "Service");
+ String did = getName();
+ UimaAsConsumer clientGetMetaRequestConsumer =
+ delegateDirectEndpoint.createConsumer( ConsumerType.GetMetaRequest, 1);
+ UimaAsConsumer clientProcessRequestConsumer =
+ delegateDirectEndpoint.createConsumer( ConsumerType.ProcessCASRequest, 4);
+ UimaAsConsumer clientCpcRequestConsumer =
+ delegateDirectEndpoint.createConsumer( ConsumerType.CpcRequest, 1);
+ // CPC request must be processed on Process CAS thread since this
+ // request calls AE.collectionProcessComplete and AS instances are
+ // pinned to Process CAS threads
+ clientCpcRequestConsumer.delegateTo(clientProcessRequestConsumer);
+ if ( addEndpoint ) {
+ controller.addEndpoint(delegateDirectEndpoint);
+ }
+
+ parentServiceEndpoint.createProducer(clientGetMetaRequestConsumer, did);
+ parentServiceEndpoint.createProducer(clientProcessRequestConsumer, did);
+ parentServiceEndpoint.createProducer(clientCpcRequestConsumer, did);
+
+ // String sid = new StringBuilder("direct:").append(parentController.getKey()).toString();
+ UimaAsConsumer parentGetMetaResponseConsumer =
+ parentServiceEndpoint.createConsumer(ConsumerType.GetMetaResponse, 1);
+ UimaAsConsumer parentProcessCASResponseConsumer =
+ parentServiceEndpoint.createConsumer(ConsumerType.ProcessCASResponse, 1);
+ UimaAsConsumer parentCpcResponseConsumer =
+ parentServiceEndpoint.createConsumer(ConsumerType.CpcResponse, 1);
+
+ String pid = parentController.getKey(); // default
+ if ( parentController.isTopLevelComponent() ) {
+ pid = parentController.getComponentName();
+ }
+ delegateDirectEndpoint.createProducer(parentGetMetaResponseConsumer, pid);
+ delegateDirectEndpoint.createProducer(parentProcessCASResponseConsumer, pid);
+ delegateDirectEndpoint.createProducer(parentCpcResponseConsumer, pid);
+
+ if ( controller.isCasMultiplier() ) {
+ UimaAsConsumer delegateFreeCasRequestConsumer =
+ delegateDirectEndpoint.createConsumer(ConsumerType.FreeCASRequest, 1);
+ parentServiceEndpoint.createProducer(delegateFreeCasRequestConsumer, parentController.getComponentName());
+ UimaAsConsumer parentProcessCASRequestConsumer =
+ parentServiceEndpoint.createConsumer(ConsumerType.ProcessCASRequest, 1);
+
+ delegateDirectEndpoint.createProducer(parentProcessCASRequestConsumer, parentController.getComponentName());
+ }
+ initialized = true;
+ }
+ /**
+ * This is used for top level service
+ */
+ @Override
+ public void initialize(MessageProcessor messageProcessor) throws Exception {
+ // create service producers for this client consumers
+ UimaAsEndpoint serviceEndpoint =
+ controller.getEndpoint(EndpointType.Direct);
+ if ( Objects.isNull(serviceEndpoint) ) {
+ serviceEndpoint = Endpoints.newEndpoint(EndpointType.Direct, controller.getComponentName(), new UimaAsMessageProcessor(controller));
+ //controller.addEndpoint(serviceEndpoint);
+ }
+ serviceEndpoint.createConsumer( ConsumerType.GetMetaRequest, 1);
+ UimaAsConsumer processConsumer =
+ serviceEndpoint.createConsumer( ConsumerType.ProcessCASRequest, 1);
+ UimaAsConsumer cpcConsumer =
+ serviceEndpoint.createConsumer( ConsumerType.CpcRequest, 1);
+ // CPC request should be handled by process consumer. Each AE instance is pinned to
+ // initialize thread and only process consumer guarantees this. So the CPC consumer
+ // delegates all requests to process consumer.
+ cpcConsumer.delegateTo(processConsumer);
+
+ if ( controller.isCasMultiplier() ) {
+ serviceEndpoint.createConsumer( ConsumerType.FreeCASRequest, 1);
+ }
+
+
+ /*
+ if ( directEndpoint == null ) {
+ directEndpoint = Endpoints.newEndpoint(EndpointType.Direct,"Service",messageProcessor);
+ }
+ // directEndpoint = new DirectUimaAsEndpoint(messageProcessor, "Service");
+ UimaAsConsumer clientGetMetaResponseConsumer =
+ directEndpoint.createConsumer("direct:"+controller.getComponentName(), ConsumerType.GetMetaResponse, 1);
+ UimaAsConsumer clientProcessResponseConsumer =
+ directEndpoint.createConsumer("direct:"+controller.getComponentName(), ConsumerType.ProcessCASResponse, 4);
+ UimaAsConsumer clientCpcResponseConsumer =
+ directEndpoint.createConsumer("direct:"+controller.getComponentName(), ConsumerType.CpcResponse, 1);
+
+ // create service producers for this client consumers
+ UimaAsEndpoint serviceEndpoint =
+ controller.getEndpoint(EndpointType.Direct);
+ if ( Objects.isNull(serviceEndpoint) ) {
+ serviceEndpoint = Endpoints.newEndpoint(EndpointType.Direct, controller.getComponentName(), new UimaAsMessageProcessor(controller));
+ //controller.addEndpoint(serviceEndpoint);
+ }
+ Origin origin =
+ new UimaAsOrigin("direct:"+controller.getComponentName());
+ serviceEndpoint.createProducer(clientGetMetaResponseConsumer, "direct:"+controller.getComponentName());
+ serviceEndpoint.createProducer(clientProcessResponseConsumer, "direct:"+controller.getComponentName());
+ serviceEndpoint.createProducer(clientCpcResponseConsumer, "direct:"+controller.getComponentName());
+
+ UimaAsConsumer c1 =
+ serviceEndpoint.createConsumer("direct:"+controller.getComponentName()+":"+ConsumerType.GetMetaRequest.name(), ConsumerType.GetMetaRequest, 1);
+ UimaAsConsumer c2 =
+ serviceEndpoint.createConsumer("direct:"+controller.getComponentName()+":"+ConsumerType.ProcessCASRequest.name(), ConsumerType.ProcessCASRequest, 1);
+ UimaAsConsumer c3 =
+ serviceEndpoint.createConsumer("direct:"+controller.getComponentName()+":"+ConsumerType.CpcRequest.name(), ConsumerType.CpcRequest, 1);
+
+ Origin clientOrigin = new UimaAsOrigin("direct:Client");
+ directEndpoint.createProducer(c1, "direct:"+getName() );
+ directEndpoint.createProducer(c2, "direct:"+getName() );
+ directEndpoint.createProducer(c3, "direct:"+getName() );
+ */
+ controller.addEndpoint(serviceEndpoint);
+
+ initialized = true;
+ }
+
+ public void start() throws Exception {
+ if ( !initialized ) {
+ throw new RuntimeException("AsynchronousUimaASService.start() - initialize() must be called first");
+ }
+ super.start();
+ }
public void stop() throws Exception {
for ( AsynchronousUimaASService instance : allInstancesOfThisClass) {
instance.stop();
@@ -252,4 +530,6 @@ implements UimaASService {
context.destroy();
}
+
+
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/UimaASService.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/UimaASService.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/UimaASService.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/UimaASService.java Thu Nov 29 17:23:00 2018
@@ -21,6 +21,11 @@ package org.apache.uima.aae.service;
import java.util.concurrent.BlockingQueue;
import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.InProcessCache.CacheEntry;
+import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.MessageProcessor;
import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
import org.apache.uima.as.client.DirectMessage;
import org.apache.uima.cas.CAS;
@@ -48,5 +53,10 @@ public interface UimaASService {
public void releaseCAS(String casReferenceId, BlockingQueue<DirectMessage> releaseCASQueue ) throws Exception;
public AnalysisEngineMetaData getMetaData() throws Exception;
public void removeFromCache(String casReferenceId);
+ public CacheEntry add2Cache( CAS cas, MessageContext messageContext, String casReferenceId ) throws Exception;
+
public UimaASService withInProcessCache(InProcessCache cache);
+ public void initialize(MessageProcessor messageProcessor) throws Exception;
+ public void initialize(MessageProcessor messageProcessor, AnalysisEngineController parentController) throws Exception;
+ public void connect(UimaAsEndpoint clientEndpoint) throws Exception;
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/AbstractUimaAsServiceBuilder.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/AbstractUimaAsServiceBuilder.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/AbstractUimaAsServiceBuilder.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/AbstractUimaAsServiceBuilder.java Thu Nov 29 17:23:00 2018
@@ -19,12 +19,15 @@
package org.apache.uima.aae.service.builder;
import java.io.File;
+import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.Deque;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
+import java.util.Stack;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.regex.Matcher;
@@ -41,6 +44,7 @@ import org.apache.uima.aae.client.UimaAs
import org.apache.uima.aae.component.AggregateAnalysisEngineComponent;
import org.apache.uima.aae.component.AnalysisEngineComponent;
import org.apache.uima.aae.component.ComponentCasPool;
+import org.apache.uima.aae.component.PrimitiveAnalysisEngineComponent;
import org.apache.uima.aae.component.RemoteAnalysisEngineComponent;
import org.apache.uima.aae.component.TopLevelServiceComponent;
import org.apache.uima.aae.controller.AggregateAnalysisEngineController;
@@ -48,6 +52,11 @@ import org.apache.uima.aae.controller.Ag
import org.apache.uima.aae.controller.AnalysisEngineController;
import org.apache.uima.aae.controller.ControllerCallbackListener;
import org.apache.uima.aae.controller.BaseAnalysisEngineController.ENDPOINT_TYPE;
+import org.apache.uima.aae.definition.connectors.Endpoints;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
import org.apache.uima.aae.controller.DelegateEndpoint;
import org.apache.uima.aae.controller.Endpoint;
import org.apache.uima.aae.controller.Endpoint_impl;
@@ -66,8 +75,10 @@ import org.apache.uima.aae.handler.input
import org.apache.uima.aae.handler.input.MetadataResponseHandler_impl;
import org.apache.uima.aae.handler.input.ProcessRequestHandler_impl;
import org.apache.uima.aae.handler.input.ProcessResponseHandler;
+import org.apache.uima.aae.message.MessageProcessor;
import org.apache.uima.aae.service.AsynchronousUimaASService;
import org.apache.uima.aae.service.UimaASService;
+import org.apache.uima.aae.service.command.UimaAsMessageProcessor;
import org.apache.uima.aae.service.delegate.AggregateAnalysisEngineDelegate;
import org.apache.uima.aae.service.delegate.AnalysisEngineDelegate;
import org.apache.uima.aae.service.delegate.CasMultiplierNature;
@@ -104,11 +115,13 @@ import org.apache.uima.resourceSpecifier
import org.apache.uima.resourceSpecifier.TopLevelAnalysisEngineType;
import org.apache.xmlbeans.XmlDocumentProperties;
-public abstract class AbstractUimaAsServiceBuilder implements ServiceBuilder {
+public abstract class AbstractUimaAsServiceBuilder
+implements ServiceBuilder, UimaAsServiceWrapperCreator {
protected InProcessCache cache;
protected AsynchAECasManager_impl casManager;
protected ResourceManager resourceManager;
private static final String NoParent= "NoParent";
+ private ControllerBuilder controllerBuilder;
private enum FlowControllerType {
FIXED
}
@@ -117,11 +130,25 @@ public abstract class AbstractUimaAsServ
// public AnalysisEngineController createController( AnalysisEngineComponent component, int howManyInstances) throws Exception {
public AnalysisEngineController createController( AnalysisEngineComponent component, ControllerCallbackListener aListener, String serviceId) throws Exception {
- AnalysisEngineController controller =
- createController(component, null /*, component.getScaleout() */);
- controller.setServiceId(serviceId);
- controller.addControllerCallbackListener(aListener);
- return controller;
+ // get a builder which will traverse the component N-ary tree in
+ // post order traversal mode. Each node on a tree is either
+ // primitive or aggregate component. For each, create AnalysisEngineController
+ // instance of appropriate type (primitive or aggregate) and wrap it in
+ // UimaASService instance for deployment.
+ controllerBuilder = new PostOrderControllerBuilder(this, cache, casManager);
+
+ AnalysisEngineController topLevelController =
+ controllerBuilder.build(component);
+ // the builder created a list of UimaASService instances sorted
+ // in post order (when traversing component N-ary tree). Start
+ // each service.
+ for (UimaASService service : controllerBuilder.getServiceList()) {
+ service.start();
+ }
+ //createController(component, null /*, component.getScaleout() */);
+ topLevelController.setServiceId(serviceId);
+ topLevelController.addControllerCallbackListener(aListener);
+ return topLevelController;
}
/**
@@ -139,13 +166,26 @@ public abstract class AbstractUimaAsServ
*/
public AnalysisEngineController createController( AnalysisEngineComponent component, AnalysisEngineController parentController/*, int howManyInstances */) throws Exception {
- AnalysisEngineController controller = null;
+// AnalysisEngineController controller = null;
System.out.println("---------Controller:"+
component.getKey()+
" resourceSpecifier:"+
component.getResourceSpecifier().getClass().getName()+
" ResourceCreationSpecifier:"+(component.getResourceSpecifier() instanceof ResourceCreationSpecifier) );
+ /*
+ * public interface AnalysisEngineVisitor {
+ *
+ * public void visit(PrimitiveAnalysisEngineComponent visitor);
+ * public void visit(AggregateAnalysisEngineComponent visitor);
+ * public void visit(TopLevelAnalysisEngineComponent visitor);
+ *
+ */
+
+ // Visitor visitor = VisitorFactory.newControllerVisitor(parentController,casManager, cache, 10);
+ // component.accept(visitor);
+ /*
+
if ( component.isPrimitive()) {
controller = new PrimitiveAnalysisEngineController_impl(parentController, component.getKey(), component.getResourceSpecifier().getSourceUrlString(),casManager, cache, 10, component.getScaleout());
} else {
@@ -160,6 +200,10 @@ public abstract class AbstractUimaAsServ
} else {
throw new RuntimeException("Expected instance of AggregateAnalysisEngineComponent, instead is instanceof "+component.getClass().getName());
}
+
+
+
+
// List<AnalysisEngineComponent> delegateComponents = ((AggregateAnalysisEngineComponent)component).getChildren();
List<AnalysisEngineComponent> delegateComponents = aggregate.getChildren();
for( AnalysisEngineComponent delegateComponent : delegateComponents ) {
@@ -167,19 +211,126 @@ public abstract class AbstractUimaAsServ
}
controller = new AggregateAnalysisEngineController_impl(parentController, component.getKey(), component.getResourceSpecifier().getSourceUrlString(), casManager, cache, endpoints);
addFlowController((AggregateAnalysisEngineController)controller, (AnalysisEngineDescription)component.getResourceSpecifier());
+
+ String aggregateId = (Objects.isNull(parentController) ? controller.getComponentName() : component.getKey());
+
+ UimaAsEndpoint directEndpoint =
+ Endpoints.newEndpoint(EndpointType.Direct,aggregateId,new UimaAsMessageProcessor(controller));
+ controller.addEndpoint(directEndpoint);
+
// recursively create delegate controllers for all async delegates
createDelegateControllers(aggregate, controller);
}
+ */
+
+ /*
+
+ AnalysisEngineController controller = null;
+
+
+ Deque<ComponentNode> stack = new ArrayDeque<>();
+ List<UimaASService> serviceList = new ArrayList<>();
+ stack.push(new ComponentNode(component, parentController, false));
+ // non-recursive traversal of AnalysisEngineComponent tree producing
+ // appropriate AnalysisEngineControllers and decorating/wrapping each
+ // with UimaASService instance.
+ while( !stack.isEmpty() ) {
+ ComponentNode entry = stack.pop();
+ AnalysisEngineComponent c = entry.node;
+ if ( entry.flag ) {
+ // check if the last node
+ if ( entry.aggregateController.isTopLevelComponent() ) {
+ controller = entry.aggregateController;
+
+ } else {
+ UimaASService service =
+ newServiceWrapperDecorator(entry.aggregateController, entry.parentController, c);
+ serviceList.add(service);
+ }
+ } else {
+
+ if ( c.isPrimitive() ) {
+ controller = c.newAnalysisEngineController(entry.parentController,casManager, cache);
+ UimaASService service =
+ newServiceWrapperDecorator(controller, entry.parentController, c);
+
+ serviceList.add(service);
+
+ } else {
+ if ( !c.getChildren().isEmpty() ) {
+ controller =
+ c.newAnalysisEngineController(entry.parentController, casManager, cache);
+
+ stack.push( new ComponentNode(c, controller, parentController, true) );
+ parentController = controller;
+ for( AnalysisEngineComponent cc : c.getChildren()) {
+ stack.push(new ComponentNode(cc, controller, false));
+ }
+
+ } else {
+ }
+ }
+
+ }
+ }
+
+ for( UimaASService service : serviceList ) {
+ service.start();
+ }
+ */
+
+
+ //AnalysisEngineController controller = component.visit(parentController);
+ /*
if ( !controller.isTopLevelComponent() ) {
- UimaASService service = createUimaASServiceWrapper(controller, component);
+ UimaASService service =
+ createUimaASServiceWrapper(controller, parentController, component);
+
+
service.start();
}
-
- return controller;
+*/
+
+ AnalysisEngineController topLevelController = null;
+ /*
+ AnalysisEngineController topLevelController =
+ controllerBuilder.build(component, parentController);
+
+ for (UimaASService service : controllerBuilder.getServiceList()) {
+ service.start();
+ }
+ */
+
+ return topLevelController;
}
-
+ class ComponentNode {
+ AnalysisEngineComponent node;
+ AnalysisEngineController parentController;
+ AnalysisEngineController aggregateController;
+ boolean flag;
+
+ ComponentNode(AnalysisEngineComponent node, AnalysisEngineController parentController, boolean flag) {
+ this(node,null,parentController,flag);
+ }
+ ComponentNode(AnalysisEngineComponent node, AnalysisEngineController aggregateController, AnalysisEngineController parentController, boolean flag) {
+ this.node = node;
+ this.flag = flag;
+ this.parentController = parentController;
+ this.aggregateController = aggregateController;
+ }
+ @Override
+ public String toString() {
+ return node.toString();
+ }
+ }
+
+ public UimaASService create(AnalysisEngineController controller, AnalysisEngineController parentController, AnalysisEngineComponent component) throws Exception {
+ UimaASService service =
+ createUimaASServiceWrapper(controller, parentController, component);
+ return service;
+ }
private void createDelegateControllers(AggregateAnalysisEngineComponent aggregateComponent, AnalysisEngineController controller) throws Exception {
for (AnalysisEngineComponent delegateComponent : aggregateComponent.getChildren()) {
// if error handling threshold has not been defined for the delegate, add
@@ -192,6 +343,7 @@ public abstract class AbstractUimaAsServ
}
} else {
+ /*
if (Objects.isNull(controller.getOutputChannel(ENDPOINT_TYPE.DIRECT))) {
OutputChannel oc = new DirectOutputChannel().withController(controller);
oc.initialize();
@@ -205,6 +357,7 @@ public abstract class AbstractUimaAsServ
controller.addInputChannel(inputChannel);
}
+ */
createController(delegateComponent, controller /*, scaleout */);
}
@@ -213,10 +366,14 @@ public abstract class AbstractUimaAsServ
}
- private UimaASService createUimaASServiceWrapper(AnalysisEngineController controller, AnalysisEngineComponent component) throws Exception {
-
+ private UimaASService createUimaASServiceWrapper(AnalysisEngineController controller, AnalysisEngineController parentController, AnalysisEngineComponent component) throws Exception {
+ String serviceId = (Objects.isNull(controller))? controller.getComponentName() : controller.getKey();
AsynchronousUimaASService service =
- new AsynchronousUimaASService(controller.getComponentName()).withController(controller);
+ new AsynchronousUimaASService(serviceId).withController(controller);
+
+
+ /* 10/19/18 JC replaced with Endpoint idea
+ *
// Need an OutputChannel to dispatch messages from this service
OutputChannel outputChannel;
if ( ( outputChannel = controller.getOutputChannel(ENDPOINT_TYPE.DIRECT)) == null) {
@@ -254,6 +411,9 @@ public abstract class AbstractUimaAsServ
((DirectOutputChannel)outputChannel).setFreeCASQueue(service.getFreeCasQueue());
}
+
+ */
+
/*
DirectListener processListener = new DirectListener(Type.ProcessCAS).
withController(controller).
@@ -282,6 +442,35 @@ public abstract class AbstractUimaAsServ
((DirectOutputChannel)outputChannel).setFreeCASQueue(service.getFreeCasQueue());
}
*/
+
+
+ MessageProcessor messageProcessor =
+ new UimaAsMessageProcessor(controller);
+ /*
+ UimaAsEndpoint directEndpoint = new DirectUimaAsEndpoint(messageProcessor, "Service");
+ UimaAsConsumer serviceGetMetaRequestConsumer = directEndpoint.createConsumer("direct:", ConsumerType.GetMetaRequest, 1);
+ UimaAsConsumer serviceProcessCasRequestConsumer = directEndpoint.createConsumer("direct:", ConsumerType.ProcessCASRequest, component.getScaleout());
+ UimaAsConsumer serviceCpcRequestConsumer = directEndpoint.createConsumer("direct:", ConsumerType.CpcRequest, 1);
+
+ UimaAsEndpoint parentEndpoint = parentController.getEndpoint(EndpointType.Direct);
+ parentEndpoint.createConsumer("direct:"+controller.getComponentName(), ConsumerType.GetMetaResponse, 1);
+ parentEndpoint.createConsumer("direct:"+controller.getComponentName(), ConsumerType.ProcessCASResponse, component.getScaleout());
+ parentEndpoint.createConsumer("direct:"+controller.getComponentName(), ConsumerType.CpcResponse, 1);
+
+ parentEndpoint.createProducer(serviceGetMetaRequestConsumer, parentController.getOrigin());
+ parentEndpoint.createProducer(serviceProcessCasRequestConsumer, parentController.getOrigin());
+ parentEndpoint.createProducer(serviceCpcRequestConsumer, parentController.getOrigin());
+
+ if (controller.isCasMultiplier()) {
+ UimaAsConsumer serviceFreeCasConsumer = directEndpoint.createConsumer("direct:", ConsumerType.FreeCAS, 1);
+ parentEndpoint.createProducer(serviceFreeCasConsumer, parentController.getOrigin());
+ }
+*/
+ if ( Objects.isNull(parentController ) ) {
+ service.initialize(messageProcessor);
+ } else {
+ service.initialize(messageProcessor, parentController);
+ }
return service;
}
private DirectListener createDirectListener(AnalysisEngineController controller, int scaleout, DirectInputChannel inputChannel, BlockingQueue<DirectMessage> q, Type type) throws Exception{
@@ -553,8 +742,12 @@ public abstract class AbstractUimaAsServ
private UimaASService createUimaASServiceWrapper(AnalysisEngineController controller, AnalysisEngineDelegate d) throws Exception {
- AsynchronousUimaASService service =
+ UimaASService service =
new AsynchronousUimaASService(controller.getComponentName()).withController(controller);
+
+ service.initialize(new UimaAsMessageProcessor(controller));
+
+ /*
// Need an OutputChannel to dispatch messages from this service
OutputChannel outputChannel;
if ( ( outputChannel = controller.getOutputChannel(ENDPOINT_TYPE.DIRECT)) == null) {
@@ -605,7 +798,7 @@ public abstract class AbstractUimaAsServ
inputChannel.registerListener(freCASChannelListener);
((DirectOutputChannel)outputChannel).setFreeCASQueue(service.getFreeCasQueue());
}
-
+ */
return service;
}
private boolean isAggregate(AnalysisEngineDelegate d, ResourceSpecifier resourceSpecifier) {
@@ -719,7 +912,9 @@ public abstract class AbstractUimaAsServ
}
if ( !controller.isTopLevelComponent() ) {
UimaASService service = createUimaASServiceWrapper(controller, d);
- service.start();
+ // create listeners and service producers
+ //service.initilize(new UimaAsMessageProcessor(controller));
+ service.start();
}
return controller;
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/ControllerBuilder.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/ControllerBuilder.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/ControllerBuilder.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/ControllerBuilder.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,12 @@
+package org.apache.uima.aae.service.builder;
+
+import java.util.List;
+
+import org.apache.uima.aae.component.AnalysisEngineComponent;
+import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.service.UimaASService;
+
+public interface ControllerBuilder {
+ public AnalysisEngineController build(AnalysisEngineComponent component) throws Exception;
+ public List<UimaASService> getServiceList();
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/ControllerBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/PostOrderControllerBuilder.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/PostOrderControllerBuilder.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/PostOrderControllerBuilder.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/PostOrderControllerBuilder.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,109 @@
+package org.apache.uima.aae.service.builder;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Deque;
+import java.util.List;
+
+import org.apache.uima.aae.AsynchAECasManager_impl;
+import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.component.AnalysisEngineComponent;
+import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.service.UimaASService;
+
+public class PostOrderControllerBuilder implements ControllerBuilder {
+ private UimaAsServiceWrapperCreator wrapperCreator;
+ private InProcessCache cache;
+ private AsynchAECasManager_impl casManager;
+ private List<UimaASService> serviceList = new ArrayList<>();
+
+ PostOrderControllerBuilder(UimaAsServiceWrapperCreator wrapperCreator, InProcessCache cache,
+ AsynchAECasManager_impl casManager) {
+ this.wrapperCreator = wrapperCreator;
+ this.cache = cache;
+ this.casManager = casManager;
+ }
+
+ public AnalysisEngineController build(AnalysisEngineComponent component)
+ throws Exception {
+ AnalysisEngineController parentController = null;
+ AnalysisEngineController controller = null;
+
+ Deque<ComponentNode> stack = new ArrayDeque<>();
+ stack.push(new ComponentNode(component, parentController, false));
+ // non-recursive traversal of AnalysisEngineComponent N-ary tree producing
+ // appropriate AnalysisEngineControllers and decorating/wrapping each
+ // with UimaASService instance.
+ while (!stack.isEmpty()) {
+ ComponentNode entry = stack.pop();
+ AnalysisEngineComponent c = entry.node;
+ if (entry.flag) {
+ // check if this is a root node
+ if (entry.aggregateController.isTopLevelComponent()) {
+ controller = entry.aggregateController;
+
+ } else {
+ UimaASService service = wrapperCreator.create(entry.aggregateController, entry.parentController, c);
+ serviceList.add(service);
+ }
+ } else {
+
+ if (c.isPrimitive()) {
+ controller = c.newAnalysisEngineController(entry.parentController, casManager, cache);
+ UimaASService service =
+ wrapperCreator.create(controller, entry.parentController, c);
+
+ serviceList.add(service);
+
+ } else {
+ if (!c.getChildren().isEmpty()) {
+ controller = c.newAnalysisEngineController(entry.parentController, casManager, cache);
+
+ stack.push(new ComponentNode(c, controller, parentController, true));
+ parentController = controller;
+ for (AnalysisEngineComponent cc : c.getChildren()) {
+ stack.push(new ComponentNode(cc, controller, false));
+ }
+
+ } else {
+ }
+ }
+
+ }
+ }
+/*
+ for (UimaASService service : serviceList) {
+ service.start();
+ }
+ */
+ return controller;
+ }
+ public List<UimaASService> getServiceList() {
+ return serviceList;
+ }
+}
+
+class ComponentNode {
+ AnalysisEngineComponent node;
+ AnalysisEngineController parentController;
+ AnalysisEngineController aggregateController;
+ boolean flag;
+
+ ComponentNode(AnalysisEngineComponent node, AnalysisEngineController parentController, boolean flag) {
+ this(node, null, parentController, flag);
+ }
+
+ ComponentNode(AnalysisEngineComponent node, AnalysisEngineController aggregateController,
+ AnalysisEngineController parentController, boolean flag) {
+ this.node = node;
+ this.flag = flag;
+ this.parentController = parentController;
+ this.aggregateController = aggregateController;
+ }
+
+ @Override
+ public String toString() {
+ return node.toString();
+ }
+
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/PostOrderControllerBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsDirectServiceBuilder.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsDirectServiceBuilder.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsDirectServiceBuilder.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsDirectServiceBuilder.java Thu Nov 29 17:23:00 2018
@@ -31,11 +31,12 @@ import org.apache.uima.aae.UimaClassFact
import org.apache.uima.aae.client.UimaAsynchronousEngine.Transport;
import org.apache.uima.aae.component.TopLevelServiceComponent;
import org.apache.uima.aae.controller.AggregateAnalysisEngineController;
-import org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl;
import org.apache.uima.aae.controller.AnalysisEngineController;
import org.apache.uima.aae.controller.BaseAnalysisEngineController.ENDPOINT_TYPE;
import org.apache.uima.aae.controller.ControllerCallbackListener;
import org.apache.uima.aae.controller.Endpoint_impl;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
import org.apache.uima.aae.error.ErrorHandler;
import org.apache.uima.aae.error.ErrorHandlerChain;
import org.apache.uima.aae.error.Threshold;
@@ -47,6 +48,7 @@ import org.apache.uima.aae.handler.Handl
import org.apache.uima.aae.service.AsynchronousUimaASService;
import org.apache.uima.aae.service.UimaASService;
import org.apache.uima.aae.service.UimaAsServiceRegistry;
+import org.apache.uima.aae.service.command.UimaAsMessageProcessor;
import org.apache.uima.aae.service.delegate.AnalysisEngineDelegate;
import org.apache.uima.aae.service.delegate.RemoteAnalysisEngineDelegate;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
@@ -122,10 +124,10 @@ public class UimaAsDirectServiceBuilder
//topLevelController.addControllerCallbackListener(callback);
//topLevelController.setServiceId(service.getId());
-
+ service.withController(topLevelController);
service.withInProcessCache(super.cache);
System.setProperty("BrokerURI", "Direct");
- configureTopLevelService(topLevelController, service);//, topLevelComponent.getScaleout());
+ configureTopLevelService(topLevelController, service);
return service;
}
@@ -164,7 +166,7 @@ public class UimaAsDirectServiceBuilder
//addErrorHandling(topLevelController, pec);
-
+/*
// create a single instance of OutputChannel for Direct communication if
// necessary
DirectOutputChannel outputChannel = outputChannel(topLevelController);
@@ -207,9 +209,31 @@ public class UimaAsDirectServiceBuilder
inputChannel.registerListener(getMetaListener);
inputChannel.registerListener(processListener);
+*/
+
+ service.initialize(new UimaAsMessageProcessor(topLevelController));
+ /*
+ scaleout = service.getScaleout();
+ MessageProcessor dummyProcessor =
+ new UimaAsMessageProcessor(topLevelController);
+
+ UimaAsEndpoint directEndpoint = new DirectUimaAsEndpoint(dummyProcessor, "Service");
+ directEndpoint.createConsumer("direct:", ConsumerType.GetMetaRequest, 1);
+ directEndpoint.createConsumer("direct:", ConsumerType.ProcessCASRequest, 4);
+ directEndpoint.createConsumer("direct:", ConsumerType.CpcRequest, 1);
+ addFreeCASListener(service, topLevelController, directEndpoint, scaleout );
+
+
+
+ */
+// UimaAsConsumer freeCasRequestConsumer = directEndpoint.createConsumer("direct:", ConsumerType.FreeCAS, 1);
service.withController(topLevelController);
+ //topLevelController.addEndpoint(directEndpoint);
+
+
+
}
@@ -334,7 +358,10 @@ public class UimaAsDirectServiceBuilder
private void configureTopLevelService(AnalysisEngineController topLevelController,
AsynchronousUimaASService service, AsyncPrimitiveErrorConfigurationType pec, int howMany) throws Exception {
addErrorHandling(topLevelController, pec);
+
+ service.initialize(new UimaAsMessageProcessor(topLevelController));
+/*
// create a single instance of OutputChannel for Direct communication if
// necessary
@@ -396,6 +423,8 @@ public class UimaAsDirectServiceBuilder
inputChannel.registerListener(getMetaListener);
inputChannel.registerListener(processListener);
+
+ */
service.withController(topLevelController);
}
@@ -411,6 +440,23 @@ public class UimaAsDirectServiceBuilder
outputChannel.setFreeCASQueue(service.getFreeCasQueue());
}
}
+
+ private void addFreeCASListener( AsynchronousUimaASService service, AnalysisEngineController controller,
+ UimaAsEndpoint endpoint, int scaleout ) throws Exception {
+ DirectListener freCASChannelListener = null;
+ if (controller.isCasMultiplier()) {
+ endpoint.createConsumer( ConsumerType.FreeCASRequest, 1);
+
+
+// freCASChannelListener = new DirectListener(Type.FreeCAS).withController(controller)
+// .withConsumerThreads(scaleout).withInputChannel(inputChannel).withQueue(service.getFreeCasQueue())
+// .initialize();
+// inputChannel.registerListener(freCASChannelListener);
+// outputChannel.setFreeCASQueue(service.getFreeCasQueue());
+ }
+ }
+
+
public static InputChannel createInputChannel(ChannelType type) {
return new DirectInputChannel(type);
}
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsServiceWrapperCreator.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsServiceWrapperCreator.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsServiceWrapperCreator.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsServiceWrapperCreator.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,9 @@
+package org.apache.uima.aae.service.builder;
+
+import org.apache.uima.aae.component.AnalysisEngineComponent;
+import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.service.UimaASService;
+
+public interface UimaAsServiceWrapperCreator {
+ public UimaASService create(AnalysisEngineController controller, AnalysisEngineController parentController, AnalysisEngineComponent component) throws Exception ;
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/builder/UimaAsServiceWrapperCreator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/AbstractUimaAsCommand.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/AbstractUimaAsCommand.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/AbstractUimaAsCommand.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/AbstractUimaAsCommand.java Thu Nov 29 17:23:00 2018
@@ -36,6 +36,7 @@ import org.apache.uima.aae.error.ErrorCo
import org.apache.uima.aae.jmx.ServicePerformance;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.Origin;
import org.apache.uima.aae.message.UIMAMessage;
import org.apache.uima.aae.monitor.Monitor;
import org.apache.uima.aae.monitor.statistics.DelegateStats;
@@ -53,8 +54,11 @@ import org.apache.uima.util.Level;
public abstract class AbstractUimaAsCommand implements UimaAsCommand {
protected AnalysisEngineController controller;
private Object mux = new Object();
- private final MessageContext messageContext;
-
+ // package visibility only for messageContext
+ MessageContext messageContext;
+ protected AbstractUimaAsCommand(AnalysisEngineController controller) {
+ this(controller, null);
+ }
protected AbstractUimaAsCommand(AnalysisEngineController controller, MessageContext aMessageContext) {
this.controller = controller;
this.messageContext = aMessageContext;
@@ -325,7 +329,8 @@ public abstract class AbstractUimaAsComm
protected Delegate getDelegate(/* MessageContext mc */) throws AsynchAEException {
String delegateKey = null;
if (messageContext.getEndpoint().getEndpoint() == null || messageContext.getEndpoint().getEndpoint().trim().length() == 0) {
- String fromEndpoint = messageContext.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ String fromEndpoint =
+ ((Origin)messageContext.getMessageObjectProperty(AsynchAEMessage.MessageFrom)).getName();
delegateKey = ((AggregateAnalysisEngineController) controller)
.lookUpDelegateKey(fromEndpoint);
} else {
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/CommandFactory.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/CommandFactory.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/CommandFactory.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/CommandFactory.java Thu Nov 29 17:23:00 2018
@@ -22,13 +22,47 @@ import org.apache.uima.aae.controller.An
import org.apache.uima.aae.error.AsynchAEException;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
-import org.apache.uima.aae.message.UimaAsMessage;
public class CommandFactory {
- // Can't instantiate this factory. Use static methods only
- private CommandFactory() {
+ /* Consider this Command Pattern implementation
+ *
+ private volatile CommandFactory instance;
+
+ public CommandFactory newInstance(AnalysisEngineController controller) {
+ // use double checked locking to create Singleton
+ if ( Objects.isNull(instance) ) {
+ synchronized(CommandFactory.class) {
+ if ( Objects.isNull(instance) ) {
+ instance = new CommandFactory(controller);
+ }
+ }
+ }
+ return instance;
+ }
+ private static EnumMap<Commands, UimaAsCommand> em =
+ new EnumMap<>(Commands.class);
+
+ // Can't instantiate this factory. Use static methods only
+ private CommandFactory(AnalysisEngineController controller) {
+ em.put(Commands.ProcessInputCASRequest,CommandBuilder.createProcessInputCasRequestCommand(controller));
+ em.put(Commands.ProcessChildCASRequest,CommandBuilder.createProcessChildCasRequestCommand(controller));
+ em.put(Commands.ProcessInputCASResponse,CommandBuilder.createProcessInputCasResponseCommand(controller));
+ em.put(Commands.GetMetaRequest,CommandBuilder.createGetMetaRequestCommand(controller));
+ em.put(Commands.GetMetaResponse,CommandBuilder.createGetMetaResponseCommand(controller));
+ em.put(Commands.CollectionProcessCompleteRequest,CommandBuilder.createCollectionProcessCompleteRequestCommand(controller));
+ em.put(Commands.CollectionProcessCompleteResponse,CommandBuilder.createCollectionProcessCompleteResponseCommand(controller));
+ em.put(Commands.NoOp,CommandBuilder.createNoOpCommand(controller));
+
+ }
+ public static UimaAsCommand getCommandFor(Commands command) {
+ if ( em.containsKey(command)) {
+ return em.get(command);
+ }
+ return em.get(Commands.NoOp);
+
}
+ */
public static UimaAsCommand newCommand(MessageContext mc, AnalysisEngineController controller)
throws AsynchAEException {
// Message type is either Request or Response
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/GetMetaResponseCommand.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/GetMetaResponseCommand.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/GetMetaResponseCommand.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/GetMetaResponseCommand.java Thu Nov 29 17:23:00 2018
@@ -27,6 +27,7 @@ import org.apache.uima.aae.controller.Ba
import org.apache.uima.aae.controller.Endpoint;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.Origin;
import org.apache.uima.resource.metadata.ResourceMetaData;
import org.apache.uima.util.XMLInputSource;
@@ -48,11 +49,13 @@ public class GetMetaResponseCommand exte
return;
}
- String fromEndpoint =// mc
- super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
-
- String delegateKey = ((AggregateAnalysisEngineController) controller)
- .lookUpDelegateKey(fromEndpoint);
+// String fromEndpoint =// mc
+// super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ Origin origin = (Origin) super.getMessageContext().getMessageObjectProperty(AsynchAEMessage.MessageFrom);
+ String delegateKey = origin.getName();//.split(":")[1];
+ System.out.println("++++++++++++++++++++++ delegateKey: "+delegateKey);
+ // String delegateKey = ((AggregateAnalysisEngineController) controller)
+ // .lookUpDelegateKey(fromEndpoint);
ResourceMetaData resource = null;
int serializationSupportedByRemote = AsynchAEMessage.None;
// ((MessageContext) anObjectToHandle).getMessageIntProperty(AsynchAEMessage.SERIALIZATION);
@@ -80,11 +83,16 @@ public class GetMetaResponseCommand exte
// be unique.
// The ServerURI set by the service may be its local name for the broker, e.g.
// tcp://localhost:61616
+
((AggregateAnalysisEngineController) controller).mergeTypeSystem(
- resource, fromEndpoint, fromServer);
- ((AggregateAnalysisEngineController) controller).setRemoteSerializationSupported(serializationSupportedByRemote, fromEndpoint, fromServer);
+ resource, delegateKey, fromServer);
+ ((AggregateAnalysisEngineController) controller).setRemoteSerializationSupported(serializationSupportedByRemote, delegateKey, fromServer);
+// ((AggregateAnalysisEngineController) controller).mergeTypeSystem(
+// resource, fromEndpoint, fromServer);
+// ((AggregateAnalysisEngineController) controller).setRemoteSerializationSupported(serializationSupportedByRemote, fromEndpoint, fromServer);
+//
}
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessChildCasRequestCommand.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessChildCasRequestCommand.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessChildCasRequestCommand.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessChildCasRequestCommand.java Thu Nov 29 17:23:00 2018
@@ -32,6 +32,7 @@ import org.apache.uima.aae.error.AsynchA
import org.apache.uima.aae.jmx.ServicePerformance;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.Origin;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.Marker;
import org.apache.uima.util.Level;
@@ -51,9 +52,9 @@ public class ProcessChildCasRequestComma
System.out.println(">>>>>>>>>>>>>>> Controller:"+controller.getComponentName()+
" in ProcessChildCasRequestCommand.execute() - Child CAS:"+casReferenceId+
" Parent CAS:"+parentCasReferenceId+
- " from "+super
- .getMessageStringProperty(AsynchAEMessage.MessageFrom)
- );
+ " from "+
+ ((Origin)super
+ .getMessageObjectProperty(AsynchAEMessage.MessageFrom)).getName());
if (parentCasReferenceId == null) {
if (UIMAFramework.getLogger(getClass()).isLoggable(Level.INFO)) {
@@ -384,7 +385,8 @@ public class ProcessChildCasRequestComma
}
private Delegate getLastDelegate(CasStateEntry childCasStateEntry) throws Exception {
- String cmEndpointName = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ String cmEndpointName =
+ ((Origin)super.getMessageObjectProperty(AsynchAEMessage.MessageFrom)).getName();
String newCASProducedBy = ((AggregateAnalysisEngineController) controller).lookUpDelegateKey(cmEndpointName);
Delegate delegate = ((AggregateAnalysisEngineController) controller).lookupDelegate(newCASProducedBy);
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasRequestCommand.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasRequestCommand.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasRequestCommand.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasRequestCommand.java Thu Nov 29 17:23:00 2018
@@ -34,6 +34,7 @@ import org.apache.uima.aae.error.AsynchA
import org.apache.uima.aae.handler.input.ProcessRequestHandler_impl;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.Origin;
import org.apache.uima.aae.monitor.Monitor;
import org.apache.uima.util.Level;
@@ -98,7 +99,8 @@ public class ProcessInputCasRequestComma
private void saveDelegateKey() throws Exception{
String delegateKey = super.getMessageStringProperty(AsynchAEMessage.DelegateKey);
if ( delegateKey == null ) {
- delegateKey = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+// delegateKey = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ delegateKey = super.getMessageStringProperty(AsynchAEMessage.DelegateKey);
}
super.getEndpoint().setDelegateKey(delegateKey);
@@ -106,7 +108,9 @@ public class ProcessInputCasRequestComma
private void saveEndpointName() throws Exception {
String endpointName = super.getMessageStringProperty(AsynchAEMessage.EndpointName);
if (endpointName == null ) {
- endpointName = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ Origin origin = (Origin)super.getMessageObjectProperty(AsynchAEMessage.MessageFrom);
+ endpointName = origin.getName();
+// endpointName = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
}
super.getEndpoint().setEndpoint(endpointName);
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasResponseCommand.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasResponseCommand.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasResponseCommand.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/ProcessInputCasResponseCommand.java Thu Nov 29 17:23:00 2018
@@ -43,6 +43,7 @@ import org.apache.uima.aae.error.UimaEES
import org.apache.uima.aae.jmx.ServicePerformance;
import org.apache.uima.aae.message.AsynchAEMessage;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.Origin;
import org.apache.uima.aae.monitor.Monitor;
import org.apache.uima.aae.monitor.statistics.AnalysisEnginePerformanceMetrics;
import org.apache.uima.aae.monitor.statistics.LongNumericStatistic;
@@ -71,11 +72,13 @@ public class ProcessInputCasResponseComm
int payload = super.getMessageIntProperty(AsynchAEMessage.Payload);
String casReferenceId = super.getCasReferenceId(this.getClass());
- String msgFrom = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+// String msgFrom = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ String msgFrom = ((Origin)super.getMessageObjectProperty(AsynchAEMessage.MessageFrom)).getName();
System.out.println(">>>>>>>>>>>>>>> Controller:" + controller.getComponentName()
+ " in ProcessInputCasResponseCommand.execute() - Input CAS:" + casReferenceId + " from "
- + super.getMessageStringProperty(AsynchAEMessage.MessageFrom)+" Payload:"+payload);
+ + msgFrom +" Payload:"+payload);
+ //+ super.getMessageStringProperty(AsynchAEMessage.MessageFrom)+" Payload:"+payload);
if (casReferenceId == null) {
// LOG THIS
@@ -874,7 +877,8 @@ public class ProcessInputCasResponseComm
if (super.getEndpoint().getEndpoint() == null
|| super.getEndpoint().getEndpoint().trim().length() == 0) {
- String fromEndpoint = super.getMessageStringProperty(AsynchAEMessage.MessageFrom);
+ String fromEndpoint =
+ ((Origin)super.getMessageObjectProperty(AsynchAEMessage.MessageFrom)).getName();
delegateKey = ((AggregateAnalysisEngineController) controller).lookUpDelegateKey(fromEndpoint);
} else {
delegateKey = ((AggregateAnalysisEngineController) controller)
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/UimaAsMessageProcessor.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/UimaAsMessageProcessor.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/UimaAsMessageProcessor.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/command/UimaAsMessageProcessor.java Thu Nov 29 17:23:00 2018
@@ -3,9 +3,10 @@ package org.apache.uima.aae.service.comm
import org.apache.uima.aae.controller.AnalysisEngineController;
import org.apache.uima.aae.message.MessageContext;
import org.apache.uima.aae.message.MessageProcessor;
+import org.apache.uima.aae.message.ServiceMessageProcessor;
import org.apache.uima.aae.message.UimaAsMessage;
-public class UimaAsMessageProcessor implements MessageProcessor {
+public class UimaAsMessageProcessor implements ServiceMessageProcessor {
private AnalysisEngineController controller;
@@ -18,5 +19,9 @@ public class UimaAsMessageProcessor impl
CommandFactory.newCommand(message, controller);
command.execute();
}
+ @Override
+ public AnalysisEngineController getController() {
+ return controller;
+ }
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessage.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessage.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessage.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessage.java Thu Nov 29 17:23:00 2018
@@ -108,6 +108,9 @@ public class DirectMessage implements Ui
store(AsynchAEMessage.ReplyToEndpoint, replyDestination);
return this;
}
+ public Origin getOrigin() {
+ return (Origin)stateMap.get(AsynchAEMessage.MessageFrom);
+ }
public Object getReplyDestination() {
return stateMap.get(AsynchAEMessage.ReplyToEndpoint);
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessageContext.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessageContext.java?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessageContext.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/as/client/DirectMessageContext.java Thu Nov 29 17:23:00 2018
@@ -46,7 +46,8 @@ public class DirectMessageContext implem
endpoint.setSerialFormat(SerialFormat.UNKNOWN);
endpoint.setServerURI("java");
endpoint.setEndpoint(anEndpointName);
- endpoint.setReplyDestination(message.get(AsynchAEMessage.ReplyToEndpoint));
+
+ endpoint.setReplyDestination(message.getReplyDestination());
endpoint.setDelegateKey(message.getAsString(AsynchAEMessage.DelegateKey));
endpoint.setMessageOrigin((Origin)message.get(AsynchAEMessage.MessageFrom));
@@ -121,7 +122,9 @@ public class DirectMessageContext implem
public String getMessageStringProperty(String aMessagePropertyName) throws AsynchAEException {
return (String)message.get(aMessagePropertyName);
}
-
+ public DirectMessage getMessage() {
+ return message;
+ }
public int getMessageIntProperty(String aMessagePropertyName) throws AsynchAEException {
return (Integer)message.get(aMessagePropertyName);
}
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/.plxarc
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/.plxarc?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/target/.plxarc (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/target/.plxarc Thu Nov 29 17:23:00 2018
@@ -0,0 +1 @@
+maven-shared-archive-resources
\ No newline at end of file
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/.staleFlag
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/.staleFlag?rev=1847732&view=auto
==============================================================================
(empty)
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/AsynchAECasManager.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/AsynchAECasManager.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/AsynchAECasManager.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/AsynchAECasManager_impl.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/AsynchAECasManager_impl.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/AsynchAECasManager_impl.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/Channel.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/Channel.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/Channel.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/EECasManager_impl.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/EECasManager_impl.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/EECasManager_impl.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache$CacheEntry.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache%24CacheEntry.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache$CacheEntry.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache$UndefinedCacheEntry.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache%24UndefinedCacheEntry.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache$UndefinedCacheEntry.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCache.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCacheMBean.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCacheMBean.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InProcessCacheMBean.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InputChannel$ChannelType.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InputChannel%24ChannelType.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InputChannel$ChannelType.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InputChannel.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InputChannel.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/InputChannel.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/Lifecycle.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/Lifecycle.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/Lifecycle.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/OutputChannel.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/OutputChannel.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/OutputChannel.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/ParallelStep.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/ParallelStep.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/ParallelStep.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/SerializerCache.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/SerializerCache.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/SerializerCache.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UIDGenerator.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UIDGenerator.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UIDGenerator.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UIMAEE_Constants.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UIMAEE_Constants.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UIMAEE_Constants.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationEvent$EventTrigger.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationEvent%24EventTrigger.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationEvent$EventTrigger.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationEvent.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationEvent.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationEvent.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationExitEvent.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationExitEvent.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASApplicationExitEvent.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASUtils.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASUtils.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaASUtils.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsContext.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsContext.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsContext.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsPriorityBasedThreadFactory$1.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsPriorityBasedThreadFactory%241.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsPriorityBasedThreadFactory$1.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsPriorityBasedThreadFactory.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsPriorityBasedThreadFactory.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsPriorityBasedThreadFactory.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsThreadFactory$1.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsThreadFactory%241.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsThreadFactory$1.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsThreadFactory.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsThreadFactory.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsThreadFactory.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsVersion.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsVersion.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaAsVersion.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaBlockingExecutor$1.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaBlockingExecutor%241.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaBlockingExecutor$1.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaBlockingExecutor.class
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/target/classes/org/apache/uima/aae/UimaBlockingExecutor.class?rev=1847732&view=auto
==============================================================================
Binary file - no diff available.