<?xml version='1.0'?>
  <!--
   ***************************************************************
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
         *
   *   http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   ***************************************************************
   -->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:u="http://uima.apache.org/resourceSpecifier"
                xmlns:f="http://uima.apache.org/uimaEE/xslt/functions"
                xmlns:fn="http://www.w3.org/2005/xpath-functions"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:i="http://uima.apache.org/uimaEE/xslt/internal"
                xmlns:x1="org.apache.uima.aae.deploymentDescriptor.XsltImportByName"
                xmlns:x2="org.apache.uima.aae.deploymentDescriptor.XsltGUIDgenerator"
                xmlns:saxon="http://saxon.sf.net/"
                version='2.0'
                exclude-result-prefixes="u f fn xs i x1 x2 saxon">

  <!--  note: XSLT 2.0 required -->
  <!--  Changes
       6/30/2007 support remote primitive cas multipliers
       7/12/2007 support remote brokers for TCP replies based on new XML parm
       7/18/2007 change async defaulting to only default to true if there are delegates
       9/xx/2007 add support for CPP run as separate process for top level, and env vars
      10/01/2007 modify above to need new config param to enable
      10/02/2007 make default action for getMeta if not specified be terminate
      10/2x/2007 Add new attribute to set default CAS Fs Heap Size for the pools
      10/25/2007 Add new listener containers for inputs that enable separate thread for getMeta calls
      11/02/2007 Impl defaulting of casPool, and add initialFsHeapSize to both Java and C++ versions
      11/12/2007 For Reply Qs running with external broker which is the same as the top-level external
                 broker for the service, add temp queue, refer to it using destination Resolver in the
                 listener containers, and plug those listener containers into endpoints of the delegates.
      12/10/2007 support 2 initialFsHeapSize values - one for C++ and one for Java
      12/10/2007 change logic for temp q - do whenever reply q is remote
      12/10/2007 add check for inconsistency - disallow remote delegate specifying 
                 vm://localhost as the brokerURL broker
      11/xx/2007 NOT YET DONE rename pool elements for consistency between cas multiplier and main cas pool
      further updates moved to SVN comments
    --> 

  <!--============================================================-->       
  <!--| Input: Deployment Descriptor                             |-->       
  <!--| Additional inputs:  for each service descriptor, there is|-->       
  <!--|   an associated top-level aggregate descriptor.          |-->       
  <!--|                                                          |-->       
  <!--| Defaulting:  The Deployment descriptor is processed      |-->       
  <!--|   to insert defaults                                     |-->       
  <!--|   During this process, for each service descriptor,      |-->       
  <!--|     the associated top-level aggregate descriptor is     |-->       
  <!--|     read in, and for each delegate,                      |-->       
  <!--|     the import element is read in                        |-->       
  <!--|                                                          |-->             
  <!--| Resolving relative paths                                 |-->             
  <!--|   During pass 1 - putting in defaults, the relative      |-->             
  <!--|   paths are resolved, and any information from the       |-->             
  <!--|   UIMA descriptor is saved in the defaulted tree.        |-->             
  <!--|                                                          |-->             
  <!--|   Relative and absolute paths are supported              |-->             
  <!--|     Paths with back slashes are converted to /           |-->             
  <!--|     Relative paths are concatenated when nesting         |-->             
  <!--|     When processing the resulting Spring XML file,       |-->             
  <!--|     Spring resolves relative to the working directory.   |-->
  <!--|                                                          |-->             
  <!--| To catch errors, elements are verified by looking for    |-->             
  <!--|   for misspelled/misplaced elements and attributes       |-->             
  <!--|                                                          |-->             
  <!--============================================================-->
    
  <xsl:output method="xml" indent="yes"
    doctype-public="-//Spring//DTD BEAN//EN"
    doctype-system="http://www.springframework.org/dtd/spring-beans.dtd" 
    />
 
  <xsl:param name="useRelativePaths"/>
  
  <!--xsl:param name="noTempQueues" select="()"/-->  <!-- not used anymore -->
  
  <xsl:variable name="document-uri" select="document-uri(.)"/>
  
  <xsl:variable name="guid" select="x2:getGUID()"/>
  
  <!-- collect unique instances of queue brokers where we need generate
       a broker factory.
    
       obsolete ->> Jira UIMA-1288 Omit vm://localBroker ones - those use a common factory for this node
       Include remotes if the replyQueue is "remote"
       
    -->
  <xsl:variable name="uniqueInputQueueBrokers">
    <!--xsl:for-each-group group-by="@brokerURL"
      select="$ddd//u:inputQueue
         [ @brokerURL ne 'vm://localBroker' and 
           not(ancestor::u:delegates and not(starts-with(@brokerURL, 'http://')))
         ]">
       <xsl:sequence select="."/>
    </xsl:for-each-group-->
    
    <!-- inputQueue elements occur at the top and within remote delegates
         get the unique set of elements
      The code for the first select used to include this "and" clause
      and 
           (not(ancestor::u:delegates) or
            (../u:replyQueue/@location eq 'remote'))
          -->
    <xsl:for-each-group group-by="@brokerURL"
      select="$ddd//u:inputQueue
         [ @brokerURL ne 'vm://localhost' ]">  
       <!--xsl:message select="('*** ', ..)"/-->
       <xsl:sequence select="."/>
    </xsl:for-each-group>
  </xsl:variable>
  
  <!--xsl:variable name="topLevelInputQueueBroker" 
    select="$ddd/u:analysisEngineDeploymentDescription/u:deployment/u:service/u:inputQueue/@brokerURL"/-->
       
  <!--============================================================-->       
  <!--=  Error Configuration Details are sharable                =-->       
  <!--============================================================--> 
  <xsl:function name="f:ecdKey">
    <xsl:param name="node"/>
    <xsl:sequence select="concat(
      if ($node/@maxRetries)             then concat('_Rtry_',     $node/@maxRetries)             else '',
      if ($node/@continueOnRetryFailure) then concat('_Continue_', $node/@continueOnRetryFailure) else '',
      if ($node/@thresholdCount)         then concat('_TCnt_',     $node/@thresholdCount)         else '',
      if ($node/@thresholdWindow)        then concat('_TWndw_',    $node/@thresholdWindow)        else '',
      if ($node/@thresholdAction)        then concat('_Action_',   $node/@thresholdAction)        else '',
      if ($node/@errorAction)            then concat('_Action_',   $node/@errorAction)            else '',
      if ($node/@additionalErrorAction)  then concat('_Action_',   $node/@additionalErrorAction)  else '')"/>
  </xsl:function>
  
  <xsl:variable name="uniqueErrorConfigDetails">
    <xsl:for-each-group group-by="f:ecdKey(.)" 
          select="$ddd//(u:getMetadataErrors|u:processCasErrors|u:collectionProcessCompleteErrors)"> 
      <xsl:sequence select="."/>       
    </xsl:for-each-group>
  </xsl:variable>
  
  <xsl:template name="generateErrorConfigDetails">
      <xsl:sequence select="$nl"/>
      <xsl:sequence select="f:generateBlockComment('   E r r o r   D e t a i l s   ', 3)"/>
      
      <xsl:for-each select="$uniqueErrorConfigDetails/*">

        <bean id="{f:getErrorConfigDetailID(.)}"
          class="org.apache.uima.aae.error.Threshold" singleton="true">
          
          <xsl:if test="@maxRetries">
            <property name="maxRetries" value="{@maxRetries}"/>
          </xsl:if>
          
          <xsl:if test="@continueOnRetryFailure">
            <property name="continueOnRetryFailure" value="{@continueOnRetryFailure}"/>
          </xsl:if>
          
          <xsl:if test="@thresholdCount">
            <property name="threshold" value="{@thresholdCount}"/>
          </xsl:if>
          
          <xsl:if test="@thresholdWindow">
            <property name="window" value="{@thresholdWindow}"/>
          </xsl:if>
         
          <xsl:if test="@errorAction | @thresholdAction | @additionalErrorAction">
            <property name="action" value="{concat(@errorAction, @thresholdAction, @additionalErrorAction)}"/>
          </xsl:if>
          
        </bean>
        <xsl:sequence select="$nl2"/>
      </xsl:for-each>
  </xsl:template>
  
  <xsl:function name="f:getErrorConfigDetailID">
    <xsl:param name="errorNode"/>
    <xsl:sequence select="concat('errorConfig_', f:ecdKey($errorNode))"/>
  </xsl:function>  
      
    <!--
            select="$ddd/u:analysisEngineDeploymentDescription/
                u:deployment[@protocol='jms' and @provider='activemq']/              
                  u:service/
                    u:inputQueue[@brokerURL ne 'vm://localBroker']">

      
      
    <xsl:variable name="iqs">
      
        <xsl:sequence select=
      "$ddd/u:analysisEngineDeploymentDescription/
              u:deployment[@protocol='jms' and @provider='activemq']/              
                  u:service/
                    u:inputQueue[@brokerURL ne 'vm://localBroker']"/>
     
    </xsl:variable> 
    <xsl:if test="$iqs">
      <xsl:for-each-group group-by="@brokerURL" select="$iqs/u:inputQueue"> 
        <xsl:sequence select="."/>       
      </xsl:for-each-group>
    </xsl:if>
  -->
  
  
  <!--============================================================-->       
  <!--           Top level match                                  -->       
  <!--============================================================--> 
  <xsl:template match="u:analysisEngineDeploymentDescription">
    <!--xsl:message select="'debugging - verify version'"/-->
    <xsl:sequence select="f:generateBlockComment(
      ('Generated from', $document-uri, format-dateTime(current-dateTime(), '[D1] [MNn], [Y], [h]:[m]:[s] [PN]')), 1)"/>
    <xsl:apply-templates select="$ddd/u:analysisEngineDeploymentDescription/u:deployment"/> 
  </xsl:template>
  
  <xsl:template match="u:deployment[@protocol='jms' and @provider='activemq']">
    <beans>
      <xsl:if test="u:service[@i:isTopLvlCpp eq 'no']">
        <xsl:call-template  name="generateStandardBeans"/>
      </xsl:if> 
      <!--xsl:apply-templates select="u:applications"/-->
      <xsl:apply-templates select="u:service"/>
    </beans>
  </xsl:template>
 
  <!--============================================================-->       
  <!--=          applications                                    =-->       
  <!--============================================================--> 
  <xsl:template match="u:application/u:inputQueue">
    <!-- output something to specify where the application sends messages to -->
  </xsl:template>
  
  <!--============================================================-->       
  <!--=          service                                         =-->       
  <!--============================================================--> 
  <xsl:template  match="u:service">
    <!--xsl:message select="'*** uri '"/>
    <xsl:message select="document-uri(u:topDescriptor/u:import/@location)"/-->
 
    <xsl:variable name="iqn" select="concat('top_level_input_queue_service_',position())"/>
       
    <xsl:if test="@i:isTopLvlCpp eq 'no'">
      <xsl:sequence select="$nl"/>
      <xsl:comment select="'input queue for service'"/><xsl:sequence select="concat($nl,'   ')"/>
      <bean id="{$iqn}" 
          class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="{u:inputQueue/@endpoint}"/>
      </bean>
    </xsl:if>
    
    <xsl:if test="u:analysisEngine/u:casMultiplier">
      <xsl:sequence select="$nl"/>
      <xsl:sequence select="f:generateBlockComment(
        ('Second Input Q needed for top-level CAS Multiplers',
        'Used to have the client signal completion',
        'of the processing of a CAS',
        'generated by the Cas Multiplier'), 3)"/>
      <bean id="{concat($iqn,'__CasSync')}" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="{concat(u:inputQueue/@endpoint, '__CasSync')}"/>
      </bean>
    </xsl:if>
    
    <xsl:apply-templates >
      <xsl:with-param tunnel="yes" name="input_q_ID" select="$iqn"/>
      <xsl:with-param tunnel="yes" name="inputQueueFactoryID" select="f:getQbrokerID(u:inputQueue)"/>
    </xsl:apply-templates>       
  </xsl:template>

  <!--============================================================-->       
  <!--=          Aggregate Analysis Engine (async=yes)           =-->       
  <!--============================================================--> 
  <xsl:template match="u:analysisEngine[@async eq 'true']">
    <xsl:param tunnel="yes" name="input_q_ID"/>
    <xsl:param tunnel="yes" name="inputQueueFactoryID"/>
    
    <!--xsl:message select="'*** Async AA'"/>
    <xsl:message select="."/-->
    
    <xsl:variable name="AEdescription"
      select="i:local_ae_descriptor/(u:analysisEngineDescription|u:casConsumerDescription|u:taeDescription)"/>
    
    <xsl:sequence
      select="f:generateBlockComment(
      concat('Async Aggregate: ', f:getAeNameUnique(.)),3)"/>
    
    <xsl:variable name="uniq" select="f:getUnique(.)"/>
    
    <xsl:variable name="aeNameUnique" select="f:getAeNameUnique(.)"/>
    <xsl:variable name="ctlrID" select="f:getControllerID(.)"/>
    <!--concat('asAggr_ctlr_', $aeNameUnique)"/>-->
    <xsl:variable name="delegateMapID"
      select="concat('delegate_map_', $aeNameUnique)"/>
    
    <xsl:variable name="flowControllerPath">
      <xsl:choose>
        <xsl:when test="i:flowController">
          <!--xsl:message select="'Custom flow controller being used'"/>
          <xsl:message select="."/-->
          <xsl:sequence select="string(i:flowController/@file_path)"/>
        </xsl:when>
        <xsl:when
          test="$AEdescription/u:analysisEngineMetaData/u:flowConstraints/u:fixedFlow">
          <xsl:sequence
            select="'*importByName:org.apache.uima.flow.FixedFlowController'"/>
        </xsl:when>
        <xsl:when
          test="$AEdescription/u:analysisEngineMetaData/u:flowConstraints/u:capabilityLanguageFlow">
          <xsl:sequence
            select="'*importByName:org/apache/uima/flow/CapabilityLanguageFlowController'"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:message select="'*** Internal error, i:local_ae_descriptor'"/>
          <xsl:message select="i:local_ae_descriptor"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    
    <!--xsl:message select="concat('Flow controller for ', $aeNameUnique, ' is ', $flowControllerPath)"/-->
    <!-- removed lazy init: lazy-init="{if (parent::u:service) then 'true' else 'false'}" -->
    <bean id="{$ctlrID}"
      class="org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl"
      init-method="initialize">
      <!-- parent controller -->
      <xsl:choose>
        <xsl:when test="parent::u:delegates">
          <constructor-arg index="0"
            ref="{f:getControllerID(ancestor::u:analysisEngine[1])}"/>
        </xsl:when>
        <xsl:otherwise>
          <constructor-arg index="0"><null/></constructor-arg>
        </xsl:otherwise>
      </xsl:choose>
      <constructor-arg index="1" value="{@key}"/>
      <constructor-arg index="2" value="{i:local_ae_descriptor/@file_path}"/>
      <constructor-arg index="3" ref="casManager"/>
      <constructor-arg index="4" ref="inProcessCache"/>
      <constructor-arg index="5" ref="{$delegateMapID}"/>
      
      <!-- output channels needed if top level component - to return values to invoker
           or if one or more delegates is remote - to send to the remote -->
      <xsl:if test="parent::u:service or u:delegates/u:remoteAnalysisEngine">
        <property name="outputChannel" ref="{f:getOutputChannelID(.)}"/>
      </xsl:if>  
      <property name="serviceEndpointName" value="{$input_q_ID}"/>
      
      <property name="controllerBeanName" value="{$ctlrID}"/>
      <property name="errorHandlerChain" ref="{f:getErrorHandlerChainID(.)}"/>
      <property name="flowControllerDescriptor" value="{$flowControllerPath}"/>
    </bean>
  
    <!-- only generate aggregate input message handlers for top level - 
         others using internal queuing mechanisms -->
    <xsl:if test="parent::u:service">  
      <xsl:call-template name="generateMsgHandlerChain">
        <xsl:with-param name="aeNode" select="."/>
        <xsl:with-param name="kind" select="'aggregate_input'"/>
      </xsl:call-template>
    </xsl:if>
    
    <!-- only generate return message handlers if one or more of the 
         delegates are remote 
         All remotes share this one message handler chain -->
    
    <xsl:if test="u:delegates/u:remoteAnalysisEngine">
      <xsl:call-template name="generateMsgHandlerChain">
        <xsl:with-param name="aeNode" select="."/>
        <xsl:with-param name="kind" select="'aggregate_return'"/>
      </xsl:call-template>
    </xsl:if>
    
    <xsl:sequence
      select="f:generateLineComment('Create the endpoints + output channels, one per delegate', 3)"/>
    
    <xsl:variable name="remoteDelegates"
      select="u:delegates/u:remoteAnalysisEngine"/>
    <xsl:variable name="analysisEngine" select="."/>
    
    
    <!-- iterate over AE descriptor to get accurate position info for all delegates -->
    <xsl:for-each
      select="$AEdescription/u:delegateAnalysisEngineSpecifiers/u:delegateAnalysisEngine">
      
      
      <!-- these next 2 vars are the same, except the remoteAnalysisEngine is not-empty if it is remote -->
      <xsl:variable name="remoteAnalysisEngine"
        select="$remoteDelegates[@key eq current()/@key]"/>
      <xsl:variable name="aeDelegate"
        select="$analysisEngine/u:delegates/*[@key eq current()/@key]"/>
      <!--xsl:message select="('*** key is', @key)"/>
      <xsl:message select="$AEdescription/u:delegateAnalysisEngineSpecifiers/u:delegateAnalysisEngine"/>
      <xsl:message select="$analysisEngine/u:delegates"/>
      <xsl:message select="'*** remote delegate'"/>
      <xsl:message select="$remoteAnalysisEngine"/>
      <xsl:message select="'*** ae delegate'"/>
      <xsl:message select="$aeDelegate"/-->
      
      <xsl:sequence
        select="f:generateLineComment((
        '====================================',
        @key,
        '  ** Delegate Endpoint **',
        '===================================='
        ), 3)"/>
      <xsl:variable name="endpointID"
        select="f:getEndpointName(@key, concat($uniq, '.', position()))"/>
      <bean id="{$endpointID}"
        class="org.apache.uima.aae.controller.Endpoint_impl">
        
        <xsl:sequence select="f:generateLineComment('Broker URI', 5)"/>
        <xsl:variable name="brokerURL">
          <xsl:choose>
            <xsl:when test="$remoteAnalysisEngine">
              <xsl:sequence
                select="string($remoteAnalysisEngine/u:inputQueue/@brokerURL)"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:sequence select="'vm://localhost'"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <property name="serverURI" value="{$brokerURL}"/>
        
        <xsl:sequence
          select="f:generateLineComment('Delegate key name or remote queue name', 5)"/>
        <property name="endpoint"
          value="{if ($remoteAnalysisEngine) then $remoteAnalysisEngine/u:inputQueue/@endpoint
                                             else f:getInternalInputQueueName($aeDelegate)}"/>
        
        <xsl:if test="$remoteAnalysisEngine">
          <xsl:sequence
            select="f:generateLineComment('Queue name used for replies, on the remote broker',5)"/>
          <property name="replyToEndpoint"
            value="{f:getRemoteReturnQueueName($analysisEngine, $remoteAnalysisEngine)}"/>
        </xsl:if>
        
        <!--xsl:message select="'aeDelegates'"/>        
        <xsl:message select="count($aeDelegate/ancestor-or-self::node()
        [u:errorConfiguration/u:errorHandling/u:timeout[@event eq 'metadataRequest']][1]
        /u:errorConfiguration/u:errorHandling/u:timeout[@event eq 'metadataRequest']
        )
        "/> 
        <xsl:message select="'aeDelegates'"/-->
        
        <xsl:if test="$remoteAnalysisEngine/u:casMultiplier/@poolSize">
          <property name="shadowCasPoolSize" value="{$remoteAnalysisEngine/u:casMultiplier/@poolSize}"/>
        </xsl:if> 
        <xsl:if test="$remoteAnalysisEngine/u:casMultiplier/@initialFsHeapSize"> 
          <property name="initialFsHeapSize" value="{$remoteAnalysisEngine/u:casMultiplier/@initialFsHeapSize}"/>
        </xsl:if>
        
        <!-- jira UIMA-1245 -->
        <xsl:if test="$aeDelegate/u:casMultiplier/@processParentLast">
          <property name="processParentLast" value="{$aeDelegate/u:casMultiplier/@processParentLast}"/>
        </xsl:if>
        
        <xsl:sequence select="f:generateLineComment('Timeouts', 5)"/>
        <property name="metadataRequestTimeout"
          value="{$aeDelegate/ancestor-or-self::node()
                [u:asyncAggregateErrorConfiguration/u:getMetadataErrors/@timeout][1]
                /u:asyncAggregateErrorConfiguration/u:getMetadataErrors/@timeout}"/>
        <property name="processRequestTimeout"
          value="{$aeDelegate/ancestor-or-self::node()
                [u:asyncAggregateErrorConfiguration/u:processCasErrors/@timeout][1]
                /u:asyncAggregateErrorConfiguration/u:processCasErrors/@timeout}"/>
        <property name="collectionProcessCompleteTimeout"
          value="{$aeDelegate/ancestor-or-self::node()
                [u:asyncAggregateErrorConfiguration/u:collectionProcessCompleteErrors/@timeout][1]
                /u:asyncAggregateErrorConfiguration/u:collectionProcessCompleteErrors/@timeout}"/>
        <xsl:if test="$remoteAnalysisEngine">
          <property name="serializer"
            value="{$remoteAnalysisEngine/u:serializer/@method}"/>
        </xsl:if>
        
        <xsl:if test="$remoteAnalysisEngine">
          <property name="tempReplyDestination" value="true"/>
        </xsl:if>
        
        <xsl:if test="not($remoteAnalysisEngine)">
          <xsl:choose>
            <xsl:when test="$aeDelegate[@async eq 'true']">
              <property name="concurrentRequestConsumers" value="{$aeDelegate/@inputQueueScaleout}"/>    
            </xsl:when>
            <xsl:otherwise>
              <property name="concurrentRequestConsumers" value="{$aeDelegate/u:scaleout/@numberOfInstances}"/>
            </xsl:otherwise>
          </xsl:choose> 
          
          <property name="concurrentReplyConsumers" value="{$aeDelegate/@internalReplyQueueScaleout}"/>
        </xsl:if>
        <!--
          <xsl:variable name="msgListenerContainerID" 
             select="concat('asAggr_return_msgLsnrCntnr_', $aeNameUnique,
             if ($remoteAnalysisEngine/@key) then concat('_', $remoteAnalysisEngine/@key) else '')"/> 
          <property name="listenerContainer" ref="{$msgListenerContainerID}"/>
        </xsl:if-->
      </bean>
      
     
    </xsl:for-each>
         
    <!-- only generate input channels (and listeners) for top level - 
         others using internal queuing mechanisms -->
    <xsl:if test="parent::u:service"> 
      <xsl:call-template name="generateInputChannel">
        <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/>
        <xsl:with-param name="q_ID" select="$input_q_ID"/>
        <xsl:with-param name="q_endpointName" select="$input_q_ID"/>
        <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
        <xsl:with-param name="inputOrReturn" select="'input'"/>
        <xsl:with-param name="kind" select="'asAggr'"/>
        <!-- used as 1st part of ctlr name -->
        <xsl:with-param name="msgHandlerChainID"
          select="f:getMetaMsgHandlerID(., 'aggregate_input')"/>
        <xsl:with-param name="nbrConcurrentConsumers" select="string(@inputQueueScaleout)"/>
        <xsl:with-param name="remote" select="()"/>
        <xsl:with-param name="poolingTaskExecutor" select="()"/>
      </xsl:call-template>
    </xsl:if>
    
    <xsl:variable name="return_q_ID" select="f:getLocalReturnQueueEndpointID(.)"/>
    
    <!-- this next test seems strange, I think it always returns true.
      the test "starts-with(@brokerURL, '/')" would seem always to be false 
      The net effect is that the return queue for async aggr is always generated -->
    
    <!-- test changed: no common return input channel and listeners are used
         anymore - they were used only for co-located delegates, which now
         use an internal mechanism -->
    
    
      <!-- removed with change to JavaQ for local Q -->
      <!-- other reply queues (for remotes) are "remote" -->     
      <!--xsl:sequence
        select="f:generateLineComment('return queue for async aggregate', 3)"/>
      <bean id="{$return_q_ID}" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="{$return_q_ID}"/>
      </bean-->
      
      <!--xsl:call-template name="generateInputChannel">
        <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/>
        <xsl:with-param name="q_ID" select="$return_q_ID"/>
        <xsl:with-param name="q_endpointName" select="$return_q_ID"/>        
        <xsl:with-param name="queueFactoryID" select="'controllerJmsFactory'"/>
        <xsl:with-param name="inputOrReturn" select="'return'"/>
        <xsl:with-param name="kind" select="'asAggr'"/-->
        <!-- used as 1st part of ctlr name -->
        <!--xsl:with-param name="msgHandlerChainID"
          select="f:getMetaMsgHandlerID($analysisEngine, 'aggregate_return')"/>
        <xsl:with-param name="nbrConcurrentConsumers" select="string(@internalReplyQueueScaleout)"/>
        <xsl:with-param name="remote" select="()"/>
        <xsl:with-param name="poolingTaskExecutor" select="()"/>
      </xsl:call-template-->
   
    
    <!-- we iterate over all the delegates in order to have the right value for position() -->
    <xsl:for-each select="u:delegates/*">
      <xsl:if test="self::u:remoteAnalysisEngine">
        <!--xsl:message select="('delegate', .)"/-->
        <xsl:variable name="returnQ_ID" select="f:getRemoteReturnQueueID($analysisEngine, .)"/>
        <xsl:variable name="returnQ_ID_GUID" select="f:getRemoteReturnQueueName($analysisEngine, .)"/>
        
        <!--xsl:if test="not(f:isRmtTempQ(.))"-->
          <xsl:sequence
            select="f:generateLineComment(('return queue for http or tcp remote service', 'on remote broker'), 3)"/>
          <bean id="{$returnQ_ID}" class="org.apache.activemq.command.ActiveMQQueue">
            <constructor-arg index="0" value="{$returnQ_ID_GUID}"/>
          </bean>
        <!--/xsl:if-->
        
        <xsl:variable name="brokerID" select="f:getQbrokerID(u:inputQueue)"/>
        <!--xsl:message select="('generating input channel for remote reply queue', u:remoteAnalysisEngine/@key)"/-->
        <xsl:call-template name="generateInputChannel">
          <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/>
          <xsl:with-param name="q_ID" select="$returnQ_ID"/>
          <!-- if tempQ, use endpoint bean id instead of endpoint name in next parm -->
          <!--xsl:with-param name="q_endpointName"
            select="if (f:isRmtTempQ(.)) then f:getEndpointName(@key, concat($uniq, '.', position())) 
                             else $returnQ_ID_GUID"/-->
          <xsl:with-param name="q_endpointName"
            select="f:getEndpointName(@key, concat($uniq, '.', position()))"/>
          <xsl:with-param name="queueFactoryID" select="$brokerID"/>
          <xsl:with-param name="inputOrReturn" select="'return'"/>
          <xsl:with-param name="kind" select="'asAggr'"/>
          <!-- used as 1st part of ctlr name -->
          <xsl:with-param name="msgHandlerChainID"
            select="f:getProcessResponseHandlerID($analysisEngine, 'aggregate_return')"/>
          <xsl:with-param name="nbrConcurrentConsumers" 
            select="@remoteReplyQueueScaleout"/>  
          <xsl:with-param name="remote" select="."/>
          <xsl:with-param name="poolingTaskExecutor" select="()"/>
        </xsl:call-template>
      </xsl:if>
    </xsl:for-each>
    
    <xsl:variable name="origin_q_name"
      select="if (parent::u:service) then parent::u:service/u:inputQueue/@endpoint
                              else f:getInternalInputQueueName(.)"/>
    <!--xsl:message select="'*** origin_q_name: '"/>
    <xsl:message select="$origin_q_name"/-->
 
    <!-- skip generating output channel for internal reply queues 
         because internal reply queues no longer used 
         Still need this for returning values from top level component to invoker, or
         for sending value to remotes -->
    <xsl:if test="parent::u:service or u:delegates/u:remoteAnalysisEngine">       
      <xsl:call-template name="generateOutputChannel">
        <xsl:with-param name="aeNode" select="."/>
        <xsl:with-param name="origin_q_name" select="$origin_q_name"/>
        <xsl:with-param name="return_q_ID" select="$return_q_ID"/>
        <xsl:with-param name="kind" select="'asAggr'"/>
      </xsl:call-template>
    </xsl:if>
    
    <xsl:sequence select="f:generateLineComment('map for delegate keys', 3)"/>
    <bean id="{$delegateMapID}" class="java.util.HashMap" singleton="true">
      <constructor-arg>
        <map>
          <xsl:for-each
            select="$AEdescription/u:delegateAnalysisEngineSpecifiers/u:delegateAnalysisEngine">
            <entry key="{@key}">
              <ref
                bean="{f:getEndpointName(@key, concat($uniq, '.', position()))}"/>
            </entry>
          </xsl:for-each>
        </map>
      </constructor-arg>
    </bean>
    <xsl:sequence select="$nl2"/>
    
    <xsl:call-template name="generateErrorChainForAggr"/>
    <xsl:apply-templates select="u:delegates"/>
  </xsl:template>
  
  
  <!--============================================================-->       
  <!--=  Primitive or Sync Aggregate Analysis Engine (async=false)  =-->       
  <!--============================================================--> 
  <xsl:template  match="u:analysisEngine[@async=('false', 'no')]">
    <xsl:param tunnel="yes" name="input_q_ID"/>
    <xsl:param tunnel="yes" name="inputQueueFactoryID"/>
    <xsl:variable name="AEdescription" select="i:local_ae_descriptor/(u:analysisEngineDescription|u:casConsumerDescription|u:taeDescription)"/>
    
    <xsl:sequence select="f:generateBlockComment(
        (concat('Primitive or non-Async Aggr: ', f:getSimpleAeName(.))         
        ),3)"/>
       
    <xsl:variable name="uniq" select="f:getUnique(.)"/>

    <xsl:variable name="aeNameUnique" select="f:getAeNameUnique(.)"/>
    <xsl:variable name="ctlrID"   select="f:getControllerID(.)"/>
    
    <xsl:if test="self::u:analysisEngine"> <!-- ?? seems to always be true ... -->
          <!-- no error handler chain for primitives - use built-in one instead -->
      <!-- xsl:variable name="errorHandlerChainID" select="f:getErrorHandlerChainID(.)"/ --> 
      <xsl:choose>
        <xsl:when test="../../u:service[@i:isTopLvlCpp eq 'yes']">
          <!-- create bean to do placeholder substitution Jira UIMA-1288 -->
          <bean id="placeholderSubstitution" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>  
          </bean>
          <bean id="{$ctlrID}"
            class="org.apache.uima.aae.controller.UimacppServiceController">
            
            <xsl:sequence select="f:generateLineComment('path to top level descriptor', 5)"/>
            <constructor-arg index="0" value="{i:local_ae_descriptor/@file_path}"/>
            
            <xsl:sequence select="f:generateLineComment('input q name', 5)"/>
            <constructor-arg index="1" value="{../u:inputQueue/@endpoint}"/>
            
            <xsl:sequence select="f:generateLineComment('input q BrokerURL', 5)"/>
            <constructor-arg index="2" value="{../u:inputQueue/@brokerURL}"/>

            <xsl:sequence select="f:generateLineComment('scaleout number of instances', 5)"/>
            <constructor-arg index="3" value="{u:scaleout/@numberOfInstances}"/>
            
            <xsl:sequence select="f:generateLineComment('prefetch limit', 5)"/>
            <constructor-arg index="4" value="{../u:inputQueue/@prefetch}"/>

            <xsl:sequence select="f:generateLineComment('Env Vars map', 5)"/>
            <constructor-arg index="5">
              <map>
                <xsl:for-each select="../u:environmentVariables/u:environmentVariable">
                  <entry key="{@name}"><value><xsl:sequence select="text()"/></value></entry> 
                </xsl:for-each>
              </map>
            </constructor-arg>
            
           <xsl:sequence select="f:generateLineComment('Process CAS Error Threshold', 5)"/>
           <constructor-arg index="6" value="{u:asyncPrimitiveErrorConfiguration/u:processCasErrors/@thresholdCount}"/>
            
           <xsl:sequence select="f:generateLineComment('PprocessCas Error Window', 5)"/>
           <constructor-arg index="7" value="{u:asyncPrimitiveErrorConfiguration/u:processCasErrors/@thresholdWindow}"/>
            
           <xsl:sequence select="f:generateLineComment('Terminate on CPC Error', 5)"/>
           <constructor-arg index="8" value="{if ('terminate' eq 
             string(u:asyncPrimitiveErrorConfiguration/u:collectionProcessCompleteErrors/@additionalErrorAction))
             then 'true' else 'false'}"/>

           <xsl:variable name="initialHeapSize" select="if (../../u:casPool/@initialFsHeapSize eq 'defaultFsHeapSize') 
             then '40000' else ../../u:casPool/@initialFsHeapSize"/>
           <constructor-arg index="9" value="{$initialHeapSize}"/> 
            
          </bean>
        </xsl:when>
        <xsl:otherwise>  
          <!-- removed lazy init: lazy-init="{if (parent::u:service) then 'true' else 'false'}" -->   
          <bean id="{$ctlrID}"
            class="org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl"
            init-method="initialize">
            <!-- parent controller -->
            <xsl:choose>
              <xsl:when test="parent::u:delegates">
                <constructor-arg index="0" ref="{f:getControllerID(ancestor::u:analysisEngine[1])}"/>
              </xsl:when>
              <xsl:otherwise>
                <constructor-arg index="0"><null/></constructor-arg>
              </xsl:otherwise>
            </xsl:choose>
            <xsl:sequence select="f:generateLineComment('Key name', 5)"/>
            <constructor-arg index="1" value="{@key}"/>
            <constructor-arg index="2" value="{i:local_ae_descriptor/@file_path}"/>
            <constructor-arg index="3" ref="casManager"/>
            <constructor-arg index="4" ref="inProcessCache"/>        
            
            <!-- This parameter is ignored -->
            <xsl:sequence select="f:generateLineComment('this parameter is ignored', 5)"/>
            <constructor-arg index="5" value="10"/>
            <!--xsl:message select="'*** Scaleout'"/>
            <xsl:message select="."/-->
            <xsl:sequence select="f:generateLineComment('scaleout number of instances', 5)"/>
            <constructor-arg index="6" value="{u:scaleout/@numberOfInstances}"/>
            <xsl:if test="u:casMultiplier/@poolSize">
              <xsl:sequence select="f:generateLineComment('CAS Multiplier poolSize', 5)"/>
              <constructor-arg index="7" value="{u:casMultiplier/@poolSize}"/>
            </xsl:if>
            <xsl:if test="u:casMultiplier/@initialFsHeapSize">
              <xsl:sequence select="f:generateLineComment('CAS Multiplier initial heap size', 5)"/>
              <constructor-arg index="8" value="{u:casMultiplier/@initialFsHeapSize}"/>
            </xsl:if>
            
            <xsl:if test="parent::u:service">
              <property name="outputChannel" ref="{f:getOutputChannelID(.)}"/>
            </xsl:if>  
            <xsl:if test="parent::u:service">
              <property name="errorHandlerChain" ref="{f:getErrorHandlerChainID(.)}"/>         
            </xsl:if>
          </bean>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:if>
    
      <!-- next logic is true for lower levels in an aggregate as well as top level not CPP -->
    <xsl:if test="not(../../u:service[@i:isTopLvlCpp eq 'yes'])">    
      <xsl:variable name="poolingTaskExecutorID" select="f:getPoolingTaskExecutorID(.)"/>
      <!--xsl:variable name="scaleoutPlus" select=
        "if (parent::u:service and u:casMultiplier) then
           number(u:scaleout/@numberOfInstances) + 1 else
           number(u:scaleout/@numberOfInstances) + 0"/-->
  
      <!-- removed when java q added for local  -->
      <!-- only generate ThreadPoolTaskExecutor for top level primitives -->
      <xsl:if test="parent::u:service">            
        <xsl:sequence select="f:generateLineComment('ThreadPool Task Executor',3)"/>    
        <bean id="{$poolingTaskExecutorID}" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
          <property name="corePoolSize" value="{u:scaleout/@numberOfInstances}" />
          <property name="maxPoolSize" value="{u:scaleout/@numberOfInstances}" />
          <property name="queueCapacity" value="{u:scaleout/@numberOfInstances}" />
        </bean>
      </xsl:if>
     
      <!-- only generate input message handlers and input channels for top level - 
           others using internal queuing mechanisms -->
      <xsl:if test="parent::u:service">       
        <xsl:call-template name="generateMsgHandlerChain">
          <xsl:with-param name="aeNode" select="."/>
          <xsl:with-param name="kind" select="'primitive'"/>
        </xsl:call-template>

     
        <xsl:call-template name="generateInputChannel">
          <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/> 
          <xsl:with-param name="q_ID" select="$input_q_ID"/>
          <xsl:with-param name="q_endpointName" select="$input_q_ID"/>      
          <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
          <xsl:with-param name="inputOrReturn" select="'input'"/>
          <xsl:with-param name="kind" select="'primitive'"/>  <!-- used in ctrl id name -->
          <xsl:with-param name="msgHandlerChainID" select="f:getMetaMsgHandlerID(., 'primitive')"/>
          <xsl:with-param name="nbrConcurrentConsumers" select="u:scaleout/@numberOfInstances"/> 
          <xsl:with-param name="remote" select="()"/>
          <xsl:with-param name="poolingTaskExecutor" select="$poolingTaskExecutorID"/>     
        </xsl:call-template>
 
      </xsl:if>    
      
      <!-- next to be commented out due to design change summer 2008 -->
      <!--xsl:if test="parent::u:service and u:casMultiplier">
        <xsl:call-template name="generateCMSyncInputChannel">
          <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/> 
          <xsl:with-param name="q_ID" select="$input_q_ID"/>
          <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
          <xsl:with-param name="inputOrReturn" select="'input'"/>
          <xsl:with-param name="kind" select="'primitive'"/-->  <!-- used in ctrl id name -->
          <!--xsl:with-param name="msgHandlerChainID" select="f:getMetaMsgHandlerID(., 'primitive')"/>
          <xsl:with-param name="nbrConcurrentConsumers" select="u:scaleout/@numberOfInstances"/> 
          <xsl:with-param name="remote" select="()"/>
          <xsl:with-param name="poolingTaskExecutor" select="$poolingTaskExecutorID"/>       
        </xsl:call-template>      
      </xsl:if-->
      
      
      <xsl:variable name="origin_q_name" select=
        "if (parent::u:service) then parent::u:service/u:inputQueue/@endpoint
                                else f:getInternalInputQueueName(.)"/>
      <!--xsl:message select="'*** origin_q_name: '"/>
      <xsl:message select="$origin_q_name"/-->

      <!-- skip generating output channel for internal reply queues 
           because internal reply queues no longer used -->
      <xsl:if test="parent::u:service">                  
        <xsl:call-template name="generateOutputChannel">
          <xsl:with-param name="aeNode" select="."/>
          <xsl:with-param name="origin_q_name" select="$origin_q_name"/>
          <xsl:with-param name="kind" select="'primitive'"/>
        </xsl:call-template>
      </xsl:if>
      
      <!-- next call is called for all primitives, but only does something
           for top level primitives -->
      <xsl:call-template name="generateErrorChainForTop"/>
    </xsl:if>
      
  </xsl:template>

  <!--============================================================-->       
  <!--=  Remote Analysis Engine                                  =-->       
  <!--============================================================--> 
  <xsl:template  match="u:remoteAnalysisEngine">
    <xsl:param tunnel="yes" name="input_q_ID"/>
    <xsl:param tunnel="yes" name="inputQueueFactoryID"/>       
  </xsl:template>
         
  <!--======================================-->       
  <!--=  generateErrorChainForAggr         =-->
  <!--=    Context = aggr Analysis Engine  =-->
  <!--=              containing delegates  =-->       
  <!--======================================--> 
  <xsl:template name="generateErrorChainForAggr">
    <xsl:variable name="aec" select="u:delegates/(u:analysisEngine | u:remoteAnalysisEngine)/u:asyncAggregateErrorConfiguration"/>

    <xsl:sequence select="f:generateBlockComment('Delegate ErrorHandlers', 3)"/>
    <xsl:call-template name="generateErrorHandler">
      <xsl:with-param name="node" select="$aec/u:getMetadataErrors"/>
      <xsl:with-param name="kind" select="'GetMetaErrorHandler'"/> 
    </xsl:call-template>  
    
    <xsl:call-template name="generateErrorHandler">
      <xsl:with-param name="node" select="$aec/u:processCasErrors"/>
      <xsl:with-param name="kind" select="'ProcessCasErrorHandler'"/> 
    </xsl:call-template>  

    <xsl:call-template name="generateErrorHandler">
      <xsl:with-param name="node" select="$aec/u:collectionProcessCompleteErrors"/>
      <xsl:with-param name="kind" select="'CpcErrorHandler'"/> 
    </xsl:call-template>  
        
    <xsl:call-template name="generateErrorHandlerChain">
      <xsl:with-param name="aec" select="$aec"/>
    </xsl:call-template>      
    
  </xsl:template>

  <xsl:template name="generateErrorHandlerChain">
    <xsl:param name="aec"/>
    <xsl:sequence select="f:generateBlockComment((
        ' Error Handler Chain '        
        ), 3)"/>
    <bean id="{f:getErrorHandlerChainID(.)}"
          class="org.apache.uima.aae.error.ErrorHandlerChain">
      <constructor-arg>
        <list>
            
          <xsl:if test="$aec/u:getMetadataErrors">
            <ref local="{f:getErrorHandlerID(($aec/u:getMetadataErrors)[1])}"/>
          </xsl:if>
            
          <xsl:if test="$aec/u:processCasErrors">
            <ref local="{f:getErrorHandlerID(($aec/u:processCasErrors)[1])}"/>
          </xsl:if>
            
          <xsl:if test="$aec/u:collectionProcessCompleteErrors">
            <ref local="{f:getErrorHandlerID(($aec/u:collectionProcessCompleteErrors)[1])}"/>
          </xsl:if>
            
         </list>
      </constructor-arg>
    </bean>
  </xsl:template>
  
  <!--======================================-->       
  <!--=  generateErrorChainForTop          =-->
  <!--=    Context = top  Analysis Engine  =-->
  <!--=  if Top is async aggr, the config  =-->
  <!--=    is done within the error chain  =-->
  <!--=    for that aggr.                  =-->
  <!--=  else is done here                 =-->
  <!--=    context-node is analysisEngine  =-->       
  <!--======================================-->
  
  <xsl:template name="generateErrorChainForTop">
    <xsl:variable name="aec" select="u:asyncPrimitiveErrorConfiguration"/>
    <xsl:if test="@async eq 'false' and ($aec/u:processCasErrors or $aec/u:collectionProcessCompleteErrors)"> 
      <!--xsl:message select="'*generating err handler chain'"/-->   
      <xsl:if test="$aec/u:processCasErrors">
        <bean id="{f:getErrorHandlerID(($aec/u:processCasErrors)[1])}" class="org.apache.uima.aae.error.handler.ProcessCasErrorHandler">
          <constructor-arg>
            <map> <entry key=""> <ref bean="{f:getErrorConfigDetailID($aec/u:processCasErrors)}"/> </entry> </map>
          </constructor-arg>
        </bean>
      </xsl:if>      
      
      <xsl:if test="$aec/u:collectionProcessCompleteErrors">
        <bean id="{f:getErrorHandlerID(($aec/u:collectionProcessCompleteErrors)[1])}" class="org.apache.uima.aae.error.handler.CpcErrorHandler">
          <constructor-arg>
            <map> <entry key=""> <ref bean="{f:getErrorConfigDetailID($aec/u:collectionProcessCompleteErrors)}"/> </entry> </map>
          </constructor-arg>
        </bean>
      </xsl:if>      
      
      <xsl:call-template name="generateErrorHandlerChain">
        <xsl:with-param name="aec" select="$aec"/>
      </xsl:call-template>      

    </xsl:if>
  </xsl:template>


  <xsl:template name="generateErrorHandler">
    <xsl:param name="node"/>
    <xsl:param name="kind"/>
    <!--xsl:message select="('*** Generating keymaps for error handler given node set:', $node, '***end')"/-->
    <xsl:if test="$node">
      <bean id="{f:getErrorHandlerID($node[1])}" class="org.apache.uima.aae.error.handler.{$kind}">
        <constructor-arg>
          <map>
            <xsl:for-each select="$node">
              <entry key="{../../@key}"> <ref bean="{f:getErrorConfigDetailID(.)}"/> </entry> 
            </xsl:for-each>
            <!-- aec <- asyncAggrErrConfig <- ae or rmtae <- delegate <- ae <- service -->
            <xsl:variable name="topEc" select=
                "$node[1]/../../../parent::u:analysisEngine[parent::u:service]/u:asyncPrimitiveErrorConfiguration"/>
            <!-- ec is error spec matching the error class being worked on -->
            <xsl:variable name="ec" select="$topEc/node()[node-name(.) eq node-name($node[1])]"/>
            <xsl:if test="$ec">
              <!--xsl:message select="('*** found top level - inserting null key ref')"/-->
              <entry key=""> <ref bean="{f:getErrorConfigDetailID($ec)}"/> </entry>
            </xsl:if>
          </map>
        </constructor-arg>
      </bean>
      <xsl:sequence select="$nl2"/>
    </xsl:if>
  </xsl:template>

  <!-- errorKindNode is the <processCasErrors> etc. node  -->

  <xsl:function name="f:getErrorHandlerID">
    <xsl:param name="errorKindNode"/>
    <xsl:variable name="en" select="string(node-name($errorKindNode))"/>
    <!-- next substring drops u: in front and Errors in the back -->
    <xsl:variable name="kind" select="substring($en, 3, string-length($en)-6)"/>   
    <!-- if $errorKindNode is contained in an AS aggregate, go up to that aggregate -->
    <!-- if $errorKindNode is at the top level, skip the uniqifier -->
   
    <xsl:variable name="uniq" select="if ($errorKindNode/../../parent::u:service) then '' else f:getUnique($errorKindNode/../../..)"/>
    <xsl:sequence select="concat('err_hndlr_',$kind,'_',$uniq)"/>
  </xsl:function>              
              
    
  <!--==========================================-->
  <!--   Generate an input or return Channel    -->
  <!--==========================================-->
  <xsl:template name="generateInputChannel">
    <xsl:param name="aeNameUnique"/>
    <xsl:param name="q_ID"/>   <!-- this is a descriptor-unique bean id of the input (or ret) q endpoint -->
    <xsl:param name="q_endpointName"/>  <!-- for temp return q this is endpoint bean id -->
    <xsl:param name="queueFactoryID"/>
    <xsl:param name="inputOrReturn"/> <!-- input or return -->
    <xsl:param name="kind"/> <!-- either primitive or asAggr, used as 1st part of ctlr name -->
    <xsl:param name="msgHandlerChainID"/>
    <xsl:param name="nbrConcurrentConsumers"/>
    <xsl:param name="remote"/>  <!-- is () unless a remote return queue -->
    <xsl:param name="poolingTaskExecutor"/>
    
    <xsl:variable name="ctlrID"   select="concat($kind, '_ctlr_', $aeNameUnique)"/>    
    <xsl:variable name="q_listenerID" select="concat($kind, '_', $inputOrReturn, '_q_listenerID_',$aeNameUnique,
             if ($remote) then concat('_', $remote/@key) else '')"/>    
    <xsl:variable name="msgListenerContainerID" 
      select="concat($kind, '_', $inputOrReturn, '_msgLsnrCntnr_', $aeNameUnique,
             if ($remote) then concat('_', $remote/@key) else '')"/>    

  
    <xsl:sequence select="f:generateLineComment((
      '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
 concat('JMS msg listener for ', $inputOrReturn, ' queue for:'),
       $q_ID,
      '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'),3)"/>
    <bean id="{$q_listenerID}"
        class="org.apache.uima.adapter.jms.activemq.JmsInputChannel">
      <property name="messageHandler" ref="{$msgHandlerChainID}"/>
      <!--property name="endpointName" value="{if (f:isRmtTempQ($remote)) then '' else $q_endpointName}"/-->
      <property name="endpointName" value="{if ($remote[self::u:remoteAnalysisEngine]) then '' else $q_endpointName}"/>
      <property name="controller" ref="{$ctlrID}"/>
      <xsl:if test="$inputOrReturn eq 'input'">
        <property name="listenerContainer" ref="{$msgListenerContainerID}"/>
      </xsl:if>
    </bean>

      
    <xsl:sequence select="f:generateLineComment((
      '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
   concat('JMS msg listener container for ', $inputOrReturn, ' queue for:'),
       $q_ID,
      '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'),3)"/>    
    <bean id="{$msgListenerContainerID}"
      class="org.apache.uima.adapter.jms.activemq.UimaDefaultMessageListenerContainer">

      <xsl:if test="$poolingTaskExecutor">
        <xsl:sequence select="f:generateLineComment('Connect to pooling task executor for primitive',5)"/>
        <property name="taskExecutor" ref="{$poolingTaskExecutor}"/>
      </xsl:if>

      <xsl:sequence select="f:generateLineComment('Define number of JMS Consumers',5)"/>
      <property name="concurrentConsumers" value="{$nbrConcurrentConsumers}"/>
      
      <xsl:sequence select="f:generateLineComment(concat($inputOrReturn, ' Queue'), 5)"/>
      <xsl:choose>
        <xsl:when test="$remote[self::u:remoteAnalysisEngine]">
          <property name="destinationResolver" ref="{f:getDestinationResolverID($aeNameUnique, $remote/@key)}"/>
          <property name="destinationName" value="" />
          <property name="targetEndpoint" ref="{$q_endpointName}" />
          <xsl:sequence select="f:generateLineComment('POJO to delegate JMS Messages to', 5)"/>
          <property name="messageListener" ref="{$q_listenerID}"/>
          <property name="connectionFactory" ref="{$queueFactoryID}-reply"/>
        </xsl:when>
        <xsl:otherwise>
          <property name="destination" ref="{$q_ID}"/>      
          <xsl:sequence select="f:generateLineComment('POJO to delegate JMS Messages to', 5)"/>
          <property name="messageListener" ref="{$q_listenerID}"/>
          <property name="connectionFactory" ref="{$queueFactoryID}"/>
        </xsl:otherwise>
      </xsl:choose>
           
      <xsl:if test="$inputOrReturn eq 'input'">
        <property name="messageSelector" value="Command=2000 OR Command=2002" /> <!-- Process or CPC request -->
      </xsl:if>
    </bean>
     
    <xsl:if test="$remote[self::u:remoteAnalysisEngine]">
      <xsl:sequence select="f:generateLineComment((
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
        concat('Destination Resolver for ',$remote/@key),
         $q_ID,
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'),3)"/>    
      <bean id="{f:getDestinationResolverID($aeNameUnique, $remote/@key)}"
        class="org.apache.uima.adapter.jms.activemq.TempDestinationResolver"
        singleton="false">
        <property name="connectionFactory" ref="{$queueFactoryID}-reply"/>
      </bean>
    </xsl:if>

    <xsl:if test="$inputOrReturn eq 'input'">
      <xsl:sequence select="f:generateLineComment((
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
     concat('GetMeta JMS msg listener container for ', $inputOrReturn, ' queue for:'),
         $q_ID,
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'),3)"/>    
      <bean id="{concat($msgListenerContainerID, '_getMeta')}"
        class="org.apache.uima.adapter.jms.activemq.UimaDefaultMessageListenerContainer">
  
        <!-- next commented out to have this bean use a different pool than the other one
             because the other one has each thread "pinned" to a particular instance of
             an analysis engine (so the ae always runs on the same thread, as required by
             some impls (like python?) -->
        <!--xsl:if test="$poolingTaskExecutor">
          <xsl:sequence select="f:generateLineComment('Connect to pooling task executor for primitive',5)"/>
          <property name="taskExecutor" ref="{$poolingTaskExecutor}"/>
        </xsl:if-->
  
        <xsl:sequence select="f:generateLineComment('Define number of JMS Consumers',5)"/>
        <property name="concurrentConsumers" value="1"/>
        
        <xsl:sequence select="f:generateLineComment(concat($inputOrReturn, ' Queue'), 5)"/>
        <property name="destination" ref="{$q_ID}"/>
             
        <xsl:sequence select="f:generateLineComment('POJO to delegate JMS Messages to', 5)"/>
        <property name="messageListener" ref="{$q_listenerID}"/>
        
        <property name="connectionFactory" ref="{$queueFactoryID}"/>
        <property name="messageSelector" value="Command=2001" /> <!-- getMeta request -->
      </bean>
    </xsl:if>  

  </xsl:template>  

  <!--================================================-->
  <!--   Generate a Cas Multiplier Sync input Channel -->
  <!--================================================-->
  
  <!-- note: NO LONGER USED as of UIMA-1019 design change -->
  <!--xsl:template name="generateCMSyncInputChannel">
    <xsl:param name="aeNameUnique"/>
    <xsl:param name="q_ID"/-->   <!-- this is a descriptor-unique bean id of the input (or ret) q endpoint -->
    <!--xsl:param name="queueFactoryID"/>
    <xsl:param name="inputOrReturn"/--> <!-- input or return -->
    <!--xsl:param name="kind"/--> <!-- either primitive or asAggr, used as 1st part of ctlr name -->
    <!--xsl:param name="msgHandlerChainID"/>
    <xsl:param name="nbrConcurrentConsumers"/>
    <xsl:param name="remote"/-->  <!-- is always () -->
    <!--xsl:param name="poolingTaskExecutor"/>
    
    <xsl:variable name="q_listenerID" select="concat($kind, '_', $inputOrReturn, '_q_listenerID_',$aeNameUnique,
             if ($remote) then concat('_', $remote/@key) else '')"/>    
    <xsl:variable name="msgListenerContainerID" select="concat($kind, '_', $inputOrReturn, '_msgLsnrCntnr_', $aeNameUnique,
             if ($remote) then concat('_', $remote/@key) else '','__CasSync')"/>    


    <xsl:sequence select="f:generateLineComment((
      '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
      'JMS msg listener container for ', 
      'second listener handling messages from the throttle queue.',
      'This Q holds requests to free CAS Multiplier CASes',
      'back to the CM CAS Pool.',
       concat($q_ID, '__CasSync'),
      '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'),3)"/>    
    <bean id="{$msgListenerContainerID}"
      class="org.apache.uima.adapter.jms.activemq.UimaDefaultMessageListenerContainer"-->

      <!-- next commented out - because pool instances are "pinned" to particular ae engine instances -->
      <!--xsl:if test="$poolingTaskExecutor">
        <xsl:sequence select="f:generateLineComment('Connect to pooling task executor for primitive',5)"/>
        <property name="taskExecutor" ref="{$poolingTaskExecutor}"/>
      </xsl:if-->

      <!--xsl:sequence select="f:generateLineComment('Define number of JMS Consumers',5)"/>
      <property name="concurrentConsumers" value="{$nbrConcurrentConsumers}"/>
      
      <xsl:sequence select="f:generateLineComment(concat($inputOrReturn, ' Queue'), 5)"/>
      <property name="destination" ref="{concat($q_ID,'__CasSync')}"/>
           
      <xsl:sequence select="f:generateLineComment('POJO to delegate JMS Messages to', 5)"/>
      <property name="messageListener" ref="{$q_listenerID}"/>
      
      <property name="connectionFactory" ref="{$queueFactoryID}"/>
    </bean>
  </xsl:template-->
    
  <!--==========================================-->
  <!--   Generate an output Channel             -->
  <!--==========================================-->
  <xsl:template name="generateOutputChannel">
    <xsl:param name="aeNode"/>
    <xsl:param name="origin_q_name"/>
    <xsl:param name="return_q_ID"/>
    <xsl:param name="kind"/>

    <xsl:sequence select="f:generateLineComment((
      '==================================',
      'OutputChannel - for flows out of ',
      'this component, both to delegates',
      '(if aggr) and back up to sender',
      '=================================='
      ), 3)"/> 
    
    <bean id="{f:getOutputChannelID($aeNode)}"
          class="org.apache.uima.adapter.jms.activemq.JmsOutputChannel" init-method="initialize">
      <property name="serviceInputEndpoint" value="{$origin_q_name}"/>
      <property name="controller" ref="{f:getControllerID($aeNode)}" />
      <xsl:if test="$kind = 'asAggr'">
        <property name="controllerInputEndpoint" value="{$return_q_ID}" />
      </xsl:if>
    </bean>
  </xsl:template>

  <!-- ========================================================================= -->  
  <!--   async input:    meta, processRequest                                    -->  
  <!--   async internal: meta, processRequest, processResponse because used to   -->  
  <!--                     send to co-located delegates                          -->  
  <!--   primitive:      meta, processRequest                                    -->  
  <!-- ========================================================================= -->  
  <xsl:template name="generateMsgHandlerChain">
    <xsl:param name="aeNode"/>
    <xsl:param name="kind"/>
    <xsl:sequence select="$nl"/>
    <xsl:sequence select="f:generateBlockComment(
      (concat('  M E S S A G E    H A N D L E R: ', $kind),
       concat(' for controller: ', f:getControllerID($aeNode))), 3)"/>
       
     <xsl:sequence select="concat($nl,'   ')"/>
    
     <!-- either generate "return" msg handlers or "receiving requests" msg handlers -->
     <xsl:if test="$kind ne 'aggregate_return'"> 
       <bean id="{f:getMetaMsgHandlerID($aeNode, $kind)}"
         class="org.apache.uima.aae.handler.input.MetadataRequestHandler_impl">
        <!-- Define handlers name -->
        <constructor-arg index="0" value="MetadataRequestHandler"/>
        <property name="controller" ref="{f:getControllerID($aeNode)}"/>
        <!-- Link to the next handler in the chain -->
        <property name="delegate" ref="{f:getProcessRequestHandlerID($aeNode, $kind)}"/>
      </bean>
  
      <xsl:sequence select="$nl2"/>
      <bean id="{f:getProcessRequestHandlerID($aeNode, $kind)}" class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl" >
        <!-- Define handlers name -->
        <constructor-arg index="0" value="ProcessRequestHandler"/>
        <property name="controller" ref="{f:getControllerID($aeNode)}" />
        <!-- Link to the next handler in the chain -->
        <!--xsl:if test="$kind eq 'aggregate_return'">
          <property name="delegate" ref="{f:getProcessResponseHandlerID($aeNode, $kind)}" />
        </xsl:if-->
      </bean>
    </xsl:if>
    
    <xsl:if test="$kind eq 'aggregate_return'">
      
      <xsl:sequence select="$nl2"/>
      <bean id="{f:getProcessResponseHandlerID($aeNode, 'aggregate_return')}" 
        class="org.apache.uima.aae.handler.input.ProcessResponseHandler" >
       <!-- Define handlers name -->
        <constructor-arg index="0" value="ProcessResponseHandler"/>
        <property name="controller" ref="{f:getControllerID($aeNode)}" />
        <property name="delegate" ref="{f:getMetaMsgHandlerID($aeNode, concat($kind, '_response'))}" />
      </bean> 
     
      <xsl:sequence select="$nl2"/>
      <bean id="{f:getMetaMsgHandlerID($aeNode, concat($kind, '_response'))}" 
               class="org.apache.uima.aae.handler.input.MetadataResponseHandler_impl">
       <!-- Define handlers name -->
        <constructor-arg index="0" value="MetadataResponseHandler"/>
        <property name="controller" ref="{f:getControllerID($aeNode)}" />
        <property name="delegate" ref="{f:getProcessRequestHandlerID($aeNode, $kind)}" />
      </bean> 

      <xsl:sequence select="$nl2"/>
      <!-- the reason there is a ProcessRequest handler in the return queue is because
           this is how Cas Multiplier things are handled -->
      <bean id="{f:getProcessRequestHandlerID($aeNode, $kind)}" class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl" >
        <!-- Define handlers name -->
        <constructor-arg index="0" value="ProcessRequestHandler"/>
        <property name="controller" ref="{f:getControllerID($aeNode)}" />
      </bean> 

    </xsl:if>

  </xsl:template>
  <!--============================================================-->       
  <!--           Standard Beans                                  =-->       
  <!--============================================================--> 
  <xsl:template name="generateStandardBeans">

    
    <!-- no longer true need an internal broker if any of the following are true -->
    <!--   A service is async = true (implies aggregate)
    or The service specifies its input queue as "vm:..."
    -->

    <!-- only generate for inputq = localhost.  async=true handled with Java queue -->
    <!-- removed: boolean(u:service/u:analysisEngine[@async eq 'true']) or  -->    
    <!-- next removed per Jira UIMA-1288
    <xsl:if
      test="boolean(u:service/u:inputQueue[@brokerURL='vm://localhost'])">
      
      <xsl:sequence select="f:generateLineComment('connection factory for co-located things',3)"/>
      <bean id="controllerJmsFactory"
        class="org.apache.activemq.ActiveMQConnectionFactory"
        depends-on="brokerDeployerService">
        <property name="brokerURL" value="vm://localhost"/>
        <property name="prefetchPolicy" ref="prefetchPolicy"/>
      </bean>
    </xsl:if>
    -->
    
    <!-- no longer for async=true, only for inputq = localhost -->
    <!-- next removed per Jira UIMA-1288
    <xsl:if test="boolean(u:service/u:inputQueue[@brokerURL='vm://localhost'])">
      <xsl:sequence select="f:generateLineComment('Deploys a co-located broker',3)"/>
      <bean id="brokerDeployerService" class="org.apache.uima.adapter.jms.activemq.BrokerDeployer">
        <constructor-arg index="0" value="{1000 * 1024 * 1024}"/>
      </bean>
        
    </xsl:if>
    -->
        <!--    
    <xsl:message select="$uniqueInputQueueBrokers"/>
    <xsl:message select="name($uniqueInputQueueBrokers/u:inputQueue)"/>
    <xsl:message>*** unique Input Queue Brokers ***</xsl:message>
    <xsl:message select="name($uniqueInputQueueBrokers/holder) = ''"/>
    
    <xsl:message>*** end unique Input Queue Brokers ***</xsl:message> -->
    
    <!-- all input queues except the vm://localBroker one -->
    <xsl:for-each select="$uniqueInputQueueBrokers/u:inputQueue">
      <xsl:sequence select="f:generateLineComment(
        ('Factory for specific external queue broker:',
         @brokerURL),3)"/>
      <bean id="{f:getQbrokerID(.)}"
        class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="{@brokerURL}"/>
        <property name="prefetchPolicy" ref="prefetchPolicy"/>
      </bean>
    </xsl:for-each>
    
    <!-- all input queues except the vm://localBroker one -->
    <xsl:for-each select="$uniqueInputQueueBrokers/u:inputQueue">
      <xsl:sequence select="f:generateLineComment(
        ('Factory for specific external queue broker:',
         @brokerURL),3)"/>
      <bean id="{f:getQbrokerID(.)}-reply"
        class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="{@brokerURL}"/>
        <property name="prefetchPolicy" ref="prefetchPolicy-reply"/>
      </bean>
    </xsl:for-each>
        
              <!-- Creates an instance of the ResourceManager -->
   <xsl:sequence select="f:generateLineComment('Creates an instance of the ResourceManager',3)"/>
   <bean id="resourceManager" class="org.apache.uima.aae.UimaClassFactory"
    factory-method="produceResourceManager" singleton="true"/>

      <!-- Creates an instance of the CasManager -->
   <xsl:sequence select="f:generateLineComment('Creates an instance of the CasManager',3)"/>
   <bean id="casManager" class="org.apache.uima.aae.AsynchAECasManager_impl" singleton="true" >
      <constructor-arg index="0" ref="resourceManager"/>
      <xsl:sequence select="f:generateLineComment('Defines how many CASes will be in the CAS pool',5)"/>
      <property name="casPoolSize" value="{u:casPool/@numberOfCASes}" />
      <xsl:if test="u:casPool/@initialFsHeapSize">
        <xsl:sequence select="f:generateLineComment('Initial heap size for CASes',5)"/>
        <property name="initialFsHeapSize" value="{if (u:casPool/@initialFsHeapSize eq 'defaultFsHeapSize') 
            then '2000000' 
            else u:casPool/@initialFsHeapSize}" />
      </xsl:if>
    </bean>

    <!-- create bean to do placeholder substitution Jira UIMA-1288 -->
    <bean id="placeholderSubstitution" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>  
    </bean>
    
    <!-- Creates a Shared Cache  -->
    <xsl:sequence select="f:generateLineComment('Creates a Shared Cache',3)"/>
    <bean id="inProcessCache" class="org.apache.uima.aae.InProcessCache" /> 
    
    <xsl:sequence select="f:generateLineComment('Create prefetch policy', 3)"/>
    
    <bean id="prefetchPolicy" class="org.apache.activemq.ActiveMQPrefetchPolicy">
      <property name="queuePrefetch" 
        value="{u:service/u:inputQueue/@prefetch}"/>
    </bean>
    
    <bean id="prefetchPolicy-reply" class="org.apache.activemq.ActiveMQPrefetchPolicy">
      <property name="queuePrefetch" 
        value="1"/>
    </bean>
    
    <xsl:call-template name="generateErrorConfigDetails"/>
  </xsl:template>

  
  <xsl:template  match="u:delegates">
    
    <xsl:variable name="aggrNode" select="parent::node()"/>
 
    <!--xsl:message select="' *** in delegates ***'"/-->
      
    <xsl:for-each select="u:analysisEngine">
      
      <xsl:variable name="iqn" select="f:getInternalInputQueueName(.)"/>
      
      <!-- no longer generate internal input queues - switched to using Java queues
      <xsl:sequence select="f:generateLineComment((
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~',
        'Internal Input Queue for',
        @key,
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~'), 3)"/>
      <bean id="{$iqn}" 
            class="org.apache.activemq.command.ActiveMQQueue">
         <constructor-arg index="0" value="{$iqn}"/>
      </bean>
      -->
      
      <xsl:apply-templates  select=".">
        <xsl:with-param tunnel="yes" name="input_q_ID" select="$iqn"/>
        <xsl:with-param tunnel="yes" name="inputQueueFactoryID" select="'controllerJmsFactory'"/>  
      </xsl:apply-templates>  
    </xsl:for-each>

    <xsl:apply-templates select="u:remoteAnalysisEngine"/>
     
  </xsl:template>
          
  <!--============================================================-->       
  <!--           do nothing template - if not here, get the value=-->
  <!--             outputted by default                          =-->       
  <!--============================================================-->
  
  <xsl:template match="u:environmentVariable"/>
  
  <!--============================================================-->       
  <!--           pass 1 - put in defaults                        =-->       
  <!--============================================================-->
  
  <!-- ddd = deployment descriptor with defaults -->
  <xsl:variable name="ddd">
    <!-- <xsl:message>Applying defaults to</xsl:message>
    <xsl:message select="."/> -->
    <xsl:sequence select="f:validateDeploymentDescriptor(u:analysisEngineDeploymentDescription)"/>
    <xsl:variable name="result">
      <xsl:apply-templates mode="addDefaults" select="u:analysisEngineDeploymentDescription"/>
    </xsl:variable>
    <!--xsl:message select="'start of default output'"/>
    <xsl:message select="$result"/>
    <xsl:message select="'end of default output'"/-->
    <xsl:sequence select="$result"/>
  </xsl:variable>

  <xsl:template mode="addDefaults" match=
    "u:analysisEngineDeploymentDescription|
     u:topDescriptor|
     u:import|
     u:name|
     u:description|
     u:version|
     u:vendor|
     u:casManagement|
     u:errorHandling|
     u:timeout|
     u:exception|
     u:userErrorHandler|
     u:userErrorHandlerSpec
    ">
    <!--xsl:sequence select="f:validate(.)"/-->
    <xsl:copy>       
     <xsl:copy-of select='@*'/>
     <xsl:apply-templates mode="addDefaults"/> 
    </xsl:copy>
  </xsl:template>
  
  <xsl:template mode="addDefaults" match="u:deployment[@protocol='jms' and @provider='activemq']" >
    <!--xsl:sequence select="f:validate(.)"/-->
    <u:deployment protocol="jms" provider="activemq">
      <xsl:choose>
        <xsl:when test="not(u:casPool)">
          <xsl:choose>
            <xsl:when test=             "u:service/u:analysisEngine[(not(@async)) or (@async = ('no', 'false'))]/u:scaleout/@numberOfInstances">
              <u:casPool numberOfCASes="{u:service/u:analysisEngine[(not(@async)) or (@async = ('no', 'false'))]/u:scaleout/@numberOfInstances}"
                 initialFsHeapSize="defaultFsHeapSize"/>
            </xsl:when>
            <xsl:otherwise>
              <u:casPool numberOfCASes="1" initialFsHeapSize="defaultFsHeapSize"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:when>
          
        <xsl:otherwise>
          <!-- casPool argument provided.  verify that the number of instances is >= scaleout if scaleout is present -->
          <!-- DONE later in this defaulting code - also handle case where not all parameters were specified -->
        </xsl:otherwise>
      </xsl:choose>
      <xsl:apply-templates mode="addDefaults"/>
    </u:deployment>
  </xsl:template>

  <!-- allow old services for now -->
  <xsl:template mode="addDefaults" match="u:services">
    <!--xsl:sequence select="f:validate(.)"/-->
    <xsl:apply-templates mode="addDefaults"/>
  </xsl:template>          

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:          -->
  <!--     <casPool>               -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> 
  <xsl:template mode="addDefaults" match="u:casPool">
    
    <!-- UIMA-1666
       if it's an non-async primitive at the top level which is scaled out,
         if the scaleout != the caspool size, give a warning message and force the caspool size to be the scaleout
    -->
    <xsl:variable name="isTopLvlSync" as="xs:boolean" select=
      "if (../u:service/u:analysisEngine[(not(@async)) or (@async = ('no', 'false'))]) then fn:true() else fn:false()"/>
    
    <xsl:variable name="nbrInstances" select="../u:service/u:analysisEngine/u:scaleout/@numberOfInstances"/>
    
    <xsl:variable name="casPoolSize" as="xs:integer">      
      <xsl:choose>
        <xsl:when test="$isTopLvlSync and 
          $nbrInstances and
          ./@numberOfCASes and
         ($nbrInstances ne ./@numberOfCASes)">
          <xsl:sequence select="f:msgWithLineNumber(
                'WARN',
                ('Top level Async Primitive specifies a scaleout of', $nbrInstances,
                 ', but also specifies a Cas Pool size of', ./@numberOfCASes,
                 '.  The Cas Pool size is being forced to be the same as the scaleout.'), 
                .)"/>
          <xsl:sequence select="$nbrInstances"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select="if (./@numberOfCASes) then ./@numberOfCASes else '1'"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <u:casPool numberOfCASes="{$casPoolSize}"
               initialFsHeapSize="{if (./@initialFsHeapSize) then ./@initialFsHeapSize else 'defaultFsHeapSize'}"/>
  </xsl:template>
    
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:          -->
  <!--     <service>               -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
  <xsl:template mode="addDefaults" match="u:service">
    <!--xsl:sequence select="f:validate(.)"/-->   
    <xsl:variable name="ae_descriptor" select="f:getImport(u:topDescriptor/u:import)"/> 
    <!--xsl:message select="'*** top descriptor'"/>
    <xsl:message select="$ae_descriptor"/-->
    
    <xsl:variable name="isTopLvlCpp" as="xs:string" 
      select="if (f:isCPP($ae_descriptor) and 
                   (u:custom/@name eq 'run_top_level_CPP_service_as_separate_process'))
               then 'yes' else 'no'"/>        
    <u:service i:isTopLvlCpp="{$isTopLvlCpp}">
   
      <xsl:for-each select="u:custom">
        <xsl:copy-of select="."/>
      </xsl:for-each>
      
      <xsl:choose>
        <xsl:when test="u:inputQueue">
          <xsl:if test="not(starts-with(u:inputQueue/@brokerURL, 'tcp://')) and 
                        not(starts-with(u:inputQueue/@brokerURL, '${')) and
                        @brokerURL">
            <xsl:sequence select="f:msgWithLineNumber(
            'ERROR',
            'top level input Queue broker protocol must be tcp:// for a top level C++ component',
            .)"/>
          </xsl:if>
          <xsl:apply-templates mode="addDefaults" select="u:inputQueue"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select="f:msgWithLineNumber(
            'ERROR',
            'top level service element must have an inputQueue element',
            .)"/>
          <!--xsl:message select="'ERROR: top level service element must have an inputQueue element'"/-->
        </xsl:otherwise>
      </xsl:choose>
     
      <!--xsl:copy-of select="u:topDescriptor"/  not used in pass 2 -->
      <xsl:if test="not(u:topDescriptor/u:import/(@location|@name))">
        <xsl:sequence select="f:msgWithLineNumber(
            'ERROR',
            ('Service', string(u:inputQueue/@endpoint), 'missing required topDescriptor element'),
            .)"/>
        
        <!--xsl:message select=
          "concat('ERROR: Service ', u:inputQueue/@endpoint, ' missing required topDescriptor element')"/-->
      </xsl:if>
       
      <xsl:choose>
        <xsl:when test="$isTopLvlCpp eq 'yes'">
          <xsl:copy-of select="u:environmentVariables"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:if test="u:environmentVariables">
            <xsl:sequence select="f:msgWithLineNumber(
              'ERROR',
              ('Service element contains an environmentVariables element,', $nl,  
              'but the referenced top-level descriptor isn''t a C++ component'),
              .)"/>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
             
      <xsl:variable name="generatedAE">
        <!-- wrap the intended fragment in a service so that later, other code can 
             test the parent to see it is the top level one -->
        <u:service>
          <u:analysisEngine key="{u:inputQueue/(@endpoint|@queueName)}" async="false"/>
        </u:service>  
      </xsl:variable>
        
      <!--xsl:message select="'*** u:service/* '"/>
        <xsl:message select="."/-->
       <xsl:variable name="topLevelAe"
        select="if (u:analysisEngine) then u:analysisEngine else $generatedAE/u:service/u:analysisEngine"/>

      <!--xsl:message select="'top descriptor/import'"/>
      <xsl:message select="u:topDescriptor/u:import"/-->
      <xsl:variable name="aePath" select="f:fixupPath(u:topDescriptor/u:import, '.')"/>
      <xsl:apply-templates mode="addDefaults" select="$topLevelAe">
        <xsl:with-param name="defaultErrorConfig"  tunnel="yes" select="'topAe'"/>
        <xsl:with-param name="local_ae_descriptor" tunnel="yes" select="$ae_descriptor"/>
        <xsl:with-param tunnel="yes" name="local_ae_descriptor_file_path" select="$aePath"/>
      </xsl:apply-templates> 
       
    </u:service>  
  </xsl:template>

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:          -->
  <!--     <inputQueue>            -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <xsl:template mode="addDefaults" match="u:inputQueue">
    <!--xsl:sequence select="f:validate(.)"/-->

      <!--xsl:message select="'*** defaulting inputqueue'"/>
      <xsl:message select="@brokerURL"/-->
    <xsl:if test="not(@endpoint or @queueName)">
      <xsl:sequence select="f:msgWithLineNumber('ERROR', 'missing endpoint name in inputQueue element', .)"/>
      <!--xsl:message select="'ERROR: missing endpoint name in inputQueue element'"/-->
      <xsl:message select="."/>
    </xsl:if>
    <xsl:if test="@brokerURL eq 'vm://localhost'">
      <xsl:sequence select="f:msgWithLineNumber(
        'ERROR',
        'broker protocol of vm://localhost not supported',
        .)"/>
    </xsl:if>
    <xsl:choose>
      <xsl:when test="../../u:remoteAnalysisEngine">
        <xsl:choose>     
          <xsl:when test="not(@brokerURL)">
            <!-- no longer an error - see UIMA-1288 -->
            <!--xsl:sequence select="f:msgWithLineNumber(
               'ERROR',
               'remote input Queue broker protocol must be specified',
               .)"/-->
            <u:inputQueue brokerURL="{'${defaultBrokerURL}'}"
                           endpoint="{if (@endpoint) then @endpoint
                                                     else if (@queueName) then @queueName
                                                                          else ''}"
                           prefetch="{if (@prefetch) then @prefetch else '0'}"/>
          </xsl:when>
          <xsl:when test="starts-with(@brokerURL, 'vm://')">
            <xsl:sequence select="f:msgWithLineNumber(
               'ERROR',
               'remote input Queue broker protocol cannot be a vm://... protocol',
               .)"/>
          </xsl:when>
          <xsl:otherwise>
            <u:inputQueue brokerURL="{@brokerURL}"
                           endpoint="{if (@endpoint) then @endpoint
                                                     else if (@queueName) then @queueName
                                                                          else ''}"
                           prefetch="{if (@prefetch) then @prefetch else '0'}"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:when>
      <xsl:otherwise>
        <u:inputQueue brokerURL="{if (@brokerURL) then @brokerURL else '${defaultBrokerURL}'}"
                       endpoint="{if (@endpoint) then @endpoint
                                                 else if (@queueName) then @queueName
                                                                      else ''}"
                       prefetch="{if (@prefetch) then @prefetch else '0'}"/>    
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:          -->
  <!--     <analysisEngine>        -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> 
    
  <xsl:template mode="addDefaults" match="u:analysisEngine">
    <xsl:param tunnel="yes" name="local_ae_descriptor"/> 
    <xsl:param tunnel="yes" name="defaultErrorConfig"/>
    <xsl:param tunnel="yes" name="local_ae_descriptor_file_path"/>
   
    <!--xsl:message select="'******************start local ae descriptor'"/>
    <xsl:message select="$local_ae_descriptor"/>
    <xsl:message select="'******************end local ae descriptor'"/-->
      
    <!--xsl:sequence select="f:validate(.)"/-->     
    <xsl:variable name="key" as="xs:string">
      <xsl:choose>
        <xsl:when test="@key">
          <xsl:sequence select="@key"/>
        </xsl:when>
        <xsl:when test="parent::u:service">
          <!--
          <xsl:message select="'*** top key'"/>
          <xsl:message select="parent::node()/u:topDescriptor/u:import/@location"/> -->
          <xsl:sequence select="parent::u:service/u:inputQueue/(@endpoint|@queueName)"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence  select="f:msgWithLineNumber(
            'ERROR', 'required key name missing in delegate', .)"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    
    <!--xsl:message select="'key is'"/>
    <xsl:message select="$key"/ -->
    
    <xsl:if test="@async = ('yes', 'no')">
      <xsl:sequence select="f:msgWithLineNumber('WARNING',
             ('deployment descriptor for analysisEngine:', $key,
             'specifies', @async, ' but the async value should be true or false'),
             .)"/>
    </xsl:if>
    
    <xsl:variable name="async">
      <xsl:choose>
        <xsl:when test="(string(@async) = ('yes','true')) and 
                        not(f:isAggr($local_ae_descriptor))">
          <xsl:sequence select="f:msgWithLineNumber('ERROR',
             ('deployment descriptor for analysisEngine:', $key,
             'specifies async=&quot;true&quot; but the analysis engine is a primitive'),
             .)"/>
          <xsl:value-of select="'false'"/>
        </xsl:when>
        <xsl:when test="(string(@async) = ('yes','true')) and 
                        f:isCPP($local_ae_descriptor)">
          <xsl:sequence select="f:msgWithLineNumber('ERROR',
             ('deployment descriptor for analysisEngine:', $key,
             'specifies async=''true''; but this isn''t supported for CPP components'),
             .)"/>
          <xsl:value-of select="'false'"/>
        </xsl:when>
        <xsl:when test="not(string(@async) = ('yes', 'no', 'true', 'false', ''))">
          <xsl:sequence select="f:msgWithLineNumber('ERROR',
             ('deployment descriptor for analysisEngine:', $key,
             'specifies', concat('async=&quot;', string(@async),
                   '&quot;, but only true or false are allowed as values.')),
             .)"/>
          <xsl:value-of select="if (f:isAggr($local_ae_descriptor)) then 'true' else 'false'"/>    
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select=
            "if (@async) then if (string(@async) = ('yes', 'true')) then 'true' else 'false' 
                         else if (u:delegates and not(f:isCPP($local_ae_descriptor))) then 'true' else 'false'"/>    
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    
    <xsl:if test="(string($async) = ('false', 'no')) and u:delegates">
      <xsl:sequence select="f:msgWithLineNumber('ERROR',
        ('deployment descriptor for analysisEngine:', $key,
         'specifies false for the async attribute, but contains a delegates element, which is not allowed in this case.'), .)"/>
    </xsl:if>
     
    <!--xsl:sequence select="f:msgWithLineNumber('INFO', 
        ('deployment descriptor for AE:', $key,
         'has delegate?', if (u:delegates) then 'true' else 'false',
         'async is:', $async), .)"/-->
    
    
    <xsl:variable name="internalReplyQueueScaleout" as="xs:string">
      <!-- next choose commentted out because it disallowed internal reply q scaleout
           for primitives - but this could be needed for primitives which are
           CAS multipliers -->
      <!--xsl:choose>
        <xsl:when test="(string($async) = 'false') and @internalReplyQueueScaleout">
          <xsl:sequence select="f:msgWithLineNumber('WARN',
              ('deployment descriptor for analysisEngine:', $key,
               'specifies', concat('internalReplyQueueScaleout=&quot;', string(@internalReplyQueueScaleout),
               '&quot;, this is ignored for async=&quot;false&quot; analysisEngine specifications.')),
              .)"/>
          <xsl:value-of select="'1'"/>
        </xsl:when>
        <xsl:otherwise-->
          <xsl:sequence select="if (@internalReplyQueueScaleout) then @internalReplyQueueScaleout else '1'"/>
        <!--/xsl:otherwise>
      </xsl:choose-->
    </xsl:variable>

    <xsl:variable name="inputQueueScaleout" as="xs:string">
      <xsl:choose>
        <xsl:when test="(string($async) = 'false') and @inputQueueScaleout">
          <xsl:sequence select="f:msgWithLineNumber('WARN',
              ('deployment descriptor for analysisEngine:', $key,
               'specifies', concat('inputQueueScaleout=&quot;', string(@inputQueueScaleout),
               '&quot;, this is ignored for async=&quot;false&quot; analysisEngine specifications.'),
               'Use the scaleout numberOfInstances=xx element instead for this, for primitives.'),
              .)"/>
          <xsl:value-of select="'1'"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select="if (@inputQueueScaleout) then @inputQueueScaleout else '1'"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
         
    <u:analysisEngine key="{$key}" async="{$async}"
      internalReplyQueueScaleout="{$internalReplyQueueScaleout}"
      inputQueueScaleout        ="{$inputQueueScaleout}">
 
      <i:local_ae_descriptor file_path="{$local_ae_descriptor_file_path[1]}">
        <!--xsl:message select="'local_ae_descriptor'"/>
        <xsl:message select="$local_ae_descriptor"/-->  
        <xsl:sequence select="$local_ae_descriptor"/>
      </i:local_ae_descriptor>
      
      <!--xsl:apply-templates mode="addDefaults" select="u:casMultiplier"/-->
      <xsl:choose>
        <xsl:when test="(string($local_ae_descriptor/*/u:analysisEngineMetaData/u:operationalProperties/u:outputsNewCASes) eq 'true')
                        or $local_ae_descriptor/u:collectionReaderDescription">
          <!--xsl:if test="u:casMultiplier">
            <xsl:sequence select="f:validate(u:casMultiplier)"/>
          </xsl:if-->
          <xsl:choose>
            <xsl:when test="u:casMultiplier">
              <xsl:if test="(string($async) eq 'true') and
                      (u:casMultiplier/@poolSize or
                       u:casMultiplier/@initialFsHeapSize)">
                <xsl:sequence select="f:msgWithLineNumber('WARNING',
                   ('casMultiplier settings for poolSize (', u:casMultiplier/@poolSize, 
                    ') and initialFsHeapSize (', u:casMultiplier/@initialFsHeapSize, ')',
                    $nl, 'will be ignored',
                    'for the analysisEngine with key=', $key, $nl,
                    'because the pool specs are set using the contained delegate cas multiplier specification.'
                   ),
                   .)"/>       
              </xsl:if>
              <xsl:if test="parent::u:service and u:casMultiplier/@processParentLast">
                <xsl:sequence select="f:msgWithLineNumber('WARNING',
                   ('casMultiplier settings for processParentLast will be ignored',
                    'for the top-level analysisEngine with key=', $key, $nl,
                    'To specify this value for the top level,', 
                    'specify it on the containing (remote) aggregate for this service.'
                   ),
                   .)"/>       
              </xsl:if>
              
              <!-- the above conditionally printed warnings 
                   The below generates the properly defaulted element -->
              <xsl:choose>
                <xsl:when test="(string($async) eq 'true') and not(parent::u:service)">
                  <u:casMultiplier 
                    processParentLast="{if (u:casMultiplier/@processParentLast) then u:casMultiplier/@processParentLast else 'false'}"
                  />
                </xsl:when>
                <!--  top level async: no cas multiplier settings are used
                      size etc from contained CM;
                      processParentLast not applicable for top level - 
                      uses (remote) containing aggregate's setting, if any
                      
                      However the casMultiplier element is generated so that 
                      a Second Input Q is built for messages from remote cas 
                      Multipliers, at the top level -->
                <xsl:when test="string($async) eq 'true'">
                  <u:casMultiplier/>                  
                </xsl:when>
                
                <!-- case async = false and not top level -->
                <xsl:when test="not(parent::u:service)">
                  <u:casMultiplier poolSize="{if (u:casMultiplier/@poolSize) then u:casMultiplier/@poolSize else '1'}"
                          initialFsHeapSize="{if (u:casMultiplier/@initialFsHeapSize) then u:casMultiplier/@initialFsHeapSize else '2000000'}"
                          processParentLast="{if (u:casMultiplier/@processParentLast) then u:casMultiplier/@processParentLast else 'false'}"
                  />  
                </xsl:when>
                <!-- case async = false, top level -->
                <xsl:otherwise>
                  <u:casMultiplier poolSize="{if (u:casMultiplier/@poolSize) then u:casMultiplier/@poolSize else '1'}"
                          initialFsHeapSize="{if (u:casMultiplier/@initialFsHeapSize) then u:casMultiplier/@initialFsHeapSize else '2000000'}"
                  />  
                </xsl:otherwise>             
              </xsl:choose>
            </xsl:when>
            
            <!-- after this point, have a cas multiplier, without a <casMultiplier> element -->
            
            
            <!-- async true, not top level -->
            <xsl:when test="(string($async) eq 'true') and
                            (not(parent::u:service))">
             <xsl:sequence select="f:msgWithLineNumber('WARN',
               ('Deployment descriptor for analysisEngine:', $key,
               'is for a non-top-level CAS Multiplier (or Collection Reader wrapped as a CAS Multiplier).', $nl,
               'However, the &lt;casMultiplier> element is missing.', $nl,
               'The &lt;casMultiplier> element is only used here for specifying the processParentLast attribute.', $nl,
               'Defaulting to a processParentLast to false for this case, to',
               'let the parent flow with its chlidren.'),
               .)"/>
              <u:casMultiplier processParentLast="false"/>
            </xsl:when>
             
            <!-- async true top level - no cas multiplier settings are used
                      size etc from contained CM;
                      processParentLast not applicable for top level - 
                      uses (remote) containing aggregate's setting, if any
                      
                      However the casMultiplier element is generated so that 
                      a Second Input Q is built for messages from remote cas 
                      Multipliers, at the top level -->
            <xsl:when test="(string($async) eq 'true') and
                            (parent::u:service)">
              <u:casMultiplier/>             
            </xsl:when>
            
            <!-- async = false, not top level -->
            <xsl:when test="not(parent::u:service)">
              <xsl:sequence select="f:msgWithLineNumber('WARN',
             ('deployment descriptor for analysisEngine:', $key,
             'is for a synchronous CAS Multiplier (not top level) (or Collection Reader wrapped as a CAS Multiplier).', $nl,
             'However, the &lt;casMultiplier> element is missing.', $nl,
                'Defaulting to a poolSize of 1, initialFsHeapSize of 2,000,000.', $nl,
                'Defaulting to a processParentLast to false for this case, to',
                'let the parent flow with its chlidren.'),
             .)"/>
              <u:casMultiplier poolSize="1" initialFsHeapSize="2000000" processParentLast="false"/>
            </xsl:when>

            <!--xsl:when test="u:casMultiplier/@poolSize">
              <xsl:copy-of select="u:casMultiplier"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:sequence select="f:msgWithLineNumber('ERROR',
             ('deployment descriptor for analysisEngine:', $key,
             'is for a CAS Multiplier (or Collection Reader wrapped as a CAS Multiplier), but no pool size is specified'),
             .)"/>
              <u:casMultiplier poolSize="1" initialFsHeapSize="2000000"/>
            </xsl:otherwise-->
          </xsl:choose>
        </xsl:when>
        <xsl:otherwise>  <!-- is not a cas multiplier -->
          <xsl:if test="u:casMultiplier">
            <xsl:sequence select="f:msgWithLineNumber('ERROR',
             ('deployment descriptor for analysisEngine:', $key,
             'specifies a casMultiplier element, but the analysisEngine is not a CAS multiplier'),
             .)"/>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
      
      <!-- xsl:message select="('parent of ae:', parent::u:service)"/-->
      <xsl:choose>
        <xsl:when test="parent::u:service">
          <xsl:choose>
            <xsl:when test="u:asyncPrimitiveErrorConfiguration">
              <xsl:apply-templates mode="addDefaults" select="u:asyncPrimitiveErrorConfiguration"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:variable name="primErr">
                <u:asyncPrimitiveErrorConfiguration/>
              </xsl:variable>
              <xsl:apply-templates mode="addDefaults" select="$primErr"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:when>
        <xsl:otherwise>
          <xsl:choose>
            <xsl:when test="u:asyncAggregateErrorConfiguration">
              <xsl:apply-templates mode="addDefaults" select="u:asyncAggregateErrorConfiguration"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:variable name="aggrErr">
                <u:asyncAggregateErrorConfiguration/>
              </xsl:variable>
              <xsl:apply-templates mode="addDefaults" select="$aggrErr"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:otherwise>
      </xsl:choose>
      
      <xsl:if test="$async eq 'true'">
        <xsl:if test="$local_ae_descriptor/*/u:flowController">
          <!--xsl:message select="$local_ae_descriptor"/>
          <xsl:message select="f:fixupPath($local_ae_descriptor/*/u:flowController/u:import, $local_ae_descriptor_file_path[2])[1]"/-->        
          <i:flowController file_path="{f:fixupPath($local_ae_descriptor/*/u:flowController/u:import, $local_ae_descriptor_file_path[2])[1]}"/>
        </xsl:if>
        <!--xsl:message select="'*** u:ae w delegates/* '"/>
        <xsl:message select="."/-->
        
        <!--xsl:sequence select="f:validate(u:delegates)"/-->     

        <xsl:call-template name="defaultDelegates">
          <xsl:with-param name="ddDelegates" select="u:delegates/*"/>
        </xsl:call-template>
      </xsl:if>
         
      <xsl:if test="$async = ('false', 'no')">
        <xsl:choose>
          <xsl:when test="u:scaleout">
            <!--xsl:message select="'*** defaulting scaleout'"/>
            <xsl:message select="u:scaleout"/-->
            <u:scaleout numberOfInstances="{if (u:scaleout/@numberOfInstances) then u:scaleout/@numberOfInstances else 1}"/>
          </xsl:when>
          <xsl:otherwise>
            <u:scaleout numberOfInstances="1"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:if>       
    </u:analysisEngine>
  </xsl:template> 

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:          -->
  <!--     <delegates>             -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
  <xsl:template name="defaultDelegates">
    <xsl:param name="ddDelegates"/>  <!-- analysisEngine(s) or remoteAnalysisEngine(s) -->
    <xsl:param tunnel="yes" name="defaultErrorConfig"/>
    <xsl:param tunnel="yes" name="local_ae_descriptor"/>
    <xsl:param tunnel="yes" name="local_ae_descriptor_file_path"/>                 

    <xsl:variable name="nextLevelDefaultErrorConfig" select=
          "if ($defaultErrorConfig eq 'topAe') then 'topDelegate' else 'none'"/>        

    <xsl:variable name="delegatesFromLocalAeDescriptor" select=
      "$local_ae_descriptor/(u:analysisEngineDescription|u:taeDescription)/u:delegateAnalysisEngineSpecifiers/u:delegateAnalysisEngine"/>
    
    <xsl:for-each select="$ddDelegates">
      <xsl:if test="not($delegatesFromLocalAeDescriptor[@key = current()/@key])">
        <xsl:sequence select="f:msgWithLineNumber('ERROR',
          ('The delegate in the deployment descriptor with', @key, ' does not match any delegates in the referenced descriptor'),
          .)"/>
      </xsl:if>
        
    </xsl:for-each>
    
    <!-- next limitation lifted for 2.3.0 
    <xsl:if test="count($ddDelegates[self::u:remoteAnalysisEngine[u:casMultiplier]]) > 1">
      <xsl:sequence select="f:msgWithLineNumber('ERROR',
        ('More than one remote delegate is a CAS Multiplier. This implementation only supports having one'),
         .)"/>
    </xsl:if>
    -->
    
    <u:delegates>
      <xsl:for-each select="$delegatesFromLocalAeDescriptor">
        <xsl:variable name="delegateAE" select="f:getDelegatePart($local_ae_descriptor, @key)"/>
        <!--xsl:message select="('*** Remote test default', @key)"/>
        <xsl:message select="$ddDelegates"/-->
        <xsl:variable name="aeOrRemote" as="node()">
          <xsl:choose>
            <xsl:when test="$ddDelegates[string(@key) = string(current()/@key)]">             
              <xsl:sequence select="$ddDelegates[string(@key) eq string(current()/@key)]"/>
            </xsl:when>
            <xsl:otherwise>
              <!-- next line commented out - 
                   Wrong logic
                   If a deployment descriptor doesn't have a analysisEngine or remoteAnalysisEngine
                     for a delegate, make the default for this always be asynch = false
                -->          
              <!-- u:analysisEngine key="{@key}" async="{if (f:isAggr($delegateAE)) then 'true' else 'false'}"/-->
              <u:analysisEngine key="{@key}" async="false"/>
            </xsl:otherwise> 
          </xsl:choose>              
        </xsl:variable> 
        
        <!--xsl:message select="concat(
          '*** aeOrRemote defaulting, errorConfig Flag is ', $nextLevelDefaultErrorConfig)"/-->
        <!--xsl:message select="$aeOrRemote"/-->
        
        <xsl:variable name="aePath" select="f:fixupPath(u:import, $local_ae_descriptor_file_path[2])"/>
          
        <xsl:apply-templates mode="addDefaults" select="$aeOrRemote">
          <xsl:with-param tunnel="yes" name="defaultErrorConfig" select="$nextLevelDefaultErrorConfig"/>
          <xsl:with-param tunnel="yes" name="local_ae_descriptor" select="$delegateAE"/>
          <xsl:with-param tunnel="yes" name="local_ae_descriptor_file_path" select="$aePath"/>
        </xsl:apply-templates>
      </xsl:for-each>
    </u:delegates>
  </xsl:template>
  
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:                          -->
  <!--     <u:asyncPrimitiveErrorConfiguration>    -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
  <xsl:template mode="addDefaults" match="u:asyncPrimitiveErrorConfiguration">
    <u:asyncPrimitiveErrorConfiguration>
      <xsl:choose>
        <xsl:when test="u:processCasErrors">
          <xsl:if test="u:processCasErrors/@thresholdCount and u:processCasErrors/@thresholdWindow">
            <xsl:if test="(u:processCasErrors/@thresholdWindow ne '0') and 
                           ((u:processCasErrors/@thresholdCount cast as xs:integer) gt (u:processCasErrors/@thresholdWindow cast as xs:integer))">
              <xsl:sequence select="f:msgWithLineNumber('ERROR',
                ('The', u:processCasErrors/@thresholdWindow, ' must be either 0, or larger than the', u:processCasErrors/@thresholdCount), 
                .)"/>
            </xsl:if>
          </xsl:if>
          
          <u:processCasErrors 
            thresholdCount= "{if (u:processCasErrors/@thresholdCount)  then u:processCasErrors/@thresholdCount  else 0}"
            thresholdWindow="{if (u:processCasErrors/@thresholdWindow) then u:processCasErrors/@thresholdWindow else 0}"
            thresholdAction="{if (u:processCasErrors/@thresholdAction) then u:processCasErrors/@thresholdAction else ''}"
          />          
        </xsl:when>
        <xsl:otherwise>
          <u:processCasErrors thresholdCount="0" thresholdWindow="0" thresholdAction=""/>
        </xsl:otherwise>     
      </xsl:choose>
      
      <xsl:choose>
        <xsl:when test="u:collectionProcessCompleteErrors">
          <u:collectionProcessCompleteErrors 
            additionalErrorAction="{if (u:collectionProcessCompleteErrors/@additionalErrorAction) 
                                      then u:collectionProcessCompleteErrors/@additionalErrorAction
                                      else ''}"
          />
        </xsl:when>
        <xsl:otherwise>
          <u:collectionProcessCompleteErrors additionalErrorAction=""/>
        </xsl:otherwise>
      </xsl:choose>
        
    </u:asyncPrimitiveErrorConfiguration>  
  </xsl:template>
  
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:                          -->
  <!--     <u:asyncAggregateErrorConfiguration>    -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
  <xsl:template mode="addDefaults" match="u:asyncAggregateErrorConfiguration">
    <u:asyncAggregateErrorConfiguration>
      <xsl:choose>
        <xsl:when test="u:getMetadataErrors">
          <u:getMetadataErrors 
            maxRetries= "{if (u:getMetadataErrors/@maxRetries)  then u:getMetadataErrors/@maxRetries  else 0}"
            timeout=    "{if (u:getMetadataErrors/@timeout)     then u:getMetadataErrors/@timeout     else 60000}"
            errorAction="{if (u:getMetadataErrors/@errorAction) then u:getMetadataErrors/@errorAction else 'terminate'}"
          />
        </xsl:when>
        <xsl:otherwise>
          <u:getMetadataErrors maxRetries="0" timeout="60000" errorAction="terminate"/> 
        </xsl:otherwise>
      </xsl:choose>
      
      <xsl:choose>
        <xsl:when test="u:processCasErrors">
          <xsl:if test="u:processCasErrors/@thresholdCount and u:processCasErrors/@thresholdWindow">
            <!--xsl:message select="('*** Running test', 'gt 9', ('100' cast as xs:integer) gt ('9' cast as xs:integer), 'more' )"/-->
            <xsl:if test="(u:processCasErrors/@thresholdWindow ne '0') and 
                           ((u:processCasErrors/@thresholdCount cast as xs:integer) gt (u:processCasErrors/@thresholdWindow cast as xs:integer))">
              <xsl:sequence select="f:msgWithLineNumber('ERROR',
                ('The', u:processCasErrors/@thresholdWindow, ' must be either 0, or larger than the', u:processCasErrors/@thresholdCount), 
                .)"/>
            </xsl:if>
          </xsl:if>
          <u:processCasErrors
            maxRetries= "{if (u:processCasErrors/@maxRetries)  then u:processCasErrors/@maxRetries  else 0}"
            timeout=    "{if (u:processCasErrors/@timeout)     then u:processCasErrors/@timeout     else 0}"
            continueOnRetryFailure=
              "{if (u:processCasErrors/@continueOnRetryFailure) then u:processCasErrors/@continueOnRetryFailure 
                                                                else 'false'}" 
            thresholdCount= "{if (u:processCasErrors/@thresholdCount)  then u:processCasErrors/@thresholdCount  else 0}"
            thresholdWindow="{if (u:processCasErrors/@thresholdWindow) then u:processCasErrors/@thresholdWindow else 0}"
            thresholdAction="{if (u:processCasErrors/@thresholdAction) then u:processCasErrors/@thresholdAction else ''}"
          />
        </xsl:when>
        <xsl:otherwise>
          <u:processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" 
                              thresholdCount="0" thresholdWindow="0" thresholdAction=""/>
        </xsl:otherwise>     
      </xsl:choose>
      
      <xsl:choose>
        <xsl:when test="u:collectionProcessCompleteErrors">
          <u:collectionProcessCompleteErrors
            timeout="{if (u:collectionProcessCompleteErrors/@timeout) then u:collectionProcessCompleteErrors/@timeout
                                                                      else 0}"
            additionalErrorAction="{if (u:collectionProcessCompleteErrors/@additionalErrorAction) 
                                       then u:collectionProcessCompleteErrors/@additionalErrorAction
                                       else ''}"
          />
        </xsl:when>
        <xsl:otherwise>
          <u:collectionProcessCompleteErrors timeout="0" additionalErrorAction=""/>
        </xsl:otherwise>
      </xsl:choose>
        
    </u:asyncAggregateErrorConfiguration>  
  </xsl:template>

  <!--
  <xsl:template mode="addDefaults" match="u:errorConfiguration">
    <xsl:param tunnel="yes" name="defaultErrorConfig"/> 
    
=       
    <xsl:variable name="errorHandling" select="u:errorHandling"/>
    <xsl:choose>
      <xsl:when test="$defaultErrorConfig eq 'topAe'">
        <xsl:sequence select="f:msgWithLineNumber('WARNING', 'errorConfiguration at top level not supported', .)"/>
        <!- -xsl:message select="'*** WARNING errorConfiguration at top level not supported'"/- ->
      </xsl:when>
      <xsl:otherwise>
        <xsl:choose>
          <xsl:when test="u:import">
            <xsl:apply-templates mode="addDefaults" select="f:getImport(u:import)"/>   
          </xsl:when>
          <xsl:otherwise>
            <u:errorConfiguration>
              <u:casManagement enableRevert="false"/>    
              <u:errorHandling>
                <xsl:for-each select="('metadataRequest', 'processRequest', 'collectionProcessingCompleteRequest')">
                  <xsl:call-template name="defaultTimeout">
                    <xsl:with-param name="timeoutNodes" select="$errorHandling/u:timeout"/>
                    <xsl:with-param name="eventKind" select="."/>
                  </xsl:call-template>
                </xsl:for-each>
                <xsl:call-template name="defaultException">
                  <xsl:with-param name="exceptionNodes" select="$errorHandling/u:exception"/>
                </xsl:call-template>
                <xsl:copy-of select="$errorHandling/u:userErrorHandler"/>
              </u:errorHandling>
            </u:errorConfiguration>
          </xsl:otherwise>
        </xsl:choose>   
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  
  <xsl:template name="defaultTimeout">
    <xsl:param tunnel="yes" name="defaultErrorConfig"/>
    <xsl:param name="timeoutNodes"/>
    <xsl:param name="eventKind"/>
   
    <xsl:choose>
      <xsl:when test="$timeoutNodes[@event eq $eventKind]">

        <xsl:copy-of select="$timeoutNodes[@event eq $eventKind]"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:if test="$defaultErrorConfig eq 'topDelegate'">
          <u:timeout event="{$eventKind}"
                     milliseconds="0"
                     threshold="0"
                     action="{'DropCas'}"/>
        </xsl:if>      
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 
  <xsl:template name="defaultException">
    <xsl:param tunnel="yes" name="defaultErrorConfig"/>
    <xsl:param name="exceptionNodes"/>
    
    <xsl:choose>
      <xsl:when test="$exceptionNodes">
        <xsl:for-each select="$exceptionNodes/u:exception">
          <xsl:copy-of select="."/>
        </xsl:for-each>
        
      </xsl:when>
      <xsl:otherwise>
        <xsl:if test="$defaultErrorConfig eq 'topDelegate'">
          <u:exception event="" threshold="1" action="DropCas"/>
        </xsl:if>      
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template-->

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <!--     D E F A U L T:          -->
  <!--     <remoteAnalysisEngine>  -->
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->       
  <xsl:template mode="addDefaults" match="u:remoteDelegate|u:remoteAnalysisEngine">
    <xsl:param tunnel="yes" name="defaultErrorConfig"/>
    <!--xsl:message select="'*** remote delegate defaulting pass 1 called '"/-->
    <!--xsl:sequence select="f:validate(.)"/-->  
    
    <xsl:variable name="remoteReplyQueueScaleout" as="xs:string"
      select="if (@remoteReplyQueueScaleout) then @remoteReplyQueueScaleout else '1'"/>
      
    <u:remoteAnalysisEngine key="{@key}" remoteReplyQueueScaleout="{$remoteReplyQueueScaleout}">
      <xsl:if test="u:casMultiplier">
        <u:casMultiplier poolSize="{if (u:casMultiplier/@poolSize) then u:casMultiplier/@poolSize else '1'}"
                initialFsHeapSize="{if (u:casMultiplier/@initialFsHeapSize) then u:casMultiplier/@initialFsHeapSize else '2000000'}"
                processParentLast="{if (u:casMultiplier/@processParentLast) then u:casMultiplier/@processParentLast else 'false'}"
                />
      </xsl:if>
      <xsl:variable name="tmp">
        <xsl:apply-templates mode="addDefaults" select="u:inputQueue"/>
      </xsl:variable>
      <!--xsl:message select="'*** remote delegate input q'"/>
      <xsl:message select="u:inputQueue"/-->
      <xsl:sequence select="$tmp"/>
      
      <xsl:choose>
        <xsl:when test="u:replyQueue">
          <xsl:sequence select="f:msgWithLineNumber('WARNING',
            ('replyQueue element no longer used - all reply queues are remote for remote delegates'), u:replyQueue)"/>
          <!--xsl:if test="not(u:replyQueue/@location = ('local', 'remote')) and u:replyQueue/@location">
            <xsl:sequence select="f:msgWithLineNumber('ERROR', 
              ('replyQueue location attribute, ', u:replyQueue/@location, ', must have a value of either ''local'' or ''remote'''), u:replyQueue)"/>
          </xsl:if>
          <xsl:if test="(u:replyQueue/@location eq 'local') and
                         starts-with($tmp/u:inputQueue/@brokerURL, 'http://')">
            <xsl:sequence select="f:msgWithLineNumber('ERROR', 
              '''local'' replyQueue location is not supported for ''http://'' style connections', u:replyQueue)"/>
          </xsl:if>
          <xsl:if test="(u:replyQueue/@location eq 'local')">
            <xsl:sequence select="f:msgWithLineNumber('ERROR',
              '''local'' replyQueue location is no longer supported and will be forcedto remote', u:replyQueue)"/>   
          </xsl:if-->
          <!--u:replyQueue location="{if (u:replyQueue/@location) then u:replyQueue/@location else
            if (starts-with($tmp/u:inputQueue/@brokerURL, 'http://')) then 'remote' else 'local'}"/-->
          <!--u:replyQueue location="remote" concurrentConsumers=
            "{if (u:replyQueue/@concurrentConsumers) then u:replyQueue/@concurrentConsumers else '1'}"/-->
        </xsl:when>
        <xsl:otherwise>
          <!--u:replyQueue location="remote" concurrentConsumers="1"/-->
          <!--u:replyQueue location="{
            if (starts-with($tmp/u:inputQueue/@brokerURL, 'http://')) then 'remote' else 'local'}"/-->
          <!--xsl:message select="('*** replyQueue', 
            if (starts-with($tmp/u:inputQueue/@brokerURL, 'http://')) then 'remote' else 'local')"/-->
        </xsl:otherwise>
      </xsl:choose>
      
      <xsl:choose>
        <xsl:when test="u:serializer">
          <xsl:copy-of select="u:serializer"/>
        </xsl:when>
        <xsl:otherwise>
          <u:serializer method="xmi"/>
        </xsl:otherwise>
      </xsl:choose>

      <xsl:choose>
        <xsl:when test="u:asyncAggregateErrorConfiguration">
          <xsl:apply-templates mode="addDefaults" select="u:asyncAggregateErrorConfiguration"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:variable name="rmtErr">
            <u:asyncAggregateErrorConfiguration/>
          </xsl:variable>
          <xsl:apply-templates mode="addDefaults" select="$rmtErr"/>
        </xsl:otherwise>
      </xsl:choose>     
      
      <!--xsl:choose>
        <xsl:when test="not(u:errorConfiguration) and ($defaultErrorConfig eq 'topDelegate')">
          <xsl:variable name="errorConfigElement">
            <u:errorConfiguration/>
          </xsl:variable>
          <xsl:apply-templates mode="addDefaults" select="$errorConfigElement"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:apply-templates mode="addDefaults" select="u:errorConfiguration"/>
        </xsl:otherwise>
      </xsl:choose-->
     </u:remoteAnalysisEngine>
  </xsl:template>

  <!--============================================================-->       
  <!--             Subroutines and Utilities                     =-->       
  <!--============================================================-->

  <!--============================================================-->       
  <!--|            Functions                                     |-->       
  <!--============================================================-->
  
  <xsl:function name="f:getImport">
    <xsl:param name="importNode"/>
    <xsl:choose>
      <xsl:when test="$importNode/@location">
        <xsl:sequence select="document($importNode/@location)"/>
      </xsl:when>
      <xsl:when test="$importNode/@name">
        <xsl:sequence select="document(x1:resolveByName($importNode/@name))"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:sequence select=
          "f:msgWithLineNumber('ERROR', 'import missing location or name attribute', $importNode)"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:function>
  
  
  <xsl:function name="f:fixupPath">
    <xsl:param name="node"/>  <!-- node has location or name attribute -->
    <xsl:param name="relBase"/>
    <!--xsl:message select="'*** fixup path'"/>
    <xsl:message select="$node"/>
    <xsl:message select="$relBase"/-->    

    <xsl:choose>
      <xsl:when test="$node/@location">
        <!-- some paths start with file: 
             strip that out if found, so the subsequent logic for
             detecting "absolute" paths works -->
        <xsl:variable name="relOrAbsPath" select=
          "if (starts-with($node/@location, 'file:')) then
             substring($node/@location, 6) else $node/@location"/>
        <!--xsl:variable name="relOrAbsPath" select="$node/@location"/-->
        <xsl:variable name="fwdSlashes" select="replace(string($relOrAbsPath), '\\', '/')"/>
        <xsl:variable name="isAbsPath"  select="matches($fwdSlashes, '^/|^.:')"/>
        <!--xsl:message select="concat('relOrAbsPath = ',string($relOrAbsPath))"/-->
        <xsl:choose>
          <xsl:when test="$isAbsPath">
            <xsl:sequence select="($fwdSlashes, $fwdSlashes)"/>  
          </xsl:when>
          <xsl:otherwise>
            <xsl:variable name="relBaseDir" select="replace(string($relBase), '/[^/]*?\.[xX][mM][lL]', '')"/>
            <xsl:variable name="relPath" select="concat($relBaseDir, '/', $fwdSlashes)"/>
            <xsl:choose>
              <xsl:when test="$useRelativePaths">
                <xsl:sequence select="($relPath, $relPath)"/>
              </xsl:when>
              <xsl:otherwise>
                <xsl:variable name="absPath" select="resolve-uri($relPath, $document-uri)"/>
                <xsl:sequence select="($absPath, $absPath)"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:otherwise>
        </xsl:choose>   
      </xsl:when>
      <xsl:when test="$node/@name">
        <xsl:sequence select="(concat('*importByName:', $node/@name), x1:resolveByName($node/@name))"/> 
      </xsl:when> 
      <xsl:otherwise>
        <xsl:sequence select=
          "f:msgWithLineNumber('ERROR', 'import element missing name or location attribute', $node)"/>
      </xsl:otherwise>
    </xsl:choose>    
  </xsl:function>
 
  <!--xsl:function name="f:isRmtTempQ">
    <xsl:param name="rmtNode"/-->
    <!--xsl:message select="not($noTempQueues) and 
      ($rmtNode/u:replyQueue/@location eq 'remote') and
      ($topLevelInputQueueBroker ne 'vm://localhost') and
      ($rmtNode/u:inputQueue/@brokerURL eq $topLevelInputQueueBroker)"/-->
    <!--xsl:sequence select="not($noTempQueues) and 
      ($rmtNode/u:replyQueue/@location eq 'remote')"/>
  </xsl:function--> 
  
  <xsl:function name="f:isAggr">
    <xsl:param name="aeNode"/>
    <xsl:sequence select="$aeNode/(u:analysisEngineDescription|u:taeDescription)/u:primitive[text() eq 'false']"/>
  </xsl:function>

  <xsl:function name="f:isCPP">
    <xsl:param name="aeNode"/>
    <xsl:sequence select="$aeNode/*/u:frameworkImplementation[text() eq 'org.apache.uima.cpp']"/>
  </xsl:function>
  
  <xsl:function name="f:getUserHandlerDispatcherID">
    <xsl:param name="node"/>
    <xsl:sequence select="concat('usrHdlr_dispatcher', f:getAeNameUnique($node))"/>    
  </xsl:function>
    
  <xsl:function name="f:getTimeoutHandlerID">
    <xsl:param name="node"/>
    <xsl:sequence select="concat('tmOutHdlr_', f:getAeNameUnique($node))"/>
  </xsl:function>

  <xsl:function name="f:getExceptionHandlerID">
    <xsl:param name="node"/>
    <xsl:sequence select="concat('excptnHdlr_', f:getAeNameUnique($node))"/>
  </xsl:function>
  
  <xsl:function name="f:getUserErrorHandlerID">
    <xsl:param name="errorHandlerNode"/>
    <xsl:sequence select="concat(
      'user_error_handler_', 
      f:getAeNameUnique($errorHandlerNode), 
      '.', 
      $errorHandlerNode/position())"/>
  </xsl:function>
  
  <xsl:function name="f:getTimeoutThresholdsID">
    <xsl:param name="delegateNode"/> 
    <xsl:variable name="nodeHavingTimeoutThresholdsElement"
          select="$delegateNode/ancestor-or-self::*[u:errorConfiguration/u:errorHandling/u:timeout][1]"/>
    <xsl:sequence select="concat('timeout_thresholdsActions_', 
                      f:getAeNameUnique($nodeHavingTimeoutThresholdsElement))"/>    
  </xsl:function>

  <xsl:function name="f:getExceptionThresholdsID">
    <xsl:param name="delegateNode"/> 
    <xsl:variable name="nodeHavingExceptionThresholdsElement"
          select="$delegateNode/ancestor-or-self::*[u:errorConfiguration/u:errorHandling/u:exception][1]"/>
    <xsl:sequence select="concat('exception_thresholdsActions_', 
                      f:getAeNameUnique($nodeHavingExceptionThresholdsElement))"/>    
  </xsl:function>

  <xsl:function name="f:getUserErrorHandlerThresholdsID">
    <xsl:param name="delegateNode"/> 
    <xsl:variable name="nodeHavingUserErrorHandlerThresholdsElement"
          select="$delegateNode/ancestor-or-self::*[u:errorConfiguration/u:errorHandling/u:userErrorHandler/userErrorHandlerSpec][1]"/>
    <xsl:sequence select="concat('userErrorHandler_thresholdsActions_', 
                      f:getAeNameUnique($nodeHavingUserErrorHandlerThresholdsElement))"/>    
  </xsl:function>
      
  <xsl:function name="f:getThresholdActionID">
    <xsl:param name="node"/>
    <xsl:variable name="taKey" select="concat('t', $node/@threshold, 'a', $node/@action)"/>
    <xsl:sequence select="concat('threshold_action_', $taKey)"/>
  </xsl:function>
  
  <xsl:function name="f:getControllerID">
    <xsl:param name="aeNode"/>
    <xsl:choose>
      <xsl:when test="$aeNode/self::u:analysisEngine[@async eq 'true']">
        <xsl:sequence select="concat('asAggr_ctlr_', f:getAeNameUnique($aeNode))"/>    
      </xsl:when>
      <xsl:otherwise>
        <xsl:sequence select="concat('primitive_ctlr_', f:getAeNameUnique($aeNode))"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:function>
  
  <xsl:function name="f:getPoolingTaskExecutorID">
    <xsl:param name="aeNode"/>
    <xsl:sequence select="concat('pooling_', f:getAeNameUnique($aeNode))"/>    
  </xsl:function>
      
  <xsl:function name="f:getMetaMsgHandlerID">
    <xsl:param name="aeNode"/>
    <xsl:param name="kind"/>
    <xsl:sequence select="concat($kind, '_metaMsgHandler_', f:getAeNameUnique($aeNode))"/>
  </xsl:function>

  <xsl:function name="f:getProcessRequestHandlerID">
    <xsl:param name="aeNode"/>
    <xsl:param name="kind"/>
    <xsl:sequence select="concat($kind, '_processRequestHandler_', f:getAeNameUnique($aeNode))"/>
  </xsl:function>
  
  <xsl:function name="f:getProcessResponseHandlerID">
    <xsl:param name="aeNode"/>
    <xsl:param name="kind"/>
    <xsl:sequence select="concat($kind, '_processResponseHandler_', f:getAeNameUnique($aeNode))"/>
  </xsl:function>
  
  <xsl:function name="f:getDestinationResolverID">
    <xsl:param name="aeNameUnique"/>
    <xsl:param name="key"/>
    <xsl:sequence select="concat('destinationResolver_', $aeNameUnique, '_', $key)"/>
  </xsl:function>
  
  <xsl:function name="f:getAeNameUnique">
    <xsl:param name="aeNode"/>
    <xsl:if test="not($aeNode)">
      <xsl:sequence select="f:msgWithLineNumber('ERROR', 'empty node passed to f:getAeNameUnique', $aeNode)"/>
    </xsl:if>
    <xsl:sequence select="concat(f:getSimpleAeName($aeNode),'_', f:getUnique($aeNode))"/>
  </xsl:function>
  
  <xsl:function name="f:getUnique">
    <xsl:param name="node"/>
    <xsl:variable name="aeNode" select="$node/ancestor-or-self::node()[self::u:analysisEngine|self::u:remoteAnalysisEngine][1]"/>
    <xsl:number level="multiple" count="u:remoteAnalysisEngine|u:analysisEngine" format="1.1" select="$aeNode"/>
  </xsl:function>
  
  <xsl:function name="f:getSimpleAeName">
    <xsl:param name="node"/>
 <!--    <xsl:param tunnel="yes" name="topKey"/> -->
    <xsl:variable name="nearestKey" select=
      "$node/ancestor-or-self::node()[@key][1]"/>
   <!-- <xsl:message select="'*** Tracing getSimpleAeName'"/>
    <xsl:message select="$node/ancestor-or-self::node()[@key][1]"/>  
    <xsl:message select="'nearest key var is: '"/>
    <xsl:message select="$nearestKey"/>
    <xsl:message select="'end of nearest key'"/> -->
    <xsl:choose>
      <xsl:when test="$nearestKey">
        <xsl:sequence select="string($nearestKey/@key)"/>
      </xsl:when>
      <xsl:otherwise>      
        <!--xsl:message select="'nearest key was false, using topkey'"/-->
    <!--    <xsl:sequence select="$topKey"/> -->
        <!--xsl:sequence select="f:getSimpleNameFromParentKeyOrEndpoint($node/ancestor::u:service/u:inputQueue/(@endpoint|@queueName))"/-->
        <xsl:sequence select="f:msgWithLineNumber(
          'ERROR', 
          ('Missing key name on', node-name($node)),
          $node)"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:function>
 
  <xsl:function name="f:getQbrokerID">
    <xsl:param name="inputQueue"/>
    <xsl:variable name="u">
      <xsl:choose>
        <xsl:when test="starts-with($inputQueue/@brokerURL, '${')">
          <xsl:sequence select=
            "replace(replace($inputQueue/@brokerURL, '\$\{', ''), '\}', '')"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select=
            "replace(
              replace(
               replace(
                replace(
                 replace(
                  replace(
                   replace( $inputQueue/@brokerURL,'\?.*', '')
                           ,',','_cm_')
                          ,':','_c_')
                         ,'//','_ss_')
                       ,'/', '_s_')
                      ,'\(','_op_')
                     ,'\)','_cp_')
                     "/>     
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
             
    <xsl:sequence select="concat('qBroker_',$u)"/>
  </xsl:function>         
  
  <xsl:function name="f:getEndpointName">
    <xsl:param name="containerKeyName" as="xs:string"/>  <!-- key name of containing delegate -->
    <xsl:param name="uniq"/>
    <!-- xsl:message select="'*** Tracing GetEndpointName'"/ -->

    <xsl:sequence select="concat('endpt_', $containerKeyName, '_', $uniq)"/>
  </xsl:function>
                      
  <xsl:function name="f:getOutputChannelID">
    <xsl:param name="aeNode"/>
    <xsl:sequence select="concat('outChnl_', f:getAeNameUnique($aeNode))"/> 
  </xsl:function>
  
  <xsl:function name="f:getInternalInputQueueName">
    <xsl:param name="delegateNode"/>  
    <xsl:sequence select="concat('inQ_',f:getAeNameUnique($delegateNode))"/>
  </xsl:function>
  
  <xsl:function name="f:getLocalReturnQueueEndpointID">
    <xsl:param name="aeNode"/>
    <xsl:sequence select="concat('asynAggr_retQ_', f:getAeNameUnique($aeNode))"/>
  </xsl:function>

  <xsl:function name="f:getRemoteReturnQueueID">
    <xsl:param name="aeNode"/>
    <xsl:param name="remoteDelegate"/>
    <xsl:sequence select="concat('rmtRtrnQ_', f:getAeNameUnique($aeNode), 
        '_', $remoteDelegate/@key)"/>
  </xsl:function>

  <xsl:function name="f:getRemoteReturnQueueName">
    <xsl:param name="aeNode"/>
    <xsl:param name="remoteDelegate"/>
    <xsl:sequence select="concat(f:getRemoteReturnQueueID($aeNode, $remoteDelegate), '_', $guid)"/>
  </xsl:function>
        
  <xsl:function name="f:getDelegatePart">
    <xsl:param name="local_ae_descriptor"/>
    <xsl:param name="key"/>
    <!-- xsl:message select="'*** local ae descriptor'"/>
    <xsl:message select="$local_ae_descriptor"/>
    <xsl:message select="$key"/>
    <xsl:message select="$local_ae_descriptor/(u:analysisEngineDescription|u:casConsumerDescription|u:taeDescription)/u:delegateAnalysisEngineSpecifiers/u:delegateAnalysisEngine[@key eq string($key)]"/>
    <xsl:message select="'*** end local ae descriptor'"/ -->
    <xsl:variable name="result" select=
        "f:resolveImport($local_ae_descriptor/(u:analysisEngineDescription|u:taeDescription)/u:delegateAnalysisEngineSpecifiers/u:delegateAnalysisEngine[@key=$key])"/>
    <xsl:if test="not($result)">
      <xsl:sequence select="f:msgWithLineNumber(
        'ERROR', 
        ('ERROR cannot load delegate descriptor with key', $key),
        $local_ae_descriptor)"/> 
    </xsl:if>
    <xsl:sequence select="$result"/>
  </xsl:function>  
  
  <xsl:function name="f:resolveImport">
    <xsl:param name="nodeset"/>
    <xsl:choose>
      <xsl:when test="$nodeset/u:import">
        <xsl:sequence select="f:getImport($nodeset/u:import)"/>   
      </xsl:when>
      <xsl:otherwise>
        <!--xsl:message select="'*** This nodeset didnt have an import '"/>
        <xsl:message select="$nodeset"/-->
        <xsl:sequence select="$nodeset"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:function>
        
  <xsl:function name="f:getTimeoutClass">
    <xsl:param name="timeout"/>
    <xsl:choose>
      <xsl:when test="$timeout/@event eq 'metadataRequest'">
        <xsl:sequence select="'MetadataRequestTimeoutCount'"/>
      </xsl:when>
      <xsl:when test="$timeout/@event eq 'processRequest'">
        <xsl:sequence select="'ProcessRequestTimeoutCount'"/>
      </xsl:when>
      <xsl:when test="$timeout/@event eq 'collectionProcessingCompleteRequest'">
        <xsl:sequence select="'CollectionProcessingCompleteTimeoutCount'"/>
      </xsl:when>
    </xsl:choose>
  </xsl:function>
  
  <xsl:function name="f:getErrorHandlerChainID">
    <xsl:param name="node"/>
    <!-- xsl:message select="' *** ancestor test ErrorConfig *** '"/>
    <xsl:message select="$node/parent::node()"/ -->
    
    <!--xsl:variable name="firstContainingNodeWithErrorConfig" select=
      "if  ($node/ancestor-or-self::u:analysisEngine[u:delegates/*/u:errorConfiguration]) 
       then $node/ancestor-or-self::u:analysisEngine[u:delegates/*/u:errorConfiguration][1]
       else $node/ancestor-or-self::node()[u:errorConfiguration][1]"/-->
    <!--xsl:message select="'*** first containing node with error config parent'"/>
    <xsl:message select="$firstContainingNodeWithErrorConfig/parent::node()"/ -->
    <xsl:sequence select=
          "concat('err_hdlr_chn_', f:getAeNameUnique($node))"/>
   </xsl:function>
  <!--============================================================-->       
  <!--                Comment Generation                         =-->       
  <!--============================================================-->
  <xsl:variable name="nl" select="'&#xA;'"/>
  <xsl:variable name="quote" select="'&#x22;'"/>
  <xsl:variable name="nl2" select="'&#xA;&#xA;'"/>
  <xsl:variable name="commentBorder" select=
    "'=================================================================================='"/>
  <xsl:variable name="blanks" select=
    "'                                                                                  '"/>
  <xsl:function name="f:generateBlockComment">
    <xsl:param name="comment"/>
    <xsl:param name="spaces"/>
    <xsl:call-template name="commentGenerate">
      <xsl:with-param name="comment" select="$comment"/>
      <xsl:with-param name="spaces" select="$spaces"/>
    </xsl:call-template>
  </xsl:function>

  <xsl:function name="f:generateLineComment">
    <xsl:param name="comment"/>
    <xsl:param name="spaces"/>
    <xsl:call-template name="commentGenerateLine">
      <xsl:with-param name="comment" select="$comment"/>
      <xsl:with-param name="spaces" select="$spaces"/>
    </xsl:call-template>
  </xsl:function>
  
  <xsl:template name="commentGenerate">
    <xsl:param name="comment"/>
    <xsl:param name="spaces"/>
    <xsl:variable name="maxLength" select="max((20, 2 + max(for $s in $comment return string-length(string($s)))))"/>
    
    <xsl:sequence select="$nl"/>
    <xsl:comment select="substring($commentBorder,1,$maxLength)"/>
    <xsl:sequence select="$nl"/>
    <xsl:value-of select="substring($blanks,1,$spaces)"/>   
    <xsl:for-each select="$comment">
      <xsl:comment select="concat(' ', ., substring($blanks, 1, $maxLength - (string-length(string(.)) + 1)))"/>
      <xsl:sequence select="$nl"/>
      <xsl:value-of select="substring($blanks,1,$spaces)"/>      
    </xsl:for-each>
    <xsl:comment select="substring($commentBorder,1,$maxLength)"/>
    <xsl:sequence select="$nl"/>
    <xsl:value-of select="substring($blanks,1,$spaces)"/>   
  </xsl:template>
  
  <xsl:template name="commentGenerateLine">
    <xsl:param name="comment"/>
    <xsl:param name="spaces"/>
    <xsl:sequence select="$nl2"/>
    <xsl:value-of select="substring($blanks,1,$spaces)"/>   
    <xsl:variable name="maxLength" select="max((20, 2 + max(for $s in $comment return string-length(string($s)))))"/>
    <xsl:for-each select="$comment">
      <xsl:variable name="stretched" select="f:stretchComment(., $maxLength)"/>
      <xsl:variable name="comment2" select="f:evenLengthString($stretched)"/>
      <xsl:variable name="padLength" select=
        "(max((0, $maxLength - string-length($comment2)))) div 2"/> 
      <xsl:variable name="c" select="substring($blanks, 1, $padLength)"/>
      <xsl:comment select="concat($c, $comment2, $c)"/>
      <xsl:sequence select="$nl"/>
      <xsl:value-of select="substring($blanks,1,$spaces)"/>
    </xsl:for-each>
  </xsl:template>

  <xsl:variable name="lotsOfTildes"
    select="'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'"/>
  <xsl:function name="f:stretchComment">
    <xsl:param name="s"/>
    <xsl:param name="length" />
    <xsl:sequence select=
      "if (starts-with($s, '~~~~~~~~~~')) then substring($lotsOfTildes, 1, min(($length, string-length($lotsOfTildes))))
                                          else $s"/>
  </xsl:function>
  
  <xsl:function name="f:evenLengthString">
    <xsl:param name="s"/>
       <xsl:choose>
        <xsl:when test="(string-length($s) mod 2) = 1">
          <xsl:sequence select="concat($s, ' ')"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select="$s"/>
        </xsl:otherwise>
      </xsl:choose>
  </xsl:function>
  
  <!--============================================================-->       
  <!--           validation                                      =-->       
  <!--============================================================-->
  
  <xsl:variable name="validDeploymentDescriptorDefinition">
    <u:analysisEngineDeploymentDescription>
      <u:name i:maxone=""/>
      <u:description i:maxone=""/>
      <u:version i:maxone=""/>
      <u:vendor i:maxone=""/>
      <u:deployment i:maxone="" i:required="" protocol="" provider="">
        <u:casPool i:maxone="" numberOfCASes=""  initialFsHeapSize=""/>
        
          <u:service i:required="">
            <u:custom name="" value=""/>
            <u:inputQueue i:maxone="" i:required="" brokerURL="" endpoint="" queueName="" prefetch=""/>
            <u:topDescriptor i:maxone="" i:required="">
              <u:import i:maxone="" i:required="" location="" name=""/>
            </u:topDescriptor>
            <u:environmentVariables i:maxone="">
              <u:environmentVariable name=""/>
            </u:environmentVariables>
            <u:analysisEngine i:maxone="" key="" async="" 
                internalReplyQueueScaleout=""
                inputQueueScaleout="">
              <u:scaleout i:maxone="" numberOfInstances=""/>
                <!-- top level cas multiplier can't specify processParentLast -->
              <u:casMultiplier i:maxone="" poolSize="" initialFsHeapSize=""/>
              <u:asyncPrimitiveErrorConfiguration i:maxone="">
                <u:processCasErrors i:maxone="" 
                  thresholdCount="" thresholdWindow="" thresholdAction=""/>
                <u:collectionProcessCompleteErrors i:maxone="" additionalErrorAction=""/>
              </u:asyncPrimitiveErrorConfiguration>
              <u:asyncAggregateErrorConfiguration i:maxone="">
                <u:getMetadataErrors i:maxone="" maxRetries="" timeout="" errorAction=""/>
                <u:processCasErrors i:maxone="" maxRetries="" timeout="" continueOnRetryFailure=""
                      thresholdCount="" thresholdWindow="" thresholdAction=""/>
                <u:collectionProcessCompleteErrors i:maxone="" timeout="" additionalErrorAction=""/>
              </u:asyncAggregateErrorConfiguration>
              <u:delegates i:maxone="">
                <u:analysisEngine/>
                <u:remoteAnalysisEngine key="" remoteReplyQueueScaleout="">
                  <u:casMultiplier i:maxone="" poolSize="" initialFsHeapSize="" processParentLast=""/>
                  <u:inputQueue i:maxone="" i:required="" brokerURL="" endpoint="" queueName=""/>
                  <u:replyQueue i:maxone="" location=""/>
                  <u:serializer i:maxone="" method=""/>
                  <u:asyncAggregateErrorConfiguration i:maxone="">
                    <u:getMetadataErrors i:maxone="" maxRetries="" timeout="" errorAction=""/>
                    <u:processCasErrors i:maxone="" maxRetries="" timeout="" continueOnRetryFailure=""
                      thresholdCount="" thresholdWindow="" thresholdAction=""/>
                    <u:collectionProcessCompleteErrors i:maxone="" timeout="" additionalErrorAction=""/>
                  </u:asyncAggregateErrorConfiguration>
                </u:remoteAnalysisEngine>
              </u:delegates>
            </u:analysisEngine>
          </u:service>   
      </u:deployment>
    </u:analysisEngineDeploymentDescription>
  </xsl:variable>
  
  <xsl:key name="validElement" match="*" use="node-name(.)"/>
   
  <xsl:function name="f:validateDeploymentDescriptor">
    <xsl:param name="top"/>
    <xsl:if test="not($top)">
      <xsl:message select="('*** ERROR: The top level item is not an analysisEngineDeploymentDescription')"/>
    </xsl:if>
    <xsl:sequence select="f:validateDDNodeAndChildren($top)"/>
  </xsl:function>
  
  <xsl:function name="f:validateDDNodeAndChildren">
    <xsl:param name="node"/>
    <!--xsl:message select="('validating:', node-name($node))"/-->
    <xsl:variable name="node2" as="node()">
      <xsl:choose>
        <xsl:when test="$node/u:errorConfiguration/u:import">
          <xsl:sequence select="f:getImport($node/u:errorConfiguration/u:import)"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:sequence select="$node"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <!--xsl:message select="('validating2:', node-name($node2))"/-->
    <xsl:sequence select="f:validate($node2)"/>
    <xsl:for-each select="$node2/*">
      <xsl:sequence select="f:validateDDNodeAndChildren(.)"/>
    </xsl:for-each>
  </xsl:function>
  
  <xsl:function name="f:validate">
    <xsl:param name="node"/>
    <xsl:variable name="p" select="key('validElement', node-name($node), $validDeploymentDescriptorDefinition)"/>
    
    <xsl:for-each select="$node/attribute::*">
      <xsl:if test="not(node-name(.) = $p/attribute::*/node-name(.))">
        <xsl:sequence select="f:msgWithLineNumber('ERROR',
          ('following element has an unknown attribute: ', node-name(.)), $node)"/>
        <xsl:message select="$node"/>
      </xsl:if>
    </xsl:for-each>
    
    <xsl:for-each select="$p/*[@i:maxone]">
      <xsl:if test="1 &lt; count($node/*[node-name(.) eq node-name(current())])">
        <xsl:sequence select="f:msgWithLineNumber(
        'ERROR',
        (concat('&quot;', node-name(.),     '&quot;'),
         'occurs more than once within',
         concat('&quot;', node-name($node), '&quot;,'),
         'but may occur a maximum of 1 time in this context'
        ),
        $node)"/>  
      <!--xsl:message select="$node"/--> 
      </xsl:if>
    </xsl:for-each>
    
    <xsl:for-each select="$p/*[@i:required]">
      <xsl:if test="not($node/*[node-name(.) eq node-name(current())])">
        <xsl:sequence select="f:msgWithLineNumber(
          'ERROR',
          (concat('&quot;', node-name($node),   '&quot;'),
           'in this context must contain the element',
            concat('&quot;', node-name(.), '&quot;;'),
           'but that element is missing'
          ),
          $node)"/>  
      </xsl:if>
    </xsl:for-each>
      
    <xsl:if test="$node/u:inputQueue/@queueName">
      <xsl:sequence select="f:msgWithLineNumber(
        'WARNING',
        (concat($quote,'queueName',$quote), 
         'attribute was used in an inputQueue element; it has been changed to', concat($quote, 'endpoint', $quote)),
        $node)"/>
    </xsl:if>
    
    <xsl:for-each select="$node/*">
      <!--xsl:message select="('node-name:',node-name(.))"/-->
      <xsl:if test="not(node-name(.) = $p/*/node-name(.))">
        <xsl:message select="f:msgWithLineNumber('ERROR',
          ('The element', node-name(.), 'cannot be contained in the element', node-name($node)),
          $node)"/>
      <!--xsl:message select="'*** p/*/node-name(.)'"/>
      <xsl:message select="$p/*/node-name(.)"/-->
      </xsl:if>
    </xsl:for-each>
    
    <xsl:for-each select="$node/u:errorConfiguration/u:errorHandling/u:timeout">
      <xsl:if test="not(string(@event) = 
        ('processRequest', 'metadataRequest', 'collectionProcessingCompleteRequest'))">
        <xsl:message select="f:msgWithLineNumber(
          'ERROR',
          ('This timeout element needs to specify an event which is one of',
           'processRequest, metadataRequest, or collectionProcessingCompleteRequest'),
          $node/u:errorConfiguration/u:errorHandling)"/>  
      </xsl:if>      
    </xsl:for-each>
   </xsl:function>

  <xsl:function name="f:msgWithLineNumber">
    <xsl:param name="kind"/>
    <xsl:param name="msg"/>  <!-- can be multi-element sequence -->
    <xsl:param name="node"/>
    <xsl:message>
      *** <xsl:sequence select="concat($kind,':')"/> line-number: <xsl:sequence select="saxon:line-number($node)"/>
      <xsl:sequence select="$msg"/> 
    </xsl:message>
  </xsl:function>
</xsl:stylesheet>
