<?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="NoOpAnnotatorWithCpcCheck">
      <import location="NoOpAnnotatorWithCpcCheck.xml"/>
    </delegateAnalysisEngine>
    <delegateAnalysisEngine key="NoOp">
      <import location="NoOpAnnotator.xml"/>
    </delegateAnalysisEngine>
    <delegateAnalysisEngine key="NoOp2">
      <import location="NoOpAnnotator.xml"/>
    </delegateAnalysisEngine>
    <delegateAnalysisEngine key="SimpleCasGenerator">
      <import location="../multiplier/SimpleCasGenerator.xml"/>
    </delegateAnalysisEngine>
  </delegateAnalysisEngineSpecifiers>

  <flowController key="FlowController">
     <import location="../flow/AdvancedFixedFlowController.xml" /> 
  </flowController>
  
  <analysisEngineMetaData>
    <name>Test Aggregate TAE</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>
          <parameter>NoOp2/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>
      <configurationParameter>
        <name>FinalCount</name>
        <description>Total number of CASes that should be processed before CPC</description>
        <type>Integer</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
        <overrides>
          <parameter>NoOpAnnotatorWithCpcCheck/FinalCount</parameter>
        </overrides>
      </configurationParameter>

      <configurationParameter>
        <name>Flow</name>
        <description> Specifies the flow. This is an array of strings where each string is either a single Analysis
          Engine key or a comma-separated list of Analysis Engine keys that should be executed in parallel.
          </description>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>true</mandatory>
        <overrides>
          <parameter>FlowController/Flow</parameter>
        </overrides>
      </configurationParameter>
      <configurationParameter>
        <name>AllowContinueOnFailure</name>
        <description/>
        <type>String</type>
        <multiValued>true</multiValued>
        <overrides>
          <parameter>FlowController/AllowContinueOnFailure</parameter>
        </overrides>
      </configurationParameter>
      <configurationParameter>
        <name>AllowDropOnFailure</name>
        <description/>
        <type>String</type>
        <multiValued>true</multiValued>
        <overrides>
          <parameter>FlowController/AllowDropOnFailure</parameter>
        </overrides>
      </configurationParameter>
      <configurationParameter>
	        <name>ExceptionsToIgnore</name>
	        <description>Specifies which exceptions to ignore.</description>
	        <type>String</type>
	        <multiValued>true</multiValued>
	        <mandatory>false</mandatory>
	        <overrides>
	          <parameter>FlowController/ExceptionsToIgnore</parameter>
	        </overrides>
      </configurationParameter>
      
    </configurationParameters>
    <configurationParameterSettings>
      <nameValuePair>
        <name>ErrorFrequency</name>
        <value>
          <integer>10</integer>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>NumberToGenerate</name>
        <value>
          <integer>100</integer>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>FinalCount</name>
        <value>
          <integer>91</integer>
        </value>
      </nameValuePair>

      <!-- This specifies the flow -->
      <nameValuePair>
        <name>Flow</name>
        <value>
          <array>
            <string>SimpleCasGenerator</string>
            <string>NoOp,NoOp2</string>
            <string>NoOpAnnotatorWithCpcCheck</string>
          </array>
        </value>
      </nameValuePair>
      <!-- This specifies for which AEs we can drop when an error occurs -->
      <nameValuePair>
        <name>AllowDropOnFailure</name>
        <value>
          <array>
            <string>NoOp</string>
            <string>NoOp2</string>
          </array>
        </value>
      </nameValuePair>
      <nameValuePair>
	        <name>ExceptionsToIgnore</name>
	        <value>
	          <array>
              <string>java.lang.IndexOutOfBoundsException</string>
	          </array>
	        </value>
      </nameValuePair>
      
    </configurationParameterSettings>
    <flowConstraints>
      <fixedFlow>
        <node>SimpleCasGenerator</node>
        <node>NoOp</node>
        <node>NoOpAnnotatorWithCpcCheck</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>
