<!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>Install xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/juddi/config/Install.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-2008 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.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.io.File;
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.io.StringReader;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.net.URI;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.net.URISyntaxException;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.net.URL;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.text.SimpleDateFormat;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Date;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.util.StringTokenizer;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.util.UUID;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.jar.JarEntry;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.util.jar.JarFile;
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> java.util.logging.Level;
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> java.util.logging.Logger;
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> javax.persistence.EntityManager;
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> javax.persistence.EntityTransaction;
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.JAXB;
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.JAXBContext;
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.JAXBElement;
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.JAXBException;
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.Unmarshaller;
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> javax.xml.stream.XMLInputFactory;
<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">import</strong> javax.xml.stream.XMLStreamException;
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <strong class="jxr_keyword">import</strong> javax.xml.stream.XMLStreamReader;
<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <strong class="jxr_keyword">import</strong> javax.xml.transform.stream.StreamSource;
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.configuration.Configuration;
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.configuration.ConfigurationException;
<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.ClassUtil;
<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.api.impl.AuthenticatedService;
<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.api.impl.UDDIInquiryImpl;
<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.api.impl.UDDIPublicationImpl;
<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.keygen.KeyGenerator;
<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.mapping.MappingApiToModel;
<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.mapping.MappingModelToApi;
<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.ReplicationConfiguration;
<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.UddiEntityPublisher;
<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.replication.ReplicationNotifier;
<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.client.cryptor.XmlUtils;
<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.ErrorMessage;
<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.FatalErrorException;
<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.InvalidKeyPassedException;
<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.KeyUnavailableException;
<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.ValueNotAllowedException;
<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.validation.ValidatePublish;
<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.validation.ValidateReplication;
<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.validation.ValidateUDDIKey;
<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.SaveBusiness;
<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.SaveTModel;
<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.TModel;
<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <strong class="jxr_keyword">import</strong> org.uddi.repl_v3.Operator;
<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <strong class="jxr_keyword">import</strong> org.uddi.v3_service.DispositionReportFaultMessage;
<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment"> * This class is called when jUDDI starts up</em>
<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L82" href="#L82">82</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:jfaath@apache.org" target="alexandria_uri">mailto:jfaath@apache.org</a>"&gt;Jeff Faath&lt;/a&gt;</em>
<a class="jxr_linenumber" name="L83" href="#L83">83</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:alexoree@apache.org" target="alexandria_uri">mailto:alexoree@apache.org</a>"&gt;Alex O'Ree&lt;/a&gt;</em>
<a class="jxr_linenumber" name="L84" href="#L84">84</a>  <em class="jxr_javadoccomment"> * @see org.apache.juddi.servlets.RegistryServlet</em>
<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/juddi/config/Install.html">Install</a> {
<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
<a class="jxr_linenumber" name="L88" href="#L88">88</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_BUSINESSENTITY = <span class="jxr_string">"_BusinessEntity.xml"</span>;
<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_PUBLISHER = <span class="jxr_string">"_Publisher.xml"</span>;
<a class="jxr_linenumber" name="L90" href="#L90">90</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_TMODELKEYGEN = <span class="jxr_string">"_tModelKeyGen.xml"</span>;
<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_TMODELS = <span class="jxr_string">"_tModels.xml"</span>;
<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
<a class="jxr_linenumber" name="L93" href="#L93">93</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_PERSISTENCE = <span class="jxr_string">"persistence.xml"</span>;
<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String JUDDI_INSTALL_DATA_DIR = <span class="jxr_string">"juddi_install_data/"</span>;
<a class="jxr_linenumber" name="L95" href="#L95">95</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String JUDDI_CUSTOM_INSTALL_DATA_DIR = <span class="jxr_string">"juddi_custom_install_data/"</span>;
<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_REPLICATION_CONFIG = <span class="jxr_string">"_replicationConfiguration.xml"</span>;
<a class="jxr_linenumber" name="L97" href="#L97">97</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log log = LogFactory.getLog(Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
<a class="jxr_linenumber" name="L99" href="#L99">99</a>          <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> install(Configuration config) <strong class="jxr_keyword">throws</strong> JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException, XMLStreamException {
<a class="jxr_linenumber" name="L100" href="#L100">100</a> 
<a class="jxr_linenumber" name="L101" href="#L101">101</a>                 EntityManager em = PersistenceManager.getEntityManager();
<a class="jxr_linenumber" name="L102" href="#L102">102</a>                 EntityTransaction tx = em.getTransaction();
<a class="jxr_linenumber" name="L103" href="#L103">103</a> 
<a class="jxr_linenumber" name="L104" href="#L104">104</a>                 <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> rootPublisher = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
<a class="jxr_linenumber" name="L106" href="#L106">106</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L107" href="#L107">107</a>                         tx.begin();
<a class="jxr_linenumber" name="L108" href="#L108">108</a>                         <strong class="jxr_keyword">boolean</strong> seedAlways = config.getBoolean(<span class="jxr_string">"juddi.seed.always"</span>, false);
<a class="jxr_linenumber" name="L109" href="#L109">109</a>                         <strong class="jxr_keyword">boolean</strong> alreadyInstalled = alreadyInstalled(config);
<a class="jxr_linenumber" name="L110" href="#L110">110</a>                         <strong class="jxr_keyword">if</strong> (!seedAlways &amp;&amp; alreadyInstalled) {
<a class="jxr_linenumber" name="L111" href="#L111">111</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/FatalErrorException.html">FatalErrorException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.install.AlreadyInstalled"</span>));
<a class="jxr_linenumber" name="L112" href="#L112">112</a>                         }
<a class="jxr_linenumber" name="L113" href="#L113">113</a> 
<a class="jxr_linenumber" name="L114" href="#L114">114</a>                         String rootPublisherStr = config.getString(Property.JUDDI_ROOT_PUBLISHER);
<a class="jxr_linenumber" name="L115" href="#L115">115</a>                         String fileRootTModelKeygen = rootPublisherStr + FILE_TMODELKEYGEN;
<a class="jxr_linenumber" name="L116" href="#L116">116</a>                         TModel rootTModelKeyGen = (TModel) buildInstallEntity(fileRootTModelKeygen, <span class="jxr_string">"org.uddi.api_v3"</span>, config);
<a class="jxr_linenumber" name="L117" href="#L117">117</a>                         String fileRootBusinessEntity = rootPublisherStr + FILE_BUSINESSENTITY;
<a class="jxr_linenumber" name="L118" href="#L118">118</a>                         org.uddi.api_v3.BusinessEntity rootBusinessEntity = (org.uddi.api_v3.BusinessEntity) buildInstallEntity(fileRootBusinessEntity, <span class="jxr_string">"org.uddi.api_v3"</span>, config);
<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
<a class="jxr_linenumber" name="L120" href="#L120">120</a>                         String rootPartition = getRootPartition(rootTModelKeyGen);
<a class="jxr_linenumber" name="L121" href="#L121">121</a>                         <em class="jxr_comment">//JUDDI-645</em>
<a class="jxr_linenumber" name="L122" href="#L122">122</a>                         String nodeId = config.getString(Property.JUDDI_NODE_ID, getNodeId(rootBusinessEntity.getBusinessKey(), rootPartition));
<a class="jxr_linenumber" name="L123" href="#L123">123</a>                         <em class="jxr_comment">//getNodeId(rootBusinessEntity.getBusinessKey(), rootPartition);</em>
<a class="jxr_linenumber" name="L124" href="#L124">124</a>                         String rootbizkey = getNodeId(rootBusinessEntity.getBusinessKey(), rootPartition);
<a class="jxr_linenumber" name="L125" href="#L125">125</a>                         String fileRootPublisher = rootPublisherStr + FILE_PUBLISHER;
<a class="jxr_linenumber" name="L126" href="#L126">126</a>                         String fileReplicationConfig = rootPublisherStr + FILE_REPLICATION_CONFIG;
<a class="jxr_linenumber" name="L127" href="#L127">127</a>                         org.uddi.repl_v3.ReplicationConfiguration replicationCfg = (org.uddi.repl_v3.ReplicationConfiguration) buildInstallEntityAlt(fileReplicationConfig, org.uddi.repl_v3.ReplicationConfiguration.<strong class="jxr_keyword">class</strong>, config);
<a class="jxr_linenumber" name="L128" href="#L128">128</a>                         <strong class="jxr_keyword">if</strong> (!alreadyInstalled) {
<a class="jxr_linenumber" name="L129" href="#L129">129</a>                                 log.info(<span class="jxr_string">"Loading the root Publisher from file "</span> + fileRootPublisher);
<a class="jxr_linenumber" name="L130" href="#L130">130</a> 
<a class="jxr_linenumber" name="L131" href="#L131">131</a>                                 rootPublisher = installPublisher(em, fileRootPublisher, config);
<a class="jxr_linenumber" name="L132" href="#L132">132</a>                                 installRootPublisherKeyGen(em, rootTModelKeyGen, rootPartition, rootPublisher, nodeId);
<a class="jxr_linenumber" name="L133" href="#L133">133</a>                                 rootBusinessEntity.setBusinessKey(rootbizkey);
<a class="jxr_linenumber" name="L134" href="#L134">134</a>                                 installBusinessEntity(<strong class="jxr_keyword">true</strong>, em, rootBusinessEntity, rootPublisher, rootPartition, config, nodeId);
<a class="jxr_linenumber" name="L135" href="#L135">135</a>                                 installReplicationConfiguration(em, replicationCfg, config, nodeId);
<a class="jxr_linenumber" name="L136" href="#L136">136</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L137" href="#L137">137</a>                                 log.debug(<span class="jxr_string">"juddi.seed.always reapplies all seed files except for the root data."</span>);
<a class="jxr_linenumber" name="L138" href="#L138">138</a>                         }
<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
<a class="jxr_linenumber" name="L140" href="#L140">140</a>                         List&lt;String&gt; juddiPublishers = getPublishers(config);
<a class="jxr_linenumber" name="L141" href="#L141">141</a>                         <strong class="jxr_keyword">for</strong> (String publisherStr : juddiPublishers) {
<a class="jxr_linenumber" name="L142" href="#L142">142</a>                                 String filePublisher = publisherStr + FILE_PUBLISHER;
<a class="jxr_linenumber" name="L143" href="#L143">143</a>                                 String fileTModelKeygen = publisherStr + FILE_TMODELKEYGEN;
<a class="jxr_linenumber" name="L144" href="#L144">144</a>                                 TModel tModelKeyGen = (TModel) buildInstallEntity(fileTModelKeygen, <span class="jxr_string">"org.uddi.api_v3"</span>, config);
<a class="jxr_linenumber" name="L145" href="#L145">145</a>                                 String fileBusinessEntity = publisherStr + FILE_BUSINESSENTITY;
<a class="jxr_linenumber" name="L146" href="#L146">146</a>                                 org.uddi.api_v3.BusinessEntity businessEntity = (org.uddi.api_v3.BusinessEntity) buildInstallEntity(fileBusinessEntity, <span class="jxr_string">"org.uddi.api_v3"</span>, config);
<a class="jxr_linenumber" name="L147" href="#L147">147</a>                                 <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> publisher = installPublisher(em, filePublisher, config);
<a class="jxr_linenumber" name="L148" href="#L148">148</a>                                 <strong class="jxr_keyword">if</strong> (publisher == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L149" href="#L149">149</a>                                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(<span class="jxr_string">"File "</span> + filePublisher + <span class="jxr_string">" not found."</span>);
<a class="jxr_linenumber" name="L150" href="#L150">150</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L151" href="#L151">151</a>                                         <strong class="jxr_keyword">if</strong> (tModelKeyGen != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L152" href="#L152">152</a>                                                 installPublisherKeyGen(em, tModelKeyGen, publisher, nodeId);
<a class="jxr_linenumber" name="L153" href="#L153">153</a>                                         }
<a class="jxr_linenumber" name="L154" href="#L154">154</a>                                         <strong class="jxr_keyword">if</strong> (businessEntity != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L155" href="#L155">155</a>                                                 installBusinessEntity(false, em, businessEntity, publisher, <strong class="jxr_keyword">null</strong>, config, nodeId);
<a class="jxr_linenumber" name="L156" href="#L156">156</a>                                         }
<a class="jxr_linenumber" name="L157" href="#L157">157</a>                                         String fileTModels = publisherStr + FILE_TMODELS;
<a class="jxr_linenumber" name="L158" href="#L158">158</a>                                         installSaveTModel(em, fileTModels, publisher, nodeId, config);
<a class="jxr_linenumber" name="L159" href="#L159">159</a>                                 }
<a class="jxr_linenumber" name="L160" href="#L160">160</a>                         }
<a class="jxr_linenumber" name="L161" href="#L161">161</a> 
<a class="jxr_linenumber" name="L162" href="#L162">162</a>                         tx.commit();
<a class="jxr_linenumber" name="L163" href="#L163">163</a>                 } <strong class="jxr_keyword">catch</strong> (DispositionReportFaultMessage dr) {
<a class="jxr_linenumber" name="L164" href="#L164">164</a>                         log.error(dr.getMessage(), dr);
<a class="jxr_linenumber" name="L165" href="#L165">165</a>                         tx.rollback();
<a class="jxr_linenumber" name="L166" href="#L166">166</a>                         <strong class="jxr_keyword">throw</strong> dr;
<a class="jxr_linenumber" name="L167" href="#L167">167</a>                 } <strong class="jxr_keyword">catch</strong> (JAXBException je) {
<a class="jxr_linenumber" name="L168" href="#L168">168</a>                         log.error(je.getMessage(), je);
<a class="jxr_linenumber" name="L169" href="#L169">169</a>                         tx.rollback();
<a class="jxr_linenumber" name="L170" href="#L170">170</a>                         <strong class="jxr_keyword">throw</strong> je;
<a class="jxr_linenumber" name="L171" href="#L171">171</a>                 } <strong class="jxr_keyword">catch</strong> (IOException ie) {
<a class="jxr_linenumber" name="L172" href="#L172">172</a>                         log.error(ie.getMessage(), ie);
<a class="jxr_linenumber" name="L173" href="#L173">173</a>                         tx.rollback();
<a class="jxr_linenumber" name="L174" href="#L174">174</a>                         <strong class="jxr_keyword">throw</strong> ie;
<a class="jxr_linenumber" name="L175" href="#L175">175</a>                 } <strong class="jxr_keyword">catch</strong> (XMLStreamException ex) {
<a class="jxr_linenumber" name="L176" href="#L176">176</a>                         log.error(ex.getMessage(), ex);
<a class="jxr_linenumber" name="L177" href="#L177">177</a>                         tx.rollback();
<a class="jxr_linenumber" name="L178" href="#L178">178</a>                         <strong class="jxr_keyword">throw</strong> ex;
<a class="jxr_linenumber" name="L179" href="#L179">179</a>             } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L180" href="#L180">180</a>                         <strong class="jxr_keyword">if</strong> (tx.isActive()) {
<a class="jxr_linenumber" name="L181" href="#L181">181</a>                                 tx.rollback();
<a class="jxr_linenumber" name="L182" href="#L182">182</a>                         }
<a class="jxr_linenumber" name="L183" href="#L183">183</a>                         em.close();
<a class="jxr_linenumber" name="L184" href="#L184">184</a>                 }
<a class="jxr_linenumber" name="L185" href="#L185">185</a>         }
<a class="jxr_linenumber" name="L186" href="#L186">186</a> 
<a class="jxr_linenumber" name="L187" href="#L187">187</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> uninstall() {
<a class="jxr_linenumber" name="L188" href="#L188">188</a>                 <em class="jxr_comment">// Close the open emf, open a new one with Persistence.create...(String, Map) and overwrite the property that handles the table </em>
<a class="jxr_linenumber" name="L189" href="#L189">189</a>                 <em class="jxr_comment">// generation. The persistence.xml file will have to be read in to determine which property</em>
<a class="jxr_linenumber" name="L190" href="#L190">190</a>                 <em class="jxr_comment">// to overwrite.  The property will be specific to the provider.  </em>
<a class="jxr_linenumber" name="L191" href="#L191">191</a>                 <em class="jxr_comment">// Hibernate:  &lt;property name="hibernate.hbm2ddl.auto" value="update"/&gt; -&gt;use "create-drop" or just "drop"?</em>
<a class="jxr_linenumber" name="L192" href="#L192">192</a>                 <em class="jxr_comment">// OpenJPA: openjpa.jdbc.SynchronizeMappings=buildSchema(SchemaAction='add,deleteTableContents')</em>
<a class="jxr_linenumber" name="L193" href="#L193">193</a>                 <em class="jxr_comment">// etc...(find more)</em>
<a class="jxr_linenumber" name="L194" href="#L194">194</a>                 <em class="jxr_comment">// Then close this emf.  Question:  is the original emf reusable or will closing it cause problems?</em>
<a class="jxr_linenumber" name="L195" href="#L195">195</a> 
<a class="jxr_linenumber" name="L196" href="#L196">196</a>         }
<a class="jxr_linenumber" name="L197" href="#L197">197</a> 
<a class="jxr_linenumber" name="L198" href="#L198">198</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L199" href="#L199">199</a> <em class="jxr_javadoccomment">         * Checks if there is a database with a root publisher. If it is not</em>
<a class="jxr_linenumber" name="L200" href="#L200">200</a> <em class="jxr_javadoccomment">         * found an</em>
<a class="jxr_linenumber" name="L201" href="#L201">201</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L202" href="#L202">202</a> <em class="jxr_javadoccomment">         * @param config</em>
<a class="jxr_linenumber" name="L203" href="#L203">203</a> <em class="jxr_javadoccomment">         * @return true if it finds a database with the root publisher in it.</em>
<a class="jxr_linenumber" name="L204" href="#L204">204</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L205" href="#L205">205</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L206" href="#L206">206</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> alreadyInstalled(Configuration config) <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>                 String rootPublisherStr = config.getString(Property.JUDDI_ROOT_PUBLISHER);
<a class="jxr_linenumber" name="L209" href="#L209">209</a>                 log.info(<span class="jxr_string">"Checking if jUDDI is seeded by searching for root publisher "</span> + rootPublisherStr);
<a class="jxr_linenumber" name="L210" href="#L210">210</a>                 org.apache.juddi.model.Publisher publisher = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L211" href="#L211">211</a>                 <strong class="jxr_keyword">int</strong> numberOfTries = 0;
<a class="jxr_linenumber" name="L212" href="#L212">212</a>                 <strong class="jxr_keyword">while</strong> (numberOfTries++ &lt; 100) {
<a class="jxr_linenumber" name="L213" href="#L213">213</a>                         EntityManager em = PersistenceManager.getEntityManager();
<a class="jxr_linenumber" name="L214" href="#L214">214</a>                         EntityTransaction tx = em.getTransaction();
<a class="jxr_linenumber" name="L215" href="#L215">215</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L216" href="#L216">216</a>                                 tx.begin();
<a class="jxr_linenumber" name="L217" href="#L217">217</a>                                 publisher = em.find(org.apache.juddi.model.Publisher.<strong class="jxr_keyword">class</strong>, rootPublisherStr);
<a class="jxr_linenumber" name="L218" href="#L218">218</a>                                 tx.commit();
<a class="jxr_linenumber" name="L219" href="#L219">219</a>                         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L220" href="#L220">220</a>                                 <strong class="jxr_keyword">if</strong> (tx.isActive()) {
<a class="jxr_linenumber" name="L221" href="#L221">221</a>                                         tx.rollback();
<a class="jxr_linenumber" name="L222" href="#L222">222</a>                                 }
<a class="jxr_linenumber" name="L223" href="#L223">223</a>                                 em.close();
<a class="jxr_linenumber" name="L224" href="#L224">224</a>                         }
<a class="jxr_linenumber" name="L225" href="#L225">225</a>                         <strong class="jxr_keyword">if</strong> (publisher != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L226" href="#L226">226</a>                                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<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>                         <strong class="jxr_keyword">if</strong> (config.getBoolean(Property.JUDDI_LOAD_INSTALL_DATA, Property.DEFAULT_LOAD_INSTALL_DATA)) {
<a class="jxr_linenumber" name="L230" href="#L230">230</a>                                 log.debug(<span class="jxr_string">"Install data not yet installed."</span>);
<a class="jxr_linenumber" name="L231" href="#L231">231</a>                                 <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="L232" href="#L232">232</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L233" href="#L233">233</a>                                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L234" href="#L234">234</a>                                         log.info(<span class="jxr_string">"Install data not yet installed."</span>);
<a class="jxr_linenumber" name="L235" href="#L235">235</a>                                         log.info(<span class="jxr_string">"Going to sleep and retry..."</span>);
<a class="jxr_linenumber" name="L236" href="#L236">236</a>                                         Thread.sleep(1000l);
<a class="jxr_linenumber" name="L237" href="#L237">237</a>                                 } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
<a class="jxr_linenumber" name="L238" href="#L238">238</a>                                         log.error(e.getMessage(), e);
<a class="jxr_linenumber" name="L239" href="#L239">239</a>                                 }
<a class="jxr_linenumber" name="L240" href="#L240">240</a>                         }
<a class="jxr_linenumber" name="L241" href="#L241">241</a>                 }
<a class="jxr_linenumber" name="L242" href="#L242">242</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(<span class="jxr_string">"Could not load the Root node data. Please check for errors."</span>);
<a class="jxr_linenumber" name="L243" href="#L243">243</a>         }
<a class="jxr_linenumber" name="L244" href="#L244">244</a> 
<a class="jxr_linenumber" name="L245" href="#L245">245</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> String getRootPartition(TModel rootTModelKeyGen) <strong class="jxr_keyword">throws</strong> JAXBException, IOException, DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L246" href="#L246">246</a>                 String result = rootTModelKeyGen.getTModelKey().substring(0, rootTModelKeyGen.getTModelKey().lastIndexOf(KeyGenerator.PARTITION_SEPARATOR));
<a class="jxr_linenumber" name="L247" href="#L247">247</a> 
<a class="jxr_linenumber" name="L248" href="#L248">248</a>                 <strong class="jxr_keyword">if</strong> (result == <strong class="jxr_keyword">null</strong> || result.length() == 0) {
<a class="jxr_linenumber" name="L249" href="#L249">249</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/InvalidKeyPassedException.html">InvalidKeyPassedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.invalidkey.MalformedKey"</span>, result));
<a class="jxr_linenumber" name="L250" href="#L250">250</a>                 }
<a class="jxr_linenumber" name="L251" href="#L251">251</a> 
<a class="jxr_linenumber" name="L252" href="#L252">252</a>                 <em class="jxr_comment">// Must validate the root partition.  The first component should be a domain key and the any following</em>
<a class="jxr_linenumber" name="L253" href="#L253">253</a>                 <em class="jxr_comment">// tokens should be a valid KSS.</em>
<a class="jxr_linenumber" name="L254" href="#L254">254</a>                 result = result.trim();
<a class="jxr_linenumber" name="L255" href="#L255">255</a>                 <strong class="jxr_keyword">if</strong> (result.endsWith(KeyGenerator.PARTITION_SEPARATOR) || result.startsWith(KeyGenerator.PARTITION_SEPARATOR)) {
<a class="jxr_linenumber" name="L256" href="#L256">256</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/InvalidKeyPassedException.html">InvalidKeyPassedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.invalidkey.MalformedKey"</span>, result));
<a class="jxr_linenumber" name="L257" href="#L257">257</a>                 }
<a class="jxr_linenumber" name="L258" href="#L258">258</a> 
<a class="jxr_linenumber" name="L259" href="#L259">259</a>                 StringTokenizer tokenizer = <strong class="jxr_keyword">new</strong> StringTokenizer(result.toLowerCase(), KeyGenerator.PARTITION_SEPARATOR);
<a class="jxr_linenumber" name="L260" href="#L260">260</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> count = 0; tokenizer.hasMoreTokens(); count++) {
<a class="jxr_linenumber" name="L261" href="#L261">261</a>                         String nextToken = tokenizer.nextToken();
<a class="jxr_linenumber" name="L262" href="#L262">262</a> 
<a class="jxr_linenumber" name="L263" href="#L263">263</a>                         <strong class="jxr_keyword">if</strong> (count == 0) {
<a class="jxr_linenumber" name="L264" href="#L264">264</a>                                 <strong class="jxr_keyword">if</strong> (!ValidateUDDIKey.isValidDomainKey(nextToken)) {
<a class="jxr_linenumber" name="L265" href="#L265">265</a>                                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/InvalidKeyPassedException.html">InvalidKeyPassedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.invalidkey.MalformedKey"</span>, result));
<a class="jxr_linenumber" name="L266" href="#L266">266</a>                                 }
<a class="jxr_linenumber" name="L267" href="#L267">267</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L268" href="#L268">268</a>                                 <strong class="jxr_keyword">if</strong> (!ValidateUDDIKey.isValidKSS(nextToken)) {
<a class="jxr_linenumber" name="L269" href="#L269">269</a>                                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/InvalidKeyPassedException.html">InvalidKeyPassedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.invalidkey.MalformedKey"</span>, result));
<a class="jxr_linenumber" name="L270" href="#L270">270</a>                                 }
<a class="jxr_linenumber" name="L271" href="#L271">271</a>                         }
<a class="jxr_linenumber" name="L272" href="#L272">272</a>                 }
<a class="jxr_linenumber" name="L273" href="#L273">273</a> 
<a class="jxr_linenumber" name="L274" href="#L274">274</a>                 <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="L275" href="#L275">275</a>         }
<a class="jxr_linenumber" name="L276" href="#L276">276</a> 
<a class="jxr_linenumber" name="L277" href="#L277">277</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> String getNodeId(String userNodeId, String rootPartition) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L278" href="#L278">278</a> 
<a class="jxr_linenumber" name="L279" href="#L279">279</a>                 String result = userNodeId;
<a class="jxr_linenumber" name="L280" href="#L280">280</a>                 <strong class="jxr_keyword">if</strong> (result == <strong class="jxr_keyword">null</strong> || result.length() == 0) {
<a class="jxr_linenumber" name="L281" href="#L281">281</a>                         result = rootPartition + KeyGenerator.PARTITION_SEPARATOR + UUID.randomUUID();
<a class="jxr_linenumber" name="L282" href="#L282">282</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L283" href="#L283">283</a>                         ValidateUDDIKey.validateUDDIv3Key(result);
<a class="jxr_linenumber" name="L284" href="#L284">284</a>                         String keyPartition = result.substring(0, result.lastIndexOf(KeyGenerator.PARTITION_SEPARATOR));
<a class="jxr_linenumber" name="L285" href="#L285">285</a>                         <strong class="jxr_keyword">if</strong> (!rootPartition.equalsIgnoreCase(keyPartition)) {
<a class="jxr_linenumber" name="L286" href="#L286">286</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/KeyUnavailableException.html">KeyUnavailableException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.keyunavailable.BadPartition"</span>, userNodeId));
<a class="jxr_linenumber" name="L287" href="#L287">287</a>                         }
<a class="jxr_linenumber" name="L288" href="#L288">288</a>                 }
<a class="jxr_linenumber" name="L289" href="#L289">289</a>                 <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="L290" href="#L290">290</a>         }
<a class="jxr_linenumber" name="L291" href="#L291">291</a> 
<a class="jxr_linenumber" name="L292" href="#L292">292</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String installBusinessEntity(<strong class="jxr_keyword">boolean</strong> isRoot, EntityManager em, org.uddi.api_v3.BusinessEntity rootBusinessEntity,
<a class="jxr_linenumber" name="L293" href="#L293">293</a>                 <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> rootPublisher, String rootPartition, Configuration config, String nodeId)
<a class="jxr_linenumber" name="L294" href="#L294">294</a>                 <strong class="jxr_keyword">throws</strong> JAXBException, DispositionReportFaultMessage, IOException {
<a class="jxr_linenumber" name="L295" href="#L295">295</a> 
<a class="jxr_linenumber" name="L296" href="#L296">296</a>                 <strong class="jxr_keyword">if</strong> (isRoot) {
<a class="jxr_linenumber" name="L297" href="#L297">297</a>                         validateRootBusinessEntity(rootBusinessEntity, rootPublisher, rootPartition, config);
<a class="jxr_linenumber" name="L298" href="#L298">298</a>                 }
<a class="jxr_linenumber" name="L299" href="#L299">299</a> 
<a class="jxr_linenumber" name="L300" href="#L300">300</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessEntity();
<a class="jxr_linenumber" name="L301" href="#L301">301</a>                 MappingApiToModel.mapBusinessEntity(rootBusinessEntity, modelBusinessEntity);
<a class="jxr_linenumber" name="L302" href="#L302">302</a> 
<a class="jxr_linenumber" name="L303" href="#L303">303</a>                 modelBusinessEntity.setAuthorizedName(rootPublisher.getAuthorizedName());
<a class="jxr_linenumber" name="L304" href="#L304">304</a>                 modelBusinessEntity.setNodeId(nodeId);
<a class="jxr_linenumber" name="L305" href="#L305">305</a>                 Date now = <strong class="jxr_keyword">new</strong> Date();
<a class="jxr_linenumber" name="L306" href="#L306">306</a>                 modelBusinessEntity.setCreated(now);
<a class="jxr_linenumber" name="L307" href="#L307">307</a>                 modelBusinessEntity.setModified(now);
<a class="jxr_linenumber" name="L308" href="#L308">308</a>                 modelBusinessEntity.setModifiedIncludingChildren(now);
<a class="jxr_linenumber" name="L309" href="#L309">309</a>                 <em class="jxr_comment">//JUDDI-645</em>
<a class="jxr_linenumber" name="L310" href="#L310">310</a>                 <em class="jxr_comment">//modelBusinessEntity.setNodeId(modelBusinessEntity.getEntityKey());</em>
<a class="jxr_linenumber" name="L311" href="#L311">311</a>                 modelBusinessEntity.setNodeId(config.getString(Property.JUDDI_NODE_ID, modelBusinessEntity.getEntityKey()));
<a class="jxr_linenumber" name="L312" href="#L312">312</a> 
<a class="jxr_linenumber" name="L313" href="#L313">313</a>                 <strong class="jxr_keyword">for</strong> (org.apache.juddi.model.BusinessService service : modelBusinessEntity.getBusinessServices()) {
<a class="jxr_linenumber" name="L314" href="#L314">314</a>                         service.setAuthorizedName(rootPublisher.getAuthorizedName());
<a class="jxr_linenumber" name="L315" href="#L315">315</a>                         service.setNodeId(modelBusinessEntity.getNodeId());
<a class="jxr_linenumber" name="L316" href="#L316">316</a>                         service.setCreated(now);
<a class="jxr_linenumber" name="L317" href="#L317">317</a>                         service.setModified(now);
<a class="jxr_linenumber" name="L318" href="#L318">318</a>                         service.setModifiedIncludingChildren(now);
<a class="jxr_linenumber" name="L319" href="#L319">319</a>                         <em class="jxr_comment">//JUDDI-645</em>
<a class="jxr_linenumber" name="L320" href="#L320">320</a>                         <em class="jxr_comment">//service.setNodeId(config.getString(Property.JUDDI_NODE_ID,modelBusinessEntity.getEntityKey()));</em>
<a class="jxr_linenumber" name="L321" href="#L321">321</a>                         <em class="jxr_comment">//service.setNodeId(modelBusinessEntity.getEntityKey());</em>
<a class="jxr_linenumber" name="L322" href="#L322">322</a> 
<a class="jxr_linenumber" name="L323" href="#L323">323</a>                         <strong class="jxr_keyword">for</strong> (org.apache.juddi.model.BindingTemplate binding : service.getBindingTemplates()) {
<a class="jxr_linenumber" name="L324" href="#L324">324</a>                                 binding.setAuthorizedName(rootPublisher.getAuthorizedName());
<a class="jxr_linenumber" name="L325" href="#L325">325</a>                                 binding.setNodeId(nodeId);
<a class="jxr_linenumber" name="L326" href="#L326">326</a>                                 binding.setCreated(now);
<a class="jxr_linenumber" name="L327" href="#L327">327</a>                                 binding.setModified(now);
<a class="jxr_linenumber" name="L328" href="#L328">328</a>                                 binding.setModifiedIncludingChildren(now);
<a class="jxr_linenumber" name="L329" href="#L329">329</a>                                 <em class="jxr_comment">//binding.setNodeId(modelBusinessEntity.getEntityKey());</em>
<a class="jxr_linenumber" name="L330" href="#L330">330</a>                                 <em class="jxr_comment">//binding.setNodeId(config.getString(Property.JUDDI_NODE_ID,modelBusinessEntity.getEntityKey()));</em>
<a class="jxr_linenumber" name="L331" href="#L331">331</a>                                 <em class="jxr_comment">//JUDDI-645</em>
<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.persist(modelBusinessEntity);
<a class="jxr_linenumber" name="L337" href="#L337">337</a>                 SaveBusiness sb = <strong class="jxr_keyword">new</strong> SaveBusiness();
<a class="jxr_linenumber" name="L338" href="#L338">338</a>                 sb.getBusinessEntity().add(rootBusinessEntity);
<a class="jxr_linenumber" name="L339" href="#L339">339</a>                 ReplicationNotifier.enqueue(UDDIPublicationImpl.getChangeRecord(modelBusinessEntity, rootBusinessEntity, modelBusinessEntity.getNodeId()));
<a class="jxr_linenumber" name="L340" href="#L340">340</a> 
<a class="jxr_linenumber" name="L341" href="#L341">341</a>                 <strong class="jxr_keyword">return</strong> modelBusinessEntity.getEntityKey();
<a class="jxr_linenumber" name="L342" href="#L342">342</a> 
<a class="jxr_linenumber" name="L343" href="#L343">343</a>         }
<a class="jxr_linenumber" name="L344" href="#L344">344</a> 
<a class="jxr_linenumber" name="L345" href="#L345">345</a>         <em class="jxr_comment">// A watered down version of ValidatePublish's validateBusinessEntity, designed for the specific condition that this is run upon the initial</em>
<a class="jxr_linenumber" name="L346" href="#L346">346</a>         <em class="jxr_comment">// jUDDI install.</em>
<a class="jxr_linenumber" name="L347" href="#L347">347</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> validateRootBusinessEntity(org.uddi.api_v3.BusinessEntity businessEntity, <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> rootPublisher,
<a class="jxr_linenumber" name="L348" href="#L348">348</a>                 String rootPartition, Configuration config)
<a class="jxr_linenumber" name="L349" href="#L349">349</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L350" href="#L350">350</a> 
<a class="jxr_linenumber" name="L351" href="#L351">351</a>                 <em class="jxr_comment">// A supplied businessService can't be null</em>
<a class="jxr_linenumber" name="L352" href="#L352">352</a>                 <strong class="jxr_keyword">if</strong> (businessEntity == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L353" href="#L353">353</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ValueNotAllowedException.html">ValueNotAllowedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.businessentity.NullInput"</span>));
<a class="jxr_linenumber" name="L354" href="#L354">354</a>                 }
<a class="jxr_linenumber" name="L355" href="#L355">355</a> 
<a class="jxr_linenumber" name="L356" href="#L356">356</a>                 <em class="jxr_comment">// The business key should already be set to the previously calculated and validated nodeId.  This validation is unnecessary but kept for </em>
<a class="jxr_linenumber" name="L357" href="#L357">357</a>                 <em class="jxr_comment">// symmetry with the other entity validations.</em>
<a class="jxr_linenumber" name="L358" href="#L358">358</a>                 String entityKey = businessEntity.getBusinessKey();
<a class="jxr_linenumber" name="L359" href="#L359">359</a>                 <strong class="jxr_keyword">if</strong> (entityKey == <strong class="jxr_keyword">null</strong> || entityKey.length() == 0) {
<a class="jxr_linenumber" name="L360" href="#L360">360</a>                         entityKey = rootPartition + KeyGenerator.PARTITION_SEPARATOR + UUID.randomUUID();
<a class="jxr_linenumber" name="L361" href="#L361">361</a>                         businessEntity.setBusinessKey(entityKey);
<a class="jxr_linenumber" name="L362" href="#L362">362</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L363" href="#L363">363</a>                         <em class="jxr_comment">// Per section 4.4: keys must be case-folded</em>
<a class="jxr_linenumber" name="L364" href="#L364">364</a>                         entityKey = entityKey.toLowerCase();
<a class="jxr_linenumber" name="L365" href="#L365">365</a>                         businessEntity.setBusinessKey(entityKey);
<a class="jxr_linenumber" name="L366" href="#L366">366</a> 
<a class="jxr_linenumber" name="L367" href="#L367">367</a>                         ValidateUDDIKey.validateUDDIv3Key(entityKey);
<a class="jxr_linenumber" name="L368" href="#L368">368</a>                         String keyPartition = entityKey.substring(0, entityKey.lastIndexOf(KeyGenerator.PARTITION_SEPARATOR));
<a class="jxr_linenumber" name="L369" href="#L369">369</a>                         <strong class="jxr_keyword">if</strong> (!rootPartition.equalsIgnoreCase(keyPartition)) {
<a class="jxr_linenumber" name="L370" href="#L370">370</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/KeyUnavailableException.html">KeyUnavailableException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.keyunavailable.BadPartition"</span>, entityKey));
<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 href="../../../../org/apache/juddi/validation/ValidatePublish.html">ValidatePublish</a> validatePublish = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/validation/ValidatePublish.html">ValidatePublish</a>(rootPublisher, config.getString(Property.JUDDI_NODE_ID));
<a class="jxr_linenumber" name="L375" href="#L375">375</a> 
<a class="jxr_linenumber" name="L376" href="#L376">376</a>                 validatePublish.validateNames(businessEntity.getName());
<a class="jxr_linenumber" name="L377" href="#L377">377</a>                 validatePublish.validateDiscoveryUrls(businessEntity.getDiscoveryURLs());
<a class="jxr_linenumber" name="L378" href="#L378">378</a>                 validatePublish.validateContacts(businessEntity.getContacts(), config);
<a class="jxr_linenumber" name="L379" href="#L379">379</a>                 validatePublish.validateCategoryBag(businessEntity.getCategoryBag(), config, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L380" href="#L380">380</a>                 validatePublish.validateIdentifierBag(businessEntity.getIdentifierBag(), config, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L381" href="#L381">381</a> 
<a class="jxr_linenumber" name="L382" href="#L382">382</a>                 org.uddi.api_v3.BusinessServices businessServices = businessEntity.getBusinessServices();
<a class="jxr_linenumber" name="L383" href="#L383">383</a>                 <strong class="jxr_keyword">if</strong> (businessServices != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L384" href="#L384">384</a>                         List&lt;org.uddi.api_v3.BusinessService&gt; businessServiceList = businessServices.getBusinessService();
<a class="jxr_linenumber" name="L385" href="#L385">385</a>                         <strong class="jxr_keyword">if</strong> (businessServiceList == <strong class="jxr_keyword">null</strong> || businessServiceList.size() == 0) {
<a class="jxr_linenumber" name="L386" href="#L386">386</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ValueNotAllowedException.html">ValueNotAllowedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.businessservices.NoInput"</span>));
<a class="jxr_linenumber" name="L387" href="#L387">387</a>                         }
<a class="jxr_linenumber" name="L388" href="#L388">388</a> 
<a class="jxr_linenumber" name="L389" href="#L389">389</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.BusinessService businessService : businessServiceList) {
<a class="jxr_linenumber" name="L390" href="#L390">390</a>                                 validateRootBusinessService(businessService, businessEntity, rootPublisher, rootPartition, config);
<a class="jxr_linenumber" name="L391" href="#L391">391</a>                         }
<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>         }
<a class="jxr_linenumber" name="L395" href="#L395">395</a> 
<a class="jxr_linenumber" name="L396" href="#L396">396</a>         <em class="jxr_comment">// A watered down version of ValidatePublish's validateBusinessService, designed for the specific condition that this is run upon the initial</em>
<a class="jxr_linenumber" name="L397" href="#L397">397</a>         <em class="jxr_comment">// jUDDI install.</em>
<a class="jxr_linenumber" name="L398" href="#L398">398</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> validateRootBusinessService(org.uddi.api_v3.BusinessService businessService, org.uddi.api_v3.BusinessEntity parent,
<a class="jxr_linenumber" name="L399" href="#L399">399</a>                 <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> rootPublisher, String rootPartition, Configuration config)
<a class="jxr_linenumber" name="L400" href="#L400">400</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L401" href="#L401">401</a> 
<a class="jxr_linenumber" name="L402" href="#L402">402</a>                 <em class="jxr_comment">// A supplied businessService can't be null</em>
<a class="jxr_linenumber" name="L403" href="#L403">403</a>                 <strong class="jxr_keyword">if</strong> (businessService == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L404" href="#L404">404</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ValueNotAllowedException.html">ValueNotAllowedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.businessservice.NullInput"</span>));
<a class="jxr_linenumber" name="L405" href="#L405">405</a>                 }
<a class="jxr_linenumber" name="L406" href="#L406">406</a> 
<a class="jxr_linenumber" name="L407" href="#L407">407</a>                 <em class="jxr_comment">// A business key doesn't have to be provided, but if it is, it should match the parent business's key</em>
<a class="jxr_linenumber" name="L408" href="#L408">408</a>                 String parentKey = businessService.getBusinessKey();
<a class="jxr_linenumber" name="L409" href="#L409">409</a>                 <strong class="jxr_keyword">if</strong> (parentKey != <strong class="jxr_keyword">null</strong> &amp;&amp; parentKey.length() &gt; 0) {
<a class="jxr_linenumber" name="L410" href="#L410">410</a>                         <strong class="jxr_keyword">if</strong> (!parentKey.equalsIgnoreCase(parent.getBusinessKey())) {
<a class="jxr_linenumber" name="L411" href="#L411">411</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/InvalidKeyPassedException.html">InvalidKeyPassedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.invalidkey.ParentBusinessNotFound"</span>, parentKey + <span class="jxr_string">" "</span> + businessService.getBusinessKey() + <span class="jxr_string">" "</span> + businessService.getBusinessKey().length() + <span class="jxr_string">" "</span> + parentKey.length()));
<a class="jxr_linenumber" name="L412" href="#L412">412</a>                         }
<a class="jxr_linenumber" name="L413" href="#L413">413</a>                 }
<a class="jxr_linenumber" name="L414" href="#L414">414</a> 
<a class="jxr_linenumber" name="L415" href="#L415">415</a>                 <em class="jxr_comment">// Retrieve the service's passed key</em>
<a class="jxr_linenumber" name="L416" href="#L416">416</a>                 String entityKey = businessService.getServiceKey();
<a class="jxr_linenumber" name="L417" href="#L417">417</a>                 <strong class="jxr_keyword">if</strong> (entityKey == <strong class="jxr_keyword">null</strong> || entityKey.length() == 0) {
<a class="jxr_linenumber" name="L418" href="#L418">418</a>                         entityKey = rootPartition + KeyGenerator.PARTITION_SEPARATOR + UUID.randomUUID();
<a class="jxr_linenumber" name="L419" href="#L419">419</a>                         businessService.setServiceKey(entityKey);
<a class="jxr_linenumber" name="L420" href="#L420">420</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L421" href="#L421">421</a>                         <em class="jxr_comment">// Per section 4.4: keys must be case-folded</em>
<a class="jxr_linenumber" name="L422" href="#L422">422</a>                         entityKey = entityKey.toLowerCase();
<a class="jxr_linenumber" name="L423" href="#L423">423</a>                         businessService.setServiceKey(entityKey);
<a class="jxr_linenumber" name="L424" href="#L424">424</a> 
<a class="jxr_linenumber" name="L425" href="#L425">425</a>                         ValidateUDDIKey.validateUDDIv3Key(entityKey);
<a class="jxr_linenumber" name="L426" href="#L426">426</a>                         String keyPartition = entityKey.substring(0, entityKey.lastIndexOf(KeyGenerator.PARTITION_SEPARATOR));
<a class="jxr_linenumber" name="L427" href="#L427">427</a>                         <strong class="jxr_keyword">if</strong> (!rootPartition.equalsIgnoreCase(keyPartition)) {
<a class="jxr_linenumber" name="L428" href="#L428">428</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/KeyUnavailableException.html">KeyUnavailableException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.keyunavailable.BadPartition"</span>, entityKey));
<a class="jxr_linenumber" name="L429" href="#L429">429</a>                         }
<a class="jxr_linenumber" name="L430" href="#L430">430</a>                 }
<a class="jxr_linenumber" name="L431" href="#L431">431</a> 
<a class="jxr_linenumber" name="L432" href="#L432">432</a>                 <a href="../../../../org/apache/juddi/validation/ValidatePublish.html">ValidatePublish</a> validatePublish = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/validation/ValidatePublish.html">ValidatePublish</a>(rootPublisher, config.getString(Property.JUDDI_NODE_ID));
<a class="jxr_linenumber" name="L433" href="#L433">433</a> 
<a class="jxr_linenumber" name="L434" href="#L434">434</a>                 validatePublish.validateNames(businessService.getName());
<a class="jxr_linenumber" name="L435" href="#L435">435</a>                 validatePublish.validateCategoryBag(businessService.getCategoryBag(), config, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L436" href="#L436">436</a> 
<a class="jxr_linenumber" name="L437" href="#L437">437</a>                 org.uddi.api_v3.BindingTemplates bindingTemplates = businessService.getBindingTemplates();
<a class="jxr_linenumber" name="L438" href="#L438">438</a>                 <strong class="jxr_keyword">if</strong> (bindingTemplates != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L439" href="#L439">439</a>                         List&lt;org.uddi.api_v3.BindingTemplate&gt; bindingTemplateList = bindingTemplates.getBindingTemplate();
<a class="jxr_linenumber" name="L440" href="#L440">440</a>                         <strong class="jxr_keyword">if</strong> (bindingTemplateList == <strong class="jxr_keyword">null</strong> || bindingTemplateList.size() == 0) {
<a class="jxr_linenumber" name="L441" href="#L441">441</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ValueNotAllowedException.html">ValueNotAllowedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.bindingtemplates.NoInput"</span>));
<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>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.BindingTemplate bindingTemplate : bindingTemplateList) {
<a class="jxr_linenumber" name="L445" href="#L445">445</a>                                 validateRootBindingTemplate(bindingTemplate, businessService, rootPublisher, rootPartition, config);
<a class="jxr_linenumber" name="L446" href="#L446">446</a>                         }
<a class="jxr_linenumber" name="L447" href="#L447">447</a>                 }
<a class="jxr_linenumber" name="L448" href="#L448">448</a>         }
<a class="jxr_linenumber" name="L449" href="#L449">449</a> 
<a class="jxr_linenumber" name="L450" href="#L450">450</a>         <em class="jxr_comment">// A watered down version of ValidatePublish's validatBindingTemplate, designed for the specific condition that this is run upon the initial</em>
<a class="jxr_linenumber" name="L451" href="#L451">451</a>         <em class="jxr_comment">// jUDDI install.</em>
<a class="jxr_linenumber" name="L452" href="#L452">452</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> validateRootBindingTemplate(org.uddi.api_v3.BindingTemplate bindingTemplate, org.uddi.api_v3.BusinessService parent,
<a class="jxr_linenumber" name="L453" href="#L453">453</a>                 <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> rootPublisher, String rootPartition, Configuration config)
<a class="jxr_linenumber" name="L454" href="#L454">454</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L455" href="#L455">455</a> 
<a class="jxr_linenumber" name="L456" href="#L456">456</a>                 <em class="jxr_comment">// A supplied businessService can't be null</em>
<a class="jxr_linenumber" name="L457" href="#L457">457</a>                 <strong class="jxr_keyword">if</strong> (bindingTemplate == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L458" href="#L458">458</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ValueNotAllowedException.html">ValueNotAllowedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.bindingtemplate.NullInput"</span>));
<a class="jxr_linenumber" name="L459" href="#L459">459</a>                 }
<a class="jxr_linenumber" name="L460" href="#L460">460</a> 
<a class="jxr_linenumber" name="L461" href="#L461">461</a>                 <em class="jxr_comment">// A service key doesn't have to be provided, but if it is, it should match the parent service's key</em>
<a class="jxr_linenumber" name="L462" href="#L462">462</a>                 String parentKey = bindingTemplate.getServiceKey();
<a class="jxr_linenumber" name="L463" href="#L463">463</a>                 <strong class="jxr_keyword">if</strong> (parentKey != <strong class="jxr_keyword">null</strong> &amp;&amp; parentKey.length() &gt; 0) {
<a class="jxr_linenumber" name="L464" href="#L464">464</a>                         <strong class="jxr_keyword">if</strong> (!parentKey.equalsIgnoreCase(parent.getServiceKey())) {
<a class="jxr_linenumber" name="L465" href="#L465">465</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/InvalidKeyPassedException.html">InvalidKeyPassedException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.invalidkey.ParentServiceNotFound"</span>, parentKey));
<a class="jxr_linenumber" name="L466" href="#L466">466</a>                         }
<a class="jxr_linenumber" name="L467" href="#L467">467</a>                 }
<a class="jxr_linenumber" name="L468" href="#L468">468</a> 
<a class="jxr_linenumber" name="L469" href="#L469">469</a>                 <em class="jxr_comment">// Retrieve the service's passed key</em>
<a class="jxr_linenumber" name="L470" href="#L470">470</a>                 String entityKey = bindingTemplate.getBindingKey();
<a class="jxr_linenumber" name="L471" href="#L471">471</a>                 <strong class="jxr_keyword">if</strong> (entityKey == <strong class="jxr_keyword">null</strong> || entityKey.length() == 0) {
<a class="jxr_linenumber" name="L472" href="#L472">472</a>                         entityKey = rootPartition + KeyGenerator.PARTITION_SEPARATOR + UUID.randomUUID();
<a class="jxr_linenumber" name="L473" href="#L473">473</a>                         bindingTemplate.setBindingKey(entityKey);
<a class="jxr_linenumber" name="L474" href="#L474">474</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L475" href="#L475">475</a>                         <em class="jxr_comment">// Per section 4.4: keys must be case-folded</em>
<a class="jxr_linenumber" name="L476" href="#L476">476</a>                         entityKey = entityKey.toLowerCase();
<a class="jxr_linenumber" name="L477" href="#L477">477</a>                         bindingTemplate.setBindingKey(entityKey);
<a class="jxr_linenumber" name="L478" href="#L478">478</a> 
<a class="jxr_linenumber" name="L479" href="#L479">479</a>                         ValidateUDDIKey.validateUDDIv3Key(entityKey);
<a class="jxr_linenumber" name="L480" href="#L480">480</a>                         String keyPartition = entityKey.substring(0, entityKey.lastIndexOf(KeyGenerator.PARTITION_SEPARATOR));
<a class="jxr_linenumber" name="L481" href="#L481">481</a>                         <strong class="jxr_keyword">if</strong> (!rootPartition.equalsIgnoreCase(keyPartition)) {
<a class="jxr_linenumber" name="L482" href="#L482">482</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/KeyUnavailableException.html">KeyUnavailableException</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/v3/error/ErrorMessage.html">ErrorMessage</a>(<span class="jxr_string">"errors.keyunavailable.BadPartition"</span>, entityKey));
<a class="jxr_linenumber" name="L483" href="#L483">483</a>                         }
<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 href="../../../../org/apache/juddi/validation/ValidatePublish.html">ValidatePublish</a> validatePublish = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/validation/ValidatePublish.html">ValidatePublish</a>(rootPublisher, config.getString(Property.JUDDI_NODE_ID));
<a class="jxr_linenumber" name="L487" href="#L487">487</a> 
<a class="jxr_linenumber" name="L488" href="#L488">488</a>                 validatePublish.validateCategoryBag(bindingTemplate.getCategoryBag(), config, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L489" href="#L489">489</a>                 validatePublish.validateTModelInstanceDetails(bindingTemplate.getTModelInstanceDetails(), config, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L490" href="#L490">490</a> 
<a class="jxr_linenumber" name="L491" href="#L491">491</a>         }
<a class="jxr_linenumber" name="L492" href="#L492">492</a> 
<a class="jxr_linenumber" name="L493" href="#L493">493</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> installTModels(EntityManager em, List&lt;org.uddi.api_v3.TModel&gt; apiTModelList, <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> publisher, String nodeId) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L494" href="#L494">494</a>                 <strong class="jxr_keyword">if</strong> (apiTModelList != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L495" href="#L495">495</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.TModel apiTModel : apiTModelList) {
<a class="jxr_linenumber" name="L496" href="#L496">496</a>                                 String tModelKey = apiTModel.getTModelKey();
<a class="jxr_linenumber" name="L497" href="#L497">497</a> 
<a class="jxr_linenumber" name="L498" href="#L498">498</a>                                 <strong class="jxr_keyword">if</strong> (tModelKey.toUpperCase().endsWith(KeyGenerator.KEYGENERATOR_SUFFIX.toUpperCase())) {
<a class="jxr_linenumber" name="L499" href="#L499">499</a>                                         installPublisherKeyGen(em, apiTModel, publisher, nodeId);
<a class="jxr_linenumber" name="L500" href="#L500">500</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L501" href="#L501">501</a>                                         org.apache.juddi.model.Tmodel modelTModel = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Tmodel();
<a class="jxr_linenumber" name="L502" href="#L502">502</a>                                         apiTModel.setTModelKey(apiTModel.getTModelKey().toLowerCase());
<a class="jxr_linenumber" name="L503" href="#L503">503</a> 
<a class="jxr_linenumber" name="L504" href="#L504">504</a>                                         MappingApiToModel.mapTModel(apiTModel, modelTModel);
<a class="jxr_linenumber" name="L505" href="#L505">505</a> 
<a class="jxr_linenumber" name="L506" href="#L506">506</a>                                         modelTModel.setAuthorizedName(publisher.getAuthorizedName());
<a class="jxr_linenumber" name="L507" href="#L507">507</a> 
<a class="jxr_linenumber" name="L508" href="#L508">508</a>                                         Date now = <strong class="jxr_keyword">new</strong> Date();
<a class="jxr_linenumber" name="L509" href="#L509">509</a>                                         modelTModel.setCreated(now);
<a class="jxr_linenumber" name="L510" href="#L510">510</a>                                         modelTModel.setModified(now);
<a class="jxr_linenumber" name="L511" href="#L511">511</a>                                         modelTModel.setModifiedIncludingChildren(now);
<a class="jxr_linenumber" name="L512" href="#L512">512</a>                                         modelTModel.setNodeId(nodeId);
<a class="jxr_linenumber" name="L513" href="#L513">513</a> 
<a class="jxr_linenumber" name="L514" href="#L514">514</a>                                         em.persist(modelTModel);
<a class="jxr_linenumber" name="L515" href="#L515">515</a> 
<a class="jxr_linenumber" name="L516" href="#L516">516</a>                                         SaveTModel stm = <strong class="jxr_keyword">new</strong> SaveTModel();
<a class="jxr_linenumber" name="L517" href="#L517">517</a>                                         stm.getTModel().add(apiTModel);
<a class="jxr_linenumber" name="L518" href="#L518">518</a>                                         ReplicationNotifier.enqueue(UDDIPublicationImpl.getChangeRecord(modelTModel, apiTModel, nodeId));
<a class="jxr_linenumber" name="L519" href="#L519">519</a>                                 }
<a class="jxr_linenumber" name="L520" href="#L520">520</a> 
<a class="jxr_linenumber" name="L521" href="#L521">521</a>                         }
<a class="jxr_linenumber" name="L522" href="#L522">522</a>                 }
<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> 
<a class="jxr_linenumber" name="L526" href="#L526">526</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> installRootPublisherKeyGen(EntityManager em, TModel rootTModelKeyGen, String rootPartition, <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> publisher, String nodeId)
<a class="jxr_linenumber" name="L527" href="#L527">527</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L528" href="#L528">528</a> 
<a class="jxr_linenumber" name="L529" href="#L529">529</a>                 rootTModelKeyGen.setTModelKey(rootPartition + KeyGenerator.PARTITION_SEPARATOR + KeyGenerator.KEYGENERATOR_SUFFIX);
<a class="jxr_linenumber" name="L530" href="#L530">530</a> 
<a class="jxr_linenumber" name="L531" href="#L531">531</a>                 installPublisherKeyGen(em, rootTModelKeyGen, publisher, nodeId);
<a class="jxr_linenumber" name="L532" href="#L532">532</a>         }
<a class="jxr_linenumber" name="L533" href="#L533">533</a> 
<a class="jxr_linenumber" name="L534" href="#L534">534</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> installPublisherKeyGen(EntityManager em, TModel apiTModel, <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> publisher, String nodeId) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L535" href="#L535">535</a> 
<a class="jxr_linenumber" name="L536" href="#L536">536</a>                 org.apache.juddi.model.Tmodel modelTModel = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Tmodel();
<a class="jxr_linenumber" name="L537" href="#L537">537</a>                 MappingApiToModel.mapTModel(apiTModel, modelTModel);
<a class="jxr_linenumber" name="L538" href="#L538">538</a> 
<a class="jxr_linenumber" name="L539" href="#L539">539</a>                 modelTModel.setAuthorizedName(publisher.getAuthorizedName());
<a class="jxr_linenumber" name="L540" href="#L540">540</a> 
<a class="jxr_linenumber" name="L541" href="#L541">541</a>                 Date now = <strong class="jxr_keyword">new</strong> Date();
<a class="jxr_linenumber" name="L542" href="#L542">542</a>                 modelTModel.setCreated(now);
<a class="jxr_linenumber" name="L543" href="#L543">543</a>                 modelTModel.setModified(now);
<a class="jxr_linenumber" name="L544" href="#L544">544</a>                 modelTModel.setModifiedIncludingChildren(now);
<a class="jxr_linenumber" name="L545" href="#L545">545</a>                 modelTModel.setNodeId(nodeId);
<a class="jxr_linenumber" name="L546" href="#L546">546</a> 
<a class="jxr_linenumber" name="L547" href="#L547">547</a>                 em.persist(modelTModel);
<a class="jxr_linenumber" name="L548" href="#L548">548</a> 
<a class="jxr_linenumber" name="L549" href="#L549">549</a>         }
<a class="jxr_linenumber" name="L550" href="#L550">550</a> 
<a class="jxr_linenumber" name="L551" href="#L551">551</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List&lt;String&gt; getPublishers(Configuration config) <strong class="jxr_keyword">throws</strong> ConfigurationException {
<a class="jxr_linenumber" name="L552" href="#L552">552</a>                 List&lt;String&gt; publishers = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="L553" href="#L553">553</a>                 String basePath = JUDDI_CUSTOM_INSTALL_DATA_DIR;
<a class="jxr_linenumber" name="L554" href="#L554">554</a>                 URL url = ClassUtil.getResource(JUDDI_CUSTOM_INSTALL_DATA_DIR, Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L555" href="#L555">555</a>                 <strong class="jxr_keyword">if</strong> (url == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L556" href="#L556">556</a>                         url = ClassUtil.getResource(JUDDI_INSTALL_DATA_DIR, Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L557" href="#L557">557</a>                         basePath = JUDDI_INSTALL_DATA_DIR;
<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>                 String path = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L561" href="#L561">561</a> 
<a class="jxr_linenumber" name="L562" href="#L562">562</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L563" href="#L563">563</a>                         path = url.toURI().getSchemeSpecificPart();
<a class="jxr_linenumber" name="L564" href="#L564">564</a>                 } <strong class="jxr_keyword">catch</strong> (URISyntaxException e) {
<a class="jxr_linenumber" name="L565" href="#L565">565</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(e);
<a class="jxr_linenumber" name="L566" href="#L566">566</a>                 }
<a class="jxr_linenumber" name="L567" href="#L567">567</a> 
<a class="jxr_linenumber" name="L568" href="#L568">568</a>                 File dir = <strong class="jxr_keyword">new</strong> File(path);
<a class="jxr_linenumber" name="L569" href="#L569">569</a>                 String rootPublisherStr = config.getString(Property.JUDDI_ROOT_PUBLISHER);
<a class="jxr_linenumber" name="L570" href="#L570">570</a>                 <strong class="jxr_keyword">if</strong> (dir.exists()) {
<a class="jxr_linenumber" name="L571" href="#L571">571</a>                         log.debug(<span class="jxr_string">"Discovering the Publisher XML data files in directory: "</span> + path);
<a class="jxr_linenumber" name="L572" href="#L572">572</a>                         File[] files = dir.listFiles(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/config/PublisherFileFilter.html">PublisherFileFilter</a>());
<a class="jxr_linenumber" name="L573" href="#L573">573</a>                         <strong class="jxr_keyword">if</strong> (files!=<strong class="jxr_keyword">null</strong>)
<a class="jxr_linenumber" name="L574" href="#L574">574</a>                                 <strong class="jxr_keyword">for</strong> (File f : files) {
<a class="jxr_linenumber" name="L575" href="#L575">575</a>                                         String publisher = f.getName().substring(0, f.getName().indexOf(FILE_PUBLISHER));
<a class="jxr_linenumber" name="L576" href="#L576">576</a>                                         <strong class="jxr_keyword">if</strong> (!rootPublisherStr.equalsIgnoreCase(publisher)) {
<a class="jxr_linenumber" name="L577" href="#L577">577</a>                                                 publishers.add(publisher);
<a class="jxr_linenumber" name="L578" href="#L578">578</a>                                         }
<a class="jxr_linenumber" name="L579" href="#L579">579</a>                                 }
<a class="jxr_linenumber" name="L580" href="#L580">580</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L581" href="#L581">581</a>                         String[] paths = {};
<a class="jxr_linenumber" name="L582" href="#L582">582</a>                         Enumeration&lt;JarEntry&gt; en = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L583" href="#L583">583</a>                         JarFile jf = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L584" href="#L584">584</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L585" href="#L585">585</a> 
<a class="jxr_linenumber" name="L586" href="#L586">586</a>                                 <strong class="jxr_keyword">if</strong> (path.indexOf(<span class="jxr_string">"!"</span>) &gt; 0) {
<a class="jxr_linenumber" name="L587" href="#L587">587</a>                                         paths = path.split(<span class="jxr_string">"!"</span>);
<a class="jxr_linenumber" name="L588" href="#L588">588</a>                                         jf = <strong class="jxr_keyword">new</strong> JarFile(<strong class="jxr_keyword">new</strong> File(<strong class="jxr_keyword">new</strong> URI(paths[0])));
<a class="jxr_linenumber" name="L589" href="#L589">589</a>                                         en = jf.entries();
<a class="jxr_linenumber" name="L590" href="#L590">590</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L591" href="#L591">591</a>                                         <em class="jxr_comment">// Handle Windows / jboss-5.1.0 case</em>
<a class="jxr_linenumber" name="L592" href="#L592">592</a>                                         <strong class="jxr_keyword">if</strong> (path.indexOf(<span class="jxr_string">".jar"</span>) &gt; 0) {
<a class="jxr_linenumber" name="L593" href="#L593">593</a>                                                 paths = path.split(<span class="jxr_string">".jar"</span>);
<a class="jxr_linenumber" name="L594" href="#L594">594</a>                                                 paths[0] = paths[0] + <span class="jxr_string">".jar"</span>;
<a class="jxr_linenumber" name="L595" href="#L595">595</a>                                                 File temp = <strong class="jxr_keyword">new</strong> File(paths[0]);
<a class="jxr_linenumber" name="L596" href="#L596">596</a>                                                 <strong class="jxr_keyword">if</strong> (temp.exists()) {
<a class="jxr_linenumber" name="L597" href="#L597">597</a>                                                         jf = <strong class="jxr_keyword">new</strong> JarFile(temp);
<a class="jxr_linenumber" name="L598" href="#L598">598</a>                                                         en = jf.entries();
<a class="jxr_linenumber" name="L599" href="#L599">599</a>                                                 }
<a class="jxr_linenumber" name="L600" href="#L600">600</a>                                         }
<a class="jxr_linenumber" name="L601" href="#L601">601</a>                                 }
<a class="jxr_linenumber" name="L602" href="#L602">602</a>                                 <strong class="jxr_keyword">if</strong> (paths.length &gt; 0) {
<a class="jxr_linenumber" name="L603" href="#L603">603</a>                                         log.debug(<span class="jxr_string">"Discovering the Publisher XML data files in jar: "</span> + paths[0]);
<a class="jxr_linenumber" name="L604" href="#L604">604</a>                                         <strong class="jxr_keyword">while</strong> (en != <strong class="jxr_keyword">null</strong> &amp;&amp; en.hasMoreElements()) {
<a class="jxr_linenumber" name="L605" href="#L605">605</a>                                                 String name = en.nextElement().getName();
<a class="jxr_linenumber" name="L606" href="#L606">606</a>                                                 <strong class="jxr_keyword">if</strong> (name.endsWith(FILE_PUBLISHER)) {
<a class="jxr_linenumber" name="L607" href="#L607">607</a>                                                         log.debug(<span class="jxr_string">"Found publisher file="</span> + name);
<a class="jxr_linenumber" name="L608" href="#L608">608</a>                                                         String publisher = name.substring(basePath.length(), name.indexOf(FILE_PUBLISHER));
<a class="jxr_linenumber" name="L609" href="#L609">609</a>                                                         <strong class="jxr_keyword">if</strong> (!rootPublisherStr.equalsIgnoreCase(publisher)) {
<a class="jxr_linenumber" name="L610" href="#L610">610</a>                                                                 publishers.add(publisher);
<a class="jxr_linenumber" name="L611" href="#L611">611</a>                                                         }
<a class="jxr_linenumber" name="L612" href="#L612">612</a>                                                 }
<a class="jxr_linenumber" name="L613" href="#L613">613</a>                                         }
<a class="jxr_linenumber" name="L614" href="#L614">614</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L615" href="#L615">615</a>                                         log.info(<span class="jxr_string">"No custom configuration files where found in "</span> + path);
<a class="jxr_linenumber" name="L616" href="#L616">616</a>                                 }
<a class="jxr_linenumber" name="L617" href="#L617">617</a>                                 <strong class="jxr_keyword">if</strong> (jf != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L618" href="#L618">618</a>                                         jf.close();
<a class="jxr_linenumber" name="L619" href="#L619">619</a>                                 }
<a class="jxr_linenumber" name="L620" href="#L620">620</a> 
<a class="jxr_linenumber" name="L621" href="#L621">621</a>                         } <strong class="jxr_keyword">catch</strong> (IOException e) {
<a class="jxr_linenumber" name="L622" href="#L622">622</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(e);
<a class="jxr_linenumber" name="L623" href="#L623">623</a>                         } <strong class="jxr_keyword">catch</strong> (URISyntaxException e) {
<a class="jxr_linenumber" name="L624" href="#L624">624</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(e);
<a class="jxr_linenumber" name="L625" href="#L625">625</a>                         }
<a class="jxr_linenumber" name="L626" href="#L626">626</a>                 }
<a class="jxr_linenumber" name="L627" href="#L627">627</a>                 <strong class="jxr_keyword">return</strong> publishers;
<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">private</strong> <strong class="jxr_keyword">static</strong> Object buildInstallEntityAlt(<strong class="jxr_keyword">final</strong> String fileName, Class outputtype, Configuration config) <strong class="jxr_keyword">throws</strong> JAXBException, IOException, ConfigurationException {
<a class="jxr_linenumber" name="L631" href="#L631">631</a>                 InputStream resourceStream = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L632" href="#L632">632</a> 
<a class="jxr_linenumber" name="L633" href="#L633">633</a>                 <em class="jxr_comment">// First try the custom install directory</em>
<a class="jxr_linenumber" name="L634" href="#L634">634</a>                 URL url = ClassUtil.getResource(JUDDI_CUSTOM_INSTALL_DATA_DIR + fileName, Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L635" href="#L635">635</a>                 <strong class="jxr_keyword">if</strong> (url != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L636" href="#L636">636</a>                         resourceStream = url.openStream();
<a class="jxr_linenumber" name="L637" href="#L637">637</a>                 }
<a class="jxr_linenumber" name="L638" href="#L638">638</a> 
<a class="jxr_linenumber" name="L639" href="#L639">639</a>                 <em class="jxr_comment">// If the custom install directory doesn't exist, then use the standard install directory where the resource is guaranteed to exist.</em>
<a class="jxr_linenumber" name="L640" href="#L640">640</a>                 <strong class="jxr_keyword">if</strong> (resourceStream == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L641" href="#L641">641</a>                         url = ClassUtil.getResource(JUDDI_INSTALL_DATA_DIR + fileName, Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L642" href="#L642">642</a>                         <strong class="jxr_keyword">if</strong> (url != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L643" href="#L643">643</a>                                 resourceStream = url.openStream();
<a class="jxr_linenumber" name="L644" href="#L644">644</a>                         }
<a class="jxr_linenumber" name="L645" href="#L645">645</a>                         <em class="jxr_comment">// If file still does not exist then return null;</em>
<a class="jxr_linenumber" name="L646" href="#L646">646</a>                         <strong class="jxr_keyword">if</strong> (url == <strong class="jxr_keyword">null</strong> || resourceStream == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L647" href="#L647">647</a>                                 <strong class="jxr_keyword">if</strong> (fileName.endsWith(FILE_PUBLISHER)) {
<a class="jxr_linenumber" name="L648" href="#L648">648</a>                                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(<span class="jxr_string">"Could not locate "</span> + JUDDI_INSTALL_DATA_DIR + fileName);
<a class="jxr_linenumber" name="L649" href="#L649">649</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L650" href="#L650">650</a>                                         log.debug(<span class="jxr_string">"Could not locate: "</span> + url);
<a class="jxr_linenumber" name="L651" href="#L651">651</a>                                 }
<a class="jxr_linenumber" name="L652" href="#L652">652</a>                                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L653" href="#L653">653</a>                         }
<a class="jxr_linenumber" name="L654" href="#L654">654</a>                 }
<a class="jxr_linenumber" name="L655" href="#L655">655</a>                 log.info(<span class="jxr_string">"Loading the content of file: "</span> + url);
<a class="jxr_linenumber" name="L656" href="#L656">656</a>                 StringBuilder xml = <strong class="jxr_keyword">new</strong> StringBuilder();
<a class="jxr_linenumber" name="L657" href="#L657">657</a>                 byte[] b = <strong class="jxr_keyword">new</strong> byte[4096];
<a class="jxr_linenumber" name="L658" href="#L658">658</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> n; (n = resourceStream.read(b)) != -1;) {
<a class="jxr_linenumber" name="L659" href="#L659">659</a>                         xml.append(<strong class="jxr_keyword">new</strong> String(b, 0, n, AuthenticatedService.UTF8));
<a class="jxr_linenumber" name="L660" href="#L660">660</a>                 }
<a class="jxr_linenumber" name="L661" href="#L661">661</a>                 log.debug(<span class="jxr_string">"inserting: "</span> + xml.toString());
<a class="jxr_linenumber" name="L662" href="#L662">662</a>                 StringReader reader = <strong class="jxr_keyword">new</strong> StringReader(xml.toString());
<a class="jxr_linenumber" name="L663" href="#L663">663</a>              
<a class="jxr_linenumber" name="L664" href="#L664">664</a>                Object obj= XmlUtils.unmarshal(reader, outputtype);
<a class="jxr_linenumber" name="L665" href="#L665">665</a>                reader.close();
<a class="jxr_linenumber" name="L666" href="#L666">666</a>                <strong class="jxr_keyword">return</strong> obj;
<a class="jxr_linenumber" name="L667" href="#L667">667</a>         }
<a class="jxr_linenumber" name="L668" href="#L668">668</a> 
<a class="jxr_linenumber" name="L669" href="#L669">669</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Object buildInstallEntity(<strong class="jxr_keyword">final</strong> String fileName, String packageName, Configuration config) <strong class="jxr_keyword">throws</strong> JAXBException, IOException, ConfigurationException, XMLStreamException {
<a class="jxr_linenumber" name="L670" href="#L670">670</a>                 InputStream resourceStream = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L671" href="#L671">671</a> 
<a class="jxr_linenumber" name="L672" href="#L672">672</a>                 <em class="jxr_comment">// First try the custom install directory</em>
<a class="jxr_linenumber" name="L673" href="#L673">673</a>                 URL url = ClassUtil.getResource(JUDDI_CUSTOM_INSTALL_DATA_DIR + fileName, Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L674" href="#L674">674</a>                 <strong class="jxr_keyword">if</strong> (url != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L675" href="#L675">675</a>                         resourceStream = url.openStream();
<a class="jxr_linenumber" name="L676" href="#L676">676</a>                 }
<a class="jxr_linenumber" name="L677" href="#L677">677</a> 
<a class="jxr_linenumber" name="L678" href="#L678">678</a>                 <em class="jxr_comment">// If the custom install directory doesn't exist, then use the standard install directory where the resource is guaranteed to exist.</em>
<a class="jxr_linenumber" name="L679" href="#L679">679</a>                 <strong class="jxr_keyword">if</strong> (resourceStream == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L680" href="#L680">680</a>                         url = ClassUtil.getResource(JUDDI_INSTALL_DATA_DIR + fileName, Install.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L681" href="#L681">681</a>                         <strong class="jxr_keyword">if</strong> (url != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L682" href="#L682">682</a>                                 resourceStream = url.openStream();
<a class="jxr_linenumber" name="L683" href="#L683">683</a>                         }
<a class="jxr_linenumber" name="L684" href="#L684">684</a>                         <em class="jxr_comment">// If file still does not exist then return null;</em>
<a class="jxr_linenumber" name="L685" href="#L685">685</a>                         <strong class="jxr_keyword">if</strong> (url == <strong class="jxr_keyword">null</strong> || resourceStream == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L686" href="#L686">686</a>                                 <strong class="jxr_keyword">if</strong> (fileName.endsWith(FILE_PUBLISHER)) {
<a class="jxr_linenumber" name="L687" href="#L687">687</a>                                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ConfigurationException(<span class="jxr_string">"Could not locate "</span> + JUDDI_INSTALL_DATA_DIR + fileName);
<a class="jxr_linenumber" name="L688" href="#L688">688</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L689" href="#L689">689</a>                                         log.debug(<span class="jxr_string">"Could not locate: "</span> + url);
<a class="jxr_linenumber" name="L690" href="#L690">690</a>                                 }
<a class="jxr_linenumber" name="L691" href="#L691">691</a>                                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L692" href="#L692">692</a>                         }
<a class="jxr_linenumber" name="L693" href="#L693">693</a>                 }
<a class="jxr_linenumber" name="L694" href="#L694">694</a>                 log.info(<span class="jxr_string">"Loading the content of file: "</span> + url);
<a class="jxr_linenumber" name="L695" href="#L695">695</a>                 StringBuilder xml = <strong class="jxr_keyword">new</strong> StringBuilder();
<a class="jxr_linenumber" name="L696" href="#L696">696</a>                 byte[] b = <strong class="jxr_keyword">new</strong> byte[4096];
<a class="jxr_linenumber" name="L697" href="#L697">697</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> n; (n = resourceStream.read(b)) != -1;) {
<a class="jxr_linenumber" name="L698" href="#L698">698</a>                         xml.append(<strong class="jxr_keyword">new</strong> String(b, 0, n, AuthenticatedService.UTF8));
<a class="jxr_linenumber" name="L699" href="#L699">699</a>                 }
<a class="jxr_linenumber" name="L700" href="#L700">700</a>                 log.debug(<span class="jxr_string">"inserting: "</span> + xml.toString());
<a class="jxr_linenumber" name="L701" href="#L701">701</a>                 StringReader reader = <strong class="jxr_keyword">new</strong> StringReader(xml.toString());
<a class="jxr_linenumber" name="L702" href="#L702">702</a> 
<a class="jxr_linenumber" name="L703" href="#L703">703</a>                 Object obj= XmlUtils.unmarshal(reader, packageName);
<a class="jxr_linenumber" name="L704" href="#L704">704</a>                 reader.close();
<a class="jxr_linenumber" name="L705" href="#L705">705</a>                 <strong class="jxr_keyword">return</strong> obj;
<a class="jxr_linenumber" name="L706" href="#L706">706</a>         }
<a class="jxr_linenumber" name="L707" href="#L707">707</a> 
<a class="jxr_linenumber" name="L708" href="#L708">708</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L709" href="#L709">709</a> <em class="jxr_javadoccomment">         * Public convenience method that allows one to retrieve the node</em>
<a class="jxr_linenumber" name="L710" href="#L710">710</a> <em class="jxr_javadoccomment">         * business entity (perhaps to display during an install process, or</em>
<a class="jxr_linenumber" name="L711" href="#L711">711</a> <em class="jxr_javadoccomment">         * even to initiate the install process).</em>
<a class="jxr_linenumber" name="L712" href="#L712">712</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L713" href="#L713">713</a> <em class="jxr_javadoccomment">         * @param businessKey</em>
<a class="jxr_linenumber" name="L714" href="#L714">714</a> <em class="jxr_javadoccomment">         * @return BusinessEntity Object</em>
<a class="jxr_linenumber" name="L715" href="#L715">715</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L716" href="#L716">716</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L717" href="#L717">717</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> org.uddi.api_v3.BusinessEntity getNodeBusinessEntity(String businessKey) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L718" href="#L718">718</a>                 <a href="../../../../org/apache/juddi/api/impl/UDDIInquiryImpl.html">UDDIInquiryImpl</a> inquiry = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/api/impl/UDDIInquiryImpl.html">UDDIInquiryImpl</a>();
<a class="jxr_linenumber" name="L719" href="#L719">719</a> 
<a class="jxr_linenumber" name="L720" href="#L720">720</a>                 org.uddi.api_v3.GetBusinessDetail gbd = <strong class="jxr_keyword">new</strong> org.uddi.api_v3.GetBusinessDetail();
<a class="jxr_linenumber" name="L721" href="#L721">721</a>                 gbd.getBusinessKey().add(businessKey);
<a class="jxr_linenumber" name="L722" href="#L722">722</a> 
<a class="jxr_linenumber" name="L723" href="#L723">723</a>                 org.uddi.api_v3.BusinessDetail bd = inquiry.getBusinessDetail(gbd);
<a class="jxr_linenumber" name="L724" href="#L724">724</a>                 <strong class="jxr_keyword">if</strong> (bd != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L725" href="#L725">725</a>                         List&lt;org.uddi.api_v3.BusinessEntity&gt; beList = bd.getBusinessEntity();
<a class="jxr_linenumber" name="L726" href="#L726">726</a>                         <strong class="jxr_keyword">if</strong> (beList != <strong class="jxr_keyword">null</strong> &amp;&amp; beList.size() &gt; 0) {
<a class="jxr_linenumber" name="L727" href="#L727">727</a>                                 <strong class="jxr_keyword">return</strong> beList.get(0);
<a class="jxr_linenumber" name="L728" href="#L728">728</a>                         }
<a class="jxr_linenumber" name="L729" href="#L729">729</a>                 }
<a class="jxr_linenumber" name="L730" href="#L730">730</a> 
<a class="jxr_linenumber" name="L731" href="#L731">731</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> org.uddi.api_v3.BusinessEntity();
<a class="jxr_linenumber" name="L732" href="#L732">732</a>         }
<a class="jxr_linenumber" name="L733" href="#L733">733</a> 
<a class="jxr_linenumber" name="L734" href="#L734">734</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L735" href="#L735">735</a> <em class="jxr_javadoccomment">         * Public convenience method that allows one to install additional</em>
<a class="jxr_linenumber" name="L736" href="#L736">736</a> <em class="jxr_javadoccomment">         * TModels via a SaveTModel structure.</em>
<a class="jxr_linenumber" name="L737" href="#L737">737</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L738" href="#L738">738</a> <em class="jxr_javadoccomment">         * @param em - the entity manager to a juddi model</em>
<a class="jxr_linenumber" name="L739" href="#L739">739</a> <em class="jxr_javadoccomment">         * @param fileName - name of SaveTModel xml file</em>
<a class="jxr_linenumber" name="L740" href="#L740">740</a> <em class="jxr_javadoccomment">         * @param publisher - the publisher structure that owns the tModels</em>
<a class="jxr_linenumber" name="L741" href="#L741">741</a> <em class="jxr_javadoccomment">         * @param nodeId - the node id of the custodial node</em>
<a class="jxr_linenumber" name="L742" href="#L742">742</a> <em class="jxr_javadoccomment">         * @throws JAXBException</em>
<a class="jxr_linenumber" name="L743" href="#L743">743</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L744" href="#L744">744</a> <em class="jxr_javadoccomment">         * @throws IOException</em>
<a class="jxr_linenumber" name="L745" href="#L745">745</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L746" href="#L746">746</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L747" href="#L747">747</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> installSaveTModel(EntityManager em, String fileName, <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> publisher, String nodeId, Configuration config)
<a class="jxr_linenumber" name="L748" href="#L748">748</a>                 <strong class="jxr_keyword">throws</strong> JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException, XMLStreamException {
<a class="jxr_linenumber" name="L749" href="#L749">749</a> 
<a class="jxr_linenumber" name="L750" href="#L750">750</a>                 SaveTModel apiSaveTModel = (SaveTModel) buildInstallEntity(fileName, <span class="jxr_string">"org.uddi.api_v3"</span>, config);
<a class="jxr_linenumber" name="L751" href="#L751">751</a>                 <strong class="jxr_keyword">if</strong> (apiSaveTModel != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L752" href="#L752">752</a>                         installTModels(em, apiSaveTModel.getTModel(), publisher, nodeId);
<a class="jxr_linenumber" name="L753" href="#L753">753</a>                 }
<a class="jxr_linenumber" name="L754" href="#L754">754</a>         }
<a class="jxr_linenumber" name="L755" href="#L755">755</a> 
<a class="jxr_linenumber" name="L756" href="#L756">756</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L757" href="#L757">757</a> <em class="jxr_javadoccomment">         * Public convenience method that allows one to install additional</em>
<a class="jxr_linenumber" name="L758" href="#L758">758</a> <em class="jxr_javadoccomment">         * Publishers via a Publisher structure.</em>
<a class="jxr_linenumber" name="L759" href="#L759">759</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L760" href="#L760">760</a> <em class="jxr_javadoccomment">         * @param em - the entity manager to the juddi model</em>
<a class="jxr_linenumber" name="L761" href="#L761">761</a> <em class="jxr_javadoccomment">         * @param fileName - name of Publisher xml file</em>
<a class="jxr_linenumber" name="L762" href="#L762">762</a> <em class="jxr_javadoccomment">         * @return UddiEntityPublisher object, can be any UDDIEntity</em>
<a class="jxr_linenumber" name="L763" href="#L763">763</a> <em class="jxr_javadoccomment">         * @throws JAXBException</em>
<a class="jxr_linenumber" name="L764" href="#L764">764</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L765" href="#L765">765</a> <em class="jxr_javadoccomment">         * @throws IOException</em>
<a class="jxr_linenumber" name="L766" href="#L766">766</a> <em class="jxr_javadoccomment">         * @throws ConfigurationException</em>
<a class="jxr_linenumber" name="L767" href="#L767">767</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L768" href="#L768">768</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/UddiEntityPublisher.html">UddiEntityPublisher</a> installPublisher(EntityManager em, String fileName, Configuration config)
<a class="jxr_linenumber" name="L769" href="#L769">769</a>                 <strong class="jxr_keyword">throws</strong> JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException, XMLStreamException {
<a class="jxr_linenumber" name="L770" href="#L770">770</a> 
<a class="jxr_linenumber" name="L771" href="#L771">771</a>                 org.apache.juddi.api_v3.Publisher apiPub = (org.apache.juddi.api_v3.Publisher) buildInstallEntity(fileName, <span class="jxr_string">"org.apache.juddi.api_v3"</span>, config);
<a class="jxr_linenumber" name="L772" href="#L772">772</a>                 <strong class="jxr_keyword">if</strong> (apiPub == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L773" href="#L773">773</a>                         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L774" href="#L774">774</a>                 }
<a class="jxr_linenumber" name="L775" href="#L775">775</a>                 org.apache.juddi.model.Publisher modelPub = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Publisher();
<a class="jxr_linenumber" name="L776" href="#L776">776</a>                 MappingApiToModel.mapPublisher(apiPub, modelPub);
<a class="jxr_linenumber" name="L777" href="#L777">777</a>                 em.persist(modelPub);
<a class="jxr_linenumber" name="L778" href="#L778">778</a>                 <strong class="jxr_keyword">return</strong> modelPub;
<a class="jxr_linenumber" name="L779" href="#L779">779</a>         }
<a class="jxr_linenumber" name="L780" href="#L780">780</a> 
<a class="jxr_linenumber" name="L781" href="#L781">781</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> org.uddi.repl_v3.ReplicationConfiguration applyReplicationTokenChanges(org.uddi.repl_v3.ReplicationConfiguration replicationCfg, Configuration config, String thisnode) {
<a class="jxr_linenumber" name="L782" href="#L782">782</a>                 log.info(<span class="jxr_string">"replacing tokens on repl config"</span>);
<a class="jxr_linenumber" name="L783" href="#L783">783</a>                 <strong class="jxr_keyword">if</strong> (replicationCfg == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L784" href="#L784">784</a>                         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L785" href="#L785">785</a>                 }
<a class="jxr_linenumber" name="L786" href="#L786">786</a>                 <em class="jxr_comment">//apply any token replacements</em>
<a class="jxr_linenumber" name="L787" href="#L787">787</a>                 <strong class="jxr_keyword">for</strong> (Operator op : replicationCfg.getOperator()) {
<a class="jxr_linenumber" name="L788" href="#L788">788</a>                         op.setOperatorNodeID(op.getOperatorNodeID().replace(<span class="jxr_string">"${juddi.nodeId}"</span>, thisnode));
<a class="jxr_linenumber" name="L789" href="#L789">789</a>                         op.setSoapReplicationURL(op.getSoapReplicationURL().replace(<span class="jxr_string">"${juddi.server.baseurlsecure}"</span>, config.getString(<span class="jxr_string">"juddi.server.baseurlsecure"</span>)));
<a class="jxr_linenumber" name="L790" href="#L790">790</a>                         op.setSoapReplicationURL(op.getSoapReplicationURL().replace(<span class="jxr_string">"${juddi.server.baseurl}"</span>, config.getString(<span class="jxr_string">"juddi.server.baseurl"</span>)));
<a class="jxr_linenumber" name="L791" href="#L791">791</a>                 }
<a class="jxr_linenumber" name="L792" href="#L792">792</a>                 <strong class="jxr_keyword">if</strong> (replicationCfg.getCommunicationGraph() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L793" href="#L793">793</a>                         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; replicationCfg.getCommunicationGraph().getNode().size(); i++) {
<a class="jxr_linenumber" name="L794" href="#L794">794</a>                                 replicationCfg.getCommunicationGraph().getNode().set(i, replicationCfg.getCommunicationGraph().getNode().get(i).replace(<span class="jxr_string">"${juddi.nodeId}"</span>, thisnode));
<a class="jxr_linenumber" name="L795" href="#L795">795</a> 
<a class="jxr_linenumber" name="L796" href="#L796">796</a>                         }
<a class="jxr_linenumber" name="L797" href="#L797">797</a>                         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; replicationCfg.getCommunicationGraph().getEdge().size(); i++) {
<a class="jxr_linenumber" name="L798" href="#L798">798</a>                                 replicationCfg.getCommunicationGraph().getEdge().get(i).setMessageSender(replicationCfg.getCommunicationGraph().getEdge().get(i).getMessageSender().replace(<span class="jxr_string">"${juddi.nodeId}"</span>, thisnode));
<a class="jxr_linenumber" name="L799" href="#L799">799</a>                                 replicationCfg.getCommunicationGraph().getEdge().get(i).setMessageReceiver(replicationCfg.getCommunicationGraph().getEdge().get(i).getMessageReceiver().replace(<span class="jxr_string">"${juddi.nodeId}"</span>, thisnode));
<a class="jxr_linenumber" name="L800" href="#L800">800</a>                                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; replicationCfg.getCommunicationGraph().getEdge().get(i).getMessageReceiverAlternate().size(); k++) {
<a class="jxr_linenumber" name="L801" href="#L801">801</a>                                         replicationCfg.getCommunicationGraph().getEdge().get(i).getMessageReceiverAlternate().set(k, replicationCfg.getCommunicationGraph().getEdge().get(i).getMessageReceiverAlternate().get(k).replace(<span class="jxr_string">"${juddi.nodeId}"</span>, thisnode));
<a class="jxr_linenumber" name="L802" href="#L802">802</a>                                 }
<a class="jxr_linenumber" name="L803" href="#L803">803</a>                         }
<a class="jxr_linenumber" name="L804" href="#L804">804</a>                 }
<a class="jxr_linenumber" name="L805" href="#L805">805</a> 
<a class="jxr_linenumber" name="L806" href="#L806">806</a>                 <strong class="jxr_keyword">for</strong> (Operator op : replicationCfg.getOperator()) {
<a class="jxr_linenumber" name="L807" href="#L807">807</a>                         op.setOperatorNodeID(op.getOperatorNodeID().replace(<span class="jxr_string">"${juddi.nodeId}"</span>, thisnode));
<a class="jxr_linenumber" name="L808" href="#L808">808</a>                 }
<a class="jxr_linenumber" name="L809" href="#L809">809</a>                 log.info(<span class="jxr_string">"replacing tokens on repl config, done"</span>);
<a class="jxr_linenumber" name="L810" href="#L810">810</a>                 <strong class="jxr_keyword">return</strong> replicationCfg;
<a class="jxr_linenumber" name="L811" href="#L811">811</a>         }
<a class="jxr_linenumber" name="L812" href="#L812">812</a> 
<a class="jxr_linenumber" name="L813" href="#L813">813</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> installReplicationConfiguration(EntityManager em, org.uddi.repl_v3.ReplicationConfiguration replicationCfg, Configuration config, String thisnode) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage, ConfigurationException {
<a class="jxr_linenumber" name="L814" href="#L814">814</a>                 replicationCfg = applyReplicationTokenChanges(replicationCfg, config, thisnode);
<a class="jxr_linenumber" name="L815" href="#L815">815</a>                 <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/validation/ValidateReplication.html">ValidateReplication</a>(<strong class="jxr_keyword">null</strong>, thisnode).validateSetReplicationNodes(replicationCfg, em, thisnode, config);
<a class="jxr_linenumber" name="L816" href="#L816">816</a> 
<a class="jxr_linenumber" name="L817" href="#L817">817</a>                 SimpleDateFormat sdf = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"yyyyMMddkkmmZ"</span>);
<a class="jxr_linenumber" name="L818" href="#L818">818</a>                 replicationCfg.setTimeOfConfigurationUpdate(sdf.format(<strong class="jxr_keyword">new</strong> Date()));
<a class="jxr_linenumber" name="L819" href="#L819">819</a> 
<a class="jxr_linenumber" name="L820" href="#L820">820</a>                 org.apache.juddi.model.ReplicationConfiguration model = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/ReplicationConfiguration.html">ReplicationConfiguration</a>();
<a class="jxr_linenumber" name="L821" href="#L821">821</a> 
<a class="jxr_linenumber" name="L822" href="#L822">822</a>                 MappingApiToModel.mapReplicationConfiguration(replicationCfg, model, em);
<a class="jxr_linenumber" name="L823" href="#L823">823</a> 
<a class="jxr_linenumber" name="L824" href="#L824">824</a>                 model.setSerialNumber(System.currentTimeMillis());
<a class="jxr_linenumber" name="L825" href="#L825">825</a> 
<a class="jxr_linenumber" name="L826" href="#L826">826</a>                 org.apache.juddi.model.ReplicationConfiguration oldstuff = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L827" href="#L827">827</a>                 <em class="jxr_comment">// logger.info(publisher.getAuthorizedName() + " is setting the replication config from " + getRequestorsIPAddress());// + " " + sw.toString());</em>
<a class="jxr_linenumber" name="L828" href="#L828">828</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L829" href="#L829">829</a>                         oldstuff = (ReplicationConfiguration) em.createQuery(<span class="jxr_string">"select c FROM ReplicationConfiguration c order by c.serialNumber desc"</span>).getSingleResult();
<a class="jxr_linenumber" name="L830" href="#L830">830</a>                 } <strong class="jxr_keyword">catch</strong> (Exception ex) {
<a class="jxr_linenumber" name="L831" href="#L831">831</a>                 }
<a class="jxr_linenumber" name="L832" href="#L832">832</a>                 <strong class="jxr_keyword">if</strong> (oldstuff != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L833" href="#L833">833</a>                         em.remove(oldstuff);
<a class="jxr_linenumber" name="L834" href="#L834">834</a>                 }
<a class="jxr_linenumber" name="L835" href="#L835">835</a>                 em.persist(model);
<a class="jxr_linenumber" name="L836" href="#L836">836</a>         }
<a class="jxr_linenumber" name="L837" href="#L837">837</a> 
<a class="jxr_linenumber" name="L838" href="#L838">838</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>
