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

<uddi xmlns="urn:juddi-apache-org:v3_client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:juddi-apache-org:v3_client ..\..\juddi-client\src\main\resources\xsd\uddi-client.xsd">
  <reloadDelay>5000</reloadDelay>
  <client name="test-client">
    <nodes>
      <!-- hint, there can be more than one "node"-->
      <node isHomeJUDDI="true">
        <!-- required 'default' node -->
        <name>default</name>
        <description>Main jUDDI node</description>
        <properties>
          <!-- for a live instance of jUDDI, use this url
          <property name="serverName" value="uddi-jbossoverlord.rhcloud.com" />
          <property name="serverPort" value="80" />-->

          <!-- for a dev instance of jUDDI, use this url -->
          <property name="serverName" value="localhost" />
          <property name="serverPort" value="8080" />

          <!-- for UDDI nodes that use HTTP u/p, using the following 
					<property name="basicAuthUsername" value="root" />
					<property name="basicAuthPassword" value="password" />
					<property name="basicAuthPasswordIsEncrypted" value="false" />
					<property name="basicAuthPasswordCryptoProvider" value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />-->
        </properties>
        <proxyTransport>org.apache.juddi.v3.client.transport.AspNetTransport</proxyTransport>
        <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer</custodyTransferUrl>
        <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl>
        <inquiryRESTUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryRest</inquiryRESTUrl>
        <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl>
        <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl>
        <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
        <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
        <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
        <factoryInitial>not used</factoryInitial>
        <factoryURLPkgs>not used</factoryURLPkgs>
        <factoryNamingProvider>not used</factoryNamingProvider>
      </node>

      <node>
        <!-- required 'default' node -->
        <name>default_non_root</name>
        <description>Main jUDDI node</description>
        <properties>
          <!-- for a live instance of jUDDI, use this url
          <property name="serverName" value="uddi-jbossoverlord.rhcloud.com" />
          <property name="serverPort" value="80" />-->

          <!-- for a dev instance of jUDDI, use this url -->
          <property name="serverName" value="localhost" />
          <property name="serverPort" value="8080" />

          <!-- for UDDI nodes that use HTTP u/p, using the following 
					<property name="basicAuthUsername" value="root" />
					<property name="basicAuthPassword" value="password" />
					<property name="basicAuthPasswordIsEncrypted" value="false" />
					<property name="basicAuthPasswordCryptoProvider" value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />-->
        </properties>
        <proxyTransport>org.apache.juddi.v3.client.transport.AspNetTransport</proxyTransport>
        <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer</custodyTransferUrl>
        <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl>
        <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl>
        <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl>
        <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
        <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
        <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
        <factoryInitial>not used</factoryInitial>
        <factoryURLPkgs>not used</factoryURLPkgs>
        <factoryNamingProvider>not used</factoryNamingProvider>
      </node>



      <node>
        <!-- required 'default' node -->
        <name>uddiv2</name>
        <description>Main jUDDI node</description>
        <properties>
          <!-- for a live instance of jUDDI, use this url
          <property name="serverName" value="uddi-jbossoverlord.rhcloud.com" />
          <property name="serverPort" value="80" />-->

          <!-- for a dev instance of jUDDI, use this url -->
          <property name="serverName" value="localhost" />
          <property name="serverPort" value="8080" />

          <!-- for UDDI nodes that use HTTP u/p, using the following 
					<property name="basicAuthUsername" value="root" />
					<property name="basicAuthPassword" value="password" />
					<property name="basicAuthPasswordIsEncrypted" value="false" />
					<property name="basicAuthPasswordCryptoProvider" value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />-->
        </properties>
        <proxyTransport>org.apache.juddi.v3.client.transport.AspNetv2TranslationTransport</proxyTransport>
        <custodyTransferUrl>not used</custodyTransferUrl>
        
        <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryv2</inquiryUrl>
        
        <inquiryRESTUrl>not used</inquiryRESTUrl>
        <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publishv2</publishUrl>
        
        <securityUrl>not used</securityUrl>
        <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
        <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
        <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
        <factoryInitial>not used</factoryInitial>
        <factoryURLPkgs>not used</factoryURLPkgs>
        <factoryNamingProvider>not used</factoryNamingProvider>
      </node>

      
      
    </nodes>

    <clerks registerOnStartup="false">
      <!-- one clerk for each node is required-->
      <clerk name="default" node="default" publisher="root" password="root"  isPasswordEncrypted="false" cryptoProvider=""/>
      <clerk name="default_non_root" node="default_non_root"     publisher="uddi" password="uddi"  isPasswordEncrypted="false" cryptoProvider=""/>
      <clerk name="uddiv2" node="default_non_root"     publisher="uddi" password="uddi"  isPasswordEncrypted="false" cryptoProvider=""/>
      <xregister>
        <!-- automatic registration on start. this only triggers when registerOnStartup=true-->
        <servicebinding bindingKey="uddi:juddi.apache.org:servicebindings-subscriptionlistener-ws" fromClerk="default" toClerk="default_non_root"/>
      </xregister>

    </clerks>
    <signature>
      <!-- the store name, 
        AddressBook
        AuthRoot 
        CertificateAuthority
        Disallowed
        My (usually this is the one you want
        Root 
        TrustedPeople
        TrustedPublisher-->
      <signingKeyStorePath>My</signingKeyStorePath>

      <!-- storelocation, this can either be CurrentUser or LocalMachine using the Windows certificate store OR
        the value "PFX" to load the certificate from a PFX file
      -->
      <signingKeyStoreType>CurrentUser</signingKeyStoreType>

      <!-- only used when signingKeyStoreType is "PFX-->
      <signingKeyStoreFilePassword cryptoProvider="" isPasswordEncrypted="false">ignored</signingKeyStoreFilePassword>

      <!-- not used-->
      <signingKeyPassword>ignored</signingKeyPassword>

      <!-- serial number or friendly name/alias, subject or thumbprint-->
      <signingKeyAlias>‎514a6615</signingKeyAlias>
      <canonicalizationMethod>http://www.w3.org/2001/10/xml-exc-c14n#</canonicalizationMethod>
      <signatureMethod>http://www.w3.org/2000/09/xmldsig#rsa-sha1</signatureMethod>
      <XML_DIGSIG_NS>http://www.w3.org/2000/09/xmldsig#</XML_DIGSIG_NS>
      <!-- trust store always goes to the windows certificate store -->
      <trustStorePath>ignored</trustStorePath>
      <trustStoreType>ignored</trustStoreType>
      <trustStorePassword>ignored</trustStorePassword>

      <checkTimestamps>true</checkTimestamps>
      <checkTrust>true</checkTrust>
      <checkRevocationCRL>true</checkRevocationCRL>
      <checkRevocationOCSP>true</checkRevocationOCSP>
      <keyInfoInclusionSubjectDN>true</keyInfoInclusionSubjectDN>
      <keyInfoInclusionSerial>false</keyInfoInclusionSerial>
      <keyInfoInclusionBase64PublicKey>true</keyInfoInclusionBase64PublicKey>
      <digestMethod>http://www.w3.org/2000/09/xmldsig#sha1</digestMethod>
    </signature>
    <subscriptionCallbacks>
      <keyDomain>uddi:org.apache.demos</keyDomain>
      <listenUrl>http://localhost:4444/callback</listenUrl>
      <autoRegisterBindingTemplate>true</autoRegisterBindingTemplate>
      <autoRegisterBusinessServiceKey>uddi:org.apache.demos:coolbizexample-service</autoRegisterBusinessServiceKey>
      <signatureBehavior>DoNothing</signatureBehavior>
    </subscriptionCallbacks>
    <XtoWsdl>
      <IgnoreSSLErrors>false</IgnoreSSLErrors>
    </XtoWsdl>
  </client>
</uddi>
