<?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.
   ***************************************************************
   -->
<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
  <primitive>false</primitive>
  <delegateAnalysisEngineSpecifiers>
    <delegateAnalysisEngine key="NoOp2">
      <import location="NoOpAnnotatorWithExceptionOn2ndCas.xml"/>
    </delegateAnalysisEngine>
    <delegateAnalysisEngine key="SimpleCasGenerator">
      <import location="../multiplier/SimpleCasGenerator.xml"/>
    </delegateAnalysisEngine>
  </delegateAnalysisEngineSpecifiers>
  <analysisEngineMetaData>
    <name>Test Aggregate TAE with 3 Doc Cas Multiplier</name>
    <description>Detects Nothing</description>
    <configurationParameters searchStrategy="language_fallback">
      <configurationParameter>
        <name>ErrorFrequency</name>
        <description>Frequency of Generated Errors</description>
        <type>Integer</type>
        <multiValued>false</multiValued>
        <mandatory>true</mandatory>
        <overrides>
          <parameter>NoOp/ErrorFrequency</parameter>
        </overrides>
      </configurationParameter>
      <configurationParameter>
        <name>NumberToGenerate</name>
        <description>Approximate number of CASes to create.</description>
        <type>Integer</type>
        <multiValued>false</multiValued>
        <mandatory>true</mandatory>
        <overrides>
          <parameter>SimpleCasGenerator/NumberToGenerate</parameter>
        </overrides>
      </configurationParameter>
    </configurationParameters>
    <configurationParameterSettings>
      <nameValuePair>
        <name>ErrorFrequency</name>
        <value>
          <integer>0</integer>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>NumberToGenerate</name>
        <value>
          <integer>3</integer>
        </value>
      </nameValuePair>
    </configurationParameterSettings>
    <flowConstraints>
      <fixedFlow>
        <node>SimpleCasGenerator</node>
        <node>NoOp2</node>
      </fixedFlow>
    </flowConstraints>
    <capabilities>
      <capability>
        <inputs/>
        <outputs/>
        <languagesSupported>
          <language>en</language>
        </languagesSupported>
      </capability>
    </capabilities>
    <operationalProperties>
      <modifiesCas>true</modifiesCas>
      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
      <outputsNewCASes>false</outputsNewCASes>
    </operationalProperties>
  </analysisEngineMetaData>
</analysisEngineDescription>
