<?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>true</primitive>
   <annotatorImplementationName>libtest</annotatorImplementationName>

   <analysisEngineMetaData>
      <name>TestAnnotator</name>
      <description>Test annotator for dump annotator</description>
      <version>1.0</version>
      <vendor>IBM Corporation</vendor>

      <configurationParameters>
      </configurationParameters>

      <configurationParameterSettings>
      </configurationParameterSettings>

      <typeSystemDescription>
         <types>
            <typeDescription>
               <name>TestDump</name>
               <description>Created for test reasons</description>
               <supertypeName>TOP</supertypeName>
            </typeDescription>
         </types>
      </typeSystemDescription>

      <fsIndexes>
      </fsIndexes>

      <capabilities>
         <capability>
            <inputs/>

            <outputs>
               <type>TestDump</type>
            </outputs>

            <languagesSupported/>
         </capability>
      </capabilities>

   </analysisEngineMetaData>
</taeDescription>

