<!-- 
  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.
 -->
<project name="asyncWebServer" default="add-service-definition">
  <property name="serviceTemplate" value="conf/ServiceTemplate.xml"/>
  <property name="serviceDir"      value="conf/httpServiceDefinitions"/>
    
  <!--
    Adds default configuration for a new http service.
    When this task is executed, the user is promted for a service class name
    and a service name. An appropriate entry is then created in the
    conf/httpServiceDefinitions directory
  -->
  <target name="add-service-definition">
    <input
      message="Enter full example class name (e.g org.apache.asyncweb.examples.HelloWorldHttpService): "
      addproperty="service.class"/>
    <input 
      message="Enter service name (e.g. HelloWorldHttpService): "
      addProperty="service.name"/>
    <input 
      message="Create service '${service.name}' for class '${service.class}'?"
      validargs="y,n"
      addProperty="service.create"/>
    <condition property="do.abort">
      <equals arg1="n" arg2="${service.create}"/>
    </condition>
    <fail if="do.abort">No service entry created</fail>
    
    <copy file="${serviceTemplate}" tofile="${serviceDir}/${service.name}.xml"></copy>
    <replace file="${serviceDir}/${service.name}.xml" token="%[SERVICE_NAME]%" value="${service.name}"/>
    <replace file="${serviceDir}/${service.name}.xml" token="%[SERVICE_CLASS]%" value="${service.class}"/>    
  
  </target>
    
</project>
