<?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.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
    <description>OFBIZ Test Services</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <service name="testScv" engine="java" export="true" validate="false" require-new-transaction="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="testService">
        <description>Test service</description>
        <attribute name="defaultValue" type="Double" mode="IN" default-value="999.9999"/>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="resp" type="String" mode="OUT"/>
    </service>
    <service name="testSOAPScv" engine="java" export="true" validate="false" require-new-transaction="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="testSOAPService">
        <description>Test SOAP service</description>
        <attribute name="testing" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
        <attribute name="testingNodes" type="List" mode="OUT" optional="true"/>
    </service>
    <service name="blockingTestScv" engine="java" validate="false" require-new-transaction="true" transaction-timeout="20"
            location="org.apache.ofbiz.common.CommonServices" invoke="blockingTestService">
        <description>Blocking Test service</description>
        <attribute name="duration" mode="IN" type="Long" optional="true"/>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="resp" type="String" mode="OUT"/>
    </service>
    <service name="testError" engine="java" export="true" validate="false" require-new-transaction="true" max-retry="1"
            location="org.apache.ofbiz.common.CommonServices" invoke="returnErrorService">
    </service>
    <!-- Because of the danger of Java deserialization when using RMI, the RMI component has been disabled in the default configuration of OFBiz.
         If you need RMI you just need to uncomment those places - See OFBIZ-6942 for details -->
    <!-- see serviceengine.xml to configure the rmi location alias -->
    <!-- <service name="testRmi" engine="rmi" validate="false"
            location="main-rmi" invoke="testScv">
        <implements service="testScv"/>
    </service>
    -->

    <service name="testRollback" engine="java" export="true" validate="false"
            location="org.apache.ofbiz.common.CommonServices" invoke="testRollbackListener">
        <description>Test service</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="resp" type="String" mode="OUT"/>
    </service>
    <service name="testCommit" engine="java" export="true" validate="false"
            location="org.apache.ofbiz.common.CommonServices" invoke="testCommitListener">
        <description>Test service</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="resp" type="String" mode="OUT"/>
    </service>

    <service name="groupTest" engine="group" location="testGroup" invoke=""/>

    <service name="testHttp" engine="http" location="main-http" invoke="testScv">
        <description>HTTP service wrapper around the test service</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="resp" type="String" mode="OUT"/>
    </service>

    <service name="testSoap" engine="soap" export="true" location="main-soap" invoke="testSOAPScv">
        <description>SOAP service; calls the OFBiz test SOAP service</description>
        <implements service="testSOAPScv"/>
    </service>
    
    <service name="testSoapSimple" engine="soap" export="true" location="main-soap" invoke="testScv">
        <description>simple SOAP service; calls the OFBiz test service</description>
        <implements service="testScv"/>
    </service>

    <!--  test service for local loopback testing (OFBiz Client SOAP -> OFBiz Server SOAP)  
        http://ofbiz-vm.apache.org:8080/webtools/control/SOAPService is the ultimate location for the testRemoteSoap 
        (it's redirected from http://demo-trunk-ofbiz.apache.org/webtools/control/SOAPService by the SSL ASF proxy)
        So this can be used only against trunk demo and is not in the tests set to avoid a dependency on Internet -->
    <service name="testRemoteSoap" engine="soap" export="true" 
        location="http://ofbiz-vm.apache.org:8080/webtools/control/SOAPService"
        invoke="testSoapSimple">
        <attribute name="defaultValue" type="Double" mode="IN" default-value="999.9999"/>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="resp" type="String" mode="OUT"/>
    </service>

    <!-- FIXME For now, not sure why, the 4 remote SOAP services below don't work -->
    
    <!-- the location = endpoint = SOAP action -->
    <!-- invoke parameter is the name of the operation to invoke, for example LatLonListZipCode -->
    <!-- invoke parameter is needed when there are several possible operations for the SOAP action  -->
    <!-- FIXME For now, not sure why, this remote SOAP service does not work -->
    <service name="testRemoteSoap1" engine="soap" export="true"
        location="http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver.php"
        invoke="LatLonListZipCode">
        <description>A service to invoke the NWS web service</description>
        <namespace>
            http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListZipCode
        </namespace>
        <attribute name="ZipCode" type="String" mode="IN"/>
        <attribute name="invoke" type="String" mode="IN" />
        <attribute name="result" type="String" mode="OUT"/>
    </service>
    
    <!-- the location = endpoint = SOAP action -->
    <!-- invoke parameter is the name of the operation to invoke, for example LatLonListCityNames -->
    <!-- invoke parameter is needed when there are several possible operations for the SOAP action  -->
    <!-- FIXME For now, not sure why, this remote SOAP service does not work -->
    <service name="testRemoteSoap2" engine="soap" export="true"
        location="http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver.php"
        invoke="LatLonListCityNames">
        <description>A service to invoke the NWS web service</description>
        <namespace>
            http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListCityNames
        </namespace>
        <attribute name="CityName" type="String" mode="IN"/>
        <attribute name="invoke" type="String" mode="IN" />
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <!-- FIXME For now, not sure why, this remote SOAP service does not work -->
    <service name="testRemoteSoap3" engine="soap" export="true"
        location="http://www.restfulwebservices.net/wcf/EmailValidationService.svc"
        invoke="EmailValidationService">
        <attribute name="ZipCode" type="String" mode="IN"/>
        <attribute name="invoke" type="String" mode="IN" />
        <attribute name="result" type="String" mode="OUT"/>
    </service>
    
    <!-- FIXME For now, not sure why, this remote SOAP service does not work -->
    <service name="testRemoteSoap4" engine="soap" export="true"
        location="http://www.webservicex.net/geoipservice.asmx"
        invoke="GetGeoIPContext">
        <attribute name="invoke" type="String" mode="IN" />
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testGroovy" engine="groovy" location="component://common/minilang/GroovyServiceTest.groovy" invoke="">
        <description>Test Groovy Script Service</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testGroovyMethod" engine="groovy" location="component://common/minilang/GroovyServiceTest.groovy" invoke="testMethod">
        <description>Test Groovy Script Service Method Invocation</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testScriptEngineGroovy" engine="script" location="component://common/minilang/GroovyServiceTest.groovy" invoke="">
        <description>Test Script Engine With Groovy Script</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testScriptEngineGroovyMethod" engine="script" location="component://common/minilang/GroovyServiceTest.groovy" invoke="testMethod">
        <description>Test Script Engine With Groovy Script Method Invocation</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testScriptEngineJavaScript" engine="script" location="component://common/minilang/JavaScriptTest.js" invoke="">
        <description>Test Script Engine With JavaScript</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="exampleId" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testScriptEngineJavaScriptFunction" engine="script" location="component://common/minilang/JavaScriptTest.js" invoke="testFunction">
        <description>Test Script Engine With JavaScript Function Invocation</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT"/>
    </service>

    <service name="testJMSQueue" engine="jms" location="serviceMessenger" invoke="testScv">
        <description>Test JMS Queue service</description>
        <attribute name="message" type="String" mode="IN"/>
    </service>

    <service name="testJMSTopic" engine="jms" location="serviceMessenger" invoke="testScv">
        <description>Test JMS Topic service</description>
        <attribute name="message" type="String" mode="IN"/>
    </service>

    <service name="testMca" engine="java"
            location="org.apache.ofbiz.common.CommonServices" invoke="mcaTest">
        <description>Test Service MCA</description>
        <implements service="mailProcessInterface"/>
    </service>

    <service name="testRoute" engine="route" location="" invoke="" auth="true">
        <description>Test the Route engine</description>
    </service>

    <service name="simpleMapListTest" engine="java" auth="false" export="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="simpleMapListTest">
        <description>To test XML-RPC handling of Maps and Lists</description>
        <attribute name="listOfStrings" type="List" mode="IN"/>
        <attribute name="mapOfStrings" type="Map" mode="IN"/>
    </service>

    <service name="testJavaScript" engine="javascript" auth="false"
        location="component://common/minilang/JavaScriptTest.js" invoke="">
        <description>Test JavaScript Service</description>
        <attribute name="message" type="String" mode="IN" optional="true"/>
        <attribute name="result" type="String" mode="OUT" optional="true"/>
    </service>

    <service name="testEntityFailure" engine="java" auth="false" validate="false"
            location="org.apache.ofbiz.common.CommonServices" invoke="entityFailTest">
        <description>Cause a Referential Integrity Error</description>
    </service>

    <service name="entitySortTest" engine="java" auth="false" validate="false"
            location="org.apache.ofbiz.common.CommonServices" invoke="entitySortTest">
        <description>Test Entity Comparable</description>
    </service>

     <service name="makeALotOfVisits" engine="java" auth="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="makeALotOfVisits">
        <description>Test JavaScript Service</description>
        <attribute name="count" type="Integer" mode="IN" optional="false"/>
        <attribute name="rollback" type="Boolean" mode="IN" optional="true"/>
    </service>

    <service name="byteBufferTest" engine="java" auth="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="byteBufferTest">
        <description>Test Passing ByteBuffer To Service</description>
        <attribute name="byteBuffer1" type="java.nio.ByteBuffer" mode="IN" optional="false"/>
        <attribute name="saveAsFileName1" type="String" mode="IN" optional="false"/>
        <attribute name="byteBuffer2" type="java.nio.ByteBuffer" mode="IN" optional="false"/>
        <attribute name="saveAsFileName2" type="String" mode="IN" optional="false"/>
    </service>

    <service name="uploadContentTest" engine="java" auth="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="uploadTest">
        <description>Upload Content Test Service</description>
        <attribute name="uploadFile" type="java.nio.ByteBuffer" mode="IN" optional="false"/>
        <attribute name="_uploadFile_contentType" type="String" mode="IN" optional="false"/>
        <attribute name="_uploadFile_fileName" type="String" mode="IN" optional="false"/>
    </service>

    <service name="conditionReturnTrue" engine="java"
            location="org.apache.ofbiz.common.CommonServices" invoke="conditionTrueService">
        <description>ECA Condition Service - Return TRUE</description>
        <implements service="serviceEcaConditionInterface"/>
    </service>
    <service name="conditionReturnFalse" engine="java"
            location="org.apache.ofbiz.common.CommonServices" invoke="conditionFalseService">
        <description>ECA Condition Service - Return FALSE</description>
        <implements service="serviceEcaConditionInterface"/>
    </service>

    <service name="serviceStreamTest" engine="java" auth="false"
            location="org.apache.ofbiz.common.CommonServices" invoke="streamTest">
        <implements service="serviceStreamInterface"/>
    </service>

    <service name="ping" engine="java" export="true" require-new-transaction="true"
            location="org.apache.ofbiz.common.CommonServices" invoke="ping">
        <description>Test Ping Service</description>
        <attribute name="message" type="String" mode="INOUT" optional="true"/>
    </service>
</services>
