Author: schor
Date: Wed May 15 18:46:39 2013
New Revision: 1483000

URL: http://svn.apache.org/r1483000
Log:
[UIMA-2791] fix logic bug where a remote's binary capability overrode locally 
set xmi serialization (needed for current binary serialization when type 
systems are not identical).  Prepare for compressed binary serialization.  Fix 
one test where wait time was not long enough (on my little laptop).  Rename 
some constants that were the same as some class names, following better Java 
conventions.  Retain remote capabilities for serialization and type systems 
(will be needed for binary compressed serialization).

Modified:
    
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
    
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngine_impl.java
    
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/examples/as/RunRemoteAsyncAE.java
    
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASBasic.java
    
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java
    
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java
    
uima/uima-as/trunk/uimaj-as-camel/src/main/java/org/apache/uima/camel/UimaAsProducer.java
    
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAsynchronousEngine.java
    
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
    
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
    
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
    
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
 Wed May 15 18:46:39 2013
@@ -126,7 +126,7 @@ public class JmsAnalysisEngineServiceStu
     // initialize UIMA EE Engine
     Map appCtxt = new HashMap();
     appCtxt.put(UimaAsynchronousEngine.ServerUri, brokerUrl);
-    appCtxt.put(UimaAsynchronousEngine.Endpoint, endpoint);
+    appCtxt.put(UimaAsynchronousEngine.ENDPOINT, endpoint);
     appCtxt.put(UimaAsynchronousEngine.CasPoolSize, 0);
     if (timeout > 0) {
       appCtxt.put(UimaAsynchronousEngine.Timeout, timeout);

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngine_impl.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngine_impl.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngine_impl.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngine_impl.java
 Wed May 15 18:46:39 2013
@@ -602,7 +602,7 @@ public class BaseUIMAAsynchronousEngine_
     if (!anApplicationContext.containsKey(UimaAsynchronousEngine.ServerUri)) {
       throw new ResourceInitializationException();
     }
-    if (!anApplicationContext.containsKey(UimaAsynchronousEngine.Endpoint)) {
+    if (!anApplicationContext.containsKey(UimaAsynchronousEngine.ENDPOINT)) {
       throw new ResourceInitializationException();
     }
     ResourceManager rm = null;
@@ -620,7 +620,7 @@ public class BaseUIMAAsynchronousEngine_
     asynchManager = new AsynchAECasManager_impl(rm);
 
     brokerURI = (String) 
anApplicationContext.get(UimaAsynchronousEngine.ServerUri);
-    String endpoint = (String) 
anApplicationContext.get(UimaAsynchronousEngine.Endpoint);
+    String endpoint = (String) 
anApplicationContext.get(UimaAsynchronousEngine.ENDPOINT);
     
     //  Check if a placeholder is passed in instead of actual broker URL or 
endpoint. 
     //  The placeholder has the syntax ${placeholderName} and may be imbedded 
in text.

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/examples/as/RunRemoteAsyncAE.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/examples/as/RunRemoteAsyncAE.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/examples/as/RunRemoteAsyncAE.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/examples/as/RunRemoteAsyncAE.java
 Wed May 15 18:46:39 2013
@@ -226,7 +226,7 @@ public class RunRemoteAsyncAE {
     // Add Broker URI
     appCtx.put(UimaAsynchronousEngine.ServerUri, brokerUrl);
     // Add Queue Name
-    appCtx.put(UimaAsynchronousEngine.Endpoint, endpoint);
+    appCtx.put(UimaAsynchronousEngine.ENDPOINT, endpoint);
     // Add timeouts (UIMA EE expects it in milliseconds, but we use seconds on 
the command line)
     appCtx.put(UimaAsynchronousEngine.Timeout, timeout * 1000);
     appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, getmeta_timeout * 1000);

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASBasic.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASBasic.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASBasic.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASBasic.java
 Wed May 15 18:46:39 2013
@@ -192,7 +192,7 @@ public class TestUimaASBasic extends Bas
 
     Map<String, Object> appCtx = new HashMap();
     appCtx.put(UimaAsynchronousEngine.ServerUri, 
String.valueOf(broker.getMasterConnectorURI()));
-    appCtx.put(UimaAsynchronousEngine.Endpoint, "TopLevelTaeQueue");
+    appCtx.put(UimaAsynchronousEngine.ENDPOINT, "TopLevelTaeQueue");
     appCtx.put(UimaAsynchronousEngine.CasPoolSize, Integer.valueOf(4));
     appCtx.put(UimaAsynchronousEngine.ReplyWindow, 15);
     appCtx.put(UimaAsynchronousEngine.Timeout, 0);

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java
 Wed May 15 18:46:39 2013
@@ -2553,7 +2553,7 @@ public class TestUimaASExtended extends 
     
     Map<String, Object> appCtx = new HashMap();
     appCtx.put(UimaAsynchronousEngine.ServerUri, 
broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString());
-    appCtx.put(UimaAsynchronousEngine.Endpoint, "TopLevelTaeQueue");
+    appCtx.put(UimaAsynchronousEngine.ENDPOINT, "TopLevelTaeQueue");
     appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, 0);
     runTest(appCtx, eeUimaEngine, 
broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(),
             "TopLevelTaeQueue", 1, PROCESS_LATCH);    
@@ -2996,7 +2996,7 @@ public class TestUimaASExtended extends 
       // Initialize and run the Test. Wait for a completion and cleanup 
resources.
       Map<String, Object> appCtx = new HashMap();
       appCtx.put(UimaAsynchronousEngine.ServerUri, 
String.valueOf(broker.getMasterConnectorURI()));
-      appCtx.put(UimaAsynchronousEngine.Endpoint, "TopLevelTaeQueue");
+      appCtx.put(UimaAsynchronousEngine.ENDPOINT, "TopLevelTaeQueue");
       appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, 20000);
       runTest(appCtx, eeUimaEngine, 
String.valueOf(broker.getMasterConnectorURI()),
               "TopLevelTaeQueue", 1, EXCEPTION_LATCH);
@@ -3069,7 +3069,7 @@ public class TestUimaASExtended extends 
       // Initialize and run the Test. Wait for a completion and cleanup 
resources.
       Map<String, Object> appCtx = new HashMap();
       appCtx.put(UimaAsynchronousEngine.ServerUri, 
String.valueOf(broker.getMasterConnectorURI()));
-      appCtx.put(UimaAsynchronousEngine.Endpoint, "TopLevelTaeQueue");
+      appCtx.put(UimaAsynchronousEngine.ENDPOINT, "TopLevelTaeQueue");
       appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, 20000);
       runTest(appCtx, eeUimaEngine, 
String.valueOf(broker.getMasterConnectorURI()),
               "TopLevelTaeQueue", 1, PROCESS_LATCH);
@@ -3285,7 +3285,7 @@ public class TestUimaASExtended extends 
 
     Map<String, Object> appCtx = new HashMap();
     appCtx.put(UimaAsynchronousEngine.ServerUri, 
String.valueOf(broker.getMasterConnectorURI()));
-    appCtx.put(UimaAsynchronousEngine.Endpoint, "TopLevelTaeQueue");
+    appCtx.put(UimaAsynchronousEngine.ENDPOINT, "TopLevelTaeQueue");
     appCtx.put(UimaAsynchronousEngine.CasPoolSize, Integer.valueOf(4));
     appCtx.put(UimaAsynchronousEngine.ReplyWindow, 15);
     appCtx.put(UimaAsynchronousEngine.Timeout, 0);

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java
 Wed May 15 18:46:39 2013
@@ -192,7 +192,7 @@ public abstract class BaseTestSupport ex
           int timeout) throws Exception {
     Map<String, Object> appCtx = new HashMap();
     appCtx.put(UimaAsynchronousEngine.ServerUri, aTopLevelServiceBrokerURI);
-    appCtx.put(UimaAsynchronousEngine.Endpoint, aTopLevelServiceQueueName);
+    appCtx.put(UimaAsynchronousEngine.ENDPOINT, aTopLevelServiceQueueName);
     appCtx.put(UimaAsynchronousEngine.CasPoolSize, Integer.valueOf(4));
     appCtx.put(UimaAsynchronousEngine.ReplyWindow, 15);
     appCtx.put(UimaAsynchronousEngine.Timeout, timeout);

Modified: 
uima/uima-as/trunk/uimaj-as-camel/src/main/java/org/apache/uima/camel/UimaAsProducer.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-camel/src/main/java/org/apache/uima/camel/UimaAsProducer.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-camel/src/main/java/org/apache/uima/camel/UimaAsProducer.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-camel/src/main/java/org/apache/uima/camel/UimaAsProducer.java
 Wed May 15 18:46:39 2013
@@ -155,7 +155,7 @@ public UimaAsProducer(String brokerAddre
 
     Map<String, Object> appCtx = new HashMap<String, Object>();
     appCtx.put(UimaAsynchronousEngine.ServerUri, brokerAddress);
-    appCtx.put(UimaAsynchronousEngine.Endpoint, queue);
+    appCtx.put(UimaAsynchronousEngine.ENDPOINT, queue);
     
     if (casPoolSize != null) 
        appCtx.put(UimaAsynchronousEngine.CasPoolSize, casPoolSize.intValue());

Modified: 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAsynchronousEngine.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAsynchronousEngine.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAsynchronousEngine.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/client/UimaAsynchronousEngine.java
 Wed May 15 18:46:39 2013
@@ -96,7 +96,7 @@ public interface UimaAsynchronousEngine 
    * to the Uima AS client in a Map which is an argument in {@link 
#initialize(Map)}. Required. If omitted, the
    * Uima AS client throws {@link ResourceInitializationException}
    */
-  public final String Endpoint = "Endpoint";
+  public final String ENDPOINT = "Endpoint";
 
   /**
    * Size of Cas pool to create. This parameter determines how many CASes can 
be processed concurrently.

Modified: 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
 Wed May 15 18:46:39 2013
@@ -71,6 +71,10 @@ import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.SerialFormat;
 import org.apache.uima.cas.Type;
+import org.apache.uima.cas.admin.CASFactory;
+import org.apache.uima.cas.admin.CASMgr;
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.TypeSystemImpl;
 import org.apache.uima.cas.impl.XmiCasSerializer;
 import org.apache.uima.flow.FinalStep;
 import org.apache.uima.flow.ParallelStep;
@@ -80,6 +84,7 @@ import org.apache.uima.resource.Resource
 import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
 import org.apache.uima.resource.metadata.ResourceMetaData;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.Level;
 import org.apache.uima.util.TypeSystemUtil;
 import org.apache.uima.util.XMLInputSource;
@@ -2624,9 +2629,12 @@ public class AggregateAnalysisEngineCont
     if (endpoint == null) {
       return;
     }
-    endpoint.setSerialFormat((remoteAEserializationSupported == 
AsynchAEMessage.XMI_SERIALIZATION)    ? SerialFormat.XMI :
-                           (remoteAEserializationSupported == 
AsynchAEMessage.BINARY_SERIALIZATION) ? SerialFormat.BINARY :
+    if (endpoint.getSerialFormat() != SerialFormat.XMI) {
+      // only set if xmi not specified.  Otherwise, leave alone
+      endpoint.setSerialFormat((remoteAEserializationSupported == 
AsynchAEMessage.XMI_SERIALIZATION)    ? SerialFormat.XMI :
+                               (remoteAEserializationSupported == 
AsynchAEMessage.BINARY_SERIALIZATION) ? SerialFormat.BINARY :
                                                                                
                      SerialFormat.COMPRESSED_FILTERED);
+    }
   }
   
   public void mergeTypeSystem(String aTypeSystem, String fromDestination) 
throws AsynchAEException {
@@ -2684,6 +2692,10 @@ public class AggregateAnalysisEngineCont
           if (isStopped()) {
             return;
           }
+          // for remote serialization with type filtering, create and save the 
type system impl
+          if (endpoint.isRemote()) {
+            
endpoint.setTypeSystemImpl(getTypeSystemImpl((ProcessingResourceMetaData) 
resource));
+          }
           getCasManagerWrapper().addMetadata((ProcessingResourceMetaData) 
resource);
           analysisEngineMetaDataMap.put(key, (ProcessingResourceMetaData) 
resource);
 
@@ -2758,6 +2770,20 @@ public class AggregateAnalysisEngineCont
       throw new AsynchAEException(e);
     }
   }
+  
+  public static TypeSystemImpl getTypeSystemImpl(ProcessingResourceMetaData 
resource) throws ResourceInitializationException {
+    CASMgr casMgr = CASFactory.createCAS(8, false);
+    try {
+      CasCreationUtils.setupTypeSystem(casMgr, resource.getTypeSystem());
+      ((CASImpl) casMgr).commitTypeSystem();
+    } catch (ResourceInitializationException e) {
+      UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, 
"AggregateAnalysisEngineController_impl",
+          "getTypeSystemImpl", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
+          "UIMAEE_exception__WARNING", e);
+      throw e;
+    }
+    return ((CASImpl) casMgr).getTypeSystemImpl();
+  }
 
   private synchronized void completeInitialization() throws Exception {
     if (initialized) {

Modified: 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
 Wed May 15 18:46:39 2013
@@ -22,6 +22,7 @@ package org.apache.uima.aae.controller;
 import org.apache.uima.aae.error.AsynchAEException;
 import org.apache.uima.aae.jmx.ServiceInfo;
 import org.apache.uima.cas.SerialFormat;
+import org.apache.uima.cas.impl.TypeSystemImpl;
 
 public interface Endpoint {
   public static final int OK = 1;
@@ -183,4 +184,8 @@ public interface Endpoint {
   public void setFreeCasEndpoint(boolean trueOrFalse);
   
   public boolean isFreeCasEndpoint();
+  
+  public void setTypeSystemImpl(TypeSystemImpl typeSystemImpl);
+  
+  public TypeSystemImpl getTypeSystemImpl();
 }

Modified: 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
 Wed May 15 18:46:39 2013
@@ -26,6 +26,7 @@ import org.apache.uima.aae.error.AsynchA
 import org.apache.uima.aae.jmx.ServiceInfo;
 import org.apache.uima.aae.message.AsynchAEMessage;
 import org.apache.uima.cas.SerialFormat;
+import org.apache.uima.cas.impl.TypeSystemImpl;
 
 public class Endpoint_impl implements Endpoint, Cloneable {
   private static final Class CLASS_NAME = Endpoint_impl.class;
@@ -116,10 +117,21 @@ public class Endpoint_impl implements En
 
   private volatile boolean freeCasEndpoint = false;
   
+  private volatile TypeSystemImpl typeSystemImpl;
+  
   
   public Endpoint_impl() {
     status = Endpoint.OK;
   }
+  
+  public void setTypeSystemImpl(TypeSystemImpl typeSystemImpl) {
+    this.typeSystemImpl = typeSystemImpl;
+  }
+  
+  public TypeSystemImpl getTypeSystemImpl() {
+    return typeSystemImpl;
+  }
+  
   public void setFreeCasEndpoint(boolean trueOrFalse) {
     freeCasEndpoint = trueOrFalse;
   }

Modified: 
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java?rev=1483000&r1=1482999&r2=1483000&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java
 Wed May 15 18:46:39 2013
@@ -58,6 +58,8 @@ import org.apache.uima.aae.client.UimaAS
 import org.apache.uima.aae.client.UimaASStatusCallbackListener;
 import org.apache.uima.aae.client.UimaAsBaseCallbackListener;
 import org.apache.uima.aae.client.UimaAsynchronousEngine;
+import org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl;
+import org.apache.uima.aae.controller.Endpoint;
 import org.apache.uima.aae.delegate.Delegate;
 import org.apache.uima.aae.delegate.Delegate.DelegateEntry;
 import org.apache.uima.aae.error.AsynchAEException;
@@ -79,6 +81,7 @@ import org.apache.uima.adapter.jms.messa
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.SerialFormat;
 import org.apache.uima.cas.impl.AllowPreexistingFS;
+import org.apache.uima.cas.impl.TypeSystemImpl;
 import org.apache.uima.cas.impl.XmiSerializationSharedData;
 import org.apache.uima.collection.CollectionReader;
 import org.apache.uima.collection.EntityProcessStatus;
@@ -162,6 +165,8 @@ public abstract class BaseUIMAAsynchrono
   protected MessageConsumer consumer = null;
 
   protected SerialFormat serialFormat = SerialFormat.XMI;
+  
+  protected TypeSystemImpl typeSystemImpl; // of the remote service, for 
filtered binary compression
 
   protected UimaASClientInfoMBean clientSideJmxStats = new UimaASClientInfo();
 
@@ -267,7 +272,14 @@ public abstract class BaseUIMAAsynchrono
   protected void setSerialFormat(SerialFormat aSerialFormat) {
     serialFormat = aSerialFormat;
   }
+  
+  public TypeSystemImpl getTypeSystemImpl() {
+    return typeSystemImpl;
+  }
 
+  protected void setTypeSystemImpl(TypeSystemImpl typeSystemImpl) {
+    this.typeSystemImpl = typeSystemImpl;
+  }
   /**
    * Serializes a given CAS.
    * 
@@ -1104,9 +1116,12 @@ public abstract class BaseUIMAAsynchrono
           }
         } else {
           final int c = message.getIntProperty(AsynchAEMessage.SERIALIZATION);
-          setSerialFormat((c == AsynchAEMessage.XMI_SERIALIZATION) ? 
SerialFormat.XMI :
-                                   (c == AsynchAEMessage.BINARY_SERIALIZATION) 
? SerialFormat.BINARY :
-                                     SerialFormat.COMPRESSED_FILTERED);
+          if (getSerialFormat() != SerialFormat.XMI) {
+            // don't override if XMI - because the remote may have different 
type system
+              setSerialFormat((c == AsynchAEMessage.XMI_SERIALIZATION)    ? 
SerialFormat.XMI :
+                              (c == AsynchAEMessage.BINARY_SERIALIZATION) ? 
SerialFormat.BINARY :
+                                                                            
SerialFormat.COMPRESSED_FILTERED);
+          }
         }
         String meta = ((TextMessage) message).getText();
         ByteArrayInputStream bis = new ByteArrayInputStream(meta.getBytes());
@@ -1114,6 +1129,10 @@ public abstract class BaseUIMAAsynchrono
         // Adam - store ResouceMetaData in field so we can return it from 
getMetaData().
         resourceMetadata = (ProcessingResourceMetaData) 
UIMAFramework.getXMLParser()
                 .parseResourceMetaData(in1);
+        // if remote delegate, save type system 
+        if (!brokerURI.startsWith("vm:")) { // test if remote
+          
setTypeSystemImpl(AggregateAnalysisEngineController_impl.getTypeSystemImpl(resourceMetadata));
+        }
         casMultiplierDelegate = 
resourceMetadata.getOperationalProperties().getOutputsNewCASes();
         if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.FINEST)) {
           UIMAFramework.getLogger(CLASS_NAME).logrb(Level.FINEST, 
CLASS_NAME.getName(),


Reply via email to