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(),