<!--
/*
 * 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.
 */
 -->
<service name="echo">
    <parameter name="ServiceClass" locked="xsd:false">echo</parameter>

    <!--Uncomment to specify static WSDL path-->
    <!--parameter name="wsdl_path">PATH</parameter-->

    <!--Uncomment to include defaul method with REST as GET-->
    <!--parameter name="defaultRESTMethod">GET</parameter-->

    <description>
        This is a testing service, to test whether the system is working or not
    </description>

    <operation name="echoString">
            <!--messageReceiver class="axis2_receivers" /-->
            <parameter name="wsamapping">http://ws.apache.org/axis2/c/samples/echoString</parameter>
            <!--Please note that you can only have one RESTMethod and one RESTLocation-->
            <!--Uncomment for POST method with REST-->
            <parameter name="RESTMethod">POST</parameter>
            <parameter name="RESTLocation">echoString</parameter>
            <!--Uncomment for GET method -->
            <!--parameter name="RESTMethod">GET</parameter>
            <parameter name="RESTLocation">get_echo/{param}</parameter-->
            <!--Uncomment for PUT method -->
            <!--parameter name="RESTMethod">PUT</parameter>
            <parameter name="RESTLocation">put_echo/{param}</parameter-->
            <!--Uncomment for DELETE method -->
            <!--parameter name="RESTMethod">DELETE</parameter>
            <parameter name="RESTLocation">delete_echo/{param}</parameter-->
            <!--Uncomment for HEAD method -->
            <!--parameter name="RESTMethod">HEAD</parameter>
            <parameter name="RESTLocation">get_echo/{param}</parameter-->
    </operation>
</service>
