<?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>true</primitive>
	<annotatorImplementationName>org.apache.opennlp.corpus_server.connector.CSCasWriter
	</annotatorImplementationName>
	<analysisEngineMetaData>
		<name>Corpus Server Cas Writer</name>
		<description>Writes a CAS (back) to the Corpus Server.</description>
		<configurationParameters>
			<configurationParameter>
				<name>ServerAddress</name>
				<description>The location of the server.</description>
				<type>String</type>
				<multiValued>false</multiValued>
				<mandatory>true</mandatory>
			</configurationParameter>
			<configurationParameter>
				<name>CorpusName</name>
				<description>The id of the corpus which should be processed.
				</description>
				<type>String</type>
				<multiValued>false</multiValued>
				<mandatory>true</mandatory>
			</configurationParameter>
		</configurationParameters>

		<typeSystemDescription>
			<imports>
				<import name="org.apache.uima.examples.SourceDocumentInformation" />
			</imports>
		</typeSystemDescription>
		<capabilities>
			<capability>
				<inputs />
				<outputs />
				<languagesSupported />
			</capability>
		</capabilities>
		<operationalProperties>
			<modifiesCas>true</modifiesCas>
			<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
			<outputsNewCASes>false</outputsNewCASes>
		</operationalProperties>
	</analysisEngineMetaData>
</analysisEngineDescription>
