<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>UDDIClient xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/juddi/v3/client/config/UDDIClient.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * Copyright 2001-2010 The Apache Software Foundation.</em>
<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> * </em>
<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Licensed under the Apache License, Version 2.0 (the "License");</em>
<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * you may not use this file except in compliance with the License.</em>
<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * </em>
<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2." target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.</a>0</em>
<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * </em>
<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * limitations under the License.</em>
<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juddi.v3.client.config;
<a class="jxr_linenumber" name="L18" href="#L18">18</a>  
<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.util.Properties;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.configuration.ConfigurationException;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.api_v3.Node;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.annotations.AnnotationProcessor;
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.ClassUtil;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.Release;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.UDDIConstants;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.embed.EmbeddedRegistry;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.mapping.ServiceLocator;
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.mapping.URLLocalizerDefaultImpl;
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.subscription.SubscriptionCallbackListener;
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.transport.InVMTransport;
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.transport.Transport;
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.BindingTemplate;
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.BusinessService;
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.CategoryBag;
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.KeyedReference;
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.TModelInstanceDetails;
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.TModelInstanceInfo;
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment"> * The UDDIClient is the main entry point for using the jUDDI client. The</em>
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment"> * UDDICLient provides a simple way to get interact with a UDDI registry using</em>
<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <em class="jxr_javadoccomment"> * the UDDI v3 API.&lt;/p&gt;</em>
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment"> * &lt;h3&gt;Note:&lt;/h3&gt;</em>
<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment"> * It is also possible to use the Java API for XML Registries (JAXR). Apache</em>
<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment"> * Scout is an implementation of this API that can be configured to -behind the</em>
<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment"> * scenes- use the jUDDI Client code to access either UDDIv2 or UDDIv3 registry.</em>
<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment"> * The advantage of using JAXR is that your code can be configured to interact</em>
<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment"> * with any XML Registry (such as UDDI or ebXML). The downside is that JAXR has</em>
<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment"> * not evolved beyond the 1.0 release and is tightly coupled to the ebXML data</em>
<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment"> * structures, which being mapped to the UDDI data structures. For more</em>
<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <em class="jxr_javadoccomment"> * information on JAXR see the Apache Scout project, which is a sub project of</em>
<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <em class="jxr_javadoccomment"> * Apache jUDDI. If programmatic acess to a UDDIv3 registry is what you want, we</em>
<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment"> * recommend using the UDDIv3 API with the UDDIClient.&lt;/p&gt;</em>
<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <em class="jxr_javadoccomment"> * The UDDIClient uses a XML formatted configuration file, which by default is</em>
<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment"> * loaded from the classpath from location META-INF/uddi.xml.&lt;/p&gt;</em>
<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment"> * @author kstam</em>
<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClient.html">UDDIClient</a> {
<a class="jxr_linenumber" name="L73" href="#L73">73</a>  
<a class="jxr_linenumber" name="L74" href="#L74">74</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Log log = LogFactory.getLog(UDDIClient.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L75" href="#L75">75</a>          <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/ClientConfig.html">ClientConfig</a> clientConfig = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L76" href="#L76">76</a>          <strong class="jxr_keyword">private</strong> String CONFIG_FILE = <span class="jxr_string">"META-INF/uddi.xml"</span>;
<a class="jxr_linenumber" name="L77" href="#L77">77</a>          <strong class="jxr_keyword">private</strong> Properties properties = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L78" href="#L78">78</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Map&lt;String, ServiceLocator&gt; serviceLocators = <strong class="jxr_keyword">new</strong> HashMap&lt;String, ServiceLocator&gt;();
<a class="jxr_linenumber" name="L79" href="#L79">79</a>  
<a class="jxr_linenumber" name="L80" href="#L80">80</a>          
<a class="jxr_linenumber" name="L81" href="#L81">81</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong>  clearServiceLocatorCaches(){
<a class="jxr_linenumber" name="L82" href="#L82">82</a>                  serviceLocators.clear();
<a class="jxr_linenumber" name="L83" href="#L83">83</a>          }
<a class="jxr_linenumber" name="L84" href="#L84">84</a>          <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment">         * Default constructor, loads from the default config, META-INF/uddi.xml</em>
<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L87" href="#L87">87</a>  <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L88" href="#L88">88</a>  <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClient.html">UDDIClient</a>() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L90" href="#L90">90</a>                  <strong class="jxr_keyword">super</strong>();
<a class="jxr_linenumber" name="L91" href="#L91">91</a>                  log.info(<span class="jxr_string">"jUDDI Client version - "</span> + Release.getjUDDIClientVersion());
<a class="jxr_linenumber" name="L92" href="#L92">92</a>                  clientConfig = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/ClientConfig.html">ClientConfig</a>(CONFIG_FILE, properties);
<a class="jxr_linenumber" name="L93" href="#L93">93</a>                  UDDIClientContainer.addClient(<strong class="jxr_keyword">this</strong>);
<a class="jxr_linenumber" name="L94" href="#L94">94</a>          }
<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L97" href="#L97">97</a>  <em class="jxr_javadoccomment">         * Manages the clerks. Initiates reading the client configuration from</em>
<a class="jxr_linenumber" name="L98" href="#L98">98</a>  <em class="jxr_javadoccomment">         * the uddi.xml.</em>
<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L102" href="#L102">102</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClient.html">UDDIClient</a>(String configurationFile) <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L103" href="#L103">103</a>                 <strong class="jxr_keyword">super</strong>();
<a class="jxr_linenumber" name="L104" href="#L104">104</a>                 log.info(<span class="jxr_string">"jUDDI Client version - "</span> + Release.getjUDDIClientVersion());
<a class="jxr_linenumber" name="L105" href="#L105">105</a>                 clientConfig = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/ClientConfig.html">ClientConfig</a>(configurationFile);
<a class="jxr_linenumber" name="L106" href="#L106">106</a>                 UDDIClientContainer.addClient(<strong class="jxr_keyword">this</strong>);
<a class="jxr_linenumber" name="L107" href="#L107">107</a>         }
<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
<a class="jxr_linenumber" name="L109" href="#L109">109</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">         * Manages the clerks. Initiates reading the client configuration from</em>
<a class="jxr_linenumber" name="L111" href="#L111">111</a> <em class="jxr_javadoccomment">         * the uddi.xml.</em>
<a class="jxr_linenumber" name="L112" href="#L112">112</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L113" href="#L113">113</a> <em class="jxr_javadoccomment">         * @param configurationFile</em>
<a class="jxr_linenumber" name="L114" href="#L114">114</a> <em class="jxr_javadoccomment">         * @param properties</em>
<a class="jxr_linenumber" name="L115" href="#L115">115</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L116" href="#L116">116</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L117" href="#L117">117</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClient.html">UDDIClient</a>(String configurationFile, Properties properties) <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L118" href="#L118">118</a>                 <strong class="jxr_keyword">super</strong>();
<a class="jxr_linenumber" name="L119" href="#L119">119</a>                 log.info(<span class="jxr_string">"jUDDI Client version - "</span> + Release.getjUDDIClientVersion());
<a class="jxr_linenumber" name="L120" href="#L120">120</a>                 clientConfig = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/ClientConfig.html">ClientConfig</a>(configurationFile, properties);
<a class="jxr_linenumber" name="L121" href="#L121">121</a>                 UDDIClientContainer.addClient(<strong class="jxr_keyword">this</strong>);
<a class="jxr_linenumber" name="L122" href="#L122">122</a>         }
<a class="jxr_linenumber" name="L123" href="#L123">123</a> 
<a class="jxr_linenumber" name="L124" href="#L124">124</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L125" href="#L125">125</a> <em class="jxr_javadoccomment">         * Uses the client config, and looks for a clerk called "default"</em>
<a class="jxr_linenumber" name="L126" href="#L126">126</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">         * @return returns getServiceLocator(null);</em>
<a class="jxr_linenumber" name="L128" href="#L128">128</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L130" href="#L130">130</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <a href="../../../../../../org/apache/juddi/v3/client/mapping/ServiceLocator.html">ServiceLocator</a> getServiceLocator() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L131" href="#L131">131</a>                 <strong class="jxr_keyword">return</strong> getServiceLocator(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="L132" href="#L132">132</a>         }
<a class="jxr_linenumber" name="L133" href="#L133">133</a> 
<a class="jxr_linenumber" name="L134" href="#L134">134</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">         * @param clerkName - if null defaults to "default"</em>
<a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">         * @return a serviceLocator object</em>
<a class="jxr_linenumber" name="L137" href="#L137">137</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L138" href="#L138">138</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L139" href="#L139">139</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <a href="../../../../../../org/apache/juddi/v3/client/mapping/ServiceLocator.html">ServiceLocator</a> getServiceLocator(String clerkName) <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L140" href="#L140">140</a>                 <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClerk.html">UDDIClerk</a> clerk = getClerk(clerkName);
<a class="jxr_linenumber" name="L141" href="#L141">141</a>                 <strong class="jxr_keyword">if</strong> (clerk==<strong class="jxr_keyword">null</strong>){
<a class="jxr_linenumber" name="L142" href="#L142">142</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(<span class="jxr_string">"could not locate the UDDI Clerk '"</span> + clerkName +<span class="jxr_string">"'."</span>);
<a class="jxr_linenumber" name="L143" href="#L143">143</a>                 }
<a class="jxr_linenumber" name="L144" href="#L144">144</a>                 <strong class="jxr_keyword">if</strong> (!serviceLocators.containsKey(clerk.getName())) {
<a class="jxr_linenumber" name="L145" href="#L145">145</a>                         <a href="../../../../../../org/apache/juddi/v3/client/mapping/ServiceLocator.html">ServiceLocator</a> serviceLocator = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/client/mapping/ServiceLocator.html">ServiceLocator</a>(clerk, <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/client/mapping/URLLocalizerDefaultImpl.html">URLLocalizerDefaultImpl</a>(), properties);
<a class="jxr_linenumber" name="L146" href="#L146">146</a>                         serviceLocators.put(clerk.getName(), serviceLocator);
<a class="jxr_linenumber" name="L147" href="#L147">147</a>                 }
<a class="jxr_linenumber" name="L148" href="#L148">148</a>                 <strong class="jxr_keyword">return</strong> serviceLocators.get(clerk.getName());
<a class="jxr_linenumber" name="L149" href="#L149">149</a>         }
<a class="jxr_linenumber" name="L150" href="#L150">150</a> 
<a class="jxr_linenumber" name="L151" href="#L151">151</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L152" href="#L152">152</a> <em class="jxr_javadoccomment">         * Stops the clerks. If transport is InVM, all database resources are</em>
<a class="jxr_linenumber" name="L153" href="#L153">153</a> <em class="jxr_javadoccomment">         * released. If anything was auto registered, it will be removed prior</em>
<a class="jxr_linenumber" name="L154" href="#L154">154</a> <em class="jxr_javadoccomment">         * to shutdown</em>
<a class="jxr_linenumber" name="L155" href="#L155">155</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L156" href="#L156">156</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L157" href="#L157">157</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L158" href="#L158">158</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L159" href="#L159">159</a>                 log.info(<span class="jxr_string">"Stopping UDDI Client "</span> + clientConfig.getClientName());
<a class="jxr_linenumber" name="L160" href="#L160">160</a>                 releaseResources();
<a class="jxr_linenumber" name="L161" href="#L161">161</a>                 <em class="jxr_comment">//fix for when someone runs UDDIClient.stop more than once</em>
<a class="jxr_linenumber" name="L162" href="#L162">162</a>                 <strong class="jxr_keyword">if</strong> (UDDIClientContainer.contains(getName())) {
<a class="jxr_linenumber" name="L163" href="#L163">163</a>                         UDDIClientContainer.removeClerkManager(getName());
<a class="jxr_linenumber" name="L164" href="#L164">164</a>                 }
<a class="jxr_linenumber" name="L165" href="#L165">165</a> 
<a class="jxr_linenumber" name="L166" href="#L166">166</a>                 <em class="jxr_comment">//If running in embedded mode</em>
<a class="jxr_linenumber" name="L167" href="#L167">167</a>                 <strong class="jxr_keyword">if</strong> (InVMTransport.<strong class="jxr_keyword">class</strong>.getCanonicalName().equals(getClientConfig().getHomeNode().getProxyTransport())) {
<a class="jxr_linenumber" name="L168" href="#L168">168</a>                         log.info(<span class="jxr_string">"Shutting down embedded Server"</span>);
<a class="jxr_linenumber" name="L169" href="#L169">169</a>                         stopEmbeddedServer();
<a class="jxr_linenumber" name="L170" href="#L170">170</a>                 }
<a class="jxr_linenumber" name="L171" href="#L171">171</a>                 log.info(<span class="jxr_string">"UDDI Clerks shutdown completed for manager "</span> + clientConfig.getClientName());
<a class="jxr_linenumber" name="L172" href="#L172">172</a>         }
<a class="jxr_linenumber" name="L173" href="#L173">173</a> 
<a class="jxr_linenumber" name="L174" href="#L174">174</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> releaseResources() {
<a class="jxr_linenumber" name="L175" href="#L175">175</a>                 <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.clientConfig.isRegisterOnStartup()) {
<a class="jxr_linenumber" name="L176" href="#L176">176</a>                         unRegisterWSDLs();
<a class="jxr_linenumber" name="L177" href="#L177">177</a>                         unRegisterBindingsOfAnnotatedServices(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L178" href="#L178">178</a>                 }
<a class="jxr_linenumber" name="L179" href="#L179">179</a>         }
<a class="jxr_linenumber" name="L180" href="#L180">180</a> 
<a class="jxr_linenumber" name="L181" href="#L181">181</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L182" href="#L182">182</a> <em class="jxr_javadoccomment">         * Initializes the UDDI Clerk. If transport is set to InVM, this will</em>
<a class="jxr_linenumber" name="L183" href="#L183">183</a> <em class="jxr_javadoccomment">         * initialize all database connections, other it will trigger all</em>
<a class="jxr_linenumber" name="L184" href="#L184">184</a> <em class="jxr_javadoccomment">         * background registration threads</em>
<a class="jxr_linenumber" name="L185" href="#L185">185</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L186" href="#L186">186</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L187" href="#L187">187</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L188" href="#L188">188</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
<a class="jxr_linenumber" name="L190" href="#L190">190</a>                 <strong class="jxr_keyword">if</strong> (UDDIClientContainer.addClient(<strong class="jxr_keyword">this</strong>)) {
<a class="jxr_linenumber" name="L191" href="#L191">191</a>                         <em class="jxr_comment">//If running in embedded mode</em>
<a class="jxr_linenumber" name="L192" href="#L192">192</a>                         <strong class="jxr_keyword">if</strong> (InVMTransport.<strong class="jxr_keyword">class</strong>.getCanonicalName().equals(getClientConfig().getHomeNode().getProxyTransport())) {
<a class="jxr_linenumber" name="L193" href="#L193">193</a>                                 log.info(<span class="jxr_string">"Starting embedded Server"</span>);
<a class="jxr_linenumber" name="L194" href="#L194">194</a>                                 startEmbeddedServer();
<a class="jxr_linenumber" name="L195" href="#L195">195</a>                         }
<a class="jxr_linenumber" name="L196" href="#L196">196</a>                         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.clientConfig.isRegisterOnStartup()) {
<a class="jxr_linenumber" name="L197" href="#L197">197</a>                                 Runnable runnable = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/BackGroundRegistration.html">BackGroundRegistration</a>(<strong class="jxr_keyword">this</strong>);
<a class="jxr_linenumber" name="L198" href="#L198">198</a>                                 Thread thread = <strong class="jxr_keyword">new</strong> Thread(runnable);
<a class="jxr_linenumber" name="L199" href="#L199">199</a>                                 thread.setName(<span class="jxr_string">"juddi background registration"</span>);
<a class="jxr_linenumber" name="L200" href="#L200">200</a>                                 thread.setDaemon(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L201" href="#L201">201</a>                                 thread.start();
<a class="jxr_linenumber" name="L202" href="#L202">202</a>                         }
<a class="jxr_linenumber" name="L203" href="#L203">203</a>                 }
<a class="jxr_linenumber" name="L204" href="#L204">204</a>         }
<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
<a class="jxr_linenumber" name="L206" href="#L206">206</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> startEmbeddedServer() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L207" href="#L207">207</a> 
<a class="jxr_linenumber" name="L208" href="#L208">208</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L209" href="#L209">209</a>                         String embeddedServerClass = getClientConfig().getHomeNode().getProperties().getProperty(<span class="jxr_string">"embeddedServer"</span>, <span class="jxr_string">"org.apache.juddi.v3.client.embed.JUDDIRegistry"</span>);
<a class="jxr_linenumber" name="L210" href="#L210">210</a>                         Class&lt;?&gt; clazz = ClassUtil.forName(embeddedServerClass, <strong class="jxr_keyword">this</strong>.getClass());
<a class="jxr_linenumber" name="L211" href="#L211">211</a>                         <a href="../../../../../../org/apache/juddi/v3/client/embed/EmbeddedRegistry.html">EmbeddedRegistry</a> embeddedRegistry = (EmbeddedRegistry) clazz.newInstance();
<a class="jxr_linenumber" name="L212" href="#L212">212</a>                         embeddedRegistry.start();
<a class="jxr_linenumber" name="L213" href="#L213">213</a>                 } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L214" href="#L214">214</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(e.getMessage(), e);
<a class="jxr_linenumber" name="L215" href="#L215">215</a>                 }
<a class="jxr_linenumber" name="L216" href="#L216">216</a>         }
<a class="jxr_linenumber" name="L217" href="#L217">217</a> 
<a class="jxr_linenumber" name="L218" href="#L218">218</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> stopEmbeddedServer() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L219" href="#L219">219</a> 
<a class="jxr_linenumber" name="L220" href="#L220">220</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L221" href="#L221">221</a>                         String embeddedServerClass = getClientConfig().getHomeNode().getProperties().getProperty(<span class="jxr_string">"embeddedServer"</span>, <span class="jxr_string">"org.apache.juddi.v3.client.embed.JUDDIRegistry"</span>);
<a class="jxr_linenumber" name="L222" href="#L222">222</a>                         Class&lt;?&gt; clazz = ClassUtil.forName(embeddedServerClass, <strong class="jxr_keyword">this</strong>.getClass());
<a class="jxr_linenumber" name="L223" href="#L223">223</a>                         <a href="../../../../../../org/apache/juddi/v3/client/embed/EmbeddedRegistry.html">EmbeddedRegistry</a> embeddedRegistry = (EmbeddedRegistry) clazz.newInstance();
<a class="jxr_linenumber" name="L224" href="#L224">224</a>                         embeddedRegistry.stop();
<a class="jxr_linenumber" name="L225" href="#L225">225</a>                 } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L226" href="#L226">226</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(e.getMessage(), e);
<a class="jxr_linenumber" name="L227" href="#L227">227</a>                 }
<a class="jxr_linenumber" name="L228" href="#L228">228</a>         }
<a class="jxr_linenumber" name="L229" href="#L229">229</a> 
<a class="jxr_linenumber" name="L230" href="#L230">230</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L231" href="#L231">231</a> <em class="jxr_javadoccomment">         * calls stop and start again</em>
<a class="jxr_linenumber" name="L232" href="#L232">232</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L233" href="#L233">233</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L234" href="#L234">234</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L235" href="#L235">235</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> restart() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L236" href="#L236">236</a>                 stop();
<a class="jxr_linenumber" name="L237" href="#L237">237</a>                 start();
<a class="jxr_linenumber" name="L238" href="#L238">238</a>         }
<a class="jxr_linenumber" name="L239" href="#L239">239</a> 
<a class="jxr_linenumber" name="L240" href="#L240">240</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L241" href="#L241">241</a> <em class="jxr_javadoccomment">         * Saves the clerk and node info from the uddi.xml to the home jUDDI</em>
<a class="jxr_linenumber" name="L242" href="#L242">242</a> <em class="jxr_javadoccomment">         * registry. This info is needed if you want to JUDDI Server to do</em>
<a class="jxr_linenumber" name="L243" href="#L243">243</a> <em class="jxr_javadoccomment">         * XRegistration/"replication".</em>
<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L245" href="#L245">245</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> saveClerkAndNodeInfo() {
<a class="jxr_linenumber" name="L246" href="#L246">246</a> 
<a class="jxr_linenumber" name="L247" href="#L247">247</a>                 Map&lt;String, UDDIClerk&gt; uddiClerks = clientConfig.getUDDIClerks();
<a class="jxr_linenumber" name="L248" href="#L248">248</a> 
<a class="jxr_linenumber" name="L249" href="#L249">249</a>                 <strong class="jxr_keyword">if</strong> (uddiClerks.size() &gt; 0) {
<a class="jxr_linenumber" name="L250" href="#L250">250</a> 
<a class="jxr_linenumber" name="L251" href="#L251">251</a>                         <em class="jxr_comment">//obtaining a clerk that can write to the home registry</em>
<a class="jxr_linenumber" name="L252" href="#L252">252</a>                         <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClerk.html">UDDIClerk</a> homeClerk = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L253" href="#L253">253</a>                         <strong class="jxr_keyword">for</strong> (UDDIClerk clerk : uddiClerks.values()) {
<a class="jxr_linenumber" name="L254" href="#L254">254</a>                                 <strong class="jxr_keyword">if</strong> (clerk.getUDDINode().isHomeJUDDI()) {
<a class="jxr_linenumber" name="L255" href="#L255">255</a>                                         homeClerk = clerk;
<a class="jxr_linenumber" name="L256" href="#L256">256</a>                                 }
<a class="jxr_linenumber" name="L257" href="#L257">257</a>                         }
<a class="jxr_linenumber" name="L258" href="#L258">258</a>                         <em class="jxr_comment">//registering nodes and clerks</em>
<a class="jxr_linenumber" name="L259" href="#L259">259</a>                         <strong class="jxr_keyword">if</strong> (homeClerk != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L260" href="#L260">260</a>                                 <strong class="jxr_keyword">int</strong> numberOfHomeJUDDIs = 0;
<a class="jxr_linenumber" name="L261" href="#L261">261</a>                                 <strong class="jxr_keyword">for</strong> (UDDINode uddiNode : clientConfig.getUDDINodes().values()) {
<a class="jxr_linenumber" name="L262" href="#L262">262</a>                                         <strong class="jxr_keyword">if</strong> (uddiNode.isHomeJUDDI()) {
<a class="jxr_linenumber" name="L263" href="#L263">263</a>                                                 numberOfHomeJUDDIs++;
<a class="jxr_linenumber" name="L264" href="#L264">264</a>                                         }
<a class="jxr_linenumber" name="L265" href="#L265">265</a>                                         homeClerk.saveNode(uddiNode.getApiNode());
<a class="jxr_linenumber" name="L266" href="#L266">266</a>                                 }
<a class="jxr_linenumber" name="L267" href="#L267">267</a>                                 <strong class="jxr_keyword">if</strong> (numberOfHomeJUDDIs == 1) {
<a class="jxr_linenumber" name="L268" href="#L268">268</a>                                         <strong class="jxr_keyword">for</strong> (UDDIClerk clerk : clientConfig.getUDDIClerks().values()) {
<a class="jxr_linenumber" name="L269" href="#L269">269</a>                                                 homeClerk.saveClerk(clerk);
<a class="jxr_linenumber" name="L270" href="#L270">270</a>                                         }
<a class="jxr_linenumber" name="L271" href="#L271">271</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L272" href="#L272">272</a>                                         log.error(<span class="jxr_string">"The client config needs to have one homeJUDDI node and found "</span> + numberOfHomeJUDDIs);
<a class="jxr_linenumber" name="L273" href="#L273">273</a>                                 }
<a class="jxr_linenumber" name="L274" href="#L274">274</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L275" href="#L275">275</a>                                 log.debug(<span class="jxr_string">"No home clerk found."</span>);
<a class="jxr_linenumber" name="L276" href="#L276">276</a>                         }
<a class="jxr_linenumber" name="L277" href="#L277">277</a>                 }
<a class="jxr_linenumber" name="L278" href="#L278">278</a>         }
<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
<a class="jxr_linenumber" name="L280" href="#L280">280</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L281" href="#L281">281</a> <em class="jxr_javadoccomment">         * X-Register services listed in the uddi.xml</em>
<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L283" href="#L283">283</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> xRegister() {
<a class="jxr_linenumber" name="L284" href="#L284">284</a>                 log.debug(<span class="jxr_string">"Starting cross registration..."</span>);
<a class="jxr_linenumber" name="L285" href="#L285">285</a>                 <em class="jxr_comment">//XRegistration of listed businesses</em>
<a class="jxr_linenumber" name="L286" href="#L286">286</a>                 Set&lt;XRegistration&gt; xBusinessRegistrations = clientConfig.getXBusinessRegistrations();
<a class="jxr_linenumber" name="L287" href="#L287">287</a>                 <strong class="jxr_keyword">for</strong> (XRegistration xRegistration : xBusinessRegistrations) {
<a class="jxr_linenumber" name="L288" href="#L288">288</a>                         xRegistration.xRegisterBusiness();
<a class="jxr_linenumber" name="L289" href="#L289">289</a>                 }
<a class="jxr_linenumber" name="L290" href="#L290">290</a>                 <em class="jxr_comment">//XRegistration of listed serviceBindings</em>
<a class="jxr_linenumber" name="L291" href="#L291">291</a>                 Set&lt;XRegistration&gt; xServiceBindingRegistrations = clientConfig.getXServiceBindingRegistrations();
<a class="jxr_linenumber" name="L292" href="#L292">292</a>                 <strong class="jxr_keyword">for</strong> (XRegistration xRegistration : xServiceBindingRegistrations) {
<a class="jxr_linenumber" name="L293" href="#L293">293</a>                         xRegistration.xRegisterServiceBinding();
<a class="jxr_linenumber" name="L294" href="#L294">294</a>                 }
<a class="jxr_linenumber" name="L295" href="#L295">295</a>                 log.debug(<span class="jxr_string">"Cross registration completed"</span>);
<a class="jxr_linenumber" name="L296" href="#L296">296</a>         }
<a class="jxr_linenumber" name="L297" href="#L297">297</a> 
<a class="jxr_linenumber" name="L298" href="#L298">298</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L299" href="#L299">299</a> <em class="jxr_javadoccomment">         * Registers services to UDDI using a clerk, and the uddi.xml</em>
<a class="jxr_linenumber" name="L300" href="#L300">300</a> <em class="jxr_javadoccomment">         * configuration.</em>
<a class="jxr_linenumber" name="L301" href="#L301">301</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L302" href="#L302">302</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> registerAnnotatedServices() {
<a class="jxr_linenumber" name="L303" href="#L303">303</a>                 Map&lt;String, UDDIClerk&gt; uddiClerks = clientConfig.getUDDIClerks();
<a class="jxr_linenumber" name="L304" href="#L304">304</a>                 <strong class="jxr_keyword">if</strong> (uddiClerks.size() &gt; 0) {
<a class="jxr_linenumber" name="L305" href="#L305">305</a>                         <a href="../../../../../../org/apache/juddi/v3/annotations/AnnotationProcessor.html">AnnotationProcessor</a> ap = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/annotations/AnnotationProcessor.html">AnnotationProcessor</a>();
<a class="jxr_linenumber" name="L306" href="#L306">306</a>                         <strong class="jxr_keyword">for</strong> (UDDIClerk uddiClerk : uddiClerks.values()) {
<a class="jxr_linenumber" name="L307" href="#L307">307</a>                                 Collection&lt;BusinessService&gt; services = ap.readServiceAnnotations(
<a class="jxr_linenumber" name="L308" href="#L308">308</a>                                         uddiClerk.getClassWithAnnotations(), uddiClerk.getUDDINode().getProperties());
<a class="jxr_linenumber" name="L309" href="#L309">309</a>                                 <strong class="jxr_keyword">for</strong> (BusinessService businessService : services) {
<a class="jxr_linenumber" name="L310" href="#L310">310</a>                                         log.info(<span class="jxr_string">"Node="</span> + uddiClerk.getUDDINode().getApiNode().getName());
<a class="jxr_linenumber" name="L311" href="#L311">311</a>                                         uddiClerk.register(businessService, uddiClerk.getUDDINode().getApiNode());
<a class="jxr_linenumber" name="L312" href="#L312">312</a>                                 }
<a class="jxr_linenumber" name="L313" href="#L313">313</a>                         }
<a class="jxr_linenumber" name="L314" href="#L314">314</a>                 }
<a class="jxr_linenumber" name="L315" href="#L315">315</a>         }
<a class="jxr_linenumber" name="L316" href="#L316">316</a> 
<a class="jxr_linenumber" name="L317" href="#L317">317</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L318" href="#L318">318</a> <em class="jxr_javadoccomment">         * Removes the service and all of its bindingTemplates of the annotated</em>
<a class="jxr_linenumber" name="L319" href="#L319">319</a> <em class="jxr_javadoccomment">         * classes.</em>
<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L322" href="#L322">322</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> unRegisterAnnotatedServices() {
<a class="jxr_linenumber" name="L323" href="#L323">323</a>                 Map&lt;String, UDDIClerk&gt; clerks = clientConfig.getUDDIClerks();
<a class="jxr_linenumber" name="L324" href="#L324">324</a>                 <strong class="jxr_keyword">if</strong> (clerks.size() &gt; 0) {
<a class="jxr_linenumber" name="L325" href="#L325">325</a>                         <a href="../../../../../../org/apache/juddi/v3/annotations/AnnotationProcessor.html">AnnotationProcessor</a> ap = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/annotations/AnnotationProcessor.html">AnnotationProcessor</a>();
<a class="jxr_linenumber" name="L326" href="#L326">326</a>                         <strong class="jxr_keyword">for</strong> (UDDIClerk clerk : clerks.values()) {
<a class="jxr_linenumber" name="L327" href="#L327">327</a>                                 Collection&lt;BusinessService&gt; services = ap.readServiceAnnotations(
<a class="jxr_linenumber" name="L328" href="#L328">328</a>                                         clerk.getClassWithAnnotations(), clerk.getUDDINode().getProperties());
<a class="jxr_linenumber" name="L329" href="#L329">329</a>                                 <strong class="jxr_keyword">for</strong> (BusinessService businessService : services) {
<a class="jxr_linenumber" name="L330" href="#L330">330</a>                                         clerk.unRegisterService(businessService.getServiceKey(), clerk.getUDDINode().getApiNode());
<a class="jxr_linenumber" name="L331" href="#L331">331</a>                                 }
<a class="jxr_linenumber" name="L332" href="#L332">332</a>                         }
<a class="jxr_linenumber" name="L333" href="#L333">333</a>                 }
<a class="jxr_linenumber" name="L334" href="#L334">334</a>         }
<a class="jxr_linenumber" name="L335" href="#L335">335</a> 
<a class="jxr_linenumber" name="L336" href="#L336">336</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L337" href="#L337">337</a> <em class="jxr_javadoccomment">         * Removes the bindings of the services in the annotated classes.</em>
<a class="jxr_linenumber" name="L338" href="#L338">338</a> <em class="jxr_javadoccomment">         * Multiple nodes may register the same service using different</em>
<a class="jxr_linenumber" name="L339" href="#L339">339</a> <em class="jxr_javadoccomment">         * BindingTempates. If the last BindingTemplate is removed the service</em>
<a class="jxr_linenumber" name="L340" href="#L340">340</a> <em class="jxr_javadoccomment">         * can be removed as well.</em>
<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em class="jxr_javadoccomment">         * @param removeServiceWithNoBindingTemplates - if set to true it will</em>
<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em class="jxr_javadoccomment">         * remove the service if there are no other BindingTemplates.</em>
<a class="jxr_linenumber" name="L344" href="#L344">344</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L345" href="#L345">345</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> unRegisterBindingsOfAnnotatedServices(<strong class="jxr_keyword">boolean</strong> removeServiceWithNoBindingTemplates) {
<a class="jxr_linenumber" name="L346" href="#L346">346</a> 
<a class="jxr_linenumber" name="L347" href="#L347">347</a>                 Map&lt;String, UDDIClerk&gt; clerks = clientConfig.getUDDIClerks();
<a class="jxr_linenumber" name="L348" href="#L348">348</a>                 <strong class="jxr_keyword">if</strong> (clerks.size() &gt; 0) {
<a class="jxr_linenumber" name="L349" href="#L349">349</a>                         <a href="../../../../../../org/apache/juddi/v3/annotations/AnnotationProcessor.html">AnnotationProcessor</a> ap = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/juddi/v3/annotations/AnnotationProcessor.html">AnnotationProcessor</a>();
<a class="jxr_linenumber" name="L350" href="#L350">350</a>                         <strong class="jxr_keyword">for</strong> (UDDIClerk clerk : clerks.values()) {
<a class="jxr_linenumber" name="L351" href="#L351">351</a>                                 Collection&lt;BusinessService&gt; services = ap.readServiceAnnotations(
<a class="jxr_linenumber" name="L352" href="#L352">352</a>                                         clerk.getClassWithAnnotations(), clerk.getUDDINode().getProperties());
<a class="jxr_linenumber" name="L353" href="#L353">353</a>                                 <strong class="jxr_keyword">for</strong> (BusinessService businessService : services) {
<a class="jxr_linenumber" name="L354" href="#L354">354</a>                                         <strong class="jxr_keyword">if</strong> (businessService.getBindingTemplates() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L355" href="#L355">355</a>                                                 List&lt;BindingTemplate&gt; bindingTemplates = businessService.getBindingTemplates().getBindingTemplate();
<a class="jxr_linenumber" name="L356" href="#L356">356</a>                                                 <strong class="jxr_keyword">for</strong> (BindingTemplate bindingTemplate : bindingTemplates) {
<a class="jxr_linenumber" name="L357" href="#L357">357</a>                                                         clerk.unRegisterBinding(bindingTemplate.getBindingKey(), clerk.getUDDINode().getApiNode());
<a class="jxr_linenumber" name="L358" href="#L358">358</a>                                                 }
<a class="jxr_linenumber" name="L359" href="#L359">359</a>                                         }
<a class="jxr_linenumber" name="L360" href="#L360">360</a>                                         <strong class="jxr_keyword">if</strong> (removeServiceWithNoBindingTemplates) {
<a class="jxr_linenumber" name="L361" href="#L361">361</a>                                                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L362" href="#L362">362</a>                                                         BusinessService existingService = clerk.getServiceDetail(businessService.getServiceKey(), clerk.getUDDINode().getApiNode());
<a class="jxr_linenumber" name="L363" href="#L363">363</a>                                                         <strong class="jxr_keyword">if</strong> (existingService.getBindingTemplates() == <strong class="jxr_keyword">null</strong> || existingService.getBindingTemplates().getBindingTemplate().size() == 0) {
<a class="jxr_linenumber" name="L364" href="#L364">364</a>                                                                 clerk.unRegisterService(businessService.getServiceKey(), clerk.getUDDINode().getApiNode());
<a class="jxr_linenumber" name="L365" href="#L365">365</a>                                                         }
<a class="jxr_linenumber" name="L366" href="#L366">366</a>                                                 } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L367" href="#L367">367</a>                                                         log.error(e.getMessage(), e);
<a class="jxr_linenumber" name="L368" href="#L368">368</a>                                                 }
<a class="jxr_linenumber" name="L369" href="#L369">369</a>                                         }
<a class="jxr_linenumber" name="L370" href="#L370">370</a>                                 }
<a class="jxr_linenumber" name="L371" href="#L371">371</a>                         }
<a class="jxr_linenumber" name="L372" href="#L372">372</a>                 }
<a class="jxr_linenumber" name="L373" href="#L373">373</a> 
<a class="jxr_linenumber" name="L374" href="#L374">374</a>         }
<a class="jxr_linenumber" name="L375" href="#L375">375</a> 
<a class="jxr_linenumber" name="L376" href="#L376">376</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em class="jxr_javadoccomment">         * Returns a live instance of the raw configuration file</em>
<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em class="jxr_javadoccomment">         * @return the client config loaded from file</em>
<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L381" href="#L381">381</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/ClientConfig.html">ClientConfig</a> getClientConfig() {
<a class="jxr_linenumber" name="L382" href="#L382">382</a>                 <strong class="jxr_keyword">return</strong> clientConfig;
<a class="jxr_linenumber" name="L383" href="#L383">383</a>         }
<a class="jxr_linenumber" name="L384" href="#L384">384</a> 
<a class="jxr_linenumber" name="L385" href="#L385">385</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L386" href="#L386">386</a> <em class="jxr_javadoccomment">         * returns getClientConfig().getClientName()</em>
<a class="jxr_linenumber" name="L387" href="#L387">387</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L388" href="#L388">388</a> <em class="jxr_javadoccomment">         * @return getClientConfig().getClientName()</em>
<a class="jxr_linenumber" name="L389" href="#L389">389</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L390" href="#L390">390</a>         <strong class="jxr_keyword">public</strong> String getName() {
<a class="jxr_linenumber" name="L391" href="#L391">391</a>                 <strong class="jxr_keyword">return</strong> clientConfig.getClientName();
<a class="jxr_linenumber" name="L392" href="#L392">392</a>         }
<a class="jxr_linenumber" name="L393" href="#L393">393</a> 
<a class="jxr_linenumber" name="L394" href="#L394">394</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L395" href="#L395">395</a> <em class="jxr_javadoccomment">         * maps to config file client[@callbackUrl] Not currently used</em>
<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">         * @return client[@callbackUrl]</em>
<a class="jxr_linenumber" name="L398" href="#L398">398</a> <em class="jxr_javadoccomment">         * @deprecated use SubscriptionCallbackListener</em>
<a class="jxr_linenumber" name="L399" href="#L399">399</a> <em class="jxr_javadoccomment">         * @see SubscriptionCallbackListener</em>
<a class="jxr_linenumber" name="L400" href="#L400">400</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L401" href="#L401">401</a>         @Deprecated 
<a class="jxr_linenumber" name="L402" href="#L402">402</a>         <strong class="jxr_keyword">public</strong> String getClientCallbackUrl() {
<a class="jxr_linenumber" name="L403" href="#L403">403</a>                 <strong class="jxr_keyword">return</strong> clientConfig.getClientCallbackUrl();
<a class="jxr_linenumber" name="L404" href="#L404">404</a>         }
<a class="jxr_linenumber" name="L405" href="#L405">405</a> 
<a class="jxr_linenumber" name="L406" href="#L406">406</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L407" href="#L407">407</a> <em class="jxr_javadoccomment">         * Returns the transport defined for the node with the given name</em>
<a class="jxr_linenumber" name="L408" href="#L408">408</a> <em class="jxr_javadoccomment">         * "default". deprecated, use the getTransport(String nodeName) instead.</em>
<a class="jxr_linenumber" name="L409" href="#L409">409</a> <em class="jxr_javadoccomment">         * Returns the "default" jUDDI nodes Transport.</em>
<a class="jxr_linenumber" name="L410" href="#L410">410</a> <em class="jxr_javadoccomment">         * @deprecated use the getTransport(String nodeName) instead. Returns</em>
<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">         * the "default" jUDDI nodes Transport. Note: this will always return a</em>
<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">         * new instance of Transport</em>
<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">         * @return a transport object</em>
<a class="jxr_linenumber" name="L414" href="#L414">414</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L415" href="#L415">415</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L416" href="#L416">416</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/transport/Transport.html">Transport</a> getTransport() <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L417" href="#L417">417</a>                 <strong class="jxr_keyword">return</strong> getTransport(<span class="jxr_string">"default"</span>);
<a class="jxr_linenumber" name="L418" href="#L418">418</a>         }
<a class="jxr_linenumber" name="L419" href="#L419">419</a> 
<a class="jxr_linenumber" name="L420" href="#L420">420</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L421" href="#L421">421</a> <em class="jxr_javadoccomment">         * Returns the transport defined for the node with the given nodeName.</em>
<a class="jxr_linenumber" name="L422" href="#L422">422</a> <em class="jxr_javadoccomment">         * Note: this will always return a new instance of Transport</em>
<a class="jxr_linenumber" name="L423" href="#L423">423</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L424" href="#L424">424</a> <em class="jxr_javadoccomment">         * @param nodeName</em>
<a class="jxr_linenumber" name="L425" href="#L425">425</a> <em class="jxr_javadoccomment">         * @return a transport object</em>
<a class="jxr_linenumber" name="L426" href="#L426">426</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L427" href="#L427">427</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L428" href="#L428">428</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/transport/Transport.html">Transport</a> getTransport(String nodeName) <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L429" href="#L429">429</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L430" href="#L430">430</a>                         String clazz = clientConfig.getUDDINode(nodeName).getProxyTransport();
<a class="jxr_linenumber" name="L431" href="#L431">431</a>                         String managerName = clientConfig.getClientName();
<a class="jxr_linenumber" name="L432" href="#L432">432</a>                         Class&lt;?&gt; transportClass = ClassUtil.forName(clazz, UDDIClient.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L433" href="#L433">433</a>                         <strong class="jxr_keyword">if</strong> (transportClass != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L434" href="#L434">434</a>                                 <a href="../../../../../../org/apache/juddi/v3/client/transport/Transport.html">Transport</a> transport = (Transport) transportClass.getConstructor(String.<strong class="jxr_keyword">class</strong>, String.<strong class="jxr_keyword">class</strong>).newInstance(managerName, nodeName);
<a class="jxr_linenumber" name="L435" href="#L435">435</a>                                 <strong class="jxr_keyword">return</strong> transport;
<a class="jxr_linenumber" name="L436" href="#L436">436</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L437" href="#L437">437</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(<span class="jxr_string">"ProxyTransport was not defined in the "</span> + clientConfig.getConfigurationFile());
<a class="jxr_linenumber" name="L438" href="#L438">438</a>                         }
<a class="jxr_linenumber" name="L439" href="#L439">439</a>                 } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L440" href="#L440">440</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(e.getMessage(), e);
<a class="jxr_linenumber" name="L441" href="#L441">441</a>                 }
<a class="jxr_linenumber" name="L442" href="#L442">442</a>         }
<a class="jxr_linenumber" name="L443" href="#L443">443</a>         
<a class="jxr_linenumber" name="L444" href="#L444">444</a>        <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L445" href="#L445">445</a> <em class="jxr_javadoccomment">         * Gets the UDDI Clerk, the entry point into many functions of the juddi</em>
<a class="jxr_linenumber" name="L446" href="#L446">446</a> <em class="jxr_javadoccomment">         * client</em>
<a class="jxr_linenumber" name="L447" href="#L447">447</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L448" href="#L448">448</a> <em class="jxr_javadoccomment">         * @param clerkName - This references the uddi/client/clerk@name of the</em>
<a class="jxr_linenumber" name="L449" href="#L449">449</a> <em class="jxr_javadoccomment">         * juddi client config file. it stores credentials if necessary and</em>
<a class="jxr_linenumber" name="L450" href="#L450">450</a> <em class="jxr_javadoccomment">         * associates it with a particular UDDI node (server/cluster) If not</em>
<a class="jxr_linenumber" name="L451" href="#L451">451</a> <em class="jxr_javadoccomment">         * specified, the value of "default" will be used.</em>
<a class="jxr_linenumber" name="L452" href="#L452">452</a> <em class="jxr_javadoccomment">         * @return A clerk instance if the clerk is defined in the config file</em>
<a class="jxr_linenumber" name="L453" href="#L453">453</a> <em class="jxr_javadoccomment">         * or NULL if not found</em>
<a class="jxr_linenumber" name="L454" href="#L454">454</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L455" href="#L455">455</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/juddi/v3/client/config/UDDIClerk.html">UDDIClerk</a> getClerk(String clerkName) {
<a class="jxr_linenumber" name="L456" href="#L456">456</a>                 <strong class="jxr_keyword">if</strong> (clerkName == <strong class="jxr_keyword">null</strong> || clerkName.length() == 0) {
<a class="jxr_linenumber" name="L457" href="#L457">457</a>                         <strong class="jxr_keyword">return</strong> getClientConfig().getUDDIClerks().get(<span class="jxr_string">"default"</span>);
<a class="jxr_linenumber" name="L458" href="#L458">458</a>                 }
<a class="jxr_linenumber" name="L459" href="#L459">459</a>                 <strong class="jxr_keyword">return</strong> getClientConfig().getUDDIClerks().get(clerkName);
<a class="jxr_linenumber" name="L460" href="#L460">460</a>         }
<a class="jxr_linenumber" name="L461" href="#L461">461</a> 
<a class="jxr_linenumber" name="L462" href="#L462">462</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L463" href="#L463">463</a> <em class="jxr_javadoccomment">         * Registers services to UDDI using a clerk, and the uddi.xml</em>
<a class="jxr_linenumber" name="L464" href="#L464">464</a> <em class="jxr_javadoccomment">         * configuration.</em>
<a class="jxr_linenumber" name="L465" href="#L465">465</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L466" href="#L466">466</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L467" href="#L467">467</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> registerWSDLs() {
<a class="jxr_linenumber" name="L468" href="#L468">468</a>                 Map&lt;String, UDDIClerk&gt; uddiClerks = clientConfig.getUDDIClerks();
<a class="jxr_linenumber" name="L469" href="#L469">469</a>                 <strong class="jxr_keyword">if</strong> (uddiClerks.size() &gt; 0) {
<a class="jxr_linenumber" name="L470" href="#L470">470</a>                         <strong class="jxr_keyword">for</strong> (UDDIClerk uddiClerk : uddiClerks.values()) {
<a class="jxr_linenumber" name="L471" href="#L471">471</a>                                 uddiClerk.registerWsdls();
<a class="jxr_linenumber" name="L472" href="#L472">472</a>                         }
<a class="jxr_linenumber" name="L473" href="#L473">473</a>                 }
<a class="jxr_linenumber" name="L474" href="#L474">474</a>         }
<a class="jxr_linenumber" name="L475" href="#L475">475</a> 
<a class="jxr_linenumber" name="L476" href="#L476">476</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L477" href="#L477">477</a> <em class="jxr_javadoccomment">         * unregisters all config defined wsdls</em>
<a class="jxr_linenumber" name="L478" href="#L478">478</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L479" href="#L479">479</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> unRegisterWSDLs() {
<a class="jxr_linenumber" name="L480" href="#L480">480</a>                 Map&lt;String, UDDIClerk&gt; uddiClerks = clientConfig.getUDDIClerks();
<a class="jxr_linenumber" name="L481" href="#L481">481</a>                 <strong class="jxr_keyword">if</strong> (uddiClerks.size() &gt; 0) {
<a class="jxr_linenumber" name="L482" href="#L482">482</a>                         <strong class="jxr_keyword">for</strong> (UDDIClerk uddiClerk : uddiClerks.values()) {
<a class="jxr_linenumber" name="L483" href="#L483">483</a>                                 uddiClerk.unRegisterWsdls();
<a class="jxr_linenumber" name="L484" href="#L484">484</a>                         }
<a class="jxr_linenumber" name="L485" href="#L485">485</a>                 }
<a class="jxr_linenumber" name="L486" href="#L486">486</a>         }
<a class="jxr_linenumber" name="L487" href="#L487">487</a> 
<a class="jxr_linenumber" name="L488" href="#L488">488</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L489" href="#L489">489</a> <em class="jxr_javadoccomment">         * adds the typical SOAP tmodel references, but only if they aren't</em>
<a class="jxr_linenumber" name="L490" href="#L490">490</a> <em class="jxr_javadoccomment">         * already present</em>
<a class="jxr_linenumber" name="L491" href="#L491">491</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L492" href="#L492">492</a> <em class="jxr_javadoccomment">         * @param bt</em>
<a class="jxr_linenumber" name="L493" href="#L493">493</a> <em class="jxr_javadoccomment">         * @return a modified instance of the source binding template</em>
<a class="jxr_linenumber" name="L494" href="#L494">494</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L495" href="#L495">495</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> BindingTemplate addSOAPtModels(BindingTemplate bt) {
<a class="jxr_linenumber" name="L496" href="#L496">496</a>                 <strong class="jxr_keyword">if</strong> (bt.getCategoryBag() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L497" href="#L497">497</a>                         bt.setCategoryBag(<strong class="jxr_keyword">new</strong> CategoryBag());
<a class="jxr_linenumber" name="L498" href="#L498">498</a>                 }
<a class="jxr_linenumber" name="L499" href="#L499">499</a>                 <strong class="jxr_keyword">boolean</strong> found = false;
<a class="jxr_linenumber" name="L500" href="#L500">500</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; bt.getCategoryBag().getKeyedReference().size(); i++) {
<a class="jxr_linenumber" name="L501" href="#L501">501</a>                         <strong class="jxr_keyword">if</strong> (bt.getCategoryBag().getKeyedReference().get(i).getTModelKey() != <strong class="jxr_keyword">null</strong>
<a class="jxr_linenumber" name="L502" href="#L502">502</a>                                 &amp;&amp; bt.getCategoryBag().getKeyedReference().get(i).getTModelKey().equalsIgnoreCase(<span class="jxr_string">"uddi:uddi.org:categorization:types"</span>)) {
<a class="jxr_linenumber" name="L503" href="#L503">503</a>                                 <strong class="jxr_keyword">if</strong> (bt.getCategoryBag().getKeyedReference().get(i).getKeyName() != <strong class="jxr_keyword">null</strong>
<a class="jxr_linenumber" name="L504" href="#L504">504</a>                                         &amp;&amp; bt.getCategoryBag().getKeyedReference().get(i).getKeyName().equalsIgnoreCase(<span class="jxr_string">"uddi-org:types:wsdl"</span>)) {
<a class="jxr_linenumber" name="L505" href="#L505">505</a>                                         found = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="L506" href="#L506">506</a>                                 }
<a class="jxr_linenumber" name="L507" href="#L507">507</a>                         }
<a class="jxr_linenumber" name="L508" href="#L508">508</a>                 }
<a class="jxr_linenumber" name="L509" href="#L509">509</a>                 <strong class="jxr_keyword">if</strong> (!found) {
<a class="jxr_linenumber" name="L510" href="#L510">510</a>                         bt.getCategoryBag().getKeyedReference().add(<strong class="jxr_keyword">new</strong> KeyedReference(<span class="jxr_string">"uddi:uddi.org:categorization:types"</span>, <span class="jxr_string">"uddi-org:types:wsdl"</span>, <span class="jxr_string">"wsdlDeployment"</span>));
<a class="jxr_linenumber" name="L511" href="#L511">511</a>                 }
<a class="jxr_linenumber" name="L512" href="#L512">512</a>                 <strong class="jxr_keyword">if</strong> (bt.getCategoryBag().getKeyedReference().isEmpty() &amp;&amp; bt.getCategoryBag().getKeyedReferenceGroup().isEmpty()) {
<a class="jxr_linenumber" name="L513" href="#L513">513</a>                         bt.setCategoryBag(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="L514" href="#L514">514</a>                 }
<a class="jxr_linenumber" name="L515" href="#L515">515</a>                 <strong class="jxr_keyword">if</strong> (bt.getTModelInstanceDetails() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L516" href="#L516">516</a>                         bt.setTModelInstanceDetails(<strong class="jxr_keyword">new</strong> TModelInstanceDetails());
<a class="jxr_linenumber" name="L517" href="#L517">517</a>                 }
<a class="jxr_linenumber" name="L518" href="#L518">518</a>                 TModelInstanceInfo tModelInstanceInfo;
<a class="jxr_linenumber" name="L519" href="#L519">519</a>                 <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.PROTOCOL_SOAP)) {
<a class="jxr_linenumber" name="L520" href="#L520">520</a>                         tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L521" href="#L521">521</a>                         tModelInstanceInfo.setTModelKey(UDDIConstants.PROTOCOL_SOAP);
<a class="jxr_linenumber" name="L522" href="#L522">522</a>                         bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L523" href="#L523">523</a>                 }
<a class="jxr_linenumber" name="L524" href="#L524">524</a> 
<a class="jxr_linenumber" name="L525" href="#L525">525</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"http:"</span>)) {
<a class="jxr_linenumber" name="L526" href="#L526">526</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_HTTP)) {
<a class="jxr_linenumber" name="L527" href="#L527">527</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L528" href="#L528">528</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
<a class="jxr_linenumber" name="L529" href="#L529">529</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L530" href="#L530">530</a>                         }
<a class="jxr_linenumber" name="L531" href="#L531">531</a>                 }
<a class="jxr_linenumber" name="L532" href="#L532">532</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"jms:"</span>)) {
<a class="jxr_linenumber" name="L533" href="#L533">533</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_JMS)) {
<a class="jxr_linenumber" name="L534" href="#L534">534</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L535" href="#L535">535</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_JMS);
<a class="jxr_linenumber" name="L536" href="#L536">536</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L537" href="#L537">537</a>                         }
<a class="jxr_linenumber" name="L538" href="#L538">538</a>                 }
<a class="jxr_linenumber" name="L539" href="#L539">539</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"rmi:"</span>)) {
<a class="jxr_linenumber" name="L540" href="#L540">540</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_RMI)) {
<a class="jxr_linenumber" name="L541" href="#L541">541</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L542" href="#L542">542</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_RMI);
<a class="jxr_linenumber" name="L543" href="#L543">543</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L544" href="#L544">544</a>                         }
<a class="jxr_linenumber" name="L545" href="#L545">545</a>                 }
<a class="jxr_linenumber" name="L546" href="#L546">546</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"udp:"</span>)) {
<a class="jxr_linenumber" name="L547" href="#L547">547</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_UDP)) {
<a class="jxr_linenumber" name="L548" href="#L548">548</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L549" href="#L549">549</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_UDP);
<a class="jxr_linenumber" name="L550" href="#L550">550</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L551" href="#L551">551</a>                         }
<a class="jxr_linenumber" name="L552" href="#L552">552</a>                 }
<a class="jxr_linenumber" name="L553" href="#L553">553</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"amqp:"</span>)) {
<a class="jxr_linenumber" name="L554" href="#L554">554</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_AMQP)) {
<a class="jxr_linenumber" name="L555" href="#L555">555</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L556" href="#L556">556</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_AMQP);
<a class="jxr_linenumber" name="L557" href="#L557">557</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L558" href="#L558">558</a>                         }
<a class="jxr_linenumber" name="L559" href="#L559">559</a>                 }
<a class="jxr_linenumber" name="L560" href="#L560">560</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"mailto:"</span>)) {
<a class="jxr_linenumber" name="L561" href="#L561">561</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_EMAIL)) {
<a class="jxr_linenumber" name="L562" href="#L562">562</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L563" href="#L563">563</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_EMAIL);
<a class="jxr_linenumber" name="L564" href="#L564">564</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L565" href="#L565">565</a>                         }
<a class="jxr_linenumber" name="L566" href="#L566">566</a>                 }
<a class="jxr_linenumber" name="L567" href="#L567">567</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"ftp:"</span>)) {
<a class="jxr_linenumber" name="L568" href="#L568">568</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_FTP)) {
<a class="jxr_linenumber" name="L569" href="#L569">569</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L570" href="#L570">570</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_FTP);
<a class="jxr_linenumber" name="L571" href="#L571">571</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L572" href="#L572">572</a>                         }
<a class="jxr_linenumber" name="L573" href="#L573">573</a>                 }
<a class="jxr_linenumber" name="L574" href="#L574">574</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"https:"</span>)) {
<a class="jxr_linenumber" name="L575" href="#L575">575</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.PROTOCOL_SSLv3)) {
<a class="jxr_linenumber" name="L576" href="#L576">576</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L577" href="#L577">577</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.PROTOCOL_SSLv3);
<a class="jxr_linenumber" name="L578" href="#L578">578</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L579" href="#L579">579</a>                         }
<a class="jxr_linenumber" name="L580" href="#L580">580</a>                 }
<a class="jxr_linenumber" name="L581" href="#L581">581</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"ftps:"</span>)) {
<a class="jxr_linenumber" name="L582" href="#L582">582</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.PROTOCOL_SSLv3)) {
<a class="jxr_linenumber" name="L583" href="#L583">583</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L584" href="#L584">584</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.PROTOCOL_SSLv3);
<a class="jxr_linenumber" name="L585" href="#L585">585</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L586" href="#L586">586</a>                         }
<a class="jxr_linenumber" name="L587" href="#L587">587</a>                 }
<a class="jxr_linenumber" name="L588" href="#L588">588</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"jndi:"</span>)) {
<a class="jxr_linenumber" name="L589" href="#L589">589</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_JNDI_RMI)) {
<a class="jxr_linenumber" name="L590" href="#L590">590</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L591" href="#L591">591</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_JNDI_RMI);
<a class="jxr_linenumber" name="L592" href="#L592">592</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L593" href="#L593">593</a>                         }
<a class="jxr_linenumber" name="L594" href="#L594">594</a>                 }
<a class="jxr_linenumber" name="L595" href="#L595">595</a>                 <strong class="jxr_keyword">return</strong> bt;
<a class="jxr_linenumber" name="L596" href="#L596">596</a>         }
<a class="jxr_linenumber" name="L597" href="#L597">597</a> 
<a class="jxr_linenumber" name="L598" href="#L598">598</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L599" href="#L599">599</a> <em class="jxr_javadoccomment">         * adds the typical REST tmodel references, but only if they aren't</em>
<a class="jxr_linenumber" name="L600" href="#L600">600</a> <em class="jxr_javadoccomment">         * already present</em>
<a class="jxr_linenumber" name="L601" href="#L601">601</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L602" href="#L602">602</a> <em class="jxr_javadoccomment">         * @param bt</em>
<a class="jxr_linenumber" name="L603" href="#L603">603</a> <em class="jxr_javadoccomment">         * @return a modified instance of the source binding template</em>
<a class="jxr_linenumber" name="L604" href="#L604">604</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L605" href="#L605">605</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> BindingTemplate addRESTtModels(BindingTemplate bt) {
<a class="jxr_linenumber" name="L606" href="#L606">606</a>                 <strong class="jxr_keyword">if</strong> (bt.getTModelInstanceDetails() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L607" href="#L607">607</a>                         bt.setTModelInstanceDetails(<strong class="jxr_keyword">new</strong> TModelInstanceDetails());
<a class="jxr_linenumber" name="L608" href="#L608">608</a>                 }
<a class="jxr_linenumber" name="L609" href="#L609">609</a>                 TModelInstanceInfo tModelInstanceInfo;
<a class="jxr_linenumber" name="L610" href="#L610">610</a>                 <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.PROTOCOL_REST)) {
<a class="jxr_linenumber" name="L611" href="#L611">611</a>                         tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L612" href="#L612">612</a>                         tModelInstanceInfo.setTModelKey(UDDIConstants.PROTOCOL_REST);
<a class="jxr_linenumber" name="L613" href="#L613">613</a>                         bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L614" href="#L614">614</a>                 }
<a class="jxr_linenumber" name="L615" href="#L615">615</a> 
<a class="jxr_linenumber" name="L616" href="#L616">616</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"http:"</span>)) {
<a class="jxr_linenumber" name="L617" href="#L617">617</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.TRANSPORT_HTTP)) {
<a class="jxr_linenumber" name="L618" href="#L618">618</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L619" href="#L619">619</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
<a class="jxr_linenumber" name="L620" href="#L620">620</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L621" href="#L621">621</a>                         }
<a class="jxr_linenumber" name="L622" href="#L622">622</a>                 }
<a class="jxr_linenumber" name="L623" href="#L623">623</a>                 <strong class="jxr_keyword">if</strong> (bt.getAccessPoint() != <strong class="jxr_keyword">null</strong> &amp;&amp; bt.getAccessPoint().getValue().startsWith(<span class="jxr_string">"https:"</span>)) {
<a class="jxr_linenumber" name="L624" href="#L624">624</a>                         <strong class="jxr_keyword">if</strong> (!exists(bt.getTModelInstanceDetails().getTModelInstanceInfo(), UDDIConstants.PROTOCOL_SSLv3)) {
<a class="jxr_linenumber" name="L625" href="#L625">625</a>                                 tModelInstanceInfo = <strong class="jxr_keyword">new</strong> TModelInstanceInfo();
<a class="jxr_linenumber" name="L626" href="#L626">626</a>                                 tModelInstanceInfo.setTModelKey(UDDIConstants.PROTOCOL_SSLv3);
<a class="jxr_linenumber" name="L627" href="#L627">627</a>                                 bt.getTModelInstanceDetails().getTModelInstanceInfo().add(tModelInstanceInfo);
<a class="jxr_linenumber" name="L628" href="#L628">628</a>                         }
<a class="jxr_linenumber" name="L629" href="#L629">629</a>                 }
<a class="jxr_linenumber" name="L630" href="#L630">630</a>                 <strong class="jxr_keyword">return</strong> bt;
<a class="jxr_linenumber" name="L631" href="#L631">631</a>         }
<a class="jxr_linenumber" name="L632" href="#L632">632</a> 
<a class="jxr_linenumber" name="L633" href="#L633">633</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> exists(List&lt;TModelInstanceInfo&gt; items, String key) {
<a class="jxr_linenumber" name="L634" href="#L634">634</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; items.size(); i++) {
<a class="jxr_linenumber" name="L635" href="#L635">635</a>                         <strong class="jxr_keyword">if</strong> (items.get(i).getTModelKey() != <strong class="jxr_keyword">null</strong>
<a class="jxr_linenumber" name="L636" href="#L636">636</a>                                 &amp;&amp; items.get(i).getTModelKey().equalsIgnoreCase(key)) {
<a class="jxr_linenumber" name="L637" href="#L637">637</a>                                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="L638" href="#L638">638</a>                         }
<a class="jxr_linenumber" name="L639" href="#L639">639</a>                 }
<a class="jxr_linenumber" name="L640" href="#L640">640</a>                 <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="L641" href="#L641">641</a>         }
<a class="jxr_linenumber" name="L642" href="#L642">642</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2004&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>
