<?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">
  <frameworkImplementation>org.apache.uima.cpp</frameworkImplementation>
  <primitive>true</primitive>
<annotatorImplementationName>dummyAnnot</annotatorImplementationName>


<analysisEngineMetaData>
  <name>dummy</name>
  <description>place holder for type and index definitinons.</description>
  <version>1.0</version>
  <vendor>IBM</vendor>


<!--
  Configuration Parameter Definitions
-->
        <configurationParameters/>

<!--
        Values for the configuration parameters
-->
        <configurationParameterSettings/>
 

<!--
        TypeSystem Definition
-->

<typeSystemDescription>
  <imports>
    <import location="testTypeSystem.xml"/>
  </imports>
</typeSystemDescription>
        

<!--
Capabilities: Inputs, Outputs, and Preconditions
-->
<capabilities>
  <capability>
    <inputs/>
    <outputs/>
    <languagesSupported/>
  </capability>
</capabilities>

</analysisEngineMetaData>
</taeDescription>
