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 [2/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...
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/.classpath
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/.classpath?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/.classpath (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/.classpath Thu Nov 29 17:23:00 2018
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/classes" path="target/generated-sources/releaseVersion">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/classes" path="target/generated-sources/xmlbeans">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="lib" path="/uima-as/uimaj-as-connectors/target/classes"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/.project
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/.project?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/.project (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/.project Thu Nov 29 17:23:00 2018
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>uimaj-as-core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.core.resources.prefs
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.core.resources.prefs?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.core.resources.prefs (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.core.resources.prefs Thu Nov 29 17:23:00 2018
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding//target/generated-sources/releaseVersion=UTF-8
+encoding/<project>=UTF-8
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.jdt.core.prefs?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.jdt.core.prefs (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.jdt.core.prefs Thu Nov 29 17:23:00 2018
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.m2e.core.prefs
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.m2e.core.prefs?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.m2e.core.prefs (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/.settings/org.eclipse.m2e.core.prefs Thu Nov 29 17:23:00 2018
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/pom.xml
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/pom.xml?rev=1847732&r1=1847731&r2=1847732&view=diff
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/pom.xml (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/pom.xml Thu Nov 29 17:23:00 2018
@@ -114,6 +114,13 @@
<artifactId>spring-jms</artifactId>
</dependency>
+ <!-- dependency>
+ <groupId>org.apache.uima</groupId>
+ <artifactId>uimaj-as-connectors</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency-->
+
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAS.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAS.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/client/UimaAS.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAS.java Thu Nov 29 17:23:00 2018
@@ -47,7 +47,6 @@ public class UimaAS {
Class.forName("org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_impl");
Constructor<?> constructor = uimaClientClz.getConstructor(type);
Object[] argInstance = {transport};
- //return (UimaAsynchronousEngine)uimaClientClz.newInstance();
return (UimaAsynchronousEngine)constructor.newInstance(argInstance);
}
/*
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/AggregateAnalysisEngineComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/AggregateAnalysisEngineComponent.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/component/AggregateAnalysisEngineComponent.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/AggregateAnalysisEngineComponent.java Thu Nov 29 17:23:00 2018
@@ -1,14 +1,94 @@
package org.apache.uima.aae.component;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import org.apache.uima.aae.AsynchAECasManager_impl;
+import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.UimaASUtils;
+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.Endpoint;
+import org.apache.uima.aae.definition.connectors.Endpoints;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
import org.apache.uima.aae.definition.connectors.basic.BasicConnector;
+import org.apache.uima.aae.service.command.UimaAsMessageProcessor;
+import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.analysis_engine.metadata.FlowConstraints;
import org.apache.uima.resource.ResourceSpecifier;
public class AggregateAnalysisEngineComponent extends AnalysisEngineComponent {
-
+ private enum FlowControllerType {
+ FIXED
+ }
public AggregateAnalysisEngineComponent(String key, ResourceSpecifier rs) {
super(key, rs);
}
+
+// @Override
+// public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+// String delegateKey, String resourceSpecifier, AsynchAECasManager_impl casManager, InProcessCache cache, int i, int scaleout ) throws Exception {
+// throw new UnsupportedOperationException("This method should only be called on PrimitiveAnalysisEngineComponent");
+//
+// }
+ @Override
+ public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController, AsynchAECasManager_impl casManager, InProcessCache cache ) throws Exception {
+
+// public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController, InProcessCache cache, AsynchAECasManager_impl casManager ) throws Exception {
+ AnalysisEngineController controller;
+ // add an endpoint for each delegate in this aggregate. The endpoint Map is
+ // required
+ // during initialization of an aggregate controller.
+ Map<String, Endpoint> endpoints = new HashMap<>();
+
+ for (AnalysisEngineComponent delegateComponent : getChildren()) {
+ endpoints.put(delegateComponent.getKey(), delegateComponent.getEndpoint());
+ }
+ controller = new AggregateAnalysisEngineController_impl(parentController, getKey(),
+ getResourceSpecifier().getSourceUrlString(), casManager, cache, endpoints);
+ addFlowController((AggregateAnalysisEngineController) controller,
+ (AnalysisEngineDescription) getResourceSpecifier());
+
+ String aggregateId = (Objects.isNull(parentController) ? controller.getComponentName() : getKey());
+ UimaAsEndpoint directEndpoint = Endpoints.newEndpoint(EndpointType.Direct, aggregateId,
+ new UimaAsMessageProcessor(controller));
+ controller.addEndpoint(directEndpoint);
+
+
+ return controller;
+ }
+ protected void addFlowController(AggregateAnalysisEngineController aggregateController, AnalysisEngineDescription rs) throws Exception {
+ String fcDescriptor=null;
+ System.out.println(rs.getSourceUrlString());
+
+ // first check if the AE aggregate descriptor defines a custom flow controller
+ if ( rs.getFlowControllerDeclaration() != null ) {
+ if( rs.getFlowControllerDeclaration().getImport() == null ) {
+ System.out.println("........................ What!!!!");
+ }
+
+ // the fc is either imported by name or a location
+ fcDescriptor = rs.getFlowControllerDeclaration().getImport().getName();
+ if ( fcDescriptor == null ) {
+ fcDescriptor = rs.getFlowControllerDeclaration().getImport().getLocation();
+
+ fcDescriptor = UimaASUtils.fixPath(rs.getSourceUrlString(), fcDescriptor);
+ } else {
+ throw new RuntimeException("*** Internal error - Invalid flowController specification - descriptor:"+rs.getFlowControllerDeclaration().getSourceUrlString());
+ }
+ } else {
+ FlowConstraints fc = rs.getAnalysisEngineMetaData().getFlowConstraints();
+ if (FlowControllerType.FIXED.name().equals(fc.getFlowConstraintsType()) ) {
+ fcDescriptor = ("*importByName:org.apache.uima.flow.FixedFlowController");
+ }
+ }
+ ((AggregateAnalysisEngineController_impl)aggregateController).setFlowControllerDescriptor(fcDescriptor);
+
+ }
@Override
public boolean isPrimitive() {
return false;
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/AnalysisEngineComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/AnalysisEngineComponent.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/component/AnalysisEngineComponent.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/AnalysisEngineComponent.java Thu Nov 29 17:23:00 2018
@@ -3,12 +3,15 @@ package org.apache.uima.aae.component;
import java.util.ArrayList;
import java.util.List;
+import org.apache.uima.aae.AsynchAECasManager_impl;
+import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.controller.AnalysisEngineController;
import org.apache.uima.aae.controller.DelegateEndpoint;
import org.apache.uima.aae.controller.Endpoint;
import org.apache.uima.aae.controller.DelegateEndpoint.Builder;
import org.apache.uima.resource.ResourceSpecifier;
-public abstract class AnalysisEngineComponent {
+public abstract class AnalysisEngineComponent { // implements ComponentVisitor {
protected List<AnalysisEngineComponent> delegateList = new ArrayList<>();
private boolean isCasMultiplier = false;
@@ -21,17 +24,27 @@ public abstract class AnalysisEngineComp
private int requestThreadPoolSize=1;
private int responseThreadPoolSize=1;
private Endpoint endpoint = null;
-
+ private boolean visited = false;
public abstract Object getConnector();
+ public abstract AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+ AsynchAECasManager_impl casManager, InProcessCache cache ) throws Exception;
+// public abstract AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+// String delegateKey, String resourceSpecifier, AsynchAECasManager_impl casManager,InProcessCache cache, int i, int scaleout ) throws Exception;
+
public AnalysisEngineComponent() {}
public AnalysisEngineComponent(String key, ResourceSpecifier rs) {
componentKey = key;
resourceSpecifier = rs;
}
-
+ public void setVisited() {
+ visited = true;
+ }
+ public boolean visited() {
+ return visited;
+ }
public CasMultiplierNature getCasMultiplierNature() {
return casMultiplier;
}
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/ComponentVisitor.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/ComponentVisitor.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/ComponentVisitor.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/ComponentVisitor.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,7 @@
+package org.apache.uima.aae.component;
+
+import org.apache.uima.aae.controller.AnalysisEngineController;
+
+public interface ComponentVisitor {
+ public AnalysisEngineController visit(AnalysisEngineController parent) throws Exception;
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/ComponentVisitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/PrimitiveAnalysisEngineComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/PrimitiveAnalysisEngineComponent.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/component/PrimitiveAnalysisEngineComponent.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/PrimitiveAnalysisEngineComponent.java Thu Nov 29 17:23:00 2018
@@ -1,5 +1,9 @@
package org.apache.uima.aae.component;
+import org.apache.uima.aae.AsynchAECasManager_impl;
+import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl;
import org.apache.uima.aae.definition.connectors.basic.BasicConnector;
import org.apache.uima.resource.ResourceSpecifier;
@@ -38,5 +42,15 @@ public class PrimitiveAnalysisEngineComp
public Object getConnector() {
return new BasicConnector();
}
+// @Override
+// public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+// AsynchAECasManager_impl casManager, InProcessCache cache ) throws Exception {
+// throw new UnsupportedOperationException("This method should only be called on AggregateAnalysisEngineComponent");
+// }
+ @Override
+ public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+ AsynchAECasManager_impl casManager, InProcessCache cache ) throws Exception {
+ return new PrimitiveAnalysisEngineController_impl(parentController, getKey(), getResourceSpecifier().getSourceUrlString(),casManager, cache, 10, getScaleout());
+ }
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/TopLevelServiceComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/TopLevelServiceComponent.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/component/TopLevelServiceComponent.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/component/TopLevelServiceComponent.java Thu Nov 29 17:23:00 2018
@@ -5,6 +5,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import org.apache.uima.aae.AsynchAECasManager_impl;
+import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.controller.AnalysisEngineController;
import org.apache.uima.aae.controller.DelegateEndpoint;
import org.apache.uima.aae.controller.Endpoint;
import org.apache.uima.resourceSpecifier.AnalysisEngineDeploymentDescriptionDocument;
@@ -202,7 +205,10 @@ public class TopLevelServiceComponent ex
}
}
-
+ @Override
+ public List<AnalysisEngineComponent> getChildren() {
+ return decoratedComponent.getChildren();
+ }
public String getName() {
return name;
}
@@ -245,4 +251,16 @@ public class TopLevelServiceComponent ex
}
+
+ @Override
+ public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+ AsynchAECasManager_impl casManager, InProcessCache cache) throws Exception {
+ return decoratedComponent.newAnalysisEngineController(parentController, casManager, cache);
+ }
+// @Override
+// public AnalysisEngineController newAnalysisEngineController(AnalysisEngineController parentController,
+// String delegateKey, String resourceSpecifier, AsynchAECasManager_impl casManager, InProcessCache cache,
+// int i, int scaleout) throws Exception {
+// return decoratedComponent.newAnalysisEngineController(parentController, delegateKey, resourceSpecifier, casManager, cache, i, scaleout);
+// }
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.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/controller/AggregateAnalysisEngineController_impl.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java Thu Nov 29 17:23:00 2018
@@ -29,6 +29,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
@@ -46,7 +47,11 @@ import org.apache.uima.aae.InProcessCach
import org.apache.uima.aae.InputChannel;
import org.apache.uima.aae.UIMAEE_Constants;
import org.apache.uima.aae.UimaClassFactory;
+import org.apache.uima.aae.client.UimaAsynchronousEngine.Transport;
import org.apache.uima.aae.controller.LocalCache.CasStateEntry;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
import org.apache.uima.aae.delegate.ControllerDelegate;
import org.apache.uima.aae.delegate.Delegate;
import org.apache.uima.aae.error.AsynchAEException;
@@ -62,6 +67,9 @@ import org.apache.uima.aae.jmx.ServiceEr
import org.apache.uima.aae.jmx.ServiceInfo;
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.UimaAsOrigin;
import org.apache.uima.aae.monitor.Monitor;
import org.apache.uima.aae.monitor.statistics.LongNumericStatistic;
import org.apache.uima.aae.monitor.statistics.Statistic;
@@ -443,9 +451,11 @@ implements
}
}
}
+
// Reply to a client once for each CPC request. doSendCpcReply is volatile thus
// no need to synchronize it
if (doSendCpcReply) {
+ System.out.println("All Delegates Processes CPC - Replying to Client");
sendCpcReply(cEndpoint);
doSendCpcReply = false; // reset for the next CPC
}
@@ -485,8 +495,30 @@ implements
getOutputChannel().sendReply(AsynchAEMessage.CollectionProcessComplete, aClientEndpoint, null, false);
}
*/
- getOutputChannel(aClientEndpoint).sendReply(AsynchAEMessage.CollectionProcessComplete, aClientEndpoint, null, false);
- clearStats();
+
+ if ( aClientEndpoint.getServerURI().equalsIgnoreCase(Transport.Java.name())) {
+ String serviceUri =
+ new StringBuilder(EndpointType.Direct.getName())
+ .append(aClientEndpoint.getMessageOrigin().getName()) //getDelegateKey())
+ .append(":").append(ConsumerType.CpcResponse.name()).toString();
+
+ try {
+ UimaAsEndpoint e = getEndpoint(EndpointType.Direct);
+ MessageContext cpcResponse =
+ e.newMessageBuilder().
+ newCpCReplyMessage(e.getOrigin()).
+ withPayload(AsynchAEMessage.None).
+ build();
+ e.dispatch(cpcResponse, serviceUri);
+
+ } catch( Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ getOutputChannel(aClientEndpoint).sendReply(AsynchAEMessage.CollectionProcessComplete, aClientEndpoint, null, false);
+
+ }
+ clearStats();
}
@@ -580,42 +612,58 @@ implements
}
}
} else {
- Set<?> set = destinationMap.entrySet();
- for (Iterator<?> it = set.iterator(); it.hasNext();) {
- Map.Entry<String, Endpoint> entry = (Map.Entry) it.next();
- Endpoint endpoint = (Endpoint) entry.getValue();
- /*
- if (endpoint != null && endpoint.getStatus() == Endpoint.OK) {
-
- if (!endpoint.isRemote()) {
- try {
- UimaTransport transport = getTransport(endpoint.getEndpoint());
- UimaMessage message = transport
- .produceMessage(AsynchAEMessage.CollectionProcessComplete,
- AsynchAEMessage.Request, getName());
- // Send reply back to the client. Use internal (non-jms) transport
- transport.getUimaMessageDispatcher(endpoint.getEndpoint()).dispatch(message);
- } catch (Exception e) {
- if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
- UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, CLASS_NAME.getName(),
- "collectionProcessComplete", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMAEE_service_exception_WARNING", getComponentName());
-
- UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),
- "collectionProcessComplete", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
- "UIMAEE_exception__WARNING", e);
+ Set<?> set = destinationMap.entrySet();
+ for (Iterator<?> it = set.iterator(); it.hasNext();) {
+ Map.Entry<String, Endpoint> entry = (Map.Entry) it.next();
+ Endpoint endpoint = (Endpoint) entry.getValue();
+ /*
+ if (endpoint != null && endpoint.getStatus() == Endpoint.OK) {
+
+ if (!endpoint.isRemote()) {
+ try {
+ UimaTransport transport = getTransport(endpoint.getEndpoint());
+ UimaMessage message = transport
+ .produceMessage(AsynchAEMessage.CollectionProcessComplete,
+ AsynchAEMessage.Request, getName());
+ // Send reply back to the client. Use internal (non-jms) transport
+ transport.getUimaMessageDispatcher(endpoint.getEndpoint()).dispatch(message);
+ } catch (Exception e) {
+ if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
+ UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, CLASS_NAME.getName(),
+ "collectionProcessComplete", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMAEE_service_exception_WARNING", getComponentName());
+
+ UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),
+ "collectionProcessComplete", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
+ "UIMAEE_exception__WARNING", e);
+ }
}
+ } else {
+ getOutputChannel().sendRequest(AsynchAEMessage.CollectionProcessComplete, null, endpoint);
+ endpoint.startCollectionProcessCompleteTimer();
}
+ }
+ */
+ if ( endpoint.getServerURI().equalsIgnoreCase(Transport.Java.name())) {
+ String serviceUri =
+ new StringBuilder(EndpointType.Direct.getName())
+ .append(endpoint.getDelegateKey())
+ .append(":").append(ConsumerType.CpcRequest.name()).toString();
+
+ try {
+ UimaAsEndpoint e = getEndpoint(EndpointType.Direct);
+ MessageContext cpcRequest =
+ e.newMessageBuilder().newCpCRequestMessage(e.getOrigin()).build();
+ e.dispatch(cpcRequest, serviceUri);
+
+ } catch( Exception e) {
+ e.printStackTrace();
+ }
} else {
- getOutputChannel().sendRequest(AsynchAEMessage.CollectionProcessComplete, null, endpoint);
- endpoint.startCollectionProcessCompleteTimer();
+ getOutputChannel(endpoint).sendRequest(AsynchAEMessage.CollectionProcessComplete, null, endpoint);
+ endpoint.startCollectionProcessCompleteTimer();
}
}
- */
- getOutputChannel(endpoint).sendRequest(AsynchAEMessage.CollectionProcessComplete, null, endpoint);
- endpoint.startCollectionProcessCompleteTimer();
-
- }
}
}
@@ -1617,7 +1665,22 @@ implements
delegateEndpoints[i].initialize();
delegateEndpoints[i].setController(this);
delegateEndpoints[i].setWaitingForResponse(true);
- getOutputChannel(ENDPOINT_TYPE.DIRECT).sendRequest(AsynchAEMessage.GetMeta, null, delegateEndpoints[i]);
+ String serviceUri =
+ new StringBuilder(EndpointType.Direct.getName())
+ .append(delegateEndpoints[i].getDelegateKey())
+ .append(":").append(ConsumerType.GetMetaRequest.name()).toString();
+
+ try {
+ UimaAsEndpoint e = getEndpoint(EndpointType.Direct);
+ MessageContext getMetaRequest =
+ e.newMessageBuilder().newGetMetaRequestMessage(e.getOrigin()).build();
+ e.dispatch(getMetaRequest, serviceUri);
+
+ } catch( Exception e) {
+ e.printStackTrace();
+ }
+
+// getOutputChannel(ENDPOINT_TYPE.DIRECT).sendRequest(AsynchAEMessage.GetMeta, null, delegateEndpoints[i]);
/*
try {
UimaMessage message = getTransport(delegateEndpoints[i].getEndpoint()).produceMessage(
@@ -2317,7 +2380,33 @@ implements
}
// Send CAS to a given reply endpoint
// sendVMMessage(mType, replyEndpoint, cacheEntry);
- getOutputChannel(replyEndpoint).sendReply(casStateEntry, replyEndpoint);
+ if ( replyEndpoint.getServerURI().equalsIgnoreCase(Transport.Java.name())) {
+ StringBuilder sb =
+ new StringBuilder();
+ if ( replyEndpoint.getMessageOrigin().getName().startsWith(EndpointType.Direct.getName())) {
+ sb.append( replyEndpoint.getMessageOrigin().getName());
+ } else {
+ sb.append(EndpointType.Direct.getName()).append(replyEndpoint.getMessageOrigin().getName());
+ }
+ sb.append(":").append(ConsumerType.ProcessCASResponse.name());
+
+ UimaAsEndpoint serviceEndpoint =
+ getEndpoint(EndpointType.Direct);
+ // getEndpoint(anEndpoint.getMessageOrigin().getType());
+
+ MessageContext reply = serviceEndpoint.newMessageBuilder()
+ .newProcessCASReplyMessage(serviceEndpoint.getOrigin())
+ .withSenderKey(replyEndpoint.getDelegateKey())
+ .withReplyDestination(replyEndpoint.getReplyDestination())
+ .withCasReferenceId(casStateEntry.getCasReferenceId())
+ .withPayload(AsynchAEMessage.CASRefID)
+ .build();
+ // dispatch() will create a Producer for a given reply destination
+ // and cache it for future use.
+ serviceEndpoint.dispatch(reply, sb.toString());
+ } else {
+ getOutputChannel(replyEndpoint).sendReply(casStateEntry, replyEndpoint);
+ }
}
}
@@ -2572,8 +2661,34 @@ implements
private void dispatch(CacheEntry entry, Endpoint anEndpoint) throws AsynchAEException {
if (!anEndpoint.isRemote()) {
- getOutputChannel(ENDPOINT_TYPE.DIRECT).sendRequest(AsynchAEMessage.Process, entry.getCasReferenceId(), anEndpoint);
-/*
+ // getOutputChannel(ENDPOINT_TYPE.DIRECT).sendRequest(AsynchAEMessage.Process, entry.getCasReferenceId(), anEndpoint);
+ UimaAsEndpoint endpoint = getEndpoint(EndpointType.Direct);
+ try {
+ Origin orig = endpoint.getOrigin();
+ Origin o = getOrigin();
+ if ( Objects.isNull(o.getName()) || o.getName().isEmpty() ) {
+ o = new UimaAsOrigin(getComponentName(), EndpointType.Direct);
+ }
+ MessageContext message =
+ endpoint.newMessageBuilder().newProcessCASRequestMessage(o)
+ .withPayload(AsynchAEMessage.CASRefID)
+ .withCasReferenceId(entry.getCasReferenceId())
+ .build();
+
+ StringBuilder serviceUri =
+ new StringBuilder(EndpointType.Direct.getName()).
+ append(anEndpoint.getDelegateKey()).
+ append(":").append(ConsumerType.ProcessCASRequest.name());
+
+ endpoint.dispatch(message, serviceUri.toString());
+
+
+ } catch( Exception ee) {
+ throw new AsynchAEException(ee);
+ }
+
+
+ /*
try {
UimaTransport transport = getTransport(anEndpoint.getEndpoint());
UimaMessage message = transport.produceMessage(AsynchAEMessage.Process,
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.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/controller/AnalysisEngineController.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java Thu Nov 29 17:23:00 2018
@@ -22,17 +22,17 @@ package org.apache.uima.aae.controller;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ThreadFactory;
import org.apache.uima.UimaContext;
import org.apache.uima.aae.AsynchAECasManager;
import org.apache.uima.aae.InProcessCache;
import org.apache.uima.aae.InputChannel;
import org.apache.uima.aae.OutputChannel;
-import org.apache.uima.aae.UimaAsContext;
import org.apache.uima.aae.UimaEEAdminContext;
import org.apache.uima.aae.controller.BaseAnalysisEngineController.ENDPOINT_TYPE;
import org.apache.uima.aae.controller.BaseAnalysisEngineController.ServiceState;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
import org.apache.uima.aae.error.AsynchAEException;
import org.apache.uima.aae.error.ErrorContext;
import org.apache.uima.aae.error.ErrorHandlerChain;
@@ -43,8 +43,6 @@ import org.apache.uima.aae.jmx.ServicePe
import org.apache.uima.aae.message.Origin;
import org.apache.uima.aae.monitor.Monitor;
import org.apache.uima.aae.spi.transport.UimaMessageListener;
-import org.apache.uima.aae.spi.transport.UimaTransport;
-import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.as.client.DirectInputChannel;
import org.apache.uima.as.client.Listener;
import org.apache.uima.cas.CAS;
@@ -58,6 +56,12 @@ public interface AnalysisEngineControlle
public Origin getOrigin();
+ public void addEndpoint(UimaAsEndpoint endpoint);
+
+ public UimaAsEndpoint getEndpoint(EndpointType type);
+
+ public void start() throws Exception;
+
public void sendMetadata(Endpoint anEndpoint) throws AsynchAEException;
public ControllerLatch getControllerLatch();
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.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/controller/BaseAnalysisEngineController.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java Thu Nov 29 17:23:00 2018
@@ -29,6 +29,7 @@ import java.net.URLClassLoader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.EnumMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -63,6 +64,9 @@ import org.apache.uima.aae.UimaEEAdminCo
import org.apache.uima.aae.VersionCompatibilityChecker;
import org.apache.uima.aae.WarmUpDataProvider;
import org.apache.uima.aae.controller.LocalCache.CasStateEntry;
+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.delegate.Delegate;
import org.apache.uima.aae.error.AsynchAEException;
import org.apache.uima.aae.error.ErrorContext;
@@ -78,6 +82,7 @@ import org.apache.uima.aae.jmx.ServiceEr
import org.apache.uima.aae.jmx.ServiceInfo;
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.UimaAsOrigin;
import org.apache.uima.aae.monitor.Monitor;
@@ -286,6 +291,11 @@ public abstract class BaseAnalysisEngine
protected abstract void doWarmUp(CAS cas, String casReferenceId) throws Exception;
+ private Map<EndpointType, UimaAsEndpoint> endpoints =
+ new EnumMap<>(EndpointType.class);
+
+
+
public BaseAnalysisEngineController() {
origin = new UimaAsOrigin("");
}
@@ -519,6 +529,10 @@ public abstract class BaseAnalysisEngine
}
}
}
+ if (!registeredWithJMXServer) {
+ registeredWithJMXServer = true;
+ registerServiceWithJMX(jmxContext, false);
+ }
// Create an instance of ControllerMBean and register it with JMX Server.
// This bean exposes service lifecycle APIs to enable remote stop
@@ -528,6 +542,18 @@ public abstract class BaseAnalysisEngine
registerWithAgent(controller, jmxName);
}
}
+
+ public void addEndpoint(UimaAsEndpoint endpoint) {
+ endpoints.putIfAbsent(endpoint.getType(), endpoint);
+ }
+ public UimaAsEndpoint getEndpoint(EndpointType type) {
+ return endpoints.get(type);
+ }
+ public void start() throws Exception {
+ for( Entry<EndpointType, UimaAsEndpoint> entry : endpoints.entrySet()) {
+ entry.getValue().start();
+ }
+ }
public UimaContext getUimaContext() {
return uimaContext;
}
@@ -978,6 +1004,8 @@ public abstract class BaseAnalysisEngine
name = jmxManagement.getJmxDomain() + key_value_list + ",name=" + thisComponentName + "_"
+ serviceErrors.getLabel();
registerWithAgent(serviceErrors, name);
+
+
}
protected void cleanUp() throws Exception {
@@ -3205,7 +3233,20 @@ public abstract class BaseAnalysisEngine
getOutputChannel().sendReply(metadata, anEndpoint, true);
}
*/
- getOutputChannel(anEndpoint).sendReply(metadata, anEndpoint, true);
+ if ( anEndpoint.getServerURI().equals("java")) {
+ UimaAsEndpoint endpoint = getEndpoint(EndpointType.Direct);
+
+ MessageContext getMetaResponseMessage = endpoint.newMessageBuilder()
+ .newGetMetaReplyMessage(endpoint.getOrigin())
+ .withPayload(AsynchAEMessage.Metadata)
+ .withReplyDestination(anEndpoint.getReplyDestination())
+ .withMetadata(metadata)
+ .build();
+ StringBuilder sb = new StringBuilder(anEndpoint.getMessageOrigin().getName()).append(":").append(ConsumerType.GetMetaResponse.name());
+ endpoint.dispatch(getMetaResponseMessage, sb.toString() );
+ } else {
+ getOutputChannel(anEndpoint).sendReply(metadata, anEndpoint, true);
+ }
}
} catch (Exception e) {
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAeInitializer.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAeInitializer.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAeInitializer.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAeInitializer.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,56 @@
+package org.apache.uima.aae.controller;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.uima.aae.UimaAsThreadFactory;
+import org.apache.uima.aae.definition.connectors.Initializer;
+import org.apache.uima.aae.definition.connectors.ListenerCallback;
+import org.apache.uima.aae.spi.transport.vm.UimaVmQueue;
+
+public class PrimitiveAeInitializer implements Initializer {
+
+ private final PrimitiveAnalysisEngineController controller;
+ private final int scaleout;
+ private final CountDownLatch latchToCountNumberOfInitedThreads;
+ private final CountDownLatch latchToCountNumberOfTerminatedThreads;
+ private ExecutorService executor;
+
+ public PrimitiveAeInitializer(PrimitiveAnalysisEngineController controller, int scaleout) {
+ this.controller = controller;
+ this.scaleout = scaleout;
+ latchToCountNumberOfInitedThreads = new CountDownLatch(scaleout);
+ latchToCountNumberOfTerminatedThreads = new CountDownLatch(scaleout);
+
+ }
+
+ @Override
+ public ExecutorService initialize(ListenerCallback callback) throws Exception {
+ ThreadGroup threadGroup = new ThreadGroup("VmThreadGroup" + 1 + "_" + controller.getComponentName());
+ executor = new ThreadPoolExecutor(scaleout, scaleout, Long.MAX_VALUE, TimeUnit.DAYS, new UimaVmQueue());
+ UimaAsThreadFactory tf = null;
+
+// ListenerCallback callback =
+// new DirectListenerCallback(this);
+
+ tf = new UimaAsThreadFactory().
+ withCallback(callback).
+ withThreadGroup(threadGroup).
+ withPrimitiveController(controller).
+ withTerminatedThreadsLatch(latchToCountNumberOfTerminatedThreads).
+ withInitedThreadsLatch(latchToCountNumberOfInitedThreads);
+ tf.setDaemon(true);
+ ((ThreadPoolExecutor)executor).setThreadFactory(tf);
+ ((ThreadPoolExecutor)executor).prestartAllCoreThreads();
+ latchToCountNumberOfInitedThreads.await();
+ if ( callback.failedInitialization() ) {
+ throw callback.getException();
+ }
+ System.out.println("Executor Started - All Process Threads Initialized");
+
+ return executor;
+ }
+
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAeInitializer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.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/controller/PrimitiveAnalysisEngineController_impl.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java Thu Nov 29 17:23:00 2018
@@ -31,6 +31,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.CountDownLatch;
@@ -45,6 +46,9 @@ import org.apache.uima.aae.InProcessCach
import org.apache.uima.aae.UIMAEE_Constants;
import org.apache.uima.aae.UimaClassFactory;
import org.apache.uima.aae.controller.LocalCache.CasStateEntry;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
import org.apache.uima.aae.delegate.Delegate;
import org.apache.uima.aae.error.AsynchAEException;
import org.apache.uima.aae.error.ErrorContext;
@@ -54,6 +58,7 @@ import org.apache.uima.aae.jmx.Primitive
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.UimaAsMessage;
import org.apache.uima.aae.monitor.Monitor;
import org.apache.uima.aae.monitor.statistics.AnalysisEnginePerformanceMetrics;
import org.apache.uima.aae.spi.transport.UimaMessage;
@@ -541,13 +546,9 @@ public class PrimitiveAnalysisEngineCont
localCache.dumpContents();
try {
String delegateKey = getKey();
- System.out.println("...... "+delegateKey+".collectionProcessComplete() - calling checkout instance");;
ae = aeInstancePool.checkout();
- System.out.println("...... "+delegateKey+".collectionProcessComplete() - got instance");;
if (ae != null) {
ae.collectionProcessComplete();
- System.out.println("...... "+delegateKey+".collectionProcessComplete() - ae.CPC() returned");;
-
}
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.FINEST)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.FINEST, getClass().getName(),
@@ -567,10 +568,31 @@ public class PrimitiveAnalysisEngineCont
}
*/
- System.out.println("...... "+delegateKey+".collectionProcessComplete() - trying to send CPC reply");;
+
+ if ( "java".equals(anEndpoint.getServerURI()) ) {
+ UimaAsEndpoint serviceEndpoint =
+ getEndpoint(anEndpoint.getMessageOrigin().getType());
+
+ MessageContext reply = serviceEndpoint.newMessageBuilder()
+ .newCpCReplyMessage(serviceEndpoint.getOrigin())
+ // add this service delegate key
+ .withSenderKey(anEndpoint.getDelegateKey())
+ // add destination for this reply
+ .withReplyDestination(anEndpoint.getReplyDestination())
+ .withPayload(AsynchAEMessage.None)
+ .build();
+ // dispatch() will create a Producer for a given reply destination
+ // and cache it for future use.
+ serviceEndpoint.dispatch(reply, anEndpoint.getMessageOrigin().getName());
+ } else {
+ getOutputChannel(anEndpoint).sendReply(AsynchAEMessage.CollectionProcessComplete, anEndpoint, null, false);
+ }
+
+
- getOutputChannel(anEndpoint).sendReply(AsynchAEMessage.CollectionProcessComplete, anEndpoint, null, false);
- System.out.println("...... "+delegateKey+".collectionProcessComplete() - sent CPC reply");;
+
+
+ System.out.println("...... "+delegateKey+".collectionProcessComplete() - sent CPC reply");;
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.FINE)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.FINE, getClass().getName(),
@@ -1031,8 +1053,35 @@ public class PrimitiveAnalysisEngineCont
// Send generated CAS to the client
if (!stopped) {
- getOutputChannel(anEndpoint).sendReply(childCasStateEntry, anEndpoint);
-
+ //getOutputChannel(anEndpoint).sendReply(childCasStateEntry, anEndpoint);
+ StringBuilder sb =
+ new StringBuilder();
+ if ( anEndpoint.getMessageOrigin().getName().startsWith(EndpointType.Direct.getName())) {
+ sb.append( anEndpoint.getMessageOrigin().getName());
+ } else {
+ sb.append("direct:").append(anEndpoint.getMessageOrigin().getName());
+ }
+ sb.append(":").append(ConsumerType.ProcessCASRequest.name());
+
+ UimaAsEndpoint serviceEndpoint =
+ getEndpoint(anEndpoint.getMessageOrigin().getType());
+
+ MessageContext reply = serviceEndpoint.newMessageBuilder()
+ .newProcessCASRequestMessage(serviceEndpoint.getOrigin())
+ .withSenderKey(anEndpoint.getDelegateKey())
+ .withReplyDestination(anEndpoint.getReplyDestination())
+ .withCasReferenceId(childCasStateEntry.getCasReferenceId())
+ .withParentCasReferenceId(aCasReferenceId)
+ .withSequenceNo(childCasStateEntry.getSequenceNumber())
+ .withPayload(AsynchAEMessage.CASRefID)
+ .build();
+ // dispatch() will create a Producer for a given reply destination
+ // and cache it for future use.
+ serviceEndpoint.dispatch(reply, sb.toString());
+
+
+
+
// Check for delivery failure. The client may have terminated while an input CAS was being processed
if ( childCasStateEntry.deliveryToClientFailed() ) {
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.INFO)) {
@@ -1177,7 +1226,36 @@ public class PrimitiveAnalysisEngineCont
if (!stopped && !clientUnreachable ) {
// getOutputChannel(anEndpoint).sendReply(getInProcessCache().getCacheEntryForCAS(aCasReferenceId), anEndpoint);
- getOutputChannel(anEndpoint).sendReply(getLocalCache().lookupEntry(aCasReferenceId), anEndpoint);
+
+
+/* JC 10/24/18
+ getOutputChannel(anEndpoint).
+ sendReply(getLocalCache().lookupEntry(aCasReferenceId), anEndpoint);
+ */
+
+ StringBuilder sb =
+ new StringBuilder();
+ if ( anEndpoint.getMessageOrigin().getName().startsWith(EndpointType.Direct.getName())) {
+ sb.append( anEndpoint.getMessageOrigin().getName());
+ } else {
+ sb.append(EndpointType.Direct.getName()).append(anEndpoint.getMessageOrigin().getName());
+ }
+ sb.append(":").append(ConsumerType.ProcessCASResponse.name());
+
+ UimaAsEndpoint serviceEndpoint =
+ getEndpoint(EndpointType.Direct);
+ // getEndpoint(anEndpoint.getMessageOrigin().getType());
+
+ MessageContext reply = serviceEndpoint.newMessageBuilder()
+ .newProcessCASReplyMessage(serviceEndpoint.getOrigin())
+ .withSenderKey(anEndpoint.getDelegateKey())
+ .withReplyDestination(anEndpoint.getReplyDestination())
+ .withCasReferenceId(aCasReferenceId)
+ .withPayload(AsynchAEMessage.CASRefID)
+ .build();
+ // dispatch() will create a Producer for a given reply destination
+ // and cache it for future use.
+ serviceEndpoint.dispatch(reply, sb.toString());
}
inputCASReturned = true;
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Endpoints.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Endpoints.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Endpoints.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Endpoints.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,35 @@
+package org.apache.uima.aae.definition.connectors;
+
+import java.lang.reflect.Constructor;
+
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
+import org.apache.uima.aae.message.MessageProcessor;
+import org.apache.uima.aae.service.command.UimaAsMessageProcessor;
+
+public class Endpoints {
+
+ public static UimaAsEndpoint newEndpoint(EndpointType type, String name) throws Exception {
+ return newEndpoint(type, name, null);
+ }
+
+ public static UimaAsEndpoint newEndpoint(EndpointType type, String name, MessageProcessor processor) throws Exception {
+ UimaAsEndpoint endpoint=null;
+ Class<?> clz ;
+ switch(type) {
+ case Direct:
+ clz = Class.forName("org.apache.uima.as.connectors.direct.DirectUimaAsEndpoint");
+ Constructor<?> ctor = clz.getConstructor(new Class[] {MessageProcessor.class, String.class});
+ endpoint = (UimaAsEndpoint)ctor.newInstance(new Object[] {processor,name});
+ break;
+
+ case JMS:
+
+ break;
+
+ default:
+
+ }
+
+ return endpoint;
+ }
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Endpoints.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Initializer.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Initializer.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Initializer.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Initializer.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,7 @@
+package org.apache.uima.aae.definition.connectors;
+
+import java.util.concurrent.ExecutorService;
+
+public interface Initializer {
+ public ExecutorService initialize(ListenerCallback callback) throws Exception;
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/Initializer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsConsumer.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsConsumer.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/definition/connectors/UimaAsConsumer.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsConsumer.java Thu Nov 29 17:23:00 2018
@@ -2,16 +2,21 @@ package org.apache.uima.aae.definition.c
import org.apache.uima.aae.Lifecycle;
import org.apache.uima.aae.controller.AnalysisEngineController;
+import org.apache.uima.aae.message.Target;
import org.apache.uima.as.client.DirectMessage;
public interface UimaAsConsumer extends Lifecycle {
- public enum ConsumerType {GetMeta,ProcessCAS,Cpc,FreeCAS,Reply,Info};
+ public enum ConsumerType {GetMetaRequest,GetMetaResponse,ProcessCASRequest,ProcessCASResponse, CpcRequest, CpcResponse, FreeCASRequest, Reply, Info};
public void initialize() throws Exception;
public void initialize(AnalysisEngineController controller) throws Exception;
-
+ public void setInitializer(Initializer initializer);
+ public int getConsumerCount();
public void consume(DirectMessage message) throws Exception;
public ConsumerType getType();
+ public void delegateTo(UimaAsConsumer delegate);
+ public Target getTarget();
+
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsEndpoint.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsEndpoint.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/definition/connectors/UimaAsEndpoint.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsEndpoint.java Thu Nov 29 17:23:00 2018
@@ -1,15 +1,41 @@
package org.apache.uima.aae.definition.connectors;
+import java.util.Map;
+
import org.apache.uima.aae.Lifecycle;
import org.apache.uima.aae.controller.Endpoint;
import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
+import org.apache.uima.aae.message.MessageBuilder;
import org.apache.uima.aae.message.MessageContext;
+import org.apache.uima.aae.message.Origin;
+import org.apache.uima.aae.message.Target;
public interface UimaAsEndpoint extends Lifecycle {
- public UimaAsProducer createProducer(String targetUri) throws Exception;
- public UimaAsProducer createProducer(UimaAsConsumer consumer, String delegateKey) throws Exception;
- public UimaAsConsumer createConsumer(String targetUri, ConsumerType type, int consumerThreadCount) throws Exception;
- public void dispatch(MessageContext messageContext) throws Exception;
+ public enum EndpointType {
+ Direct("direct:"),
+ JMS("jms:"),
+ NA("na:");
+
+ private String name;
+
+ private EndpointType(String aName) {
+ name = aName;
+ }
+
+ public String getName() {
+ return name;
+ }
+ };
+ public MessageBuilder newMessageBuilder();
+ public UimaAsProducer createProducer(Origin origin) throws Exception;
+ //public UimaAsProducer createProducer(UimaAsConsumer consumer, Origin origin) throws Exception;
+ public UimaAsProducer createProducer(UimaAsConsumer consumer, String serviceUri) throws Exception;
+// public UimaAsConsumer createConsumer(String targetUri, ConsumerType type, int consumerThreadCount) throws Exception;
+ public UimaAsConsumer createConsumer(ConsumerType type, int consumerThreadCount) throws Exception;
+ //public void dispatch(MessageContext messageContext) throws Exception;
+ public void dispatch(MessageContext messageContext, String serviceUri) throws Exception;
public UimaAsConsumer getConsumer(String targetUri, ConsumerType type);
- public MessageContext createMessage(int command, int messageType, Endpoint endpoint);
+ public EndpointType getType();
+ public Origin getOrigin();
+ public Map<Target,UimaAsConsumer> getConsumers();
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsProducer.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsProducer.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/definition/connectors/UimaAsProducer.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/definition/connectors/UimaAsProducer.java Thu Nov 29 17:23:00 2018
@@ -1,8 +1,8 @@
package org.apache.uima.aae.definition.connectors;
import org.apache.uima.aae.Lifecycle;
-import org.apache.uima.aae.message.MessageContext;
-import org.apache.uima.aae.message.UimaAsMessage;
+import org.apache.uima.aae.definition.connectors.UimaAsConsumer.ConsumerType;
+import org.apache.uima.aae.message.Target;
import org.apache.uima.as.client.DirectMessage;
public interface UimaAsProducer extends Lifecycle {
@@ -10,4 +10,9 @@ public interface UimaAsProducer extends
public void dispatch(DirectMessage message) throws Exception;
public void dispatch(DirectMessage message, UimaAsConsumer target) throws Exception;
+ public ConsumerType getType();
+ public boolean requestProducer();
+ public boolean responseProducer();
+
+ public Target getTarget();
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.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/message/AsynchAEMessage.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java Thu Nov 29 17:23:00 2018
@@ -102,6 +102,24 @@ public interface AsynchAEMessage {
// 5/2013 xcas not used as a serialization form
// public static final int XCASPayload = 1004;
+
+ public enum Commands {
+ ProcessInputCASRequest(2000),
+ ProcessChildCASRequest(1002),
+ ProcessInputCASResponse(2001),
+ GetMetaRequest(2001),
+ GetMetaResponse(3001),
+ CollectionProcessCompleteRequest(2002),
+ CollectionProcessCompleteResponse(4001),
+ NoOp(10000);
+
+ private int value;
+ private Commands(int ordinal) {
+ this.value = ordinal;
+ }
+ }
+
+
public static final int None = 1005;
public static final int BinaryPayload = 1006;
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageBuilder.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageBuilder.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageBuilder.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageBuilder.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,24 @@
+package org.apache.uima.aae.message;
+
+import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
+
+public interface MessageBuilder {
+ public MessageBuilder newGetMetaReplyMessage(Origin origin);
+ public MessageBuilder newGetMetaRequestMessage(Origin origin);
+ public MessageBuilder newProcessCASReplyMessage(Origin origin);
+ public MessageBuilder newProcessCASRequestMessage(Origin origin);
+ public MessageBuilder newCpCReplyMessage(Origin origin);
+ public MessageBuilder newCpCRequestMessage(Origin origin);
+ public MessageBuilder newReleaseCASRequestMessage(Origin origin);
+
+ public MessageContext build() throws Exception;
+ public MessageBuilder withSenderKey(String senderKey);
+ public MessageBuilder withReplyDestination(Object replyToDestination);
+ public MessageBuilder withPayload(int payload);
+ public MessageBuilder withId(String id);
+ public MessageBuilder withCasReferenceId(String id);
+ public MessageBuilder withSequenceNo(long sequence);
+ public MessageBuilder withParentCasReferenceId(String id);
+ public MessageBuilder withMetadata(AnalysisEngineMetaData meta);
+
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageProcessor.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageProcessor.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/message/MessageProcessor.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/MessageProcessor.java Thu Nov 29 17:23:00 2018
@@ -1,9 +1,6 @@
package org.apache.uima.aae.message;
-import org.apache.uima.aae.controller.AnalysisEngineController;
-
public interface MessageProcessor {
public void process(MessageContext message) throws Exception;
- public AnalysisEngineController getController();
}
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Origin.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Origin.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/message/Origin.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Origin.java Thu Nov 29 17:23:00 2018
@@ -1,6 +1,9 @@
package org.apache.uima.aae.message;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
+
public interface Origin {
public String getUniqueId();
public String getName();
+ public EndpointType getType();
}
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/ServiceMessageProcessor.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/ServiceMessageProcessor.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/ServiceMessageProcessor.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/ServiceMessageProcessor.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,8 @@
+package org.apache.uima.aae.message;
+
+import org.apache.uima.aae.controller.AnalysisEngineController;
+
+public interface ServiceMessageProcessor extends MessageProcessor {
+ public AnalysisEngineController getController();
+
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/ServiceMessageProcessor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Target.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Target.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Target.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Target.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,9 @@
+package org.apache.uima.aae.message;
+
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
+
+public interface Target {
+ public String getUniqueId();
+ public String getName();
+ public EndpointType getType();
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/Target.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsOrigin.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsOrigin.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/message/UimaAsOrigin.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsOrigin.java Thu Nov 29 17:23:00 2018
@@ -2,14 +2,22 @@ package org.apache.uima.aae.message;
import java.util.UUID;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
+
public class UimaAsOrigin implements Origin {
private final String uniqueId = UUID.randomUUID().toString();
private final String name;
+ private final EndpointType type;
- public UimaAsOrigin(String name) {
+ public UimaAsOrigin(String name, EndpointType type) {
this.name = name;
+ this.type = type;
+ }
+ public UimaAsOrigin(String name) {
+ this(name,EndpointType.NA);
}
+
@Override
public String getUniqueId() {
return uniqueId;
@@ -52,4 +60,9 @@ public class UimaAsOrigin implements Ori
public String toString() {
return "Origin[name: " + name + "] [id:"+uniqueId+"]";
}
+
+ @Override
+ public EndpointType getType() {
+ return type;
+ }
}
Added: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsTarget.java
URL: http://svn.apache.org/viewvc/uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsTarget.java?rev=1847732&view=auto
==============================================================================
--- uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsTarget.java (added)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsTarget.java Thu Nov 29 17:23:00 2018
@@ -0,0 +1,65 @@
+package org.apache.uima.aae.message;
+
+import java.util.UUID;
+
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
+
+public class UimaAsTarget implements Target {
+ private final String uniqueId = UUID.randomUUID().toString();
+ private final String name;
+ private final EndpointType type;
+
+
+
+ public UimaAsTarget(String name, EndpointType type) {
+ this.name = name;
+ this.type = type;
+ }
+ @Override
+ public String getUniqueId() {
+ return uniqueId;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public EndpointType getType() {
+ return type;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ result = prime * result + ((uniqueId == null) ? 0 : uniqueId.hashCode());
+ return result;
+ }
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ UimaAsTarget other = (UimaAsTarget) obj;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (type != other.type)
+ return false;
+ if (uniqueId == null) {
+ if (other.uniqueId != null)
+ return false;
+ } else if (!uniqueId.equals(other.uniqueId))
+ return false;
+ return true;
+ }
+}
Propchange: uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaAsTarget.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/AbstractUimaASService.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/AbstractUimaASService.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/AbstractUimaASService.java (original)
+++ uima/uima-as/branches/uima-as-3/uimaj-as-core/src/main/java/org/apache/uima/aae/service/AbstractUimaASService.java Thu Nov 29 17:23:00 2018
@@ -27,6 +27,8 @@ import org.apache.uima.aae.InProcessCach
import org.apache.uima.aae.controller.AggregateAnalysisEngineController;
import org.apache.uima.aae.controller.AnalysisEngineController;
import org.apache.uima.aae.controller.ControllerStatusListener;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint;
+import org.apache.uima.aae.definition.connectors.UimaAsEndpoint.EndpointType;
import org.apache.uima.analysis_engine.metadata.AnalysisEngineMetaData;
import org.apache.uima.as.client.DirectMessage;
import org.apache.uima.as.client.Listener;
@@ -36,12 +38,18 @@ import org.apache.uima.resource.Resource
public abstract class AbstractUimaASService {
public final String id = UUID.randomUUID().toString();
-
+ protected UimaAsEndpoint endpoint;
protected AnalysisEngineController controller;
protected ResourceSpecifier resourceSpecifier = null;
protected InProcessCache inProcessCache;
protected String name;
+ public AbstractUimaASService() {
+
+ }
+ public AbstractUimaASService(UimaAsEndpoint endpoint) {
+ this.endpoint = endpoint;
+ }
private void startListener(Listener listener, AnalysisEngineController ctrl) {
listener.start();
if (!ctrl.isPrimitive()) {
@@ -67,7 +75,8 @@ public abstract class AbstractUimaASServ
}
- protected void startListeners(AnalysisEngineController ctrl) {
+ protected void startListeners(AnalysisEngineController ctrl) throws Exception {
+ /*
if (ctrl instanceof AggregateAnalysisEngineController) {
for (AnalysisEngineController c : ((AggregateAnalysisEngineController) ctrl).getChildControllerList()) {
if (c instanceof AggregateAnalysisEngineController) {
@@ -80,11 +89,21 @@ public abstract class AbstractUimaASServ
}
}
startListenersFromList(ctrl.getAllListeners(), ctrl);
+ */
+ ctrl.start();
}
-
+ protected UimaAsEndpoint getDirectEndpoint() {
+ return controller.getEndpoint(EndpointType.Direct);
+ }
public void start() throws Exception {
- startListeners(controller);
+ //startListeners(controller);
+ endpoint = controller.getEndpoint(EndpointType.Direct);
+
+ if ( endpoint != null ) {
+ // start consumers
+ endpoint.start();
+ }
// controller.getControllerLatch().release();
// controller.initializeVMTransport(1);
@@ -95,7 +114,6 @@ public abstract class AbstractUimaASServ
controller.addControllerCallbackListener(l);
System.out.println(
".........." + controller.getName() + " AbstractUimaASService.start() ............ 2");
-
if (controller instanceof AggregateAnalysisEngineController) {
System.out
.println("..........." + controller.getName() + " Aggregate sending GetMeta to delegates");