<?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="https://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>
    <service name="testClojureSvc" engine="clojure" export="true" validate="false" require-new-transaction="true"
             location="org.apache.ofbiz.common.clojure-test" invoke="test-clojure-svc">
        <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>
    <!-- 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)
        https://ofbiz-vm2.apache.org:8443/webtools/control/SOAPService is the ultimate location for the testRemoteSoap
        It's redirected from https://demo-trunk.ofbiz.apache.org/webtools/control/SOAPService by the HTTPD frontend installed by Puppet in the demo server, ie ofbiz-vm2.apache.org
        We could use also http://demo-trunk.ofbiz.apache.org/webtools/control/SOAPService but HSTS would sent it to https anyway
        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="https://demo-trunk.ofbiz.apache.org/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/src/test/groovy/org/apache/ofbizcommon/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/src/test/groovy/org/apache/ofbizcommon/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/src/test/groovy/org/apache/ofbizcommon/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/src/test/groovy/org/apache/ofbizcommon/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="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>
