<!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>MappingApiToModel xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/juddi/mapping/MappingApiToModel.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.mapping;
<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.StringWriter;
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> java.io.UnsupportedEncodingException;
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.text.SimpleDateFormat;
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.util.Date;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.util.GregorianCalendar;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> javax.persistence.EntityManager;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.JAXB;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> javax.xml.bind.JAXBElement;
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> javax.xml.transform.dom.DOMResult;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.api.impl.AuthenticatedService;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.jaxb.JAXBMarshaller;
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Address;
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.BindingTemplate;
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.BusinessEntity;
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.BusinessService;
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.CanonicalizationMethod;
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Contact;
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.ControlMessage;
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Edge;
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.EdgeReceiverAlternate;
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.KeyDataValue;
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.KeyInfo;
<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Node;
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Operator;
<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.OperatorStatusType;
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Publisher;
<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Reference;
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.ReplicationConfigurationNode;
<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Signature;
<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.SignatureMethod;
<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.SignatureTransform;
<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.SignatureTransformDataValue;
<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.SignatureValue;
<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.SignedInfo;
<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.Tmodel;
<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.model.UddiEntity;
<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.ErrorMessage;
<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.juddi.v3.error.ValueNotAllowedException;
<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.Description;
<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.OperationalInfo;
<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <strong class="jxr_keyword">import</strong> org.uddi.api_v3.SaveBinding;
<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <strong class="jxr_keyword">import</strong> org.uddi.repl_v3.ChangeRecord;
<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <strong class="jxr_keyword">import</strong> org.uddi.repl_v3.CommunicationGraph;
<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <strong class="jxr_keyword">import</strong> org.uddi.repl_v3.ReplicationConfiguration;
<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <strong class="jxr_keyword">import</strong> org.uddi.sub_v3.ObjectFactory;
<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <strong class="jxr_keyword">import</strong> org.uddi.v3_service.DispositionReportFaultMessage;
<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.DSAKeyValueType;
<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.KeyInfoType;
<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.KeyValueType;
<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.PGPDataType;
<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.RSAKeyValueType;
<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.ReferenceType;
<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.RetrievalMethodType;
<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.SPKIDataType;
<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.TransformType;
<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.TransformsType;
<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.X509DataType;
<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <strong class="jxr_keyword">import</strong> org.w3._2000._09.xmldsig_.X509IssuerSerialType;
<a class="jxr_linenumber" name="L82" href="#L82">82</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.DOMException;
<a class="jxr_linenumber" name="L83" href="#L83">83</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.Document;
<a class="jxr_linenumber" name="L84" href="#L84">84</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.Element;
<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.ls.DOMImplementationLS;
<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.ls.LSException;
<a class="jxr_linenumber" name="L87" href="#L87">87</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.ls.LSSerializer;
<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
<a class="jxr_linenumber" name="L89" href="#L89">89</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L90" href="#L90">90</a>  <em class="jxr_javadoccomment"> * Handles mapping from the internal jUDDL API Model to the JAXB/XML/WSDL UDDI</em>
<a class="jxr_linenumber" name="L91" href="#L91">91</a>  <em class="jxr_javadoccomment"> * data structures</em>
<a class="jxr_linenumber" name="L92" href="#L92">92</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L93" href="#L93">93</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="L94" href="#L94">94</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:kstam@apache.org" target="alexandria_uri">mailto:kstam@apache.org</a>"&gt;Kurt T Stam&lt;/a&gt;</em>
<a class="jxr_linenumber" name="L95" href="#L95">95</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:tcunning@apache.org" target="alexandria_uri">mailto:tcunning@apache.org</a>"&gt;Tom Cunningham&lt;/a&gt;</em>
<a class="jxr_linenumber" name="L96" href="#L96">96</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="L97" href="#L97">97</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L98" href="#L98">98</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/juddi/mapping/MappingApiToModel.html">MappingApiToModel</a> {
<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
<a class="jxr_linenumber" name="L100" href="#L100">100</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Log logger = LogFactory.getLog(MappingApiToModel.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L101" href="#L101">101</a> 
<a class="jxr_linenumber" name="L102" href="#L102">102</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L103" href="#L103">103</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L104" href="#L104">104</a> <em class="jxr_javadoccomment">         * @param apiPublisher</em>
<a class="jxr_linenumber" name="L105" href="#L105">105</a> <em class="jxr_javadoccomment">         * @param modelPublisher</em>
<a class="jxr_linenumber" name="L106" href="#L106">106</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L107" href="#L107">107</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L108" href="#L108">108</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapPublisher(org.apache.juddi.api_v3.Publisher apiPublisher,
<a class="jxr_linenumber" name="L109" href="#L109">109</a>                 org.apache.juddi.model.Publisher modelPublisher)
<a class="jxr_linenumber" name="L110" href="#L110">110</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L111" href="#L111">111</a>                 modelPublisher.setAuthorizedName(apiPublisher.getAuthorizedName());
<a class="jxr_linenumber" name="L112" href="#L112">112</a>                 modelPublisher.setPublisherName(apiPublisher.getPublisherName());
<a class="jxr_linenumber" name="L113" href="#L113">113</a>                 modelPublisher.setEmailAddress(apiPublisher.getEmailAddress());
<a class="jxr_linenumber" name="L114" href="#L114">114</a>                 modelPublisher.setIsAdmin(apiPublisher.isIsAdmin());
<a class="jxr_linenumber" name="L115" href="#L115">115</a>                 modelPublisher.setIsEnabled(apiPublisher.isIsEnabled());
<a class="jxr_linenumber" name="L116" href="#L116">116</a>                 modelPublisher.setMaxBindingsPerService(apiPublisher.getMaxBindingsPerService());
<a class="jxr_linenumber" name="L117" href="#L117">117</a>                 modelPublisher.setMaxBusinesses(apiPublisher.getMaxBusinesses());
<a class="jxr_linenumber" name="L118" href="#L118">118</a>                 modelPublisher.setMaxServicesPerBusiness(apiPublisher.getMaxServicePerBusiness());
<a class="jxr_linenumber" name="L119" href="#L119">119</a>                 modelPublisher.setMaxTmodels(apiPublisher.getMaxTModels());
<a class="jxr_linenumber" name="L120" href="#L120">120</a>                 mapPublisherSignatures(apiPublisher.getSignature(), modelPublisher);
<a class="jxr_linenumber" name="L121" href="#L121">121</a>         }
<a class="jxr_linenumber" name="L122" href="#L122">122</a> 
<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L124" href="#L124">124</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L125" href="#L125">125</a> <em class="jxr_javadoccomment">         * @param apiBusinessEntity</em>
<a class="jxr_linenumber" name="L126" href="#L126">126</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L128" href="#L128">128</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L129" href="#L129">129</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessEntity(org.uddi.api_v3.BusinessEntity apiBusinessEntity,
<a class="jxr_linenumber" name="L130" href="#L130">130</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L131" href="#L131">131</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L132" href="#L132">132</a> 
<a class="jxr_linenumber" name="L133" href="#L133">133</a>                 modelBusinessEntity.setEntityKey(apiBusinessEntity.getBusinessKey());
<a class="jxr_linenumber" name="L134" href="#L134">134</a> 
<a class="jxr_linenumber" name="L135" href="#L135">135</a>                 mapBusinessNames(apiBusinessEntity.getName(), modelBusinessEntity.getBusinessNames(), modelBusinessEntity);
<a class="jxr_linenumber" name="L136" href="#L136">136</a>                 mapBusinessDescriptions(apiBusinessEntity.getDescription(), modelBusinessEntity.getBusinessDescrs(), modelBusinessEntity);
<a class="jxr_linenumber" name="L137" href="#L137">137</a>                 mapDiscoveryUrls(apiBusinessEntity.getDiscoveryURLs(), modelBusinessEntity.getDiscoveryUrls(), modelBusinessEntity);
<a class="jxr_linenumber" name="L138" href="#L138">138</a>                 mapContacts(apiBusinessEntity.getContacts(), modelBusinessEntity.getContacts(), modelBusinessEntity);
<a class="jxr_linenumber" name="L139" href="#L139">139</a>                 mapBusinessIdentifiers(apiBusinessEntity.getIdentifierBag(), modelBusinessEntity.getBusinessIdentifiers(), modelBusinessEntity);
<a class="jxr_linenumber" name="L140" href="#L140">140</a>                 <strong class="jxr_keyword">if</strong> (apiBusinessEntity.getCategoryBag() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L141" href="#L141">141</a>                         modelBusinessEntity.setCategoryBag(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessCategoryBag(modelBusinessEntity));
<a class="jxr_linenumber" name="L142" href="#L142">142</a>                         mapCategoryBag(apiBusinessEntity.getCategoryBag(), modelBusinessEntity.getCategoryBag());
<a class="jxr_linenumber" name="L143" href="#L143">143</a>                 }
<a class="jxr_linenumber" name="L144" href="#L144">144</a> 
<a class="jxr_linenumber" name="L145" href="#L145">145</a>                 mapBusinessServices(apiBusinessEntity.getBusinessServices(),
<a class="jxr_linenumber" name="L146" href="#L146">146</a>                         modelBusinessEntity.getBusinessServices(),
<a class="jxr_linenumber" name="L147" href="#L147">147</a>                         modelBusinessEntity.getServiceProjections(),
<a class="jxr_linenumber" name="L148" href="#L148">148</a>                         modelBusinessEntity);
<a class="jxr_linenumber" name="L149" href="#L149">149</a> 
<a class="jxr_linenumber" name="L150" href="#L150">150</a>                 mapBusinessSignature(apiBusinessEntity.getSignature(), modelBusinessEntity);
<a class="jxr_linenumber" name="L151" href="#L151">151</a>         }
<a class="jxr_linenumber" name="L152" href="#L152">152</a> 
<a class="jxr_linenumber" name="L153" href="#L153">153</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> List&lt;Signature&gt; mapApiSignaturesToModelSignatures(List&lt;org.w3._2000._09.xmldsig_.SignatureType&gt; apiSignatures)
<a class="jxr_linenumber" name="L154" href="#L154">154</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L155" href="#L155">155</a>                 List&lt;Signature&gt; modelSignatures = <strong class="jxr_keyword">new</strong> ArrayList&lt;Signature&gt;();
<a class="jxr_linenumber" name="L156" href="#L156">156</a>                 modelSignatures.clear();
<a class="jxr_linenumber" name="L157" href="#L157">157</a>                 <strong class="jxr_keyword">for</strong> (org.w3._2000._09.xmldsig_.SignatureType signatureType : apiSignatures) {
<a class="jxr_linenumber" name="L158" href="#L158">158</a>                         <a href="../../../../org/apache/juddi/model/Signature.html">Signature</a> modelSignature = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/Signature.html">Signature</a>();
<a class="jxr_linenumber" name="L159" href="#L159">159</a> 
<a class="jxr_linenumber" name="L160" href="#L160">160</a>                         org.w3._2000._09.xmldsig_.SignedInfoType apiSignedInfo = signatureType.getSignedInfo();
<a class="jxr_linenumber" name="L161" href="#L161">161</a>                         <a href="../../../../org/apache/juddi/model/SignedInfo.html">SignedInfo</a> modelSignedInfo = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/SignedInfo.html">SignedInfo</a>();
<a class="jxr_linenumber" name="L162" href="#L162">162</a>                         modelSignature.setSignedInfo(modelSignedInfo);
<a class="jxr_linenumber" name="L163" href="#L163">163</a> 
<a class="jxr_linenumber" name="L164" href="#L164">164</a>                         String canonicalizationAlgMethod = apiSignedInfo.getCanonicalizationMethod().getAlgorithm();
<a class="jxr_linenumber" name="L165" href="#L165">165</a>                         <a href="../../../../org/apache/juddi/model/CanonicalizationMethod.html">CanonicalizationMethod</a> modelCanonMethod = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/CanonicalizationMethod.html">CanonicalizationMethod</a>();
<a class="jxr_linenumber" name="L166" href="#L166">166</a>                         modelSignedInfo.setCanonicalizationMethod(modelCanonMethod);
<a class="jxr_linenumber" name="L167" href="#L167">167</a>                         modelCanonMethod.setAlgorithm(canonicalizationAlgMethod);
<a class="jxr_linenumber" name="L168" href="#L168">168</a> 
<a class="jxr_linenumber" name="L169" href="#L169">169</a>                         <a href="../../../../org/apache/juddi/model/SignatureMethod.html">SignatureMethod</a> modelSigMethod = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/SignatureMethod.html">SignatureMethod</a>();
<a class="jxr_linenumber" name="L170" href="#L170">170</a>                         modelSignedInfo.setSignatureMethod(modelSigMethod);
<a class="jxr_linenumber" name="L171" href="#L171">171</a>                         String sigMethod = apiSignedInfo.getSignatureMethod().getAlgorithm();
<a class="jxr_linenumber" name="L172" href="#L172">172</a>                         modelSigMethod.setAlgorithm(sigMethod);
<a class="jxr_linenumber" name="L173" href="#L173">173</a> 
<a class="jxr_linenumber" name="L174" href="#L174">174</a>                         List&lt;org.w3._2000._09.xmldsig_.ReferenceType&gt; apiReferenceList = apiSignedInfo.getReference();
<a class="jxr_linenumber" name="L175" href="#L175">175</a>                         <strong class="jxr_keyword">for</strong> (org.w3._2000._09.xmldsig_.ReferenceType apiReference : apiReferenceList) {
<a class="jxr_linenumber" name="L176" href="#L176">176</a>                                 <a href="../../../../org/apache/juddi/model/Reference.html">Reference</a> ref = mapReference(modelSignedInfo, apiReference);
<a class="jxr_linenumber" name="L177" href="#L177">177</a>                                 modelSignedInfo.getReference().add(ref);
<a class="jxr_linenumber" name="L178" href="#L178">178</a>                         }
<a class="jxr_linenumber" name="L179" href="#L179">179</a> 
<a class="jxr_linenumber" name="L180" href="#L180">180</a>                         modelSignedInfo.setCanonicalizationMethod(modelCanonMethod);
<a class="jxr_linenumber" name="L181" href="#L181">181</a> 
<a class="jxr_linenumber" name="L182" href="#L182">182</a>                         org.w3._2000._09.xmldsig_.SignatureValueType apiSignatureValue = signatureType.getSignatureValue();
<a class="jxr_linenumber" name="L183" href="#L183">183</a>                         <a href="../../../../org/apache/juddi/model/SignatureValue.html">SignatureValue</a> modelSignatureValue = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/SignatureValue.html">SignatureValue</a>();
<a class="jxr_linenumber" name="L184" href="#L184">184</a>                         byte[] signatureValueBytes = apiSignatureValue.getValue();
<a class="jxr_linenumber" name="L185" href="#L185">185</a>                         String signatureValueXmlID = apiSignatureValue.getId();
<a class="jxr_linenumber" name="L186" href="#L186">186</a>                         modelSignatureValue.setValue(signatureValueBytes);
<a class="jxr_linenumber" name="L187" href="#L187">187</a>                         modelSignatureValue.setXmlID(signatureValueXmlID);
<a class="jxr_linenumber" name="L188" href="#L188">188</a>                         modelSignature.setSignatureValue(modelSignatureValue);
<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
<a class="jxr_linenumber" name="L190" href="#L190">190</a>                         org.w3._2000._09.xmldsig_.KeyInfoType apiKeyInfo = signatureType.getKeyInfo();
<a class="jxr_linenumber" name="L191" href="#L191">191</a>                         String apiKeyInfoXmlID = apiKeyInfo.getId();
<a class="jxr_linenumber" name="L192" href="#L192">192</a>                         <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a> modelKeyInfo = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a>();
<a class="jxr_linenumber" name="L193" href="#L193">193</a>                         modelSignature.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L194" href="#L194">194</a>                         modelKeyInfo.setXmlID(apiKeyInfoXmlID);
<a class="jxr_linenumber" name="L195" href="#L195">195</a> 
<a class="jxr_linenumber" name="L196" href="#L196">196</a>                         List&lt;Object&gt; apiKeyInfoContentList = apiKeyInfo.getContent();
<a class="jxr_linenumber" name="L197" href="#L197">197</a>                         List&lt;KeyDataValue&gt; keyInfoDataValues = modelKeyInfo.getKeyDataValue();
<a class="jxr_linenumber" name="L198" href="#L198">198</a>                         <strong class="jxr_keyword">for</strong> (Object apiKeyInfoContentObj : apiKeyInfoContentList) {
<a class="jxr_linenumber" name="L199" href="#L199">199</a>                                 <strong class="jxr_keyword">if</strong> (apiKeyInfoContentObj instanceof JAXBElement) {
<a class="jxr_linenumber" name="L200" href="#L200">200</a>                                         JAXBElement apiKeyInfoContentJAXB = (JAXBElement) apiKeyInfoContentObj;
<a class="jxr_linenumber" name="L201" href="#L201">201</a>                                         String apiKeyInfoContentTagName = apiKeyInfoContentJAXB.getName().getLocalPart();
<a class="jxr_linenumber" name="L202" href="#L202">202</a>                                         <strong class="jxr_keyword">if</strong> (apiKeyInfoContentJAXB.getValue() instanceof X509DataType) {
<a class="jxr_linenumber" name="L203" href="#L203">203</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelX509KeyData = mapX509DataType(apiKeyInfoContentJAXB, modelKeyInfo);
<a class="jxr_linenumber" name="L204" href="#L204">204</a>                                                 keyInfoDataValues.add(modelX509KeyData);
<a class="jxr_linenumber" name="L205" href="#L205">205</a>                                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (apiKeyInfoContentTagName.equals(<span class="jxr_string">"KeyName"</span>)) {
<a class="jxr_linenumber" name="L206" href="#L206">206</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelKeyNameKDV = mapKeyName(apiKeyInfoContentJAXB);
<a class="jxr_linenumber" name="L207" href="#L207">207</a>                                                 modelKeyNameKDV.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L208" href="#L208">208</a>                                                 keyInfoDataValues.add(modelKeyNameKDV);
<a class="jxr_linenumber" name="L209" href="#L209">209</a>                                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (apiKeyInfoContentTagName.equals(<span class="jxr_string">"KeyValue"</span>)) {
<a class="jxr_linenumber" name="L210" href="#L210">210</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelKeyValueKDV = mapKeyValue(apiKeyInfoContentJAXB, keyInfoDataValues);
<a class="jxr_linenumber" name="L211" href="#L211">211</a>                                                 modelKeyValueKDV.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L212" href="#L212">212</a>                                                 keyInfoDataValues.add(modelKeyValueKDV);
<a class="jxr_linenumber" name="L213" href="#L213">213</a>                                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (apiKeyInfoContentTagName.equals(<span class="jxr_string">"MgmtData"</span>)) {
<a class="jxr_linenumber" name="L214" href="#L214">214</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelKeyValueKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L215" href="#L215">215</a>                                                 modelKeyValueKDV.setKeyDataName(apiKeyInfoContentTagName);
<a class="jxr_linenumber" name="L216" href="#L216">216</a>                                                 modelKeyValueKDV.setKeyDataType(<span class="jxr_string">"String"</span>);
<a class="jxr_linenumber" name="L217" href="#L217">217</a>                                                 modelKeyValueKDV.setKeyDataValueString((String) apiKeyInfoContentJAXB.getValue());
<a class="jxr_linenumber" name="L218" href="#L218">218</a>                                                 modelKeyValueKDV.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L219" href="#L219">219</a>                                                 keyInfoDataValues.add(modelKeyValueKDV);
<a class="jxr_linenumber" name="L220" href="#L220">220</a>                                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (apiKeyInfoContentTagName.equals(<span class="jxr_string">"RetrievalMethod"</span>)) {
<a class="jxr_linenumber" name="L221" href="#L221">221</a>                                                 RetrievalMethodType retrievalMethodType = (RetrievalMethodType) apiKeyInfoContentJAXB.getValue();
<a class="jxr_linenumber" name="L222" href="#L222">222</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> retrievalMethodTypeKDV = mapRetrievalMethod(apiKeyInfoContentTagName, modelKeyInfo, retrievalMethodType);
<a class="jxr_linenumber" name="L223" href="#L223">223</a>                                                 keyInfoDataValues.add(retrievalMethodTypeKDV);
<a class="jxr_linenumber" name="L224" href="#L224">224</a>                                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (apiKeyInfoContentTagName.equals(<span class="jxr_string">"PGPData"</span>)) {
<a class="jxr_linenumber" name="L225" href="#L225">225</a>                                                 PGPDataType pgpDataType = (PGPDataType) apiKeyInfoContentJAXB.getValue();
<a class="jxr_linenumber" name="L226" href="#L226">226</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> pgpDataTypeKDV = mapPGPDataType(apiKeyInfoContentTagName, modelKeyInfo, pgpDataType);
<a class="jxr_linenumber" name="L227" href="#L227">227</a>                                                 keyInfoDataValues.add(pgpDataTypeKDV);
<a class="jxr_linenumber" name="L228" href="#L228">228</a>                                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (apiKeyInfoContentTagName.equals(<span class="jxr_string">"SPKIData"</span>)) {
<a class="jxr_linenumber" name="L229" href="#L229">229</a>                                                 SPKIDataType spkiDataType = (SPKIDataType) apiKeyInfoContentJAXB.getValue();
<a class="jxr_linenumber" name="L230" href="#L230">230</a>                                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> spkiDataTypeKDV = mapSPKIDataType(apiKeyInfoContentTagName, modelKeyInfo, spkiDataType);
<a class="jxr_linenumber" name="L231" href="#L231">231</a>                                                 keyInfoDataValues.add(spkiDataTypeKDV);
<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">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Unrecognized tag: "</span> + apiKeyInfoContentTagName + <span class="jxr_string">" type: "</span> + apiKeyInfoContentJAXB.getValue().getClass().getCanonicalName());
<a class="jxr_linenumber" name="L234" href="#L234">234</a>                                         }
<a class="jxr_linenumber" name="L235" href="#L235">235</a>                                 }
<a class="jxr_linenumber" name="L236" href="#L236">236</a>                         }
<a class="jxr_linenumber" name="L237" href="#L237">237</a> 
<a class="jxr_linenumber" name="L238" href="#L238">238</a>                         modelSignatures.add(modelSignature);
<a class="jxr_linenumber" name="L239" href="#L239">239</a>                 }
<a class="jxr_linenumber" name="L240" href="#L240">240</a>                 <strong class="jxr_keyword">return</strong> modelSignatures;
<a class="jxr_linenumber" name="L241" href="#L241">241</a>         }
<a class="jxr_linenumber" name="L242" href="#L242">242</a> 
<a class="jxr_linenumber" name="L243" href="#L243">243</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">         * @param apiSignatures</em>
<a class="jxr_linenumber" name="L246" href="#L246">246</a> <em class="jxr_javadoccomment">         * @param modelBusinessService</em>
<a class="jxr_linenumber" name="L247" href="#L247">247</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L248" href="#L248">248</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L249" href="#L249">249</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessServiceSignature(List&lt;org.w3._2000._09.xmldsig_.SignatureType&gt; apiSignatures, <a href="../../../../org/apache/juddi/model/BusinessService.html">BusinessService</a> modelBusinessService)
<a class="jxr_linenumber" name="L250" href="#L250">250</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L251" href="#L251">251</a>                 List&lt;Signature&gt; modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
<a class="jxr_linenumber" name="L252" href="#L252">252</a>                 <strong class="jxr_keyword">for</strong> (Signature modelSignature : modelSignatures) {
<a class="jxr_linenumber" name="L253" href="#L253">253</a>                         modelSignature.setBusinessService(modelBusinessService);
<a class="jxr_linenumber" name="L254" href="#L254">254</a>                 }
<a class="jxr_linenumber" name="L255" href="#L255">255</a>                 modelBusinessService.setSignatures(modelSignatures);
<a class="jxr_linenumber" name="L256" href="#L256">256</a>         }
<a class="jxr_linenumber" name="L257" href="#L257">257</a> 
<a class="jxr_linenumber" name="L258" href="#L258">258</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L259" href="#L259">259</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L260" href="#L260">260</a> <em class="jxr_javadoccomment">         * @param apiSignatures</em>
<a class="jxr_linenumber" name="L261" href="#L261">261</a> <em class="jxr_javadoccomment">         * @param modelTmodel</em>
<a class="jxr_linenumber" name="L262" href="#L262">262</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L263" href="#L263">263</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L264" href="#L264">264</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTmodelSignatures(List&lt;org.w3._2000._09.xmldsig_.SignatureType&gt; apiSignatures, <a href="../../../../org/apache/juddi/model/Tmodel.html">Tmodel</a> modelTmodel)
<a class="jxr_linenumber" name="L265" href="#L265">265</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L266" href="#L266">266</a>                 List&lt;Signature&gt; modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
<a class="jxr_linenumber" name="L267" href="#L267">267</a>                 <strong class="jxr_keyword">for</strong> (Signature modelSignature : modelSignatures) {
<a class="jxr_linenumber" name="L268" href="#L268">268</a>                         modelSignature.setTmodel(modelTmodel);
<a class="jxr_linenumber" name="L269" href="#L269">269</a>                 }
<a class="jxr_linenumber" name="L270" href="#L270">270</a>                 modelTmodel.setSignatures(modelSignatures);
<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>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L274" href="#L274">274</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L275" href="#L275">275</a> <em class="jxr_javadoccomment">         * @param apiSignatures</em>
<a class="jxr_linenumber" name="L276" href="#L276">276</a> <em class="jxr_javadoccomment">         * @param modelBindingTemplate</em>
<a class="jxr_linenumber" name="L277" href="#L277">277</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L278" href="#L278">278</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L279" href="#L279">279</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBindingTemplateSignatures(List&lt;org.w3._2000._09.xmldsig_.SignatureType&gt; apiSignatures, <a href="../../../../org/apache/juddi/model/BindingTemplate.html">BindingTemplate</a> modelBindingTemplate)
<a class="jxr_linenumber" name="L280" href="#L280">280</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L281" href="#L281">281</a>                 List&lt;Signature&gt; modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
<a class="jxr_linenumber" name="L282" href="#L282">282</a>                 <strong class="jxr_keyword">for</strong> (Signature modelSignature : modelSignatures) {
<a class="jxr_linenumber" name="L283" href="#L283">283</a>                         modelSignature.setBindingTemplate(modelBindingTemplate);
<a class="jxr_linenumber" name="L284" href="#L284">284</a>                 }
<a class="jxr_linenumber" name="L285" href="#L285">285</a>                 modelBindingTemplate.setSignatures(modelSignatures);
<a class="jxr_linenumber" name="L286" href="#L286">286</a>         }
<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
<a class="jxr_linenumber" name="L288" href="#L288">288</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L289" href="#L289">289</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L290" href="#L290">290</a> <em class="jxr_javadoccomment">         * @param apiSignatures</em>
<a class="jxr_linenumber" name="L291" href="#L291">291</a> <em class="jxr_javadoccomment">         * @param modelPublisher</em>
<a class="jxr_linenumber" name="L292" href="#L292">292</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L293" href="#L293">293</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L294" href="#L294">294</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapPublisherSignatures(List&lt;org.w3._2000._09.xmldsig_.SignatureType&gt; apiSignatures, <a href="../../../../org/apache/juddi/model/Publisher.html">Publisher</a> modelPublisher)
<a class="jxr_linenumber" name="L295" href="#L295">295</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L296" href="#L296">296</a>                 List&lt;Signature&gt; modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
<a class="jxr_linenumber" name="L297" href="#L297">297</a>                 <strong class="jxr_keyword">for</strong> (Signature modelSignature : modelSignatures) {
<a class="jxr_linenumber" name="L298" href="#L298">298</a>                         modelSignature.setPublisher(modelPublisher);
<a class="jxr_linenumber" name="L299" href="#L299">299</a>                 }
<a class="jxr_linenumber" name="L300" href="#L300">300</a>                 modelPublisher.setSignatures(modelSignatures);
<a class="jxr_linenumber" name="L301" href="#L301">301</a>         }
<a class="jxr_linenumber" name="L302" href="#L302">302</a> 
<a class="jxr_linenumber" name="L303" href="#L303">303</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L304" href="#L304">304</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L305" href="#L305">305</a> <em class="jxr_javadoccomment">         * @param apiSignatures</em>
<a class="jxr_linenumber" name="L306" href="#L306">306</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L307" href="#L307">307</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L308" href="#L308">308</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L309" href="#L309">309</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessSignature(List&lt;org.w3._2000._09.xmldsig_.SignatureType&gt; apiSignatures,
<a class="jxr_linenumber" name="L310" href="#L310">310</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L311" href="#L311">311</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L312" href="#L312">312</a>                 List&lt;Signature&gt; modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
<a class="jxr_linenumber" name="L313" href="#L313">313</a>                 <strong class="jxr_keyword">for</strong> (Signature modelSignature : modelSignatures) {
<a class="jxr_linenumber" name="L314" href="#L314">314</a>                         modelSignature.setBusinessEntity(modelBusinessEntity);
<a class="jxr_linenumber" name="L315" href="#L315">315</a>                 }
<a class="jxr_linenumber" name="L316" href="#L316">316</a>                 modelBusinessEntity.setSignatures(modelSignatures);
<a class="jxr_linenumber" name="L317" href="#L317">317</a>         }
<a class="jxr_linenumber" name="L318" href="#L318">318</a> 
<a class="jxr_linenumber" name="L319" href="#L319">319</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">         * @param apiNameList</em>
<a class="jxr_linenumber" name="L322" href="#L322">322</a> <em class="jxr_javadoccomment">         * @param modelNameList</em>
<a class="jxr_linenumber" name="L323" href="#L323">323</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L324" href="#L324">324</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L325" href="#L325">325</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L326" href="#L326">326</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessNames(List&lt;org.uddi.api_v3.Name&gt; apiNameList,
<a class="jxr_linenumber" name="L327" href="#L327">327</a>                 List&lt;org.apache.juddi.model.BusinessName&gt; modelNameList,
<a class="jxr_linenumber" name="L328" href="#L328">328</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L329" href="#L329">329</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L330" href="#L330">330</a>                 modelNameList.clear();
<a class="jxr_linenumber" name="L331" href="#L331">331</a> 
<a class="jxr_linenumber" name="L332" href="#L332">332</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Name apiName : apiNameList) {
<a class="jxr_linenumber" name="L333" href="#L333">333</a>                         modelNameList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessName(modelBusinessEntity, apiName.getLang(), apiName.getValue()));
<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> 
<a class="jxr_linenumber" name="L337" href="#L337">337</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L338" href="#L338">338</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L339" href="#L339">339</a> <em class="jxr_javadoccomment">         * @param apiDescList</em>
<a class="jxr_linenumber" name="L340" href="#L340">340</a> <em class="jxr_javadoccomment">         * @param modelDescList</em>
<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L344" href="#L344">344</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessDescriptions(List&lt;org.uddi.api_v3.Description&gt; apiDescList,
<a class="jxr_linenumber" name="L345" href="#L345">345</a>                 List&lt;org.apache.juddi.model.BusinessDescr&gt; modelDescList,
<a class="jxr_linenumber" name="L346" href="#L346">346</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L347" href="#L347">347</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L348" href="#L348">348</a>                 modelDescList.clear();
<a class="jxr_linenumber" name="L349" href="#L349">349</a> 
<a class="jxr_linenumber" name="L350" href="#L350">350</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : apiDescList) {
<a class="jxr_linenumber" name="L351" href="#L351">351</a>                         modelDescList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessDescr(modelBusinessEntity, apiDesc.getLang(), apiDesc.getValue()));
<a class="jxr_linenumber" name="L352" href="#L352">352</a>                 }
<a class="jxr_linenumber" name="L353" href="#L353">353</a>         }
<a class="jxr_linenumber" name="L354" href="#L354">354</a> 
<a class="jxr_linenumber" name="L355" href="#L355">355</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L356" href="#L356">356</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L357" href="#L357">357</a> <em class="jxr_javadoccomment">         * @param apiDiscUrls</em>
<a class="jxr_linenumber" name="L358" href="#L358">358</a> <em class="jxr_javadoccomment">         * @param modelDiscUrlList</em>
<a class="jxr_linenumber" name="L359" href="#L359">359</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L360" href="#L360">360</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L361" href="#L361">361</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L362" href="#L362">362</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapDiscoveryUrls(org.uddi.api_v3.DiscoveryURLs apiDiscUrls,
<a class="jxr_linenumber" name="L363" href="#L363">363</a>                 List&lt;org.apache.juddi.model.DiscoveryUrl&gt; modelDiscUrlList,
<a class="jxr_linenumber" name="L364" href="#L364">364</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L365" href="#L365">365</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L366" href="#L366">366</a>                 modelDiscUrlList.clear();
<a class="jxr_linenumber" name="L367" href="#L367">367</a> 
<a class="jxr_linenumber" name="L368" href="#L368">368</a>                 <strong class="jxr_keyword">if</strong> (apiDiscUrls != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L369" href="#L369">369</a>                         List&lt;org.uddi.api_v3.DiscoveryURL&gt; apiDiscUrlList = apiDiscUrls.getDiscoveryURL();
<a class="jxr_linenumber" name="L370" href="#L370">370</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.DiscoveryURL apiDiscUrl : apiDiscUrlList) {
<a class="jxr_linenumber" name="L371" href="#L371">371</a>                                 modelDiscUrlList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.DiscoveryUrl(modelBusinessEntity, apiDiscUrl.getUseType(), apiDiscUrl.getValue()));
<a class="jxr_linenumber" name="L372" href="#L372">372</a>                         }
<a class="jxr_linenumber" name="L373" href="#L373">373</a>                 }
<a class="jxr_linenumber" name="L374" href="#L374">374</a>         }
<a class="jxr_linenumber" name="L375" href="#L375">375</a> 
<a class="jxr_linenumber" name="L376" href="#L376">376</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em class="jxr_javadoccomment">         * @param apiContacts</em>
<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em class="jxr_javadoccomment">         * @param modelContactList</em>
<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L381" href="#L381">381</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L382" href="#L382">382</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L383" href="#L383">383</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapContacts(org.uddi.api_v3.Contacts apiContacts,
<a class="jxr_linenumber" name="L384" href="#L384">384</a>                 List&lt;org.apache.juddi.model.Contact&gt; modelContactList,
<a class="jxr_linenumber" name="L385" href="#L385">385</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L386" href="#L386">386</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L387" href="#L387">387</a>                 modelContactList.clear();
<a class="jxr_linenumber" name="L388" href="#L388">388</a> 
<a class="jxr_linenumber" name="L389" href="#L389">389</a>                 <strong class="jxr_keyword">if</strong> (apiContacts != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L390" href="#L390">390</a>                         List&lt;org.uddi.api_v3.Contact&gt; apiContactList = apiContacts.getContact();
<a class="jxr_linenumber" name="L391" href="#L391">391</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Contact apiContact : apiContactList) {
<a class="jxr_linenumber" name="L392" href="#L392">392</a>                                 org.apache.juddi.model.Contact modelContact = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Contact(modelBusinessEntity);
<a class="jxr_linenumber" name="L393" href="#L393">393</a>                                 modelContact.setUseType(apiContact.getUseType());
<a class="jxr_linenumber" name="L394" href="#L394">394</a> 
<a class="jxr_linenumber" name="L395" href="#L395">395</a>                                 mapPersonNames(apiContact.getPersonName(), modelContact.getPersonNames(), modelContact, modelBusinessEntity.getEntityKey());
<a class="jxr_linenumber" name="L396" href="#L396">396</a>                                 mapContactDescriptions(apiContact.getDescription(), modelContact.getContactDescrs(), modelContact, modelBusinessEntity.getEntityKey());
<a class="jxr_linenumber" name="L397" href="#L397">397</a>                                 mapContactEmails(apiContact.getEmail(), modelContact.getEmails(), modelContact, modelBusinessEntity.getEntityKey());
<a class="jxr_linenumber" name="L398" href="#L398">398</a>                                 mapContactPhones(apiContact.getPhone(), modelContact.getPhones(), modelContact, modelBusinessEntity.getEntityKey());
<a class="jxr_linenumber" name="L399" href="#L399">399</a>                                 mapContactAddresses(apiContact.getAddress(), modelContact.getAddresses(), modelContact);
<a class="jxr_linenumber" name="L400" href="#L400">400</a> 
<a class="jxr_linenumber" name="L401" href="#L401">401</a>                                 modelContactList.add(modelContact);
<a class="jxr_linenumber" name="L402" href="#L402">402</a>                         }
<a class="jxr_linenumber" name="L403" href="#L403">403</a>                 }
<a class="jxr_linenumber" name="L404" href="#L404">404</a>         }
<a class="jxr_linenumber" name="L405" href="#L405">405</a> 
<a class="jxr_linenumber" name="L406" href="#L406">406</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L407" href="#L407">407</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L408" href="#L408">408</a> <em class="jxr_javadoccomment">         * @param apiDescList</em>
<a class="jxr_linenumber" name="L409" href="#L409">409</a> <em class="jxr_javadoccomment">         * @param modelDescList</em>
<a class="jxr_linenumber" name="L410" href="#L410">410</a> <em class="jxr_javadoccomment">         * @param modelContact</em>
<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">         * @param businessKey</em>
<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L414" href="#L414">414</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapContactDescriptions(List&lt;org.uddi.api_v3.Description&gt; apiDescList,
<a class="jxr_linenumber" name="L415" href="#L415">415</a>                 List&lt;org.apache.juddi.model.ContactDescr&gt; modelDescList,
<a class="jxr_linenumber" name="L416" href="#L416">416</a>                 org.apache.juddi.model.Contact modelContact,
<a class="jxr_linenumber" name="L417" href="#L417">417</a>                 String businessKey)
<a class="jxr_linenumber" name="L418" href="#L418">418</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L419" href="#L419">419</a>                 modelDescList.clear();
<a class="jxr_linenumber" name="L420" href="#L420">420</a> 
<a class="jxr_linenumber" name="L421" href="#L421">421</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : apiDescList) {
<a class="jxr_linenumber" name="L422" href="#L422">422</a>                         modelDescList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.ContactDescr(modelContact, apiDesc.getLang(), apiDesc.getValue()));
<a class="jxr_linenumber" name="L423" href="#L423">423</a>                 }
<a class="jxr_linenumber" name="L424" href="#L424">424</a>         }
<a class="jxr_linenumber" name="L425" href="#L425">425</a> 
<a class="jxr_linenumber" name="L426" href="#L426">426</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L427" href="#L427">427</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L428" href="#L428">428</a> <em class="jxr_javadoccomment">         * @param apiPersonNameList</em>
<a class="jxr_linenumber" name="L429" href="#L429">429</a> <em class="jxr_javadoccomment">         * @param modelPersonNameList</em>
<a class="jxr_linenumber" name="L430" href="#L430">430</a> <em class="jxr_javadoccomment">         * @param modelContact</em>
<a class="jxr_linenumber" name="L431" href="#L431">431</a> <em class="jxr_javadoccomment">         * @param businessKey</em>
<a class="jxr_linenumber" name="L432" href="#L432">432</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L433" href="#L433">433</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L434" href="#L434">434</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapPersonNames(List&lt;org.uddi.api_v3.PersonName&gt; apiPersonNameList,
<a class="jxr_linenumber" name="L435" href="#L435">435</a>                 List&lt;org.apache.juddi.model.PersonName&gt; modelPersonNameList,
<a class="jxr_linenumber" name="L436" href="#L436">436</a>                 org.apache.juddi.model.Contact modelContact,
<a class="jxr_linenumber" name="L437" href="#L437">437</a>                 String businessKey)
<a class="jxr_linenumber" name="L438" href="#L438">438</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L439" href="#L439">439</a>                 modelPersonNameList.clear();
<a class="jxr_linenumber" name="L440" href="#L440">440</a> 
<a class="jxr_linenumber" name="L441" href="#L441">441</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.PersonName apiPersonName : apiPersonNameList) {
<a class="jxr_linenumber" name="L442" href="#L442">442</a>                         modelPersonNameList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.PersonName(modelContact, apiPersonName.getLang(), apiPersonName.getValue()));
<a class="jxr_linenumber" name="L443" href="#L443">443</a>                 }
<a class="jxr_linenumber" name="L444" href="#L444">444</a>         }
<a class="jxr_linenumber" name="L445" href="#L445">445</a> 
<a class="jxr_linenumber" name="L446" href="#L446">446</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L447" href="#L447">447</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L448" href="#L448">448</a> <em class="jxr_javadoccomment">         * @param apiEmailList</em>
<a class="jxr_linenumber" name="L449" href="#L449">449</a> <em class="jxr_javadoccomment">         * @param modelEmailList</em>
<a class="jxr_linenumber" name="L450" href="#L450">450</a> <em class="jxr_javadoccomment">         * @param modelContact</em>
<a class="jxr_linenumber" name="L451" href="#L451">451</a> <em class="jxr_javadoccomment">         * @param businessKey</em>
<a class="jxr_linenumber" name="L452" href="#L452">452</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L453" href="#L453">453</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L454" href="#L454">454</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapContactEmails(List&lt;org.uddi.api_v3.Email&gt; apiEmailList,
<a class="jxr_linenumber" name="L455" href="#L455">455</a>                 List&lt;org.apache.juddi.model.Email&gt; modelEmailList,
<a class="jxr_linenumber" name="L456" href="#L456">456</a>                 org.apache.juddi.model.Contact modelContact,
<a class="jxr_linenumber" name="L457" href="#L457">457</a>                 String businessKey)
<a class="jxr_linenumber" name="L458" href="#L458">458</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L459" href="#L459">459</a>                 modelEmailList.clear();
<a class="jxr_linenumber" name="L460" href="#L460">460</a> 
<a class="jxr_linenumber" name="L461" href="#L461">461</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Email apiEmail : apiEmailList) {
<a class="jxr_linenumber" name="L462" href="#L462">462</a>                         modelEmailList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.Email(modelContact, apiEmail.getUseType(), apiEmail.getValue()));
<a class="jxr_linenumber" name="L463" href="#L463">463</a>                 }
<a class="jxr_linenumber" name="L464" href="#L464">464</a>         }
<a class="jxr_linenumber" name="L465" href="#L465">465</a> 
<a class="jxr_linenumber" name="L466" href="#L466">466</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L467" href="#L467">467</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L468" href="#L468">468</a> <em class="jxr_javadoccomment">         * @param apiPhoneList</em>
<a class="jxr_linenumber" name="L469" href="#L469">469</a> <em class="jxr_javadoccomment">         * @param modelPhoneList</em>
<a class="jxr_linenumber" name="L470" href="#L470">470</a> <em class="jxr_javadoccomment">         * @param modelContact</em>
<a class="jxr_linenumber" name="L471" href="#L471">471</a> <em class="jxr_javadoccomment">         * @param businessKey</em>
<a class="jxr_linenumber" name="L472" href="#L472">472</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L473" href="#L473">473</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L474" href="#L474">474</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapContactPhones(List&lt;org.uddi.api_v3.Phone&gt; apiPhoneList,
<a class="jxr_linenumber" name="L475" href="#L475">475</a>                 List&lt;org.apache.juddi.model.Phone&gt; modelPhoneList,
<a class="jxr_linenumber" name="L476" href="#L476">476</a>                 org.apache.juddi.model.Contact modelContact,
<a class="jxr_linenumber" name="L477" href="#L477">477</a>                 String businessKey)
<a class="jxr_linenumber" name="L478" href="#L478">478</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L479" href="#L479">479</a>                 modelPhoneList.clear();
<a class="jxr_linenumber" name="L480" href="#L480">480</a> 
<a class="jxr_linenumber" name="L481" href="#L481">481</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Phone apiPhone : apiPhoneList) {
<a class="jxr_linenumber" name="L482" href="#L482">482</a>                         modelPhoneList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.Phone(modelContact, apiPhone.getUseType(), apiPhone.getValue()));
<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>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L487" href="#L487">487</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L488" href="#L488">488</a> <em class="jxr_javadoccomment">         * @param apiAddressList</em>
<a class="jxr_linenumber" name="L489" href="#L489">489</a> <em class="jxr_javadoccomment">         * @param modelAddressList</em>
<a class="jxr_linenumber" name="L490" href="#L490">490</a> <em class="jxr_javadoccomment">         * @param modelContact</em>
<a class="jxr_linenumber" name="L491" href="#L491">491</a> <em class="jxr_javadoccomment">         * @param businessKey</em>
<a class="jxr_linenumber" name="L492" href="#L492">492</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L493" href="#L493">493</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L494" href="#L494">494</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapContactAddresses(List&lt;org.uddi.api_v3.Address&gt; apiAddressList,
<a class="jxr_linenumber" name="L495" href="#L495">495</a>                 List&lt;org.apache.juddi.model.Address&gt; modelAddressList,
<a class="jxr_linenumber" name="L496" href="#L496">496</a>                 org.apache.juddi.model.Contact modelContact
<a class="jxr_linenumber" name="L497" href="#L497">497</a>         )
<a class="jxr_linenumber" name="L498" href="#L498">498</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L499" href="#L499">499</a>                 modelAddressList.clear();
<a class="jxr_linenumber" name="L500" href="#L500">500</a> 
<a class="jxr_linenumber" name="L501" href="#L501">501</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Address apiAddress : apiAddressList) {
<a class="jxr_linenumber" name="L502" href="#L502">502</a>                         org.apache.juddi.model.Address modelAddress = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Address(modelContact);
<a class="jxr_linenumber" name="L503" href="#L503">503</a>                         modelAddress.setSortCode(apiAddress.getSortCode());
<a class="jxr_linenumber" name="L504" href="#L504">504</a>                         modelAddress.setTmodelKey(apiAddress.getTModelKey());
<a class="jxr_linenumber" name="L505" href="#L505">505</a>                         modelAddress.setUseType(apiAddress.getUseType());
<a class="jxr_linenumber" name="L506" href="#L506">506</a> 
<a class="jxr_linenumber" name="L507" href="#L507">507</a>                         mapAddressLines(apiAddress.getAddressLine(), modelAddress.getAddressLines(), modelAddress, modelContact.getId());
<a class="jxr_linenumber" name="L508" href="#L508">508</a> 
<a class="jxr_linenumber" name="L509" href="#L509">509</a>                         modelAddressList.add(modelAddress);
<a class="jxr_linenumber" name="L510" href="#L510">510</a>                 }
<a class="jxr_linenumber" name="L511" href="#L511">511</a>         }
<a class="jxr_linenumber" name="L512" href="#L512">512</a> 
<a class="jxr_linenumber" name="L513" href="#L513">513</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L514" href="#L514">514</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L515" href="#L515">515</a> <em class="jxr_javadoccomment">         * @param apiAddressLineList</em>
<a class="jxr_linenumber" name="L516" href="#L516">516</a> <em class="jxr_javadoccomment">         * @param modelAddressLineList</em>
<a class="jxr_linenumber" name="L517" href="#L517">517</a> <em class="jxr_javadoccomment">         * @param modelAddress</em>
<a class="jxr_linenumber" name="L518" href="#L518">518</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L519" href="#L519">519</a> <em class="jxr_javadoccomment">         * @param contactId</em>
<a class="jxr_linenumber" name="L520" href="#L520">520</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L521" href="#L521">521</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L522" href="#L522">522</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapAddressLines(List&lt;org.uddi.api_v3.AddressLine&gt; apiAddressLineList,
<a class="jxr_linenumber" name="L523" href="#L523">523</a>                 List&lt;org.apache.juddi.model.AddressLine&gt; modelAddressLineList,
<a class="jxr_linenumber" name="L524" href="#L524">524</a>                 org.apache.juddi.model.Address modelAddress,
<a class="jxr_linenumber" name="L525" href="#L525">525</a>                 Long contactId)
<a class="jxr_linenumber" name="L526" href="#L526">526</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L527" href="#L527">527</a>                 modelAddressLineList.clear();
<a class="jxr_linenumber" name="L528" href="#L528">528</a> 
<a class="jxr_linenumber" name="L529" href="#L529">529</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.AddressLine apiAddressLine : apiAddressLineList) {
<a class="jxr_linenumber" name="L530" href="#L530">530</a>                         modelAddressLineList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.AddressLine(modelAddress, apiAddressLine.getValue(), apiAddressLine.getKeyName(), apiAddressLine.getKeyValue()));
<a class="jxr_linenumber" name="L531" href="#L531">531</a>                 }
<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>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L535" href="#L535">535</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L536" href="#L536">536</a> <em class="jxr_javadoccomment">         * @param apiIdentifierBag</em>
<a class="jxr_linenumber" name="L537" href="#L537">537</a> <em class="jxr_javadoccomment">         * @param modelIdentifierList</em>
<a class="jxr_linenumber" name="L538" href="#L538">538</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L539" href="#L539">539</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L540" href="#L540">540</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L541" href="#L541">541</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessIdentifiers(org.uddi.api_v3.IdentifierBag apiIdentifierBag,
<a class="jxr_linenumber" name="L542" href="#L542">542</a>                 List&lt;org.apache.juddi.model.BusinessIdentifier&gt; modelIdentifierList,
<a class="jxr_linenumber" name="L543" href="#L543">543</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L544" href="#L544">544</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L545" href="#L545">545</a>                 modelIdentifierList.clear();
<a class="jxr_linenumber" name="L546" href="#L546">546</a> 
<a class="jxr_linenumber" name="L547" href="#L547">547</a>                 <strong class="jxr_keyword">if</strong> (apiIdentifierBag != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L548" href="#L548">548</a>                         List&lt;org.uddi.api_v3.KeyedReference&gt; apiKeyedRefList = apiIdentifierBag.getKeyedReference();
<a class="jxr_linenumber" name="L549" href="#L549">549</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.KeyedReference apiKeyedRef : apiKeyedRefList) {
<a class="jxr_linenumber" name="L550" href="#L550">550</a>                                 modelIdentifierList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessIdentifier(modelBusinessEntity, apiKeyedRef.getTModelKey(), apiKeyedRef.getKeyName(), apiKeyedRef.getKeyValue()));
<a class="jxr_linenumber" name="L551" href="#L551">551</a>                         }
<a class="jxr_linenumber" name="L552" href="#L552">552</a>                 }
<a class="jxr_linenumber" name="L553" href="#L553">553</a>         }
<a class="jxr_linenumber" name="L554" href="#L554">554</a> 
<a class="jxr_linenumber" name="L555" href="#L555">555</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L556" href="#L556">556</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L557" href="#L557">557</a> <em class="jxr_javadoccomment">         * @param apiBusinessServices</em>
<a class="jxr_linenumber" name="L558" href="#L558">558</a> <em class="jxr_javadoccomment">         * @param modelBusinessServiceList</em>
<a class="jxr_linenumber" name="L559" href="#L559">559</a> <em class="jxr_javadoccomment">         * @param modelServiceProjectionList</em>
<a class="jxr_linenumber" name="L560" href="#L560">560</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L561" href="#L561">561</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L562" href="#L562">562</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L563" href="#L563">563</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessServices(org.uddi.api_v3.BusinessServices apiBusinessServices,
<a class="jxr_linenumber" name="L564" href="#L564">564</a>                 List&lt;org.apache.juddi.model.BusinessService&gt; modelBusinessServiceList,
<a class="jxr_linenumber" name="L565" href="#L565">565</a>                 List&lt;org.apache.juddi.model.ServiceProjection&gt; modelServiceProjectionList,
<a class="jxr_linenumber" name="L566" href="#L566">566</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L567" href="#L567">567</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L568" href="#L568">568</a>                 modelBusinessServiceList.clear();
<a class="jxr_linenumber" name="L569" href="#L569">569</a>                 <strong class="jxr_keyword">if</strong> (apiBusinessServices != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L570" href="#L570">570</a>                         List&lt;org.uddi.api_v3.BusinessService&gt; apiBusinessServiceList = apiBusinessServices.getBusinessService();
<a class="jxr_linenumber" name="L571" href="#L571">571</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.BusinessService apiBusinessService : apiBusinessServiceList) {
<a class="jxr_linenumber" name="L572" href="#L572">572</a>                                 org.apache.juddi.model.BusinessService modelBusinessService = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessService();
<a class="jxr_linenumber" name="L573" href="#L573">573</a> 
<a class="jxr_linenumber" name="L574" href="#L574">574</a>                                 <em class="jxr_comment">// If the parent businessEntity key and the service businessEntity key (if provided) do not match, it's a projection.</em>
<a class="jxr_linenumber" name="L575" href="#L575">575</a>                                 <strong class="jxr_keyword">if</strong> (apiBusinessService.getBusinessKey() != <strong class="jxr_keyword">null</strong> &amp;&amp; apiBusinessService.getBusinessKey().length() &gt; 0
<a class="jxr_linenumber" name="L576" href="#L576">576</a>                                         &amp;&amp; !modelBusinessEntity.getEntityKey().equalsIgnoreCase(apiBusinessService.getBusinessKey())) {
<a class="jxr_linenumber" name="L577" href="#L577">577</a> 
<a class="jxr_linenumber" name="L578" href="#L578">578</a>                                         modelBusinessService.setEntityKey(apiBusinessService.getServiceKey());
<a class="jxr_linenumber" name="L579" href="#L579">579</a>                                         org.apache.juddi.model.ServiceProjection modelServiceProjection = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.ServiceProjection(modelBusinessEntity, modelBusinessService);
<a class="jxr_linenumber" name="L580" href="#L580">580</a> 
<a class="jxr_linenumber" name="L581" href="#L581">581</a>                                         modelServiceProjectionList.add(modelServiceProjection);
<a class="jxr_linenumber" name="L582" href="#L582">582</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L583" href="#L583">583</a>                                         mapBusinessService(apiBusinessService, modelBusinessService, modelBusinessEntity);
<a class="jxr_linenumber" name="L584" href="#L584">584</a>                                         modelBusinessServiceList.add(modelBusinessService);
<a class="jxr_linenumber" name="L585" href="#L585">585</a>                                 }
<a class="jxr_linenumber" name="L586" href="#L586">586</a>                         }
<a class="jxr_linenumber" name="L587" href="#L587">587</a>                 }
<a class="jxr_linenumber" name="L588" href="#L588">588</a>         }
<a class="jxr_linenumber" name="L589" href="#L589">589</a> 
<a class="jxr_linenumber" name="L590" href="#L590">590</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L591" href="#L591">591</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L592" href="#L592">592</a> <em class="jxr_javadoccomment">         * @param apiBusinessService</em>
<a class="jxr_linenumber" name="L593" href="#L593">593</a> <em class="jxr_javadoccomment">         * @param modelBusinessService</em>
<a class="jxr_linenumber" name="L594" href="#L594">594</a> <em class="jxr_javadoccomment">         * @param modelBusinessEntity</em>
<a class="jxr_linenumber" name="L595" href="#L595">595</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L596" href="#L596">596</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L597" href="#L597">597</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBusinessService(org.uddi.api_v3.BusinessService apiBusinessService,
<a class="jxr_linenumber" name="L598" href="#L598">598</a>                 org.apache.juddi.model.BusinessService modelBusinessService,
<a class="jxr_linenumber" name="L599" href="#L599">599</a>                 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
<a class="jxr_linenumber" name="L600" href="#L600">600</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L601" href="#L601">601</a> 
<a class="jxr_linenumber" name="L602" href="#L602">602</a>                 modelBusinessService.setBusinessEntity(modelBusinessEntity);
<a class="jxr_linenumber" name="L603" href="#L603">603</a>                 modelBusinessService.setEntityKey(apiBusinessService.getServiceKey());
<a class="jxr_linenumber" name="L604" href="#L604">604</a> 
<a class="jxr_linenumber" name="L605" href="#L605">605</a>                 mapServiceNames(apiBusinessService.getName(), modelBusinessService.getServiceNames(), modelBusinessService);
<a class="jxr_linenumber" name="L606" href="#L606">606</a>                 mapServiceDescriptions(apiBusinessService.getDescription(), modelBusinessService.getServiceDescrs(), modelBusinessService);
<a class="jxr_linenumber" name="L607" href="#L607">607</a>                 <strong class="jxr_keyword">if</strong> (apiBusinessService.getCategoryBag() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L608" href="#L608">608</a>                         modelBusinessService.setCategoryBag(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.ServiceCategoryBag(modelBusinessService));
<a class="jxr_linenumber" name="L609" href="#L609">609</a>                         mapCategoryBag(apiBusinessService.getCategoryBag(), modelBusinessService.getCategoryBag());
<a class="jxr_linenumber" name="L610" href="#L610">610</a>                 }
<a class="jxr_linenumber" name="L611" href="#L611">611</a> 
<a class="jxr_linenumber" name="L612" href="#L612">612</a>                 mapBindingTemplates(apiBusinessService.getBindingTemplates(), modelBusinessService.getBindingTemplates(), modelBusinessService);
<a class="jxr_linenumber" name="L613" href="#L613">613</a>                 mapBusinessServiceSignature(apiBusinessService.getSignature(), modelBusinessService);
<a class="jxr_linenumber" name="L614" href="#L614">614</a>         }
<a class="jxr_linenumber" name="L615" href="#L615">615</a> 
<a class="jxr_linenumber" name="L616" href="#L616">616</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L617" href="#L617">617</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L618" href="#L618">618</a> <em class="jxr_javadoccomment">         * @param apiNameList</em>
<a class="jxr_linenumber" name="L619" href="#L619">619</a> <em class="jxr_javadoccomment">         * @param modelNameList</em>
<a class="jxr_linenumber" name="L620" href="#L620">620</a> <em class="jxr_javadoccomment">         * @param modelBusinessService</em>
<a class="jxr_linenumber" name="L621" href="#L621">621</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L622" href="#L622">622</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L623" href="#L623">623</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapServiceNames(List&lt;org.uddi.api_v3.Name&gt; apiNameList,
<a class="jxr_linenumber" name="L624" href="#L624">624</a>                 List&lt;org.apache.juddi.model.ServiceName&gt; modelNameList,
<a class="jxr_linenumber" name="L625" href="#L625">625</a>                 org.apache.juddi.model.BusinessService modelBusinessService)
<a class="jxr_linenumber" name="L626" href="#L626">626</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L627" href="#L627">627</a>                 modelNameList.clear();
<a class="jxr_linenumber" name="L628" href="#L628">628</a> 
<a class="jxr_linenumber" name="L629" href="#L629">629</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Name apiName : apiNameList) {
<a class="jxr_linenumber" name="L630" href="#L630">630</a>                         modelNameList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.ServiceName(modelBusinessService, apiName.getLang(), apiName.getValue()));
<a class="jxr_linenumber" name="L631" href="#L631">631</a>                 }
<a class="jxr_linenumber" name="L632" href="#L632">632</a>         }
<a class="jxr_linenumber" name="L633" href="#L633">633</a> 
<a class="jxr_linenumber" name="L634" href="#L634">634</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L635" href="#L635">635</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L636" href="#L636">636</a> <em class="jxr_javadoccomment">         * @param apiDescList</em>
<a class="jxr_linenumber" name="L637" href="#L637">637</a> <em class="jxr_javadoccomment">         * @param modelDescList</em>
<a class="jxr_linenumber" name="L638" href="#L638">638</a> <em class="jxr_javadoccomment">         * @param modelBusinessService</em>
<a class="jxr_linenumber" name="L639" href="#L639">639</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L640" href="#L640">640</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L641" href="#L641">641</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapServiceDescriptions(List&lt;org.uddi.api_v3.Description&gt; apiDescList,
<a class="jxr_linenumber" name="L642" href="#L642">642</a>                 List&lt;org.apache.juddi.model.ServiceDescr&gt; modelDescList,
<a class="jxr_linenumber" name="L643" href="#L643">643</a>                 org.apache.juddi.model.BusinessService modelBusinessService)
<a class="jxr_linenumber" name="L644" href="#L644">644</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L645" href="#L645">645</a>                 modelDescList.clear();
<a class="jxr_linenumber" name="L646" href="#L646">646</a> 
<a class="jxr_linenumber" name="L647" href="#L647">647</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : apiDescList) {
<a class="jxr_linenumber" name="L648" href="#L648">648</a>                         modelDescList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.ServiceDescr(modelBusinessService, apiDesc.getLang(), apiDesc.getValue()));
<a class="jxr_linenumber" name="L649" href="#L649">649</a>                 }
<a class="jxr_linenumber" name="L650" href="#L650">650</a>         }
<a class="jxr_linenumber" name="L651" href="#L651">651</a> 
<a class="jxr_linenumber" name="L652" href="#L652">652</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L653" href="#L653">653</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L654" href="#L654">654</a> <em class="jxr_javadoccomment">         * @param apiBindingTemplates</em>
<a class="jxr_linenumber" name="L655" href="#L655">655</a> <em class="jxr_javadoccomment">         * @param modelBindingTemplateList</em>
<a class="jxr_linenumber" name="L656" href="#L656">656</a> <em class="jxr_javadoccomment">         * @param modelBusinessService</em>
<a class="jxr_linenumber" name="L657" href="#L657">657</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L658" href="#L658">658</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L659" href="#L659">659</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBindingTemplates(org.uddi.api_v3.BindingTemplates apiBindingTemplates,
<a class="jxr_linenumber" name="L660" href="#L660">660</a>                 List&lt;org.apache.juddi.model.BindingTemplate&gt; modelBindingTemplateList,
<a class="jxr_linenumber" name="L661" href="#L661">661</a>                 org.apache.juddi.model.BusinessService modelBusinessService)
<a class="jxr_linenumber" name="L662" href="#L662">662</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L663" href="#L663">663</a>                 modelBindingTemplateList.clear();
<a class="jxr_linenumber" name="L664" href="#L664">664</a> 
<a class="jxr_linenumber" name="L665" href="#L665">665</a>                 <strong class="jxr_keyword">if</strong> (apiBindingTemplates != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L666" href="#L666">666</a>                         List&lt;org.uddi.api_v3.BindingTemplate&gt; apiBindingTemplateList = apiBindingTemplates.getBindingTemplate();
<a class="jxr_linenumber" name="L667" href="#L667">667</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.BindingTemplate apiBindingTemplate : apiBindingTemplateList) {
<a class="jxr_linenumber" name="L668" href="#L668">668</a>                                 org.apache.juddi.model.BindingTemplate modelBindingTemplate = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.BindingTemplate();
<a class="jxr_linenumber" name="L669" href="#L669">669</a> 
<a class="jxr_linenumber" name="L670" href="#L670">670</a>                                 mapBindingTemplate(apiBindingTemplate, modelBindingTemplate, modelBusinessService);
<a class="jxr_linenumber" name="L671" href="#L671">671</a> 
<a class="jxr_linenumber" name="L672" href="#L672">672</a>                                 modelBindingTemplateList.add(modelBindingTemplate);
<a class="jxr_linenumber" name="L673" href="#L673">673</a>                         }
<a class="jxr_linenumber" name="L674" href="#L674">674</a>                 }
<a class="jxr_linenumber" name="L675" href="#L675">675</a>         }
<a class="jxr_linenumber" name="L676" href="#L676">676</a> 
<a class="jxr_linenumber" name="L677" href="#L677">677</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L678" href="#L678">678</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L679" href="#L679">679</a> <em class="jxr_javadoccomment">         * @param apiBindingTemplate</em>
<a class="jxr_linenumber" name="L680" href="#L680">680</a> <em class="jxr_javadoccomment">         * @param modelBindingTemplate</em>
<a class="jxr_linenumber" name="L681" href="#L681">681</a> <em class="jxr_javadoccomment">         * @param modelBusinessService</em>
<a class="jxr_linenumber" name="L682" href="#L682">682</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L683" href="#L683">683</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L684" href="#L684">684</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBindingTemplate(org.uddi.api_v3.BindingTemplate apiBindingTemplate,
<a class="jxr_linenumber" name="L685" href="#L685">685</a>                 org.apache.juddi.model.BindingTemplate modelBindingTemplate,
<a class="jxr_linenumber" name="L686" href="#L686">686</a>                 org.apache.juddi.model.BusinessService modelBusinessService)
<a class="jxr_linenumber" name="L687" href="#L687">687</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L688" href="#L688">688</a> 
<a class="jxr_linenumber" name="L689" href="#L689">689</a>                 modelBindingTemplate.setBusinessService(modelBusinessService);
<a class="jxr_linenumber" name="L690" href="#L690">690</a>                 modelBindingTemplate.setEntityKey(apiBindingTemplate.getBindingKey());
<a class="jxr_linenumber" name="L691" href="#L691">691</a>                 <strong class="jxr_keyword">if</strong> (apiBindingTemplate.getAccessPoint() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L692" href="#L692">692</a>                         modelBindingTemplate.setAccessPointType(apiBindingTemplate.getAccessPoint().getUseType());
<a class="jxr_linenumber" name="L693" href="#L693">693</a>                         modelBindingTemplate.setAccessPointUrl(apiBindingTemplate.getAccessPoint().getValue());
<a class="jxr_linenumber" name="L694" href="#L694">694</a>                 }
<a class="jxr_linenumber" name="L695" href="#L695">695</a>                 <strong class="jxr_keyword">if</strong> (apiBindingTemplate.getHostingRedirector() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L696" href="#L696">696</a>                         modelBindingTemplate.setHostingRedirector(apiBindingTemplate.getHostingRedirector().getBindingKey());
<a class="jxr_linenumber" name="L697" href="#L697">697</a>                 }
<a class="jxr_linenumber" name="L698" href="#L698">698</a> 
<a class="jxr_linenumber" name="L699" href="#L699">699</a>                 mapBindingDescriptions(apiBindingTemplate.getDescription(), modelBindingTemplate.getBindingDescrs(), modelBindingTemplate);
<a class="jxr_linenumber" name="L700" href="#L700">700</a>                 <strong class="jxr_keyword">if</strong> (apiBindingTemplate.getCategoryBag() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L701" href="#L701">701</a>                         modelBindingTemplate.setCategoryBag(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.BindingCategoryBag(modelBindingTemplate));
<a class="jxr_linenumber" name="L702" href="#L702">702</a>                         mapCategoryBag(apiBindingTemplate.getCategoryBag(), modelBindingTemplate.getCategoryBag());
<a class="jxr_linenumber" name="L703" href="#L703">703</a>                 }
<a class="jxr_linenumber" name="L704" href="#L704">704</a>                 mapTModelInstanceDetails(apiBindingTemplate.getTModelInstanceDetails(), modelBindingTemplate.getTmodelInstanceInfos(), modelBindingTemplate);
<a class="jxr_linenumber" name="L705" href="#L705">705</a>                 mapBindingTemplateSignatures(apiBindingTemplate.getSignature(), modelBindingTemplate);
<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">         *</em>
<a class="jxr_linenumber" name="L710" href="#L710">710</a> <em class="jxr_javadoccomment">         * @param apiDescList</em>
<a class="jxr_linenumber" name="L711" href="#L711">711</a> <em class="jxr_javadoccomment">         * @param modelDescList</em>
<a class="jxr_linenumber" name="L712" href="#L712">712</a> <em class="jxr_javadoccomment">         * @param modelBindingTemplate</em>
<a class="jxr_linenumber" name="L713" href="#L713">713</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L714" href="#L714">714</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L715" href="#L715">715</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapBindingDescriptions(List&lt;org.uddi.api_v3.Description&gt; apiDescList,
<a class="jxr_linenumber" name="L716" href="#L716">716</a>                 List&lt;org.apache.juddi.model.BindingDescr&gt; modelDescList,
<a class="jxr_linenumber" name="L717" href="#L717">717</a>                 org.apache.juddi.model.BindingTemplate modelBindingTemplate)
<a class="jxr_linenumber" name="L718" href="#L718">718</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L719" href="#L719">719</a>                 modelDescList.clear();
<a class="jxr_linenumber" name="L720" href="#L720">720</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : apiDescList) {
<a class="jxr_linenumber" name="L721" href="#L721">721</a>                         modelDescList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.BindingDescr(modelBindingTemplate, apiDesc.getLang(), apiDesc.getValue()));
<a class="jxr_linenumber" name="L722" href="#L722">722</a>                 }
<a class="jxr_linenumber" name="L723" href="#L723">723</a>         }
<a class="jxr_linenumber" name="L724" href="#L724">724</a> 
<a class="jxr_linenumber" name="L725" href="#L725">725</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L726" href="#L726">726</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L727" href="#L727">727</a> <em class="jxr_javadoccomment">         * @param apiCategoryBag</em>
<a class="jxr_linenumber" name="L728" href="#L728">728</a> <em class="jxr_javadoccomment">         * @param modelCategoryBag</em>
<a class="jxr_linenumber" name="L729" href="#L729">729</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L730" href="#L730">730</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L731" href="#L731">731</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapCategoryBag(org.uddi.api_v3.CategoryBag apiCategoryBag,
<a class="jxr_linenumber" name="L732" href="#L732">732</a>                 org.apache.juddi.model.CategoryBag modelCategoryBag)
<a class="jxr_linenumber" name="L733" href="#L733">733</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L734" href="#L734">734</a> 
<a class="jxr_linenumber" name="L735" href="#L735">735</a>                 <strong class="jxr_keyword">if</strong> (apiCategoryBag != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L736" href="#L736">736</a>                         List&lt;org.uddi.api_v3.KeyedReference&gt; krList = apiCategoryBag.getKeyedReference();
<a class="jxr_linenumber" name="L737" href="#L737">737</a>                         <strong class="jxr_keyword">for</strong> (Object elem : krList) {
<a class="jxr_linenumber" name="L738" href="#L738">738</a>                                 <strong class="jxr_keyword">if</strong> (elem instanceof org.uddi.api_v3.KeyedReference) {
<a class="jxr_linenumber" name="L739" href="#L739">739</a>                                         List&lt;org.apache.juddi.model.KeyedReference&gt; modelKeyedReferences = modelCategoryBag.getKeyedReferences();
<a class="jxr_linenumber" name="L740" href="#L740">740</a>                                         <em class="jxr_comment">//modelKeyedReferences.clear();</em>
<a class="jxr_linenumber" name="L741" href="#L741">741</a>                                         org.uddi.api_v3.KeyedReference apiKeyedReference = (org.uddi.api_v3.KeyedReference) elem;
<a class="jxr_linenumber" name="L742" href="#L742">742</a>                                         modelKeyedReferences.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.KeyedReference(modelCategoryBag,
<a class="jxr_linenumber" name="L743" href="#L743">743</a>                                                 apiKeyedReference.getTModelKey(), apiKeyedReference.getKeyName(), apiKeyedReference.getKeyValue()));
<a class="jxr_linenumber" name="L744" href="#L744">744</a>                                 }
<a class="jxr_linenumber" name="L745" href="#L745">745</a>                         }
<a class="jxr_linenumber" name="L746" href="#L746">746</a>                         List&lt;org.uddi.api_v3.KeyedReferenceGroup&gt; krgList = apiCategoryBag.getKeyedReferenceGroup();
<a class="jxr_linenumber" name="L747" href="#L747">747</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.KeyedReferenceGroup elem : krgList) {
<a class="jxr_linenumber" name="L748" href="#L748">748</a>                                 <strong class="jxr_keyword">if</strong> (elem instanceof org.uddi.api_v3.KeyedReferenceGroup) {
<a class="jxr_linenumber" name="L749" href="#L749">749</a>                                         org.uddi.api_v3.KeyedReferenceGroup apiKeyedReferenceGroup = (org.uddi.api_v3.KeyedReferenceGroup) elem;
<a class="jxr_linenumber" name="L750" href="#L750">750</a> 
<a class="jxr_linenumber" name="L751" href="#L751">751</a>                                         org.apache.juddi.model.KeyedReferenceGroup modelKeyedReferenceGroup = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.KeyedReferenceGroup();
<a class="jxr_linenumber" name="L752" href="#L752">752</a>                                         List&lt;org.apache.juddi.model.KeyedReferenceGroup&gt; modelKeyedReferenceGroups = modelCategoryBag.getKeyedReferenceGroups();
<a class="jxr_linenumber" name="L753" href="#L753">753</a>                                         <em class="jxr_comment">//modelKeyedReferenceGroups.clear();</em>
<a class="jxr_linenumber" name="L754" href="#L754">754</a> 
<a class="jxr_linenumber" name="L755" href="#L755">755</a>                                         mapKeyedReferenceGroup(apiKeyedReferenceGroup, modelKeyedReferenceGroup, modelCategoryBag);
<a class="jxr_linenumber" name="L756" href="#L756">756</a> 
<a class="jxr_linenumber" name="L757" href="#L757">757</a>                                         modelKeyedReferenceGroups.add(modelKeyedReferenceGroup);
<a class="jxr_linenumber" name="L758" href="#L758">758</a>                                 }
<a class="jxr_linenumber" name="L759" href="#L759">759</a>                         }
<a class="jxr_linenumber" name="L760" href="#L760">760</a>                 }
<a class="jxr_linenumber" name="L761" href="#L761">761</a>         }
<a class="jxr_linenumber" name="L762" href="#L762">762</a> 
<a class="jxr_linenumber" name="L763" href="#L763">763</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L764" href="#L764">764</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L765" href="#L765">765</a> <em class="jxr_javadoccomment">         * @param apiKeyedReferenceGroup</em>
<a class="jxr_linenumber" name="L766" href="#L766">766</a> <em class="jxr_javadoccomment">         * @param modelKeyedReferenceGroup</em>
<a class="jxr_linenumber" name="L767" href="#L767">767</a> <em class="jxr_javadoccomment">         * @param modelCategoryBag</em>
<a class="jxr_linenumber" name="L768" href="#L768">768</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L769" href="#L769">769</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L770" href="#L770">770</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapKeyedReferenceGroup(org.uddi.api_v3.KeyedReferenceGroup apiKeyedReferenceGroup,
<a class="jxr_linenumber" name="L771" href="#L771">771</a>                 org.apache.juddi.model.KeyedReferenceGroup modelKeyedReferenceGroup,
<a class="jxr_linenumber" name="L772" href="#L772">772</a>                 org.apache.juddi.model.CategoryBag modelCategoryBag)
<a class="jxr_linenumber" name="L773" href="#L773">773</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L774" href="#L774">774</a>                 <strong class="jxr_keyword">if</strong> (apiKeyedReferenceGroup != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L775" href="#L775">775</a>                         modelKeyedReferenceGroup.setCategoryBag(modelCategoryBag);
<a class="jxr_linenumber" name="L776" href="#L776">776</a>                         modelKeyedReferenceGroup.setTmodelKey(apiKeyedReferenceGroup.getTModelKey());
<a class="jxr_linenumber" name="L777" href="#L777">777</a> 
<a class="jxr_linenumber" name="L778" href="#L778">778</a>                         <strong class="jxr_keyword">if</strong> (apiKeyedReferenceGroup.getKeyedReference() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L779" href="#L779">779</a>                                 List&lt;org.apache.juddi.model.KeyedReference&gt; modelKeyedReferences = modelKeyedReferenceGroup.getKeyedReferences();
<a class="jxr_linenumber" name="L780" href="#L780">780</a>                                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.KeyedReference apiKeyedReference : apiKeyedReferenceGroup.getKeyedReference()) {
<a class="jxr_linenumber" name="L781" href="#L781">781</a>                                         modelKeyedReferences.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.KeyedReference(modelKeyedReferenceGroup,
<a class="jxr_linenumber" name="L782" href="#L782">782</a>                                                 apiKeyedReference.getTModelKey(), apiKeyedReference.getKeyName(), apiKeyedReference.getKeyValue()));
<a class="jxr_linenumber" name="L783" href="#L783">783</a>                                 }
<a class="jxr_linenumber" name="L784" href="#L784">784</a>                         }
<a class="jxr_linenumber" name="L785" href="#L785">785</a> 
<a class="jxr_linenumber" name="L786" href="#L786">786</a>                 }
<a class="jxr_linenumber" name="L787" href="#L787">787</a> 
<a class="jxr_linenumber" name="L788" href="#L788">788</a>         }
<a class="jxr_linenumber" name="L789" href="#L789">789</a> 
<a class="jxr_linenumber" name="L790" href="#L790">790</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L791" href="#L791">791</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L792" href="#L792">792</a> <em class="jxr_javadoccomment">         * @param apiTModelInstDetails</em>
<a class="jxr_linenumber" name="L793" href="#L793">793</a> <em class="jxr_javadoccomment">         * @param modelTModelInstInfoList</em>
<a class="jxr_linenumber" name="L794" href="#L794">794</a> <em class="jxr_javadoccomment">         * @param modelBindingTemplate</em>
<a class="jxr_linenumber" name="L795" href="#L795">795</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L796" href="#L796">796</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L797" href="#L797">797</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTModelInstanceDetails(org.uddi.api_v3.TModelInstanceDetails apiTModelInstDetails,
<a class="jxr_linenumber" name="L798" href="#L798">798</a>                 List&lt;org.apache.juddi.model.TmodelInstanceInfo&gt; modelTModelInstInfoList,
<a class="jxr_linenumber" name="L799" href="#L799">799</a>                 org.apache.juddi.model.BindingTemplate modelBindingTemplate)
<a class="jxr_linenumber" name="L800" href="#L800">800</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L801" href="#L801">801</a>                 modelTModelInstInfoList.clear();
<a class="jxr_linenumber" name="L802" href="#L802">802</a> 
<a class="jxr_linenumber" name="L803" href="#L803">803</a>                 <strong class="jxr_keyword">if</strong> (apiTModelInstDetails != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L804" href="#L804">804</a>                         List&lt;org.uddi.api_v3.TModelInstanceInfo&gt; apiTModelInstInfoList = apiTModelInstDetails.getTModelInstanceInfo();
<a class="jxr_linenumber" name="L805" href="#L805">805</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.TModelInstanceInfo apiTModelInstInfo : apiTModelInstInfoList) {
<a class="jxr_linenumber" name="L806" href="#L806">806</a>                                 org.apache.juddi.model.TmodelInstanceInfo modelTModelInstInfo = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.TmodelInstanceInfo(modelBindingTemplate, apiTModelInstInfo.getTModelKey());
<a class="jxr_linenumber" name="L807" href="#L807">807</a> 
<a class="jxr_linenumber" name="L808" href="#L808">808</a>                                 mapTModelInstanceInfoDescriptions(apiTModelInstInfo.getDescription(), modelTModelInstInfo.getTmodelInstanceInfoDescrs(), modelTModelInstInfo);
<a class="jxr_linenumber" name="L809" href="#L809">809</a>                                 mapInstanceDetails(apiTModelInstInfo.getInstanceDetails(), modelTModelInstInfo);
<a class="jxr_linenumber" name="L810" href="#L810">810</a> 
<a class="jxr_linenumber" name="L811" href="#L811">811</a>                                 modelTModelInstInfoList.add(modelTModelInstInfo);
<a class="jxr_linenumber" name="L812" href="#L812">812</a>                         }
<a class="jxr_linenumber" name="L813" href="#L813">813</a>                 }
<a class="jxr_linenumber" name="L814" href="#L814">814</a>         }
<a class="jxr_linenumber" name="L815" href="#L815">815</a> 
<a class="jxr_linenumber" name="L816" href="#L816">816</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L817" href="#L817">817</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L818" href="#L818">818</a> <em class="jxr_javadoccomment">         * @param apiDescList</em>
<a class="jxr_linenumber" name="L819" href="#L819">819</a> <em class="jxr_javadoccomment">         * @param modelDescList</em>
<a class="jxr_linenumber" name="L820" href="#L820">820</a> <em class="jxr_javadoccomment">         * @param modelTModelInstInfo</em>
<a class="jxr_linenumber" name="L821" href="#L821">821</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L822" href="#L822">822</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L823" href="#L823">823</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTModelInstanceInfoDescriptions(List&lt;org.uddi.api_v3.Description&gt; apiDescList,
<a class="jxr_linenumber" name="L824" href="#L824">824</a>                 List&lt;org.apache.juddi.model.TmodelInstanceInfoDescr&gt; modelDescList,
<a class="jxr_linenumber" name="L825" href="#L825">825</a>                 org.apache.juddi.model.TmodelInstanceInfo modelTModelInstInfo)
<a class="jxr_linenumber" name="L826" href="#L826">826</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L827" href="#L827">827</a>                 modelDescList.clear();
<a class="jxr_linenumber" name="L828" href="#L828">828</a> 
<a class="jxr_linenumber" name="L829" href="#L829">829</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : apiDescList) {
<a class="jxr_linenumber" name="L830" href="#L830">830</a>                         modelDescList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.TmodelInstanceInfoDescr(modelTModelInstInfo, apiDesc.getLang(), apiDesc.getValue()));
<a class="jxr_linenumber" name="L831" href="#L831">831</a>                 }
<a class="jxr_linenumber" name="L832" href="#L832">832</a>         }
<a class="jxr_linenumber" name="L833" href="#L833">833</a> 
<a class="jxr_linenumber" name="L834" href="#L834">834</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L835" href="#L835">835</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L836" href="#L836">836</a> <em class="jxr_javadoccomment">         * @param apiInstanceDetails</em>
<a class="jxr_linenumber" name="L837" href="#L837">837</a> <em class="jxr_javadoccomment">         * @param modelTmodelInstInfo</em>
<a class="jxr_linenumber" name="L838" href="#L838">838</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L839" href="#L839">839</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L840" href="#L840">840</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapInstanceDetails(org.uddi.api_v3.InstanceDetails apiInstanceDetails,
<a class="jxr_linenumber" name="L841" href="#L841">841</a>                 org.apache.juddi.model.TmodelInstanceInfo modelTmodelInstInfo)
<a class="jxr_linenumber" name="L842" href="#L842">842</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L843" href="#L843">843</a>                 modelTmodelInstInfo.getInstanceDetailsDescrs().clear();
<a class="jxr_linenumber" name="L844" href="#L844">844</a> 
<a class="jxr_linenumber" name="L845" href="#L845">845</a>                 <strong class="jxr_keyword">if</strong> (apiInstanceDetails != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L846" href="#L846">846</a>                         List&lt;org.uddi.api_v3.Description&gt; descriptions = apiInstanceDetails.getDescription();
<a class="jxr_linenumber" name="L847" href="#L847">847</a>                         List&lt;org.uddi.api_v3.OverviewDoc&gt; overviewdocs = apiInstanceDetails.getOverviewDoc();
<a class="jxr_linenumber" name="L848" href="#L848">848</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : descriptions) {
<a class="jxr_linenumber" name="L849" href="#L849">849</a>                                 org.apache.juddi.model.InstanceDetailsDescr modelInstanceDetailsDescr
<a class="jxr_linenumber" name="L850" href="#L850">850</a>                                         = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.InstanceDetailsDescr(
<a class="jxr_linenumber" name="L851" href="#L851">851</a>                                                 modelTmodelInstInfo, apiDesc.getLang(), apiDesc.getValue());
<a class="jxr_linenumber" name="L852" href="#L852">852</a>                                 modelTmodelInstInfo.getInstanceDetailsDescrs().add(modelInstanceDetailsDescr);
<a class="jxr_linenumber" name="L853" href="#L853">853</a>                         }
<a class="jxr_linenumber" name="L854" href="#L854">854</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.OverviewDoc apiOverviewDoc : overviewdocs) {
<a class="jxr_linenumber" name="L855" href="#L855">855</a>                                 org.apache.juddi.model.OverviewDoc modelOverviewDoc = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.OverviewDoc(modelTmodelInstInfo);
<a class="jxr_linenumber" name="L856" href="#L856">856</a>                                 mapOverviewDoc(apiOverviewDoc, modelOverviewDoc);
<a class="jxr_linenumber" name="L857" href="#L857">857</a>                                 modelTmodelInstInfo.getOverviewDocs().add(modelOverviewDoc);
<a class="jxr_linenumber" name="L858" href="#L858">858</a>                         }
<a class="jxr_linenumber" name="L859" href="#L859">859</a>                         modelTmodelInstInfo.setInstanceParms((String) apiInstanceDetails.getInstanceParms());
<a class="jxr_linenumber" name="L860" href="#L860">860</a>                 }
<a class="jxr_linenumber" name="L861" href="#L861">861</a>         }
<a class="jxr_linenumber" name="L862" href="#L862">862</a> 
<a class="jxr_linenumber" name="L863" href="#L863">863</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L864" href="#L864">864</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L865" href="#L865">865</a> <em class="jxr_javadoccomment">         * @param apiOverviewDoc</em>
<a class="jxr_linenumber" name="L866" href="#L866">866</a> <em class="jxr_javadoccomment">         * @param modelOverviewDoc</em>
<a class="jxr_linenumber" name="L867" href="#L867">867</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L868" href="#L868">868</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L869" href="#L869">869</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapOverviewDoc(org.uddi.api_v3.OverviewDoc apiOverviewDoc,
<a class="jxr_linenumber" name="L870" href="#L870">870</a>                 org.apache.juddi.model.OverviewDoc modelOverviewDoc)
<a class="jxr_linenumber" name="L871" href="#L871">871</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L872" href="#L872">872</a>                 <strong class="jxr_keyword">if</strong> (apiOverviewDoc != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L873" href="#L873">873</a> 
<a class="jxr_linenumber" name="L874" href="#L874">874</a>                         List&lt;Description&gt; descContent = apiOverviewDoc.getDescription();
<a class="jxr_linenumber" name="L875" href="#L875">875</a>                         <strong class="jxr_keyword">for</strong> (Object elem : descContent) {
<a class="jxr_linenumber" name="L876" href="#L876">876</a>                                 org.uddi.api_v3.Description description = (org.uddi.api_v3.Description) elem;
<a class="jxr_linenumber" name="L877" href="#L877">877</a>                                 <strong class="jxr_keyword">if</strong> (description != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L878" href="#L878">878</a>                                         org.apache.juddi.model.OverviewDocDescr modelOverviewDocDescr = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.OverviewDocDescr(
<a class="jxr_linenumber" name="L879" href="#L879">879</a>                                                 modelOverviewDoc, description.getLang(), description.getValue());
<a class="jxr_linenumber" name="L880" href="#L880">880</a>                                         modelOverviewDoc.getOverviewDocDescrs().add(modelOverviewDocDescr);
<a class="jxr_linenumber" name="L881" href="#L881">881</a>                                 }
<a class="jxr_linenumber" name="L882" href="#L882">882</a>                         }
<a class="jxr_linenumber" name="L883" href="#L883">883</a> 
<a class="jxr_linenumber" name="L884" href="#L884">884</a>                         org.uddi.api_v3.OverviewURL elem = apiOverviewDoc.getOverviewURL();
<a class="jxr_linenumber" name="L885" href="#L885">885</a>                         <strong class="jxr_keyword">if</strong> (elem instanceof org.uddi.api_v3.OverviewURL) {
<a class="jxr_linenumber" name="L886" href="#L886">886</a>                                 org.uddi.api_v3.OverviewURL overviewURL = elem;
<a class="jxr_linenumber" name="L887" href="#L887">887</a>                                 modelOverviewDoc.setOverviewUrl(overviewURL.getValue());
<a class="jxr_linenumber" name="L888" href="#L888">888</a>                                 modelOverviewDoc.setOverviewUrlUseType(overviewURL.getUseType());
<a class="jxr_linenumber" name="L889" href="#L889">889</a>                         }
<a class="jxr_linenumber" name="L890" href="#L890">890</a> 
<a class="jxr_linenumber" name="L891" href="#L891">891</a>                 }
<a class="jxr_linenumber" name="L892" href="#L892">892</a>         }
<a class="jxr_linenumber" name="L893" href="#L893">893</a> 
<a class="jxr_linenumber" name="L894" href="#L894">894</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L895" href="#L895">895</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L896" href="#L896">896</a> <em class="jxr_javadoccomment">         * @param apiTModel</em>
<a class="jxr_linenumber" name="L897" href="#L897">897</a> <em class="jxr_javadoccomment">         * @param modelTModel</em>
<a class="jxr_linenumber" name="L898" href="#L898">898</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L899" href="#L899">899</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L900" href="#L900">900</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTModel(org.uddi.api_v3.TModel apiTModel,
<a class="jxr_linenumber" name="L901" href="#L901">901</a>                 org.apache.juddi.model.Tmodel modelTModel)
<a class="jxr_linenumber" name="L902" href="#L902">902</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L903" href="#L903">903</a> 
<a class="jxr_linenumber" name="L904" href="#L904">904</a>                 modelTModel.setEntityKey(apiTModel.getTModelKey());
<a class="jxr_linenumber" name="L905" href="#L905">905</a>                 modelTModel.setName(apiTModel.getName().getValue());
<a class="jxr_linenumber" name="L906" href="#L906">906</a>                 modelTModel.setLangCode(apiTModel.getName().getLang());
<a class="jxr_linenumber" name="L907" href="#L907">907</a>                 modelTModel.setDeleted(apiTModel.isDeleted());
<a class="jxr_linenumber" name="L908" href="#L908">908</a> 
<a class="jxr_linenumber" name="L909" href="#L909">909</a>                 mapTModelDescriptions(apiTModel.getDescription(), modelTModel.getTmodelDescrs(), modelTModel);
<a class="jxr_linenumber" name="L910" href="#L910">910</a>                 mapTModelIdentifiers(apiTModel.getIdentifierBag(), modelTModel.getTmodelIdentifiers(), modelTModel);
<a class="jxr_linenumber" name="L911" href="#L911">911</a>                 <strong class="jxr_keyword">if</strong> (apiTModel.getCategoryBag() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L912" href="#L912">912</a>                         modelTModel.setCategoryBag(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.TmodelCategoryBag(modelTModel));
<a class="jxr_linenumber" name="L913" href="#L913">913</a>                         mapCategoryBag(apiTModel.getCategoryBag(), modelTModel.getCategoryBag());
<a class="jxr_linenumber" name="L914" href="#L914">914</a>                 }
<a class="jxr_linenumber" name="L915" href="#L915">915</a>                 mapTModelOverviewDocs(apiTModel.getOverviewDoc(), modelTModel.getOverviewDocs(), modelTModel);
<a class="jxr_linenumber" name="L916" href="#L916">916</a>                 mapTmodelSignatures(apiTModel.getSignature(), modelTModel);
<a class="jxr_linenumber" name="L917" href="#L917">917</a>         }
<a class="jxr_linenumber" name="L918" href="#L918">918</a> 
<a class="jxr_linenumber" name="L919" href="#L919">919</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L920" href="#L920">920</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L921" href="#L921">921</a> <em class="jxr_javadoccomment">         * @param apiDescList</em>
<a class="jxr_linenumber" name="L922" href="#L922">922</a> <em class="jxr_javadoccomment">         * @param modelDescList</em>
<a class="jxr_linenumber" name="L923" href="#L923">923</a> <em class="jxr_javadoccomment">         * @param modelTModel</em>
<a class="jxr_linenumber" name="L924" href="#L924">924</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L925" href="#L925">925</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L926" href="#L926">926</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTModelDescriptions(List&lt;org.uddi.api_v3.Description&gt; apiDescList,
<a class="jxr_linenumber" name="L927" href="#L927">927</a>                 List&lt;org.apache.juddi.model.TmodelDescr&gt; modelDescList,
<a class="jxr_linenumber" name="L928" href="#L928">928</a>                 org.apache.juddi.model.Tmodel modelTModel)
<a class="jxr_linenumber" name="L929" href="#L929">929</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L930" href="#L930">930</a>                 modelDescList.clear();
<a class="jxr_linenumber" name="L931" href="#L931">931</a> 
<a class="jxr_linenumber" name="L932" href="#L932">932</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.Description apiDesc : apiDescList) {
<a class="jxr_linenumber" name="L933" href="#L933">933</a>                         modelDescList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.TmodelDescr(modelTModel, apiDesc.getLang(), apiDesc.getValue()));
<a class="jxr_linenumber" name="L934" href="#L934">934</a>                 }
<a class="jxr_linenumber" name="L935" href="#L935">935</a>         }
<a class="jxr_linenumber" name="L936" href="#L936">936</a> 
<a class="jxr_linenumber" name="L937" href="#L937">937</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L938" href="#L938">938</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L939" href="#L939">939</a> <em class="jxr_javadoccomment">         * @param apiIdentifierBag</em>
<a class="jxr_linenumber" name="L940" href="#L940">940</a> <em class="jxr_javadoccomment">         * @param modelIdentifierList</em>
<a class="jxr_linenumber" name="L941" href="#L941">941</a> <em class="jxr_javadoccomment">         * @param modelTModel</em>
<a class="jxr_linenumber" name="L942" href="#L942">942</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L943" href="#L943">943</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L944" href="#L944">944</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTModelIdentifiers(org.uddi.api_v3.IdentifierBag apiIdentifierBag,
<a class="jxr_linenumber" name="L945" href="#L945">945</a>                 List&lt;org.apache.juddi.model.TmodelIdentifier&gt; modelIdentifierList,
<a class="jxr_linenumber" name="L946" href="#L946">946</a>                 org.apache.juddi.model.Tmodel modelTModel)
<a class="jxr_linenumber" name="L947" href="#L947">947</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L948" href="#L948">948</a>                 modelIdentifierList.clear();
<a class="jxr_linenumber" name="L949" href="#L949">949</a> 
<a class="jxr_linenumber" name="L950" href="#L950">950</a>                 <strong class="jxr_keyword">if</strong> (apiIdentifierBag != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L951" href="#L951">951</a>                         List&lt;org.uddi.api_v3.KeyedReference&gt; apiKeyedRefList = apiIdentifierBag.getKeyedReference();
<a class="jxr_linenumber" name="L952" href="#L952">952</a>                         <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.KeyedReference apiKeyedRef : apiKeyedRefList) {
<a class="jxr_linenumber" name="L953" href="#L953">953</a>                                 modelIdentifierList.add(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.TmodelIdentifier(modelTModel, apiKeyedRef.getTModelKey(), apiKeyedRef.getKeyName(), apiKeyedRef.getKeyValue()));
<a class="jxr_linenumber" name="L954" href="#L954">954</a>                         }
<a class="jxr_linenumber" name="L955" href="#L955">955</a>                 }
<a class="jxr_linenumber" name="L956" href="#L956">956</a>         }
<a class="jxr_linenumber" name="L957" href="#L957">957</a> 
<a class="jxr_linenumber" name="L958" href="#L958">958</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L959" href="#L959">959</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L960" href="#L960">960</a> <em class="jxr_javadoccomment">         * @param apiOverviewDocList</em>
<a class="jxr_linenumber" name="L961" href="#L961">961</a> <em class="jxr_javadoccomment">         * @param modelOverviewDocList</em>
<a class="jxr_linenumber" name="L962" href="#L962">962</a> <em class="jxr_javadoccomment">         * @param modelTmodel</em>
<a class="jxr_linenumber" name="L963" href="#L963">963</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L964" href="#L964">964</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L965" href="#L965">965</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapTModelOverviewDocs(List&lt;org.uddi.api_v3.OverviewDoc&gt; apiOverviewDocList,
<a class="jxr_linenumber" name="L966" href="#L966">966</a>                 List&lt;org.apache.juddi.model.OverviewDoc&gt; modelOverviewDocList,
<a class="jxr_linenumber" name="L967" href="#L967">967</a>                 org.apache.juddi.model.Tmodel modelTmodel)
<a class="jxr_linenumber" name="L968" href="#L968">968</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L969" href="#L969">969</a>                 modelOverviewDocList.clear();
<a class="jxr_linenumber" name="L970" href="#L970">970</a> 
<a class="jxr_linenumber" name="L971" href="#L971">971</a>                 <strong class="jxr_keyword">for</strong> (org.uddi.api_v3.OverviewDoc apiOverviewDoc : apiOverviewDocList) {
<a class="jxr_linenumber" name="L972" href="#L972">972</a>                         org.apache.juddi.model.OverviewDoc modelOverviewDoc = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.OverviewDoc(modelTmodel);
<a class="jxr_linenumber" name="L973" href="#L973">973</a>                         mapOverviewDoc(apiOverviewDoc, modelOverviewDoc);
<a class="jxr_linenumber" name="L974" href="#L974">974</a>                         modelTmodel.getOverviewDocs().add(modelOverviewDoc);
<a class="jxr_linenumber" name="L975" href="#L975">975</a>                 }
<a class="jxr_linenumber" name="L976" href="#L976">976</a>         }
<a class="jxr_linenumber" name="L977" href="#L977">977</a> 
<a class="jxr_linenumber" name="L978" href="#L978">978</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L979" href="#L979">979</a> <em class="jxr_javadoccomment">         * note that when using this, it does not reference the instance of the</em>
<a class="jxr_linenumber" name="L980" href="#L980">980</a> <em class="jxr_javadoccomment">         * specific businesses, it will create new ones. be sure to overwrite</em>
<a class="jxr_linenumber" name="L981" href="#L981">981</a> <em class="jxr_javadoccomment">         * them with the correct references</em>
<a class="jxr_linenumber" name="L982" href="#L982">982</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L983" href="#L983">983</a> <em class="jxr_javadoccomment">         * @param apiPubAssertion</em>
<a class="jxr_linenumber" name="L984" href="#L984">984</a> <em class="jxr_javadoccomment">         * @param modelPubAssertion</em>
<a class="jxr_linenumber" name="L985" href="#L985">985</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L986" href="#L986">986</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L987" href="#L987">987</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapPublisherAssertion(org.uddi.api_v3.PublisherAssertion apiPubAssertion,
<a class="jxr_linenumber" name="L988" href="#L988">988</a>                 org.apache.juddi.model.PublisherAssertion modelPubAssertion)
<a class="jxr_linenumber" name="L989" href="#L989">989</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L990" href="#L990">990</a> 
<a class="jxr_linenumber" name="L991" href="#L991">991</a>                 modelPubAssertion.setId(<strong class="jxr_keyword">new</strong> org.apache.juddi.model.PublisherAssertionId(apiPubAssertion.getFromKey(), apiPubAssertion.getToKey()));
<a class="jxr_linenumber" name="L992" href="#L992">992</a> 
<a class="jxr_linenumber" name="L993" href="#L993">993</a>                 org.apache.juddi.model.BusinessEntity beFrom = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessEntity();
<a class="jxr_linenumber" name="L994" href="#L994">994</a>                 beFrom.setEntityKey(apiPubAssertion.getFromKey());
<a class="jxr_linenumber" name="L995" href="#L995">995</a>                 modelPubAssertion.setBusinessEntityByFromKey(beFrom);
<a class="jxr_linenumber" name="L996" href="#L996">996</a> 
<a class="jxr_linenumber" name="L997" href="#L997">997</a>                 org.apache.juddi.model.BusinessEntity beTo = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.BusinessEntity();
<a class="jxr_linenumber" name="L998" href="#L998">998</a>                 beFrom.setEntityKey(apiPubAssertion.getToKey());
<a class="jxr_linenumber" name="L999" href="#L999">999</a>                 modelPubAssertion.setBusinessEntityByToKey(beTo);
<a class="jxr_linenumber" name="L1000" href="#L1000">1000</a> 
<a class="jxr_linenumber" name="L1001" href="#L1001">1001</a>                 org.uddi.api_v3.KeyedReference apiKeyedRef = apiPubAssertion.getKeyedReference();
<a class="jxr_linenumber" name="L1002" href="#L1002">1002</a>                 <strong class="jxr_keyword">if</strong> (apiKeyedRef != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1003" href="#L1003">1003</a>                         modelPubAssertion.setTmodelKey(apiKeyedRef.getTModelKey());
<a class="jxr_linenumber" name="L1004" href="#L1004">1004</a>                         modelPubAssertion.setKeyName(apiKeyedRef.getKeyName());
<a class="jxr_linenumber" name="L1005" href="#L1005">1005</a>                         modelPubAssertion.setKeyValue(apiKeyedRef.getKeyValue());
<a class="jxr_linenumber" name="L1006" href="#L1006">1006</a>                 }
<a class="jxr_linenumber" name="L1007" href="#L1007">1007</a>                 <strong class="jxr_keyword">if</strong> (!apiPubAssertion.getSignature().isEmpty()) {
<a class="jxr_linenumber" name="L1008" href="#L1008">1008</a>                         modelPubAssertion.setSignatures(mapApiSignaturesToModelSignatures(apiPubAssertion.getSignature()));
<a class="jxr_linenumber" name="L1009" href="#L1009">1009</a>                         <strong class="jxr_keyword">for</strong> (Signature s : modelPubAssertion.getSignatures()) {
<a class="jxr_linenumber" name="L1010" href="#L1010">1010</a>                                 s.setPublisherAssertionFromKey(modelPubAssertion.getBusinessEntityByFromKey().getEntityKey());
<a class="jxr_linenumber" name="L1011" href="#L1011">1011</a>                                 s.setPublisherAssertionToKey(modelPubAssertion.getBusinessEntityByToKey().getEntityKey());
<a class="jxr_linenumber" name="L1012" href="#L1012">1012</a> 
<a class="jxr_linenumber" name="L1013" href="#L1013">1013</a>                         }
<a class="jxr_linenumber" name="L1014" href="#L1014">1014</a> 
<a class="jxr_linenumber" name="L1015" href="#L1015">1015</a>                 }
<a class="jxr_linenumber" name="L1016" href="#L1016">1016</a>         }
<a class="jxr_linenumber" name="L1017" href="#L1017">1017</a> 
<a class="jxr_linenumber" name="L1018" href="#L1018">1018</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L1019" href="#L1019">1019</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L1020" href="#L1020">1020</a> <em class="jxr_javadoccomment">         * @param apiSubscription</em>
<a class="jxr_linenumber" name="L1021" href="#L1021">1021</a> <em class="jxr_javadoccomment">         * @param modelSubscription</em>
<a class="jxr_linenumber" name="L1022" href="#L1022">1022</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L1023" href="#L1023">1023</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L1024" href="#L1024">1024</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapSubscription(org.uddi.sub_v3.Subscription apiSubscription,
<a class="jxr_linenumber" name="L1025" href="#L1025">1025</a>                 org.apache.juddi.model.Subscription modelSubscription)
<a class="jxr_linenumber" name="L1026" href="#L1026">1026</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L1027" href="#L1027">1027</a> 
<a class="jxr_linenumber" name="L1028" href="#L1028">1028</a>                 modelSubscription.setSubscriptionKey(apiSubscription.getSubscriptionKey());
<a class="jxr_linenumber" name="L1029" href="#L1029">1029</a>                 modelSubscription.setBindingKey(apiSubscription.getBindingKey());
<a class="jxr_linenumber" name="L1030" href="#L1030">1030</a>                 <strong class="jxr_keyword">if</strong> (apiSubscription.getNotificationInterval() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1031" href="#L1031">1031</a>                         modelSubscription.setNotificationInterval(apiSubscription.getNotificationInterval().toString());
<a class="jxr_linenumber" name="L1032" href="#L1032">1032</a>                 }
<a class="jxr_linenumber" name="L1033" href="#L1033">1033</a>                 modelSubscription.setMaxEntities(apiSubscription.getMaxEntities());
<a class="jxr_linenumber" name="L1034" href="#L1034">1034</a>                 <strong class="jxr_keyword">if</strong> (apiSubscription.getExpiresAfter() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1035" href="#L1035">1035</a>                         GregorianCalendar gc = apiSubscription.getExpiresAfter().toGregorianCalendar();
<a class="jxr_linenumber" name="L1036" href="#L1036">1036</a>                         modelSubscription.setExpiresAfter(<strong class="jxr_keyword">new</strong> Date(gc.getTimeInMillis()));
<a class="jxr_linenumber" name="L1037" href="#L1037">1037</a>                 }
<a class="jxr_linenumber" name="L1038" href="#L1038">1038</a> 
<a class="jxr_linenumber" name="L1039" href="#L1039">1039</a>                 <strong class="jxr_keyword">if</strong> (apiSubscription.isBrief() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1040" href="#L1040">1040</a>                         modelSubscription.setBrief(apiSubscription.isBrief());
<a class="jxr_linenumber" name="L1041" href="#L1041">1041</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L1042" href="#L1042">1042</a>                         modelSubscription.setBrief(Boolean.FALSE);
<a class="jxr_linenumber" name="L1043" href="#L1043">1043</a>                 }
<a class="jxr_linenumber" name="L1044" href="#L1044">1044</a> 
<a class="jxr_linenumber" name="L1045" href="#L1045">1045</a>                 String rawFilter = JAXBMarshaller.marshallToString(<strong class="jxr_keyword">new</strong> ObjectFactory().createSubscriptionFilter(apiSubscription.getSubscriptionFilter()), <span class="jxr_string">"org.uddi.sub_v3"</span>);
<a class="jxr_linenumber" name="L1046" href="#L1046">1046</a>                 logger.debug(<span class="jxr_string">"marshalled subscription filter:  "</span> + rawFilter);
<a class="jxr_linenumber" name="L1047" href="#L1047">1047</a>                 modelSubscription.setSubscriptionFilter(rawFilter);
<a class="jxr_linenumber" name="L1048" href="#L1048">1048</a> 
<a class="jxr_linenumber" name="L1049" href="#L1049">1049</a>         }
<a class="jxr_linenumber" name="L1050" href="#L1050">1050</a> 
<a class="jxr_linenumber" name="L1051" href="#L1051">1051</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L1052" href="#L1052">1052</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L1053" href="#L1053">1053</a> <em class="jxr_javadoccomment">         * @param apiClientSubscriptionInfo</em>
<a class="jxr_linenumber" name="L1054" href="#L1054">1054</a> <em class="jxr_javadoccomment">         * @param modelClientSubscriptionInfo</em>
<a class="jxr_linenumber" name="L1055" href="#L1055">1055</a> <em class="jxr_javadoccomment">         * @throws DispositionReportFaultMessage</em>
<a class="jxr_linenumber" name="L1056" href="#L1056">1056</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L1057" href="#L1057">1057</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapClientSubscriptionInfo(org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo,
<a class="jxr_linenumber" name="L1058" href="#L1058">1058</a>                 org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo)
<a class="jxr_linenumber" name="L1059" href="#L1059">1059</a>                 <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L1060" href="#L1060">1060</a> 
<a class="jxr_linenumber" name="L1061" href="#L1061">1061</a>                 modelClientSubscriptionInfo.setLastNotified(<strong class="jxr_keyword">new</strong> Date());
<a class="jxr_linenumber" name="L1062" href="#L1062">1062</a>                 modelClientSubscriptionInfo.setSubscriptionKey(apiClientSubscriptionInfo.getSubscriptionKey());
<a class="jxr_linenumber" name="L1063" href="#L1063">1063</a>                 <strong class="jxr_keyword">if</strong> (apiClientSubscriptionInfo.getFromClerk() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1064" href="#L1064">1064</a>                         org.apache.juddi.model.Clerk modelClerk = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Clerk();
<a class="jxr_linenumber" name="L1065" href="#L1065">1065</a>                         mapClerk(apiClientSubscriptionInfo.getFromClerk(), modelClerk);
<a class="jxr_linenumber" name="L1066" href="#L1066">1066</a>                         modelClientSubscriptionInfo.setFromClerk(modelClerk);
<a class="jxr_linenumber" name="L1067" href="#L1067">1067</a>                 }
<a class="jxr_linenumber" name="L1068" href="#L1068">1068</a>                 <strong class="jxr_keyword">if</strong> (apiClientSubscriptionInfo.getToClerk() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1069" href="#L1069">1069</a>                         org.apache.juddi.model.Clerk modelToClerk = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Clerk();
<a class="jxr_linenumber" name="L1070" href="#L1070">1070</a>                         mapClerk(apiClientSubscriptionInfo.getToClerk(), modelToClerk);
<a class="jxr_linenumber" name="L1071" href="#L1071">1071</a>                         modelClientSubscriptionInfo.setToClerk(modelToClerk);
<a class="jxr_linenumber" name="L1072" href="#L1072">1072</a>                 }
<a class="jxr_linenumber" name="L1073" href="#L1073">1073</a> 
<a class="jxr_linenumber" name="L1074" href="#L1074">1074</a>         }
<a class="jxr_linenumber" name="L1075" href="#L1075">1075</a> 
<a class="jxr_linenumber" name="L1076" href="#L1076">1076</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L1077" href="#L1077">1077</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L1078" href="#L1078">1078</a> <em class="jxr_javadoccomment">         * @param apiClerk</em>
<a class="jxr_linenumber" name="L1079" href="#L1079">1079</a> <em class="jxr_javadoccomment">         * @param modelClerk</em>
<a class="jxr_linenumber" name="L1080" href="#L1080">1080</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L1081" href="#L1081">1081</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapClerk(org.apache.juddi.api_v3.Clerk apiClerk, org.apache.juddi.model.Clerk modelClerk) {
<a class="jxr_linenumber" name="L1082" href="#L1082">1082</a>                 <strong class="jxr_keyword">if</strong> (apiClerk != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1083" href="#L1083">1083</a> 
<a class="jxr_linenumber" name="L1084" href="#L1084">1084</a>                         modelClerk.setClerkName(apiClerk.getName());
<a class="jxr_linenumber" name="L1085" href="#L1085">1085</a>                         modelClerk.setCred(apiClerk.getPassword());
<a class="jxr_linenumber" name="L1086" href="#L1086">1086</a>                         modelClerk.setPublisherId(apiClerk.getPublisher());
<a class="jxr_linenumber" name="L1087" href="#L1087">1087</a>                         <strong class="jxr_keyword">if</strong> (apiClerk.getNode() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1088" href="#L1088">1088</a>                                 org.apache.juddi.model.Node modelNode = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.Node();
<a class="jxr_linenumber" name="L1089" href="#L1089">1089</a>                                 mapNode(apiClerk.getNode(), modelNode);
<a class="jxr_linenumber" name="L1090" href="#L1090">1090</a>                                 modelClerk.setNode(modelNode.getName());
<a class="jxr_linenumber" name="L1091" href="#L1091">1091</a>                         }
<a class="jxr_linenumber" name="L1092" href="#L1092">1092</a>                 }
<a class="jxr_linenumber" name="L1093" href="#L1093">1093</a>         }
<a class="jxr_linenumber" name="L1094" href="#L1094">1094</a> 
<a class="jxr_linenumber" name="L1095" href="#L1095">1095</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L1096" href="#L1096">1096</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="L1097" href="#L1097">1097</a> <em class="jxr_javadoccomment">         * @param apiNode</em>
<a class="jxr_linenumber" name="L1098" href="#L1098">1098</a> <em class="jxr_javadoccomment">         * @param modelNode</em>
<a class="jxr_linenumber" name="L1099" href="#L1099">1099</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="L1100" href="#L1100">1100</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapNode(org.apache.juddi.api_v3.Node apiNode, org.apache.juddi.model.Node modelNode) {
<a class="jxr_linenumber" name="L1101" href="#L1101">1101</a>                 <strong class="jxr_keyword">if</strong> (apiNode != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1102" href="#L1102">1102</a> 
<a class="jxr_linenumber" name="L1103" href="#L1103">1103</a>                         modelNode.setCustodyTransferUrl(apiNode.getCustodyTransferUrl());
<a class="jxr_linenumber" name="L1104" href="#L1104">1104</a>                         modelNode.setInquiryUrl(apiNode.getInquiryUrl());
<a class="jxr_linenumber" name="L1105" href="#L1105">1105</a>                         modelNode.setJuddiApiUrl(apiNode.getJuddiApiUrl());
<a class="jxr_linenumber" name="L1106" href="#L1106">1106</a>                         modelNode.setName(apiNode.getName());
<a class="jxr_linenumber" name="L1107" href="#L1107">1107</a>                         modelNode.setClientName(apiNode.getClientName());
<a class="jxr_linenumber" name="L1108" href="#L1108">1108</a>                         modelNode.setProxyTransport(apiNode.getProxyTransport());
<a class="jxr_linenumber" name="L1109" href="#L1109">1109</a>                         modelNode.setPublishUrl(apiNode.getPublishUrl());
<a class="jxr_linenumber" name="L1110" href="#L1110">1110</a>                         modelNode.setSecurityUrl(apiNode.getSecurityUrl());
<a class="jxr_linenumber" name="L1111" href="#L1111">1111</a>                         modelNode.setSubscriptionUrl(apiNode.getSubscriptionUrl());
<a class="jxr_linenumber" name="L1112" href="#L1112">1112</a>                         modelNode.setSubscriptionListenerUrl(apiNode.getSubscriptionListenerUrl());
<a class="jxr_linenumber" name="L1113" href="#L1113">1113</a>                         modelNode.setReplicationUrl(apiNode.getReplicationUrl());
<a class="jxr_linenumber" name="L1114" href="#L1114">1114</a>                         modelNode.setFactoryInitial(apiNode.getFactoryInitial());
<a class="jxr_linenumber" name="L1115" href="#L1115">1115</a>                         modelNode.setFactoryNamingProvider(apiNode.getFactoryNamingProvider());
<a class="jxr_linenumber" name="L1116" href="#L1116">1116</a>                         modelNode.setFactoryURLPkgs(apiNode.getFactoryURLPkgs());
<a class="jxr_linenumber" name="L1117" href="#L1117">1117</a>                 }
<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a>         }
<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a> 
<a class="jxr_linenumber" name="L1120" href="#L1120">1120</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/Reference.html">Reference</a> mapReference(<a href="../../../../org/apache/juddi/model/SignedInfo.html">SignedInfo</a> modelSignedInfo, ReferenceType apiReference) {
<a class="jxr_linenumber" name="L1121" href="#L1121">1121</a>                 <a href="../../../../org/apache/juddi/model/Reference.html">Reference</a> ref = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/Reference.html">Reference</a>();
<a class="jxr_linenumber" name="L1122" href="#L1122">1122</a>                 ref.setSignedInfo(modelSignedInfo);
<a class="jxr_linenumber" name="L1123" href="#L1123">1123</a>                 String refUri = apiReference.getURI();
<a class="jxr_linenumber" name="L1124" href="#L1124">1124</a>                 <strong class="jxr_keyword">if</strong> (refUri == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1125" href="#L1125">1125</a>                         refUri = <span class="jxr_string">""</span>;
<a class="jxr_linenumber" name="L1126" href="#L1126">1126</a>                 }
<a class="jxr_linenumber" name="L1127" href="#L1127">1127</a>                 ref.setUri(refUri);
<a class="jxr_linenumber" name="L1128" href="#L1128">1128</a>                 List&lt;org.w3._2000._09.xmldsig_.TransformType&gt; apiTransformList = apiReference.getTransforms().getTransform();
<a class="jxr_linenumber" name="L1129" href="#L1129">1129</a>                 <strong class="jxr_keyword">for</strong> (org.w3._2000._09.xmldsig_.TransformType apiTransform : apiTransformList) {
<a class="jxr_linenumber" name="L1130" href="#L1130">1130</a>                         <a href="../../../../org/apache/juddi/model/SignatureTransform.html">SignatureTransform</a> modelTransform = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/SignatureTransform.html">SignatureTransform</a>();
<a class="jxr_linenumber" name="L1131" href="#L1131">1131</a>                         modelTransform.setReference(ref);
<a class="jxr_linenumber" name="L1132" href="#L1132">1132</a>                         modelTransform.setTransform(apiTransform.getAlgorithm());
<a class="jxr_linenumber" name="L1133" href="#L1133">1133</a> 
<a class="jxr_linenumber" name="L1134" href="#L1134">1134</a>                         <strong class="jxr_keyword">for</strong> (Object xform : apiTransform.getContent()) {
<a class="jxr_linenumber" name="L1135" href="#L1135">1135</a>                                 <a href="../../../../org/apache/juddi/model/SignatureTransformDataValue.html">SignatureTransformDataValue</a> sdv = mapSignatureTransformDataValue(xform);
<a class="jxr_linenumber" name="L1136" href="#L1136">1136</a>                                 sdv.setSignatureTransform(modelTransform);
<a class="jxr_linenumber" name="L1137" href="#L1137">1137</a>                                 modelTransform.getSignatureTransformDataValue().add(sdv);
<a class="jxr_linenumber" name="L1138" href="#L1138">1138</a>                         }
<a class="jxr_linenumber" name="L1139" href="#L1139">1139</a> 
<a class="jxr_linenumber" name="L1140" href="#L1140">1140</a>                         ref.getTransforms().add(modelTransform);
<a class="jxr_linenumber" name="L1141" href="#L1141">1141</a>                 }
<a class="jxr_linenumber" name="L1142" href="#L1142">1142</a>                 String digestMethodStr = apiReference.getDigestMethod().getAlgorithm();
<a class="jxr_linenumber" name="L1143" href="#L1143">1143</a>                 byte[] digestValueBytes = apiReference.getDigestValue();
<a class="jxr_linenumber" name="L1144" href="#L1144">1144</a>                 ref.setDigestMethod(digestMethodStr);
<a class="jxr_linenumber" name="L1145" href="#L1145">1145</a>                 ref.setDigestValue(digestValueBytes);
<a class="jxr_linenumber" name="L1146" href="#L1146">1146</a>                 <strong class="jxr_keyword">return</strong> ref;
<a class="jxr_linenumber" name="L1147" href="#L1147">1147</a>         }
<a class="jxr_linenumber" name="L1148" href="#L1148">1148</a> 
<a class="jxr_linenumber" name="L1149" href="#L1149">1149</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> mapX509DataType(JAXBElement apiKeyInfoContentJAXB, <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a> modelKeyInfo) <strong class="jxr_keyword">throws</strong> RuntimeException {
<a class="jxr_linenumber" name="L1150" href="#L1150">1150</a>                 X509DataType apiKeyInfoContent = (X509DataType) apiKeyInfoContentJAXB.getValue();
<a class="jxr_linenumber" name="L1151" href="#L1151">1151</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelX509KeyData = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1152" href="#L1152">1152</a>                 modelX509KeyData.setKeyDataType(X509DataType.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1153" href="#L1153">1153</a>                 modelX509KeyData.setKeyDataName(apiKeyInfoContentJAXB.getName().getLocalPart());
<a class="jxr_linenumber" name="L1154" href="#L1154">1154</a>                 modelX509KeyData.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L1155" href="#L1155">1155</a>                 List&lt;Object&gt; x509IssuerSerialOrX509SKIOrX509SubjectNameList = apiKeyInfoContent.getX509IssuerSerialOrX509SKIOrX509SubjectName();
<a class="jxr_linenumber" name="L1156" href="#L1156">1156</a>                 <strong class="jxr_keyword">for</strong> (Object x509IssuerSerialOrX509SKIOrX509SubjectNameObj : x509IssuerSerialOrX509SKIOrX509SubjectNameList) {
<a class="jxr_linenumber" name="L1157" href="#L1157">1157</a>                         JAXBElement x509IssuerSerialOrX509SKIOrX509SubjectNameJAXB = (JAXBElement) x509IssuerSerialOrX509SKIOrX509SubjectNameObj;
<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a>                         String tagName = x509IssuerSerialOrX509SKIOrX509SubjectNameJAXB.getName().getLocalPart();
<a class="jxr_linenumber" name="L1159" href="#L1159">1159</a>                         Object x509IssuerSerialOrX509SKIOrX509SubjectName = x509IssuerSerialOrX509SKIOrX509SubjectNameJAXB.getValue();
<a class="jxr_linenumber" name="L1160" href="#L1160">1160</a> 
<a class="jxr_linenumber" name="L1161" href="#L1161">1161</a>                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelKeyInfoValue = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1162" href="#L1162">1162</a>                         modelKeyInfoValue.setKeyDataName(tagName);
<a class="jxr_linenumber" name="L1163" href="#L1163">1163</a>                         <strong class="jxr_keyword">if</strong> (x509IssuerSerialOrX509SKIOrX509SubjectName instanceof byte[]) {
<a class="jxr_linenumber" name="L1164" href="#L1164">1164</a>                                 modelKeyInfoValue.setKeyDataValueBytes((byte[]) x509IssuerSerialOrX509SKIOrX509SubjectName);
<a class="jxr_linenumber" name="L1165" href="#L1165">1165</a>                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (x509IssuerSerialOrX509SKIOrX509SubjectName instanceof String) {
<a class="jxr_linenumber" name="L1166" href="#L1166">1166</a>                                 modelKeyInfoValue.setKeyDataValueString((String) x509IssuerSerialOrX509SKIOrX509SubjectName);
<a class="jxr_linenumber" name="L1167" href="#L1167">1167</a>                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (x509IssuerSerialOrX509SKIOrX509SubjectName instanceof X509IssuerSerialType) {
<a class="jxr_linenumber" name="L1168" href="#L1168">1168</a>                                 modelKeyInfoValue.setKeyDataType(X509IssuerSerialType.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1169" href="#L1169">1169</a>                                 X509IssuerSerialType x509IssuerSerialType = (X509IssuerSerialType) x509IssuerSerialOrX509SKIOrX509SubjectName;
<a class="jxr_linenumber" name="L1170" href="#L1170">1170</a>                                 modelKeyInfoValue.setKeyDataValueString(x509IssuerSerialType.getX509IssuerName());
<a class="jxr_linenumber" name="L1171" href="#L1171">1171</a>                                 modelKeyInfoValue.setKeyDataValueBytes(x509IssuerSerialType.getX509SerialNumber().toByteArray());
<a class="jxr_linenumber" name="L1172" href="#L1172">1172</a>                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (x509IssuerSerialOrX509SKIOrX509SubjectName != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1173" href="#L1173">1173</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Unrecognized Value for Element: "</span> + tagName + <span class="jxr_string">": "</span> + x509IssuerSerialOrX509SKIOrX509SubjectName.getClass().getCanonicalName());
<a class="jxr_linenumber" name="L1174" href="#L1174">1174</a>                         }
<a class="jxr_linenumber" name="L1175" href="#L1175">1175</a>                         modelKeyInfoValue.setKeyDataValue(modelX509KeyData);
<a class="jxr_linenumber" name="L1176" href="#L1176">1176</a>                         modelX509KeyData.getKeyDataValueList().add(modelKeyInfoValue);
<a class="jxr_linenumber" name="L1177" href="#L1177">1177</a>                 }
<a class="jxr_linenumber" name="L1178" href="#L1178">1178</a>                 <strong class="jxr_keyword">return</strong> modelX509KeyData;
<a class="jxr_linenumber" name="L1179" href="#L1179">1179</a>         }
<a class="jxr_linenumber" name="L1180" href="#L1180">1180</a> 
<a class="jxr_linenumber" name="L1181" href="#L1181">1181</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> mapKeyName(JAXBElement apiKeyInfoContentJAXB) {
<a class="jxr_linenumber" name="L1182" href="#L1182">1182</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelKeyNameKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1183" href="#L1183">1183</a>                 modelKeyNameKDV.setKeyDataType(String.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1184" href="#L1184">1184</a>                 modelKeyNameKDV.setKeyDataName(apiKeyInfoContentJAXB.getName().getLocalPart());
<a class="jxr_linenumber" name="L1185" href="#L1185">1185</a>                 modelKeyNameKDV.setKeyDataValueString((String) apiKeyInfoContentJAXB.getValue());
<a class="jxr_linenumber" name="L1186" href="#L1186">1186</a>                 <strong class="jxr_keyword">return</strong> modelKeyNameKDV;
<a class="jxr_linenumber" name="L1187" href="#L1187">1187</a>         }
<a class="jxr_linenumber" name="L1188" href="#L1188">1188</a> 
<a class="jxr_linenumber" name="L1189" href="#L1189">1189</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> mapKeyValue(JAXBElement apiKeyInfoContentJAXB, List&lt;KeyDataValue&gt; keyInfoDataValues) {
<a class="jxr_linenumber" name="L1190" href="#L1190">1190</a>                 KeyValueType kvt = (KeyValueType) apiKeyInfoContentJAXB.getValue();
<a class="jxr_linenumber" name="L1191" href="#L1191">1191</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modelKeyValueKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1192" href="#L1192">1192</a>                 modelKeyValueKDV.setKeyDataType(KeyValueType.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1193" href="#L1193">1193</a>                 modelKeyValueKDV.setKeyDataName(apiKeyInfoContentJAXB.getName().getLocalPart());
<a class="jxr_linenumber" name="L1194" href="#L1194">1194</a>                 keyInfoDataValues.add(modelKeyValueKDV);
<a class="jxr_linenumber" name="L1195" href="#L1195">1195</a>                 List&lt;Object&gt; kvObjList = kvt.getContent();
<a class="jxr_linenumber" name="L1196" href="#L1196">1196</a>                 <strong class="jxr_keyword">for</strong> (Object kvObj : kvObjList) {
<a class="jxr_linenumber" name="L1197" href="#L1197">1197</a>                         <strong class="jxr_keyword">if</strong> (kvObj instanceof JAXBElement) {
<a class="jxr_linenumber" name="L1198" href="#L1198">1198</a>                                 JAXBElement kvJAXB = (JAXBElement) kvObj;
<a class="jxr_linenumber" name="L1199" href="#L1199">1199</a>                                 Object childVal = kvJAXB.getValue();
<a class="jxr_linenumber" name="L1200" href="#L1200">1200</a> 
<a class="jxr_linenumber" name="L1201" href="#L1201">1201</a>                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> childKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1202" href="#L1202">1202</a>                                 childKDV.setKeyDataValue(modelKeyValueKDV);
<a class="jxr_linenumber" name="L1203" href="#L1203">1203</a>                                 childKDV.setKeyDataName(kvJAXB.getName().getLocalPart());
<a class="jxr_linenumber" name="L1204" href="#L1204">1204</a>                                 childKDV.setKeyDataType(childVal.getClass().getSimpleName());
<a class="jxr_linenumber" name="L1205" href="#L1205">1205</a>                                 modelKeyValueKDV.getKeyDataValueList().add(childKDV);
<a class="jxr_linenumber" name="L1206" href="#L1206">1206</a> 
<a class="jxr_linenumber" name="L1207" href="#L1207">1207</a>                                 <strong class="jxr_keyword">if</strong> (childVal instanceof DSAKeyValueType) {
<a class="jxr_linenumber" name="L1208" href="#L1208">1208</a>                                         DSAKeyValueType dsaKeyVal = (DSAKeyValueType) childVal;
<a class="jxr_linenumber" name="L1209" href="#L1209">1209</a>                                         String dsaKeyValueTagName = kvJAXB.getName().getLocalPart();
<a class="jxr_linenumber" name="L1210" href="#L1210">1210</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> dsaKeyValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, DSAKeyValueType.<strong class="jxr_keyword">class</strong>.getSimpleName(), dsaKeyValueTagName, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, childKDV);
<a class="jxr_linenumber" name="L1211" href="#L1211">1211</a>                                         childKDV.getKeyDataValueList().add(dsaKeyValKDV);
<a class="jxr_linenumber" name="L1212" href="#L1212">1212</a> 
<a class="jxr_linenumber" name="L1213" href="#L1213">1213</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> gValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"G"</span>, dsaKeyVal.getG(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1214" href="#L1214">1214</a>                                         dsaKeyValKDV.getKeyDataValueList().add(gValKDV);
<a class="jxr_linenumber" name="L1215" href="#L1215">1215</a> 
<a class="jxr_linenumber" name="L1216" href="#L1216">1216</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> jValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"J"</span>, dsaKeyVal.getJ(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1217" href="#L1217">1217</a>                                         dsaKeyValKDV.getKeyDataValueList().add(jValKDV);
<a class="jxr_linenumber" name="L1218" href="#L1218">1218</a> 
<a class="jxr_linenumber" name="L1219" href="#L1219">1219</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> pValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"P"</span>, dsaKeyVal.getP(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1220" href="#L1220">1220</a>                                         dsaKeyValKDV.getKeyDataValueList().add(pValKDV);
<a class="jxr_linenumber" name="L1221" href="#L1221">1221</a> 
<a class="jxr_linenumber" name="L1222" href="#L1222">1222</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> pGenCounterValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"PgenCounter"</span>, dsaKeyVal.getPgenCounter(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1223" href="#L1223">1223</a>                                         dsaKeyValKDV.getKeyDataValueList().add(pGenCounterValKDV);
<a class="jxr_linenumber" name="L1224" href="#L1224">1224</a> 
<a class="jxr_linenumber" name="L1225" href="#L1225">1225</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> qValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"Q"</span>, dsaKeyVal.getQ(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1226" href="#L1226">1226</a>                                         dsaKeyValKDV.getKeyDataValueList().add(qValKDV);
<a class="jxr_linenumber" name="L1227" href="#L1227">1227</a> 
<a class="jxr_linenumber" name="L1228" href="#L1228">1228</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> seedValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"Seed"</span>, dsaKeyVal.getSeed(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1229" href="#L1229">1229</a>                                         dsaKeyValKDV.getKeyDataValueList().add(seedValKDV);
<a class="jxr_linenumber" name="L1230" href="#L1230">1230</a> 
<a class="jxr_linenumber" name="L1231" href="#L1231">1231</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> yValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"Y"</span>, dsaKeyVal.getY(), <strong class="jxr_keyword">null</strong>, dsaKeyValKDV);
<a class="jxr_linenumber" name="L1232" href="#L1232">1232</a>                                         dsaKeyValKDV.getKeyDataValueList().add(yValKDV);
<a class="jxr_linenumber" name="L1233" href="#L1233">1233</a>                                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (childVal instanceof RSAKeyValueType) {
<a class="jxr_linenumber" name="L1234" href="#L1234">1234</a>                                         RSAKeyValueType rsaKeyVal = (RSAKeyValueType) childVal;
<a class="jxr_linenumber" name="L1235" href="#L1235">1235</a>                                         String rsaKeyValueTagName = kvJAXB.getName().getLocalPart();
<a class="jxr_linenumber" name="L1236" href="#L1236">1236</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> rsaKeyValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, RSAKeyValueType.<strong class="jxr_keyword">class</strong>.getSimpleName(), rsaKeyValueTagName, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, childKDV);
<a class="jxr_linenumber" name="L1237" href="#L1237">1237</a>                                         childKDV.getKeyDataValueList().add(rsaKeyValKDV);
<a class="jxr_linenumber" name="L1238" href="#L1238">1238</a> 
<a class="jxr_linenumber" name="L1239" href="#L1239">1239</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> exponentValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"Exponent"</span>, rsaKeyVal.getExponent(), <strong class="jxr_keyword">null</strong>, rsaKeyValKDV);
<a class="jxr_linenumber" name="L1240" href="#L1240">1240</a>                                         rsaKeyValKDV.getKeyDataValueList().add(exponentValKDV);
<a class="jxr_linenumber" name="L1241" href="#L1241">1241</a> 
<a class="jxr_linenumber" name="L1242" href="#L1242">1242</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> modulusValKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>(<strong class="jxr_keyword">null</strong>, byte[].<strong class="jxr_keyword">class</strong>.getSimpleName(), <span class="jxr_string">"Modulus"</span>, rsaKeyVal.getModulus(), <strong class="jxr_keyword">null</strong>, rsaKeyValKDV);
<a class="jxr_linenumber" name="L1243" href="#L1243">1243</a>                                         rsaKeyValKDV.getKeyDataValueList().add(modulusValKDV);
<a class="jxr_linenumber" name="L1244" href="#L1244">1244</a>                                 }
<a class="jxr_linenumber" name="L1245" href="#L1245">1245</a>                         }
<a class="jxr_linenumber" name="L1246" href="#L1246">1246</a>                 }
<a class="jxr_linenumber" name="L1247" href="#L1247">1247</a>                 <strong class="jxr_keyword">return</strong> modelKeyValueKDV;
<a class="jxr_linenumber" name="L1248" href="#L1248">1248</a>         }
<a class="jxr_linenumber" name="L1249" href="#L1249">1249</a> 
<a class="jxr_linenumber" name="L1250" href="#L1250">1250</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> mapRetrievalMethod(String apiKeyInfoContentTagName, <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a> modelKeyInfo, RetrievalMethodType retrievalMethodType) {
<a class="jxr_linenumber" name="L1251" href="#L1251">1251</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> retrievalMethodTypeKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1252" href="#L1252">1252</a>                 retrievalMethodTypeKDV.setKeyDataName(apiKeyInfoContentTagName);
<a class="jxr_linenumber" name="L1253" href="#L1253">1253</a>                 retrievalMethodTypeKDV.setKeyDataType(RetrievalMethodType.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1254" href="#L1254">1254</a>                 retrievalMethodTypeKDV.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L1255" href="#L1255">1255</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> uriKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1256" href="#L1256">1256</a>                 uriKDV.setKeyDataName(<span class="jxr_string">"URI"</span>);
<a class="jxr_linenumber" name="L1257" href="#L1257">1257</a>                 uriKDV.setKeyDataType(String.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1258" href="#L1258">1258</a>                 uriKDV.setKeyDataValue(retrievalMethodTypeKDV);
<a class="jxr_linenumber" name="L1259" href="#L1259">1259</a>                 uriKDV.setKeyDataValueString(retrievalMethodType.getURI());
<a class="jxr_linenumber" name="L1260" href="#L1260">1260</a>                 retrievalMethodTypeKDV.getKeyDataValueList().add(uriKDV);
<a class="jxr_linenumber" name="L1261" href="#L1261">1261</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> typeKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1262" href="#L1262">1262</a>                 typeKDV.setKeyDataName(<span class="jxr_string">"Type"</span>);
<a class="jxr_linenumber" name="L1263" href="#L1263">1263</a>                 typeKDV.setKeyDataType(String.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1264" href="#L1264">1264</a>                 typeKDV.setKeyDataValue(retrievalMethodTypeKDV);
<a class="jxr_linenumber" name="L1265" href="#L1265">1265</a>                 typeKDV.setKeyDataValueString(retrievalMethodType.getType());
<a class="jxr_linenumber" name="L1266" href="#L1266">1266</a>                 retrievalMethodTypeKDV.getKeyDataValueList().add(typeKDV);
<a class="jxr_linenumber" name="L1267" href="#L1267">1267</a>                 TransformsType transformsType = retrievalMethodType.getTransforms();
<a class="jxr_linenumber" name="L1268" href="#L1268">1268</a>                 <strong class="jxr_keyword">if</strong> (transformsType != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1269" href="#L1269">1269</a>                         List&lt;TransformType&gt; tTypeList = transformsType.getTransform();
<a class="jxr_linenumber" name="L1270" href="#L1270">1270</a>                         <strong class="jxr_keyword">for</strong> (TransformType tType : tTypeList) {
<a class="jxr_linenumber" name="L1271" href="#L1271">1271</a>                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> transformKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1272" href="#L1272">1272</a>                                 transformKDV.setKeyDataName(<span class="jxr_string">"Transform"</span>);
<a class="jxr_linenumber" name="L1273" href="#L1273">1273</a>                                 transformKDV.setKeyDataType(String.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1274" href="#L1274">1274</a>                                 transformKDV.setKeyDataValue(retrievalMethodTypeKDV);
<a class="jxr_linenumber" name="L1275" href="#L1275">1275</a>                                 transformKDV.setKeyDataValueString(tType.getAlgorithm());
<a class="jxr_linenumber" name="L1276" href="#L1276">1276</a> 
<a class="jxr_linenumber" name="L1277" href="#L1277">1277</a>                                 <strong class="jxr_keyword">for</strong> (Object xform : tType.getContent()) {
<a class="jxr_linenumber" name="L1278" href="#L1278">1278</a>                                         <a href="../../../../org/apache/juddi/model/SignatureTransformDataValue.html">SignatureTransformDataValue</a> stdv = mapSignatureTransformDataValue(xform);
<a class="jxr_linenumber" name="L1279" href="#L1279">1279</a>                                         <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> transformContentKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1280" href="#L1280">1280</a>                                         transformContentKDV.setKeyDataType(stdv.getContentType());
<a class="jxr_linenumber" name="L1281" href="#L1281">1281</a>                                         transformContentKDV.setKeyDataValueBytes(stdv.getContentBytes());
<a class="jxr_linenumber" name="L1282" href="#L1282">1282</a>                                         transformContentKDV.setKeyDataValue(transformKDV);
<a class="jxr_linenumber" name="L1283" href="#L1283">1283</a>                                         transformKDV.getKeyDataValueList().add(transformContentKDV);
<a class="jxr_linenumber" name="L1284" href="#L1284">1284</a>                                 }
<a class="jxr_linenumber" name="L1285" href="#L1285">1285</a> 
<a class="jxr_linenumber" name="L1286" href="#L1286">1286</a>                                 retrievalMethodTypeKDV.getKeyDataValueList().add(transformKDV);
<a class="jxr_linenumber" name="L1287" href="#L1287">1287</a>                         }
<a class="jxr_linenumber" name="L1288" href="#L1288">1288</a>                 }
<a class="jxr_linenumber" name="L1289" href="#L1289">1289</a>                 <strong class="jxr_keyword">return</strong> retrievalMethodTypeKDV;
<a class="jxr_linenumber" name="L1290" href="#L1290">1290</a>         }
<a class="jxr_linenumber" name="L1291" href="#L1291">1291</a> 
<a class="jxr_linenumber" name="L1292" href="#L1292">1292</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> mapPGPDataType(String apiKeyInfoContentTagName, <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a> modelKeyInfo, PGPDataType pgpDataType) {
<a class="jxr_linenumber" name="L1293" href="#L1293">1293</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> pgpDataTypeKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1294" href="#L1294">1294</a>                 pgpDataTypeKDV.setKeyDataName(apiKeyInfoContentTagName);
<a class="jxr_linenumber" name="L1295" href="#L1295">1295</a>                 pgpDataTypeKDV.setKeyDataType(PGPDataType.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1296" href="#L1296">1296</a>                 pgpDataTypeKDV.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L1297" href="#L1297">1297</a> 
<a class="jxr_linenumber" name="L1298" href="#L1298">1298</a>                 List&lt;Object&gt; pgpDataValues = pgpDataType.getContent();
<a class="jxr_linenumber" name="L1299" href="#L1299">1299</a>                 <strong class="jxr_keyword">for</strong> (Object pgpDataValue : pgpDataValues) {
<a class="jxr_linenumber" name="L1300" href="#L1300">1300</a>                         <strong class="jxr_keyword">if</strong> (pgpDataValue instanceof JAXBElement) {
<a class="jxr_linenumber" name="L1301" href="#L1301">1301</a>                                 JAXBElement pgpDataJAXB = (JAXBElement) pgpDataValue;
<a class="jxr_linenumber" name="L1302" href="#L1302">1302</a>                                 String tagName = pgpDataJAXB.getName().getLocalPart();
<a class="jxr_linenumber" name="L1303" href="#L1303">1303</a> 
<a class="jxr_linenumber" name="L1304" href="#L1304">1304</a>                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> keyIDKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1305" href="#L1305">1305</a>                                 keyIDKDV.setKeyDataName(tagName);
<a class="jxr_linenumber" name="L1306" href="#L1306">1306</a>                                 keyIDKDV.setKeyDataValue(pgpDataTypeKDV);
<a class="jxr_linenumber" name="L1307" href="#L1307">1307</a>                                 <strong class="jxr_keyword">if</strong> (pgpDataJAXB.getValue() instanceof String) {
<a class="jxr_linenumber" name="L1308" href="#L1308">1308</a>                                         keyIDKDV.setKeyDataValueString((String) pgpDataJAXB.getValue());
<a class="jxr_linenumber" name="L1309" href="#L1309">1309</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L1310" href="#L1310">1310</a>                                         keyIDKDV.setKeyDataValueBytes((byte[]) pgpDataJAXB.getValue());
<a class="jxr_linenumber" name="L1311" href="#L1311">1311</a>                                 }
<a class="jxr_linenumber" name="L1312" href="#L1312">1312</a>                                 pgpDataTypeKDV.getKeyDataValueList().add(keyIDKDV);
<a class="jxr_linenumber" name="L1313" href="#L1313">1313</a>                         }
<a class="jxr_linenumber" name="L1314" href="#L1314">1314</a>                 }
<a class="jxr_linenumber" name="L1315" href="#L1315">1315</a>                 <strong class="jxr_keyword">return</strong> pgpDataTypeKDV;
<a class="jxr_linenumber" name="L1316" href="#L1316">1316</a>         }
<a class="jxr_linenumber" name="L1317" href="#L1317">1317</a> 
<a class="jxr_linenumber" name="L1318" href="#L1318">1318</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> mapSPKIDataType(String apiKeyInfoContentTagName, <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a> modelKeyInfo, SPKIDataType spkiDataType) {
<a class="jxr_linenumber" name="L1319" href="#L1319">1319</a>                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> spkiDataTypeKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1320" href="#L1320">1320</a>                 spkiDataTypeKDV.setKeyDataName(apiKeyInfoContentTagName);
<a class="jxr_linenumber" name="L1321" href="#L1321">1321</a>                 spkiDataTypeKDV.setKeyDataType(SPKIDataType.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1322" href="#L1322">1322</a>                 spkiDataTypeKDV.setKeyInfo(modelKeyInfo);
<a class="jxr_linenumber" name="L1323" href="#L1323">1323</a> 
<a class="jxr_linenumber" name="L1324" href="#L1324">1324</a>                 List&lt;Object&gt; spkiDataValues = spkiDataType.getSPKISexpAndAny();
<a class="jxr_linenumber" name="L1325" href="#L1325">1325</a>                 <strong class="jxr_keyword">for</strong> (Object spkiDataValue : spkiDataValues) {
<a class="jxr_linenumber" name="L1326" href="#L1326">1326</a>                         <strong class="jxr_keyword">if</strong> (spkiDataValue instanceof JAXBElement) {
<a class="jxr_linenumber" name="L1327" href="#L1327">1327</a>                                 JAXBElement spkiDataJAXB = (JAXBElement) spkiDataValue;
<a class="jxr_linenumber" name="L1328" href="#L1328">1328</a>                                 String tagName = spkiDataJAXB.getName().getLocalPart();
<a class="jxr_linenumber" name="L1329" href="#L1329">1329</a> 
<a class="jxr_linenumber" name="L1330" href="#L1330">1330</a>                                 <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a> keyIDKDV = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyDataValue.html">KeyDataValue</a>();
<a class="jxr_linenumber" name="L1331" href="#L1331">1331</a>                                 keyIDKDV.setKeyDataName(tagName);
<a class="jxr_linenumber" name="L1332" href="#L1332">1332</a>                                 keyIDKDV.setKeyDataValue(spkiDataTypeKDV);
<a class="jxr_linenumber" name="L1333" href="#L1333">1333</a>                                 <strong class="jxr_keyword">if</strong> (spkiDataJAXB.getValue() instanceof String) {
<a class="jxr_linenumber" name="L1334" href="#L1334">1334</a>                                         keyIDKDV.setKeyDataValueString((String) spkiDataJAXB.getValue());
<a class="jxr_linenumber" name="L1335" href="#L1335">1335</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L1336" href="#L1336">1336</a>                                         keyIDKDV.setKeyDataValueBytes((byte[]) spkiDataJAXB.getValue());
<a class="jxr_linenumber" name="L1337" href="#L1337">1337</a>                                 }
<a class="jxr_linenumber" name="L1338" href="#L1338">1338</a>                                 spkiDataTypeKDV.getKeyDataValueList().add(keyIDKDV);
<a class="jxr_linenumber" name="L1339" href="#L1339">1339</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L1340" href="#L1340">1340</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Unrecognized type: "</span> + spkiDataValue.getClass().getCanonicalName());
<a class="jxr_linenumber" name="L1341" href="#L1341">1341</a>                         }
<a class="jxr_linenumber" name="L1342" href="#L1342">1342</a>                 }
<a class="jxr_linenumber" name="L1343" href="#L1343">1343</a>                 <strong class="jxr_keyword">return</strong> spkiDataTypeKDV;
<a class="jxr_linenumber" name="L1344" href="#L1344">1344</a>         }
<a class="jxr_linenumber" name="L1345" href="#L1345">1345</a> 
<a class="jxr_linenumber" name="L1346" href="#L1346">1346</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/SignatureTransformDataValue.html">SignatureTransformDataValue</a> mapSignatureTransformDataValue(Object xform) {
<a class="jxr_linenumber" name="L1347" href="#L1347">1347</a>                 <a href="../../../../org/apache/juddi/model/SignatureTransformDataValue.html">SignatureTransformDataValue</a> sdv = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/SignatureTransformDataValue.html">SignatureTransformDataValue</a>();
<a class="jxr_linenumber" name="L1348" href="#L1348">1348</a>                 <strong class="jxr_keyword">if</strong> (xform instanceof String) {
<a class="jxr_linenumber" name="L1349" href="#L1349">1349</a>                         sdv.setContentType(String.<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1350" href="#L1350">1350</a>                         String xformStr = xform.toString();
<a class="jxr_linenumber" name="L1351" href="#L1351">1351</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L1352" href="#L1352">1352</a>                                 byte[] xformBytes = xformStr.getBytes(AuthenticatedService.UTF8);
<a class="jxr_linenumber" name="L1353" href="#L1353">1353</a>                                 sdv.setContentBytes(xformBytes);
<a class="jxr_linenumber" name="L1354" href="#L1354">1354</a>                         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L1355" href="#L1355">1355</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Failed to encode string due to: "</span> + e.getMessage(), e);
<a class="jxr_linenumber" name="L1356" href="#L1356">1356</a>                         }
<a class="jxr_linenumber" name="L1357" href="#L1357">1357</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (xform instanceof Element) {
<a class="jxr_linenumber" name="L1358" href="#L1358">1358</a>                         sdv.setContentType(Element.<strong class="jxr_keyword">class</strong>.getCanonicalName());
<a class="jxr_linenumber" name="L1359" href="#L1359">1359</a>                         Element xformEl = (Element) xform;
<a class="jxr_linenumber" name="L1360" href="#L1360">1360</a>                         String str = serializeTransformElement(xformEl);
<a class="jxr_linenumber" name="L1361" href="#L1361">1361</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L1362" href="#L1362">1362</a>                                 sdv.setContentBytes(str.getBytes(AuthenticatedService.UTF8));
<a class="jxr_linenumber" name="L1363" href="#L1363">1363</a>                         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L1364" href="#L1364">1364</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Failed to encode string due to: "</span> + e.getMessage(), e);
<a class="jxr_linenumber" name="L1365" href="#L1365">1365</a>                         }
<a class="jxr_linenumber" name="L1366" href="#L1366">1366</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (xform instanceof byte[]) {
<a class="jxr_linenumber" name="L1367" href="#L1367">1367</a>                         sdv.setContentType(byte[].<strong class="jxr_keyword">class</strong>.getSimpleName());
<a class="jxr_linenumber" name="L1368" href="#L1368">1368</a>                         sdv.setContentBytes((byte[]) xform);
<a class="jxr_linenumber" name="L1369" href="#L1369">1369</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (xform instanceof JAXBElement) {
<a class="jxr_linenumber" name="L1370" href="#L1370">1370</a>                         sdv.setContentType(Element.<strong class="jxr_keyword">class</strong>.getCanonicalName());
<a class="jxr_linenumber" name="L1371" href="#L1371">1371</a>                         JAXBElement xformJAXB = (JAXBElement) xform;
<a class="jxr_linenumber" name="L1372" href="#L1372">1372</a>                         DOMResult domResult = <strong class="jxr_keyword">new</strong> DOMResult();
<a class="jxr_linenumber" name="L1373" href="#L1373">1373</a>                         JAXB.marshal(xformJAXB, domResult);
<a class="jxr_linenumber" name="L1374" href="#L1374">1374</a>                         Element xformEl = ((Document) domResult.getNode()).getDocumentElement();
<a class="jxr_linenumber" name="L1375" href="#L1375">1375</a>                         String str = serializeTransformElement(xformEl);
<a class="jxr_linenumber" name="L1376" href="#L1376">1376</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L1377" href="#L1377">1377</a>                                 sdv.setContentBytes(str.getBytes(AuthenticatedService.UTF8));
<a class="jxr_linenumber" name="L1378" href="#L1378">1378</a>                         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="L1379" href="#L1379">1379</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Failed to encode string due to: "</span> + e.getMessage(), e);
<a class="jxr_linenumber" name="L1380" href="#L1380">1380</a>                         }
<a class="jxr_linenumber" name="L1381" href="#L1381">1381</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L1382" href="#L1382">1382</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Unrecognized type: "</span> + xform.getClass().getCanonicalName());
<a class="jxr_linenumber" name="L1383" href="#L1383">1383</a>                 }
<a class="jxr_linenumber" name="L1384" href="#L1384">1384</a>                 <strong class="jxr_keyword">return</strong> sdv;
<a class="jxr_linenumber" name="L1385" href="#L1385">1385</a>         }
<a class="jxr_linenumber" name="L1386" href="#L1386">1386</a> 
<a class="jxr_linenumber" name="L1387" href="#L1387">1387</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String serializeTransformElement(Element xformEl) <strong class="jxr_keyword">throws</strong> DOMException, LSException {
<a class="jxr_linenumber" name="L1388" href="#L1388">1388</a>                 Document document = xformEl.getOwnerDocument();
<a class="jxr_linenumber" name="L1389" href="#L1389">1389</a>                 DOMImplementationLS domImplLS = (DOMImplementationLS) document.getImplementation();
<a class="jxr_linenumber" name="L1390" href="#L1390">1390</a>                 LSSerializer serializer = domImplLS.createLSSerializer();
<a class="jxr_linenumber" name="L1391" href="#L1391">1391</a> <em class="jxr_comment">//        serializer.getDomConfig().setParameter("namespaces", true);</em>
<a class="jxr_linenumber" name="L1392" href="#L1392">1392</a> <em class="jxr_comment">//        serializer.getDomConfig().setParameter("namespace-declarations", true);</em>
<a class="jxr_linenumber" name="L1393" href="#L1393">1393</a>                 serializer.getDomConfig().setParameter(<span class="jxr_string">"canonical-form"</span>, false);
<a class="jxr_linenumber" name="L1394" href="#L1394">1394</a>                 serializer.getDomConfig().setParameter(<span class="jxr_string">"xml-declaration"</span>, false);
<a class="jxr_linenumber" name="L1395" href="#L1395">1395</a>                 String str = serializer.writeToString(xformEl);
<a class="jxr_linenumber" name="L1396" href="#L1396">1396</a>                 <strong class="jxr_keyword">return</strong> str;
<a class="jxr_linenumber" name="L1397" href="#L1397">1397</a>         }
<a class="jxr_linenumber" name="L1398" href="#L1398">1398</a> 
<a class="jxr_linenumber" name="L1399" href="#L1399">1399</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> org.apache.juddi.model.ChangeRecord mapChangeRecord(<a href="../../../../org/apache/juddi/model/ChangeRecord.html">ChangeRecord</a> rec) <strong class="jxr_keyword">throws</strong> UnsupportedEncodingException {
<a class="jxr_linenumber" name="L1400" href="#L1400">1400</a>                 org.apache.juddi.model.ChangeRecord r = <strong class="jxr_keyword">new</strong> org.apache.juddi.model.ChangeRecord();
<a class="jxr_linenumber" name="L1401" href="#L1401">1401</a>                 <em class="jxr_comment">//r.setId(rec.getChangeID().getOriginatingUSN());</em>
<a class="jxr_linenumber" name="L1402" href="#L1402">1402</a>                 r.setOriginatingUSN(rec.getChangeID().getOriginatingUSN());
<a class="jxr_linenumber" name="L1403" href="#L1403">1403</a>                 <strong class="jxr_keyword">if</strong> (r.getOriginatingUSN() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1404" href="#L1404">1404</a>                         <em class="jxr_comment">//       logger.warn("strange, the getOriginatingUSN is null!!");</em>
<a class="jxr_linenumber" name="L1405" href="#L1405">1405</a>                         <em class="jxr_comment">//       JAXB.marshal(rec, System.out);</em>
<a class="jxr_linenumber" name="L1406" href="#L1406">1406</a>                         <em class="jxr_comment">//       Thread.dumpStack();</em>
<a class="jxr_linenumber" name="L1407" href="#L1407">1407</a>                 }
<a class="jxr_linenumber" name="L1408" href="#L1408">1408</a>                 r.setNodeID(rec.getChangeID().getNodeID());
<a class="jxr_linenumber" name="L1409" href="#L1409">1409</a>                 <strong class="jxr_keyword">if</strong> (rec.getChangeRecordNewData() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1410" href="#L1410">1410</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordNewData);
<a class="jxr_linenumber" name="L1411" href="#L1411">1411</a>                         r.setEntityKey(rec.getChangeRecordNewData().getOperationalInfo().getEntityKey());
<a class="jxr_linenumber" name="L1412" href="#L1412">1412</a>                         <strong class="jxr_keyword">if</strong> (rec.getChangeRecordNewData().getOperationalInfo().getEntityKey() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1413" href="#L1413">1413</a>                                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedEncodingException(<span class="jxr_string">"entity key is null! make sure it's filled out before saving!"</span>);
<a class="jxr_linenumber" name="L1414" href="#L1414">1414</a>                         }
<a class="jxr_linenumber" name="L1415" href="#L1415">1415</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordAcknowledgement() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1416" href="#L1416">1416</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordAcknowledgement);
<a class="jxr_linenumber" name="L1417" href="#L1417">1417</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordConditionFailed() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1418" href="#L1418">1418</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordConditionFailed);
<a class="jxr_linenumber" name="L1419" href="#L1419">1419</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordCorrection() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1420" href="#L1420">1420</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordCorrection);
<a class="jxr_linenumber" name="L1421" href="#L1421">1421</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordDelete() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1422" href="#L1422">1422</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordDelete);
<a class="jxr_linenumber" name="L1423" href="#L1423">1423</a>                         <strong class="jxr_keyword">if</strong> (rec.getChangeRecordDelete().getTModelKey() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1424" href="#L1424">1424</a>                                 r.setEntityKey(rec.getChangeRecordDelete().getTModelKey());
<a class="jxr_linenumber" name="L1425" href="#L1425">1425</a>                         }
<a class="jxr_linenumber" name="L1426" href="#L1426">1426</a>                         <strong class="jxr_keyword">if</strong> (rec.getChangeRecordDelete().getBindingKey() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1427" href="#L1427">1427</a>                                 r.setEntityKey(rec.getChangeRecordDelete().getBindingKey());
<a class="jxr_linenumber" name="L1428" href="#L1428">1428</a>                         }
<a class="jxr_linenumber" name="L1429" href="#L1429">1429</a>                         <strong class="jxr_keyword">if</strong> (rec.getChangeRecordDelete().getBusinessKey() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1430" href="#L1430">1430</a>                                 r.setEntityKey(rec.getChangeRecordDelete().getBusinessKey());
<a class="jxr_linenumber" name="L1431" href="#L1431">1431</a>                         }
<a class="jxr_linenumber" name="L1432" href="#L1432">1432</a>                         <strong class="jxr_keyword">if</strong> (rec.getChangeRecordDelete().getServiceKey() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1433" href="#L1433">1433</a>                                 r.setEntityKey(rec.getChangeRecordDelete().getServiceKey());
<a class="jxr_linenumber" name="L1434" href="#L1434">1434</a>                         }
<a class="jxr_linenumber" name="L1435" href="#L1435">1435</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordDeleteAssertion() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1436" href="#L1436">1436</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordDeleteAssertion);
<a class="jxr_linenumber" name="L1437" href="#L1437">1437</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordHide() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1438" href="#L1438">1438</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordHide);
<a class="jxr_linenumber" name="L1439" href="#L1439">1439</a>                         r.setEntityKey(rec.getChangeRecordHide().getTModelKey());
<a class="jxr_linenumber" name="L1440" href="#L1440">1440</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordNewDataConditional() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1441" href="#L1441">1441</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordNewDataConditional);
<a class="jxr_linenumber" name="L1442" href="#L1442">1442</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordNull() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1443" href="#L1443">1443</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordNull);
<a class="jxr_linenumber" name="L1444" href="#L1444">1444</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rec.getChangeRecordPublisherAssertion() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1445" href="#L1445">1445</a>                         r.setRecordType(org.apache.juddi.model.ChangeRecord.RecordType.ChangeRecordPublisherAssertion);
<a class="jxr_linenumber" name="L1446" href="#L1446">1446</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="L1447" href="#L1447">1447</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedEncodingException(<span class="jxr_string">"unknown type!"</span>);
<a class="jxr_linenumber" name="L1448" href="#L1448">1448</a>                 }
<a class="jxr_linenumber" name="L1449" href="#L1449">1449</a> 
<a class="jxr_linenumber" name="L1450" href="#L1450">1450</a>                 StringWriter sw = <strong class="jxr_keyword">new</strong> StringWriter();
<a class="jxr_linenumber" name="L1451" href="#L1451">1451</a>                 JAXB.marshal(rec, sw);
<a class="jxr_linenumber" name="L1452" href="#L1452">1452</a>                 r.setContents(sw.toString().getBytes(AuthenticatedService.UTF8));
<a class="jxr_linenumber" name="L1453" href="#L1453">1453</a>                 <strong class="jxr_keyword">return</strong> r;
<a class="jxr_linenumber" name="L1454" href="#L1454">1454</a> 
<a class="jxr_linenumber" name="L1455" href="#L1455">1455</a>         }
<a class="jxr_linenumber" name="L1456" href="#L1456">1456</a> 
<a class="jxr_linenumber" name="L1457" href="#L1457">1457</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapOperationalInfo(<a href="../../../../org/apache/juddi/model/UddiEntity.html">UddiEntity</a> model, OperationalInfo operationalInfo) {
<a class="jxr_linenumber" name="L1458" href="#L1458">1458</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo == <strong class="jxr_keyword">null</strong> || model == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1459" href="#L1459">1459</a>                         <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L1460" href="#L1460">1460</a>                 }
<a class="jxr_linenumber" name="L1461" href="#L1461">1461</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getCreated() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1462" href="#L1462">1462</a>                         model.setCreated(operationalInfo.getCreated().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1463" href="#L1463">1463</a>                 }
<a class="jxr_linenumber" name="L1464" href="#L1464">1464</a>                 model.setAuthorizedName(operationalInfo.getAuthorizedName());
<a class="jxr_linenumber" name="L1465" href="#L1465">1465</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getModified() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1466" href="#L1466">1466</a>                         model.setModified(operationalInfo.getModified().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1467" href="#L1467">1467</a>                 }
<a class="jxr_linenumber" name="L1468" href="#L1468">1468</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getModifiedIncludingChildren() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1469" href="#L1469">1469</a>                         model.setModifiedIncludingChildren(operationalInfo.getModifiedIncludingChildren().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1470" href="#L1470">1470</a>                 }
<a class="jxr_linenumber" name="L1471" href="#L1471">1471</a>                 model.setNodeId(operationalInfo.getNodeID());
<a class="jxr_linenumber" name="L1472" href="#L1472">1472</a> 
<a class="jxr_linenumber" name="L1473" href="#L1473">1473</a>         }
<a class="jxr_linenumber" name="L1474" href="#L1474">1474</a> 
<a class="jxr_linenumber" name="L1475" href="#L1475">1475</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapOperationalInfoIncludingChildren(<a href="../../../../org/apache/juddi/model/BusinessEntity.html">BusinessEntity</a> model, OperationalInfo operationalInfo) {
<a class="jxr_linenumber" name="L1476" href="#L1476">1476</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo == <strong class="jxr_keyword">null</strong> || model == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1477" href="#L1477">1477</a>                         <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L1478" href="#L1478">1478</a>                 }
<a class="jxr_linenumber" name="L1479" href="#L1479">1479</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getCreated() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1480" href="#L1480">1480</a>                         model.setCreated(operationalInfo.getCreated().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1481" href="#L1481">1481</a>                 }
<a class="jxr_linenumber" name="L1482" href="#L1482">1482</a>                 model.setAuthorizedName(operationalInfo.getAuthorizedName());
<a class="jxr_linenumber" name="L1483" href="#L1483">1483</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getModified() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1484" href="#L1484">1484</a>                         model.setModified(operationalInfo.getModified().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1485" href="#L1485">1485</a>                 }
<a class="jxr_linenumber" name="L1486" href="#L1486">1486</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getModifiedIncludingChildren() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1487" href="#L1487">1487</a>                         model.setModifiedIncludingChildren(operationalInfo.getModifiedIncludingChildren().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1488" href="#L1488">1488</a>                 }
<a class="jxr_linenumber" name="L1489" href="#L1489">1489</a>                 model.setNodeId(operationalInfo.getNodeID());
<a class="jxr_linenumber" name="L1490" href="#L1490">1490</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; model.getBusinessServices().size(); i++) {
<a class="jxr_linenumber" name="L1491" href="#L1491">1491</a>                         mapOperationalInfo(model.getBusinessServices().get(i), operationalInfo);
<a class="jxr_linenumber" name="L1492" href="#L1492">1492</a>                         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; model.getBusinessServices().get(i).getBindingTemplates().size(); k++) {
<a class="jxr_linenumber" name="L1493" href="#L1493">1493</a>                                 mapOperationalInfo(model.getBusinessServices().get(i).getBindingTemplates().get(k), operationalInfo);
<a class="jxr_linenumber" name="L1494" href="#L1494">1494</a>                         }
<a class="jxr_linenumber" name="L1495" href="#L1495">1495</a>                 }
<a class="jxr_linenumber" name="L1496" href="#L1496">1496</a> 
<a class="jxr_linenumber" name="L1497" href="#L1497">1497</a>         }
<a class="jxr_linenumber" name="L1498" href="#L1498">1498</a> 
<a class="jxr_linenumber" name="L1499" href="#L1499">1499</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapReplicationConfiguration(<a href="../../../../org/apache/juddi/model/ReplicationConfiguration.html">ReplicationConfiguration</a> replicationConfiguration, org.apache.juddi.model.ReplicationConfiguration model, EntityManager em) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L1500" href="#L1500">1500</a>                 <strong class="jxr_keyword">if</strong> (replicationConfiguration == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1501" href="#L1501">1501</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.replication.configNull"</span>));
<a class="jxr_linenumber" name="L1502" href="#L1502">1502</a>                 }
<a class="jxr_linenumber" name="L1503" href="#L1503">1503</a>                 model.setMaximumTimeToGetChanges(replicationConfiguration.getMaximumTimeToGetChanges());
<a class="jxr_linenumber" name="L1504" href="#L1504">1504</a>                 model.setMaximumTimeToSyncRegistry(replicationConfiguration.getMaximumTimeToSyncRegistry());
<a class="jxr_linenumber" name="L1505" href="#L1505">1505</a>                 <em class="jxr_comment">//this is set by the service when saving</em>
<a class="jxr_linenumber" name="L1506" href="#L1506">1506</a>                 model.setSerialNumber(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="L1507" href="#L1507">1507</a> 
<a class="jxr_linenumber" name="L1508" href="#L1508">1508</a>                 <em class="jxr_comment">//the spec doesn't specify what the format should be, however there was an example</em>
<a class="jxr_linenumber" name="L1509" href="#L1509">1509</a>                 <em class="jxr_comment">//2002 03 04 1859Z</em>
<a class="jxr_linenumber" name="L1510" href="#L1510">1510</a>                 SimpleDateFormat sdf = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"yyyyMMddkkmmZ"</span>);
<a class="jxr_linenumber" name="L1511" href="#L1511">1511</a>                 model.setTimeOfConfigurationUpdate(sdf.format(<strong class="jxr_keyword">new</strong> Date()));
<a class="jxr_linenumber" name="L1512" href="#L1512">1512</a>                 <strong class="jxr_keyword">if</strong> (replicationConfiguration.getRegistryContact() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1513" href="#L1513">1513</a>                         model.setContact(mapContact(replicationConfiguration.getRegistryContact().getContact(), model));
<a class="jxr_linenumber" name="L1514" href="#L1514">1514</a>                 }
<a class="jxr_linenumber" name="L1515" href="#L1515">1515</a>                 mapCommunicationGraph(model, replicationConfiguration.getCommunicationGraph(), em);
<a class="jxr_linenumber" name="L1516" href="#L1516">1516</a>                 model.setOperator(mapOperators(replicationConfiguration, model));
<a class="jxr_linenumber" name="L1517" href="#L1517">1517</a>                 <strong class="jxr_keyword">if</strong> (replicationConfiguration.getSignature() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1518" href="#L1518">1518</a>                         model.setSignatures(mapApiSignaturesToModelSignatures(replicationConfiguration.getSignature()));
<a class="jxr_linenumber" name="L1519" href="#L1519">1519</a>                 }
<a class="jxr_linenumber" name="L1520" href="#L1520">1520</a> 
<a class="jxr_linenumber" name="L1521" href="#L1521">1521</a>         }
<a class="jxr_linenumber" name="L1522" href="#L1522">1522</a> 
<a class="jxr_linenumber" name="L1523" href="#L1523">1523</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/Contact.html">Contact</a> mapContact(org.uddi.api_v3.Contact contact, org.apache.juddi.model.ReplicationConfiguration model) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L1524" href="#L1524">1524</a>                 <a href="../../../../org/apache/juddi/model/Contact.html">Contact</a> cmodel = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/Contact.html">Contact</a>();
<a class="jxr_linenumber" name="L1525" href="#L1525">1525</a>                 cmodel.setReplicationConfigId(model);
<a class="jxr_linenumber" name="L1526" href="#L1526">1526</a>                 cmodel.setAddresses(<strong class="jxr_keyword">new</strong> ArrayList&lt;Address&gt;());
<a class="jxr_linenumber" name="L1527" href="#L1527">1527</a>                 mapContactAddresses(contact.getAddress(), cmodel.getAddresses(), cmodel);
<a class="jxr_linenumber" name="L1528" href="#L1528">1528</a>                 <strong class="jxr_keyword">if</strong> (cmodel.getAddresses().isEmpty()) {
<a class="jxr_linenumber" name="L1529" href="#L1529">1529</a>                         cmodel.setAddresses(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="L1530" href="#L1530">1530</a>                 }
<a class="jxr_linenumber" name="L1531" href="#L1531">1531</a>                 <strong class="jxr_keyword">return</strong> cmodel;
<a class="jxr_linenumber" name="L1532" href="#L1532">1532</a>         }
<a class="jxr_linenumber" name="L1533" href="#L1533">1533</a> 
<a class="jxr_linenumber" name="L1534" href="#L1534">1534</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List&lt;Operator&gt; mapOperators(<a href="../../../../org/apache/juddi/model/ReplicationConfiguration.html">ReplicationConfiguration</a> cfg, org.apache.juddi.model.ReplicationConfiguration modelparent) <strong class="jxr_keyword">throws</strong> DispositionReportFaultMessage {
<a class="jxr_linenumber" name="L1535" href="#L1535">1535</a>                 <strong class="jxr_keyword">if</strong> (cfg == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1536" href="#L1536">1536</a>                         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L1537" href="#L1537">1537</a>                 }
<a class="jxr_linenumber" name="L1538" href="#L1538">1538</a>                 List&lt;org.uddi.repl_v3.Operator&gt; api = cfg.getOperator();
<a class="jxr_linenumber" name="L1539" href="#L1539">1539</a>                 <strong class="jxr_keyword">if</strong> (api == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1540" href="#L1540">1540</a>                         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L1541" href="#L1541">1541</a>                 }
<a class="jxr_linenumber" name="L1542" href="#L1542">1542</a>                 List&lt;Operator&gt; model = <strong class="jxr_keyword">new</strong> ArrayList&lt;Operator&gt;();
<a class="jxr_linenumber" name="L1543" href="#L1543">1543</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; api.size(); i++) {
<a class="jxr_linenumber" name="L1544" href="#L1544">1544</a>                         <a href="../../../../org/apache/juddi/model/Operator.html">Operator</a> op = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/Operator.html">Operator</a>();
<a class="jxr_linenumber" name="L1545" href="#L1545">1545</a>                         op.setParent(modelparent);
<a class="jxr_linenumber" name="L1546" href="#L1546">1546</a> 
<a class="jxr_linenumber" name="L1547" href="#L1547">1547</a>                         op.setSoapReplicationURL(api.get(i).getSoapReplicationURL());
<a class="jxr_linenumber" name="L1548" href="#L1548">1548</a> 
<a class="jxr_linenumber" name="L1549" href="#L1549">1549</a>                         <strong class="jxr_keyword">if</strong> (!api.get(i).getContact().isEmpty()) {
<a class="jxr_linenumber" name="L1550" href="#L1550">1550</a>                                 op.setContact(<strong class="jxr_keyword">new</strong> ArrayList&lt;Contact&gt;());
<a class="jxr_linenumber" name="L1551" href="#L1551">1551</a>                                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; api.get(i).getContact().size(); k++) {
<a class="jxr_linenumber" name="L1552" href="#L1552">1552</a>                                         op.getContact().add(mapContact(api.get(i).getContact().get(k), <strong class="jxr_keyword">null</strong>));
<a class="jxr_linenumber" name="L1553" href="#L1553">1553</a>                                 }
<a class="jxr_linenumber" name="L1554" href="#L1554">1554</a>                         }
<a class="jxr_linenumber" name="L1555" href="#L1555">1555</a>                         op.setOperatorNodeID(api.get(i).getOperatorNodeID());
<a class="jxr_linenumber" name="L1556" href="#L1556">1556</a>                         op.setOperatorStatus(mapOperatorStatus(api.get(i).getOperatorStatus()));
<a class="jxr_linenumber" name="L1557" href="#L1557">1557</a>                         <strong class="jxr_keyword">if</strong> (!api.get(i).getKeyInfo().isEmpty()) {
<a class="jxr_linenumber" name="L1558" href="#L1558">1558</a>                                 op.setKeyInfo(<strong class="jxr_keyword">new</strong> ArrayList&lt;KeyInfo&gt;());
<a class="jxr_linenumber" name="L1559" href="#L1559">1559</a>                                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; api.get(i).getKeyInfo().size(); k++) {
<a class="jxr_linenumber" name="L1560" href="#L1560">1560</a>                                         org.apache.juddi.model.KeyInfo modelKeyInfo = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/KeyInfo.html">KeyInfo</a>();
<a class="jxr_linenumber" name="L1561" href="#L1561">1561</a>                                         modelKeyInfo.setXmlID(api.get(i).getKeyInfo().get(i).getId());
<a class="jxr_linenumber" name="L1562" href="#L1562">1562</a>                                         modelKeyInfo.setKeyDataValue(<strong class="jxr_keyword">new</strong> ArrayList&lt;KeyDataValue&gt;());
<a class="jxr_linenumber" name="L1563" href="#L1563">1563</a>                                         <strong class="jxr_keyword">if</strong> (api.get(i).getKeyInfo().get(i).getContent() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1564" href="#L1564">1564</a>                                                 modelKeyInfo.setKeyDataValue(<strong class="jxr_keyword">new</strong> ArrayList&lt;KeyDataValue&gt;());
<a class="jxr_linenumber" name="L1565" href="#L1565">1565</a>                                                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> x = 0; x &lt; api.get(i).getKeyInfo().get(k).getContent().size(); x++) {
<a class="jxr_linenumber" name="L1566" href="#L1566">1566</a>                                                         mapKeyValue((JAXBElement) api.get(i).getKeyInfo().get(k).getContent().get(x), modelKeyInfo.getKeyDataValue());
<a class="jxr_linenumber" name="L1567" href="#L1567">1567</a>                                                 }
<a class="jxr_linenumber" name="L1568" href="#L1568">1568</a>                                         }
<a class="jxr_linenumber" name="L1569" href="#L1569">1569</a>                                         op.getKeyInfo().add(modelKeyInfo);
<a class="jxr_linenumber" name="L1570" href="#L1570">1570</a>                                 }
<a class="jxr_linenumber" name="L1571" href="#L1571">1571</a> 
<a class="jxr_linenumber" name="L1572" href="#L1572">1572</a>                         }
<a class="jxr_linenumber" name="L1573" href="#L1573">1573</a>                         model.add(op);
<a class="jxr_linenumber" name="L1574" href="#L1574">1574</a> 
<a class="jxr_linenumber" name="L1575" href="#L1575">1575</a>                 }
<a class="jxr_linenumber" name="L1576" href="#L1576">1576</a>                 <strong class="jxr_keyword">return</strong> model;
<a class="jxr_linenumber" name="L1577" href="#L1577">1577</a>         }
<a class="jxr_linenumber" name="L1578" href="#L1578">1578</a> 
<a class="jxr_linenumber" name="L1579" href="#L1579">1579</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/juddi/model/OperatorStatusType.html">OperatorStatusType</a> mapOperatorStatus(org.uddi.repl_v3.OperatorStatusType operatorStatus) {
<a class="jxr_linenumber" name="L1580" href="#L1580">1580</a>                 <strong class="jxr_keyword">switch</strong> (operatorStatus) {
<a class="jxr_linenumber" name="L1581" href="#L1581">1581</a>                         <strong class="jxr_keyword">case</strong> NEW:
<a class="jxr_linenumber" name="L1582" href="#L1582">1582</a>                                 <strong class="jxr_keyword">return</strong> OperatorStatusType.NEW;
<a class="jxr_linenumber" name="L1583" href="#L1583">1583</a>                         <strong class="jxr_keyword">case</strong> NORMAL:
<a class="jxr_linenumber" name="L1584" href="#L1584">1584</a>                                 <strong class="jxr_keyword">return</strong> OperatorStatusType.NORMAL;
<a class="jxr_linenumber" name="L1585" href="#L1585">1585</a>                         <strong class="jxr_keyword">case</strong> RESIGNED:
<a class="jxr_linenumber" name="L1586" href="#L1586">1586</a>                                 <strong class="jxr_keyword">return</strong> OperatorStatusType.RESIGNED;
<a class="jxr_linenumber" name="L1587" href="#L1587">1587</a>                 }
<a class="jxr_linenumber" name="L1588" href="#L1588">1588</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L1589" href="#L1589">1589</a>         }
<a class="jxr_linenumber" name="L1590" href="#L1590">1590</a> 
<a class="jxr_linenumber" name="L1591" href="#L1591">1591</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapCommunicationGraph(org.apache.juddi.model.ReplicationConfiguration model, CommunicationGraph communicationGraph, EntityManager em) <strong class="jxr_keyword">throws</strong> ValueNotAllowedException {
<a class="jxr_linenumber" name="L1592" href="#L1592">1592</a> 
<a class="jxr_linenumber" name="L1593" href="#L1593">1593</a>                 <strong class="jxr_keyword">if</strong> (model == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1594" href="#L1594">1594</a>                         <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L1595" href="#L1595">1595</a>                 }
<a class="jxr_linenumber" name="L1596" href="#L1596">1596</a> 
<a class="jxr_linenumber" name="L1597" href="#L1597">1597</a>                 <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L1598" href="#L1598">1598</a> <em class="jxr_javadoccomment">                 * Following the listing of nodes is the controlledMessage</em>
<a class="jxr_linenumber" name="L1599" href="#L1599">1599</a> <em class="jxr_javadoccomment">                 * element that lists the set of messages over which this</em>
<a class="jxr_linenumber" name="L1600" href="#L1600">1600</a> <em class="jxr_javadoccomment">                 * communication graph is intended to administer control of. If</em>
<a class="jxr_linenumber" name="L1601" href="#L1601">1601</a> <em class="jxr_javadoccomment">                 * a message element local name is listed in the</em>
<a class="jxr_linenumber" name="L1602" href="#L1602">1602</a> <em class="jxr_javadoccomment">                 * controlledMessage element, then such messages SHALL only be</em>
<a class="jxr_linenumber" name="L1603" href="#L1603">1603</a> <em class="jxr_javadoccomment">                 * sent between nodes that are listed in the subsequent edges of</em>
<a class="jxr_linenumber" name="L1604" href="#L1604">1604</a> <em class="jxr_javadoccomment">                 * the graph. In contrast, communication restrictions are not</em>
<a class="jxr_linenumber" name="L1605" href="#L1605">1605</a> <em class="jxr_javadoccomment">                 * imposed on replication messages not identified in the</em>
<a class="jxr_linenumber" name="L1606" href="#L1606">1606</a> <em class="jxr_javadoccomment">                 * controlledMessage element.</em>
<a class="jxr_linenumber" name="L1607" href="#L1607">1607</a> <em class="jxr_javadoccomment">                 */</em>
<a class="jxr_linenumber" name="L1608" href="#L1608">1608</a>                 <strong class="jxr_keyword">if</strong> (communicationGraph.getControlledMessage() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1609" href="#L1609">1609</a>                         model.setControlMessage(<strong class="jxr_keyword">new</strong> ArrayList&lt;ControlMessage&gt;());
<a class="jxr_linenumber" name="L1610" href="#L1610">1610</a> 
<a class="jxr_linenumber" name="L1611" href="#L1611">1611</a>                         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; communicationGraph.getControlledMessage().size(); k++) {
<a class="jxr_linenumber" name="L1612" href="#L1612">1612</a>                                 <a href="../../../../org/apache/juddi/model/ControlMessage.html">ControlMessage</a> BC = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/ControlMessage.html">ControlMessage</a>(communicationGraph.getControlledMessage().get(k));
<a class="jxr_linenumber" name="L1613" href="#L1613">1613</a>                                 BC.setReplicationConfiguration(model);
<a class="jxr_linenumber" name="L1614" href="#L1614">1614</a> 
<a class="jxr_linenumber" name="L1615" href="#L1615">1615</a>                                 model.getControlMessage().add(BC);
<a class="jxr_linenumber" name="L1616" href="#L1616">1616</a>                         }
<a class="jxr_linenumber" name="L1617" href="#L1617">1617</a>                 }
<a class="jxr_linenumber" name="L1618" href="#L1618">1618</a> 
<a class="jxr_linenumber" name="L1619" href="#L1619">1619</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; communicationGraph.getNode().size(); i++) {
<a class="jxr_linenumber" name="L1620" href="#L1620">1620</a>                         <a href="../../../../org/apache/juddi/model/ReplicationConfigurationNode.html">ReplicationConfigurationNode</a> replicationConfigurationNode = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/ReplicationConfigurationNode.html">ReplicationConfigurationNode</a>();
<a class="jxr_linenumber" name="L1621" href="#L1621">1621</a> 
<a class="jxr_linenumber" name="L1622" href="#L1622">1622</a>                         replicationConfigurationNode.setNodeName(communicationGraph.getNode().get(i));
<a class="jxr_linenumber" name="L1623" href="#L1623">1623</a>                         replicationConfigurationNode.setParent(model);
<a class="jxr_linenumber" name="L1624" href="#L1624">1624</a>                         model.getNode().add(replicationConfigurationNode);
<a class="jxr_linenumber" name="L1625" href="#L1625">1625</a>                 }
<a class="jxr_linenumber" name="L1626" href="#L1626">1626</a>                 <strong class="jxr_keyword">if</strong> (communicationGraph.getEdge() != <strong class="jxr_keyword">null</strong> &amp;&amp; !communicationGraph.getEdge().isEmpty()) {
<a class="jxr_linenumber" name="L1627" href="#L1627">1627</a>                         List&lt;Edge&gt; ret = <strong class="jxr_keyword">new</strong> ArrayList&lt;Edge&gt;();
<a class="jxr_linenumber" name="L1628" href="#L1628">1628</a>                         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; communicationGraph.getEdge().size(); i++) {
<a class="jxr_linenumber" name="L1629" href="#L1629">1629</a>                                 <a href="../../../../org/apache/juddi/model/Edge.html">Edge</a> e = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/Edge.html">Edge</a>();
<a class="jxr_linenumber" name="L1630" href="#L1630">1630</a>                                 e.setReplicationConfiguration(model);
<a class="jxr_linenumber" name="L1631" href="#L1631">1631</a> 
<a class="jxr_linenumber" name="L1632" href="#L1632">1632</a>                                 e.setMessageReceiver(communicationGraph.getEdge().get(i).getMessageReceiver());
<a class="jxr_linenumber" name="L1633" href="#L1633">1633</a>                                 e.setMessageSender(communicationGraph.getEdge().get(i).getMessageSender());
<a class="jxr_linenumber" name="L1634" href="#L1634">1634</a> 
<a class="jxr_linenumber" name="L1635" href="#L1635">1635</a>                                 <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L1636" href="#L1636">1636</a> <em class="jxr_javadoccomment">                                 * The message elements contain the local name</em>
<a class="jxr_linenumber" name="L1637" href="#L1637">1637</a> <em class="jxr_javadoccomment">                                 * of the Replication API message elements. They</em>
<a class="jxr_linenumber" name="L1638" href="#L1638">1638</a> <em class="jxr_javadoccomment">                                 * indicate that only messages of the type</em>
<a class="jxr_linenumber" name="L1639" href="#L1639">1639</a> <em class="jxr_javadoccomment">                                 * explicitly identified for a particular edge</em>
<a class="jxr_linenumber" name="L1640" href="#L1640">1640</a> <em class="jxr_javadoccomment">                                 * MAY be sent from the specified messageSender</em>
<a class="jxr_linenumber" name="L1641" href="#L1641">1641</a> <em class="jxr_javadoccomment">                                 * to the specified messageReceiver.</em>
<a class="jxr_linenumber" name="L1642" href="#L1642">1642</a> <em class="jxr_javadoccomment">                                 */</em>
<a class="jxr_linenumber" name="L1643" href="#L1643">1643</a>                                 <strong class="jxr_keyword">if</strong> (communicationGraph.getEdge().get(i).getMessage() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1644" href="#L1644">1644</a>                                         e.setMessage(<strong class="jxr_keyword">new</strong> ArrayList&lt;ControlMessage&gt;());
<a class="jxr_linenumber" name="L1645" href="#L1645">1645</a>                                         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; communicationGraph.getEdge().get(i).getMessage().size(); k++) {
<a class="jxr_linenumber" name="L1646" href="#L1646">1646</a>                                                 <a href="../../../../org/apache/juddi/model/ControlMessage.html">ControlMessage</a> controlMessage = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/ControlMessage.html">ControlMessage</a>(communicationGraph.getEdge().get(i).getMessage().get(k));
<a class="jxr_linenumber" name="L1647" href="#L1647">1647</a>                                                 controlMessage.setReplicationConfiguration(model);
<a class="jxr_linenumber" name="L1648" href="#L1648">1648</a>                                                 controlMessage.setParentEdge(e);
<a class="jxr_linenumber" name="L1649" href="#L1649">1649</a>                                                 e.getMessages().add(controlMessage);
<a class="jxr_linenumber" name="L1650" href="#L1650">1650</a>                                         }
<a class="jxr_linenumber" name="L1651" href="#L1651">1651</a>                                 }
<a class="jxr_linenumber" name="L1652" href="#L1652">1652</a>                                 <strong class="jxr_keyword">if</strong> (communicationGraph.getEdge().get(i).getMessageReceiverAlternate() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1653" href="#L1653">1653</a>                                         List&lt;EdgeReceiverAlternate&gt; eras = <strong class="jxr_keyword">new</strong> ArrayList&lt;EdgeReceiverAlternate&gt;();
<a class="jxr_linenumber" name="L1654" href="#L1654">1654</a>                                         <strong class="jxr_keyword">for</strong> (String s : communicationGraph.getEdge().get(i).getMessageReceiverAlternate()) {
<a class="jxr_linenumber" name="L1655" href="#L1655">1655</a>                                                 <a href="../../../../org/apache/juddi/model/EdgeReceiverAlternate.html">EdgeReceiverAlternate</a> x = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/juddi/model/EdgeReceiverAlternate.html">EdgeReceiverAlternate</a>();
<a class="jxr_linenumber" name="L1656" href="#L1656">1656</a>                                                 x.setParent(e);
<a class="jxr_linenumber" name="L1657" href="#L1657">1657</a>                                                 x.setReceiverAlternate(s);
<a class="jxr_linenumber" name="L1658" href="#L1658">1658</a>                                                 eras.add(x);
<a class="jxr_linenumber" name="L1659" href="#L1659">1659</a>                                         }
<a class="jxr_linenumber" name="L1660" href="#L1660">1660</a>                                         e.setMessageReceiverAlternate(eras);
<a class="jxr_linenumber" name="L1661" href="#L1661">1661</a> 
<a class="jxr_linenumber" name="L1662" href="#L1662">1662</a>                                 }
<a class="jxr_linenumber" name="L1663" href="#L1663">1663</a> 
<a class="jxr_linenumber" name="L1664" href="#L1664">1664</a>                                 ret.add(e);
<a class="jxr_linenumber" name="L1665" href="#L1665">1665</a>                         }
<a class="jxr_linenumber" name="L1666" href="#L1666">1666</a>                         model.setEdge(ret);
<a class="jxr_linenumber" name="L1667" href="#L1667">1667</a>                 }
<a class="jxr_linenumber" name="L1668" href="#L1668">1668</a>         }
<a class="jxr_linenumber" name="L1669" href="#L1669">1669</a> 
<a class="jxr_linenumber" name="L1670" href="#L1670">1670</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mapOperationalInfoIncludingChildren(<a href="../../../../org/apache/juddi/model/BusinessService.html">BusinessService</a> model, OperationalInfo operationalInfo) {
<a class="jxr_linenumber" name="L1671" href="#L1671">1671</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo == <strong class="jxr_keyword">null</strong> || model == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1672" href="#L1672">1672</a>                         <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="L1673" href="#L1673">1673</a>                 }
<a class="jxr_linenumber" name="L1674" href="#L1674">1674</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getCreated() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1675" href="#L1675">1675</a>                         model.setCreated(operationalInfo.getCreated().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1676" href="#L1676">1676</a>                 }
<a class="jxr_linenumber" name="L1677" href="#L1677">1677</a>                 model.setAuthorizedName(operationalInfo.getAuthorizedName());
<a class="jxr_linenumber" name="L1678" href="#L1678">1678</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getModified() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1679" href="#L1679">1679</a>                         model.setModified(operationalInfo.getModified().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1680" href="#L1680">1680</a>                 }
<a class="jxr_linenumber" name="L1681" href="#L1681">1681</a>                 <strong class="jxr_keyword">if</strong> (operationalInfo.getModifiedIncludingChildren() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L1682" href="#L1682">1682</a>                         model.setModifiedIncludingChildren(operationalInfo.getModifiedIncludingChildren().toGregorianCalendar().getTime());
<a class="jxr_linenumber" name="L1683" href="#L1683">1683</a>                 }
<a class="jxr_linenumber" name="L1684" href="#L1684">1684</a>                 model.setNodeId(operationalInfo.getNodeID());
<a class="jxr_linenumber" name="L1685" href="#L1685">1685</a> 
<a class="jxr_linenumber" name="L1686" href="#L1686">1686</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> k = 0; k &lt; model.getBindingTemplates().size(); k++) {
<a class="jxr_linenumber" name="L1687" href="#L1687">1687</a>                         mapOperationalInfo(model.getBindingTemplates().get(k), operationalInfo);
<a class="jxr_linenumber" name="L1688" href="#L1688">1688</a>                 }
<a class="jxr_linenumber" name="L1689" href="#L1689">1689</a> 
<a class="jxr_linenumber" name="L1690" href="#L1690">1690</a>         }
<a class="jxr_linenumber" name="L1691" href="#L1691">1691</a> 
<a class="jxr_linenumber" name="L1692" href="#L1692">1692</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>
