<?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.
    ***************************************************************
   -->

<taeDescription
   xmlns="http://uima.apache.org/resourceSpecifier"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://uima.apache.org/resourceSpecifier http://uima.apache.org/resourceSpecifierSchema.xsd"
   >
   <frameworkImplementation>org.apache.uima.cpp</frameworkImplementation>
<primitive>false</primitive>
   <delegateAnalysisEngineSpecifiers>
      <delegateAnalysisEngine key="tok">
         <import location="tok.xml" />
      </delegateAnalysisEngine>
      <delegateAnalysisEngine key="stw">
         <import location="stopword.xml" />
      </delegateAnalysisEngine>
      <delegateAnalysisEngine key="dump">
         <import location="dump.xml" />
      </delegateAnalysisEngine>
   </delegateAnalysisEngineSpecifiers>

   <analysisEngineMetaData>
      <name>TokTestApp</name>
      <description></description>
      <version>1.0</version>
      <vendor>IBM Corporation</vendor>

      <configurationParameters>
         <configurationParameter>
            <name>OutputFile</name>
            <description>The name of the file that will contain the dumped TCAS</description>
            <type>String</type>
            <multiValued>false</multiValued>
            <mandatory>true</mandatory>
                     </configurationParameter>

      </configurationParameters>

      <configurationParameterSettings>
         <nameValuePair>
            <name>OutputFile</name>
            <value>
               <string><envVarRef>TEMP</envVarRef>/stopwordtest.xml</string>
            </value>
         </nameValuePair>
      </configurationParameterSettings>

      <flowConstraints>
         <fixedFlow>
            <node>tok</node>
            <node>stw</node>
            <node>dump</node>
         </fixedFlow>
      </flowConstraints>

      <fsIndexes>
      </fsIndexes>

      <capabilities>
         <capability>
            <inputs/>

            <outputs>
               <type>uima.tt.TokenAnnotation</type>
               <feature>uima.tt.TokenAnnotation:stopwordToken</feature>
            </outputs>

            <languagesSupported>
               <language>x-unspecified</language>
            </languagesSupported>
         </capability>
      </capabilities>

   </analysisEngineMetaData>
</taeDescription>


