<?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.
    ***************************************************************
   -->
   
<analysisEngineDeploymentDescription 
  xmlns="http://uima.apache.org/resourceSpecifier">
  
  <name>C++ Meeting Annotator</name>
  <description>Deploys the C++ version of the Meeting Annotator</description>
  
  <deployment protocol="jms" provider="activemq">
    <service>
      <custom name="run_top_level_CPP_service_as_separate_process"/>
      <inputQueue endpoint="MeetingAnnotator" brokerURL="${defaultBrokerURL}"/>
      <topDescriptor>
       <import location="MeetingAnnotatorCPP.xml"/>
      </topDescriptor>
      <environmentVariables>
       <!-- Add the location of the MeetingAnnotator to the library search path -->
       <!-- Note that PATH must be uppercase for Windows -->
       <environmentVariable name="Path">src</environmentVariable>
       <environmentVariable name="LD_LIBRARY_PATH">src</environmentVariable>
       <environmentVariable name="DYLD_LIBRARY_PATH">src</environmentVariable>
       <environmentVariable name="UIMACPP_DATAPATH">C:/mydata</environmentVariable>
	</environmentVariables>
    </service>
  </deployment>

</analysisEngineDeploymentDescription>
