<?xml version="1.0" encoding="UTF-8"?>

  <!--
   ***************************************************************
   * 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.
   ***************************************************************
   -->
   
<analysisEngineDeploymentDescription 
  xmlns="http://uima.apache.org/resourceSpecifier">
  
  <name>NoOp Annotator</name>
  <description>Deploys the NoOp Annotator Primitive AE</description>
  
  <deployment protocol="jms" provider="activemq">
    <casPool numberOfCASes="5"/> 
    <service>
      <inputQueue endpoint="NoOpAnnotatorQueue" brokerURL="${DefaultBrokerURL}" prefetch="1"/>
      <topDescriptor>
       <import location="../descriptors/analysis_engine/NoOpAnnotator.xml"/> 
      </topDescriptor>
      <analysisEngine>
      <asyncPrimitiveErrorConfiguration>
           <!-- <processCasErrors thresholdCount="4" thresholdWindow="10" thresholdAction="terminate" /> -->
           <collectionProcessCompleteErrors additionalErrorAction="terminate" />
      </asyncPrimitiveErrorConfiguration>
      </analysisEngine>
    
      
    </service>
  </deployment>

</analysisEngineDeploymentDescription>
