<!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=ISO-8859-1" />
<title>DefaultMaven2OsgiConverter xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.maven.shared.osgi;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.jar.JarFile;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.regex.Matcher;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.regex.Pattern;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.zip.ZipEntry;
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.artifact.Artifact;
<a name="35" href="#35">35</a>  
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Analyzer;
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>  
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment">/**</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * Default implementation of {@link Maven2OsgiConverter}</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * </em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * @plexus.component</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * </em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:carlos@apache.org" target="alexandria_uri">mailto:carlos@apache.org</a>"&gt;Carlos Sanchez&lt;/a&gt;</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * @version $Id$</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> */</em>
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> DefaultMaven2OsgiConverter implements Maven2OsgiConverter
<a name="48" href="#48">48</a>  {
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_SEPARATOR = System.getProperty( <span class="jxr_string">"file.separator"</span> );
<a name="51" href="#51">51</a>  
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> String getBundleSymbolicName( String groupId, String artifactId )
<a name="54" href="#54">54</a>      {
<a name="55" href="#55">55</a>          <strong class="jxr_keyword">return</strong> groupId + <span class="jxr_string">"."</span> + artifactId;
<a name="56" href="#56">56</a>      }
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>  
<a name="59" href="#59">59</a>      <em class="jxr_javadoccomment">/**</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment">     * Get the symbolic name as groupId + "." + artifactId, with the following exceptions</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment">     * &lt;ul&gt;</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment">     * &lt;li&gt;if artifact.getFile is not null and the jar contains a OSGi Manifest with</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     * Bundle-SymbolicName property then that value is returned&lt;/li&gt;</em>
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     * &lt;li&gt;if groupId has only one section (no dots) and artifact.getFile is not null then the</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment">     * first package name with classes is returned. eg. commons-logging:commons-logging -&gt;</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment">     * org.apache.commons.logging&lt;/li&gt;</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * &lt;li&gt;if artifactId is equal to last section of groupId then groupId is returned. eg.</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * org.apache.maven:maven -&gt; org.apache.maven&lt;/li&gt;</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * &lt;li&gt;if artifactId starts with last section of groupId that portion is removed. eg.</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * org.apache.maven:maven-core -&gt; org.apache.maven.core&lt;/li&gt;</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * &lt;li&gt;if artifactId starts with groupId then the artifactId is removed. eg.</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     * org.apache:org.apache.maven.core -&gt; org.apache.maven.core&lt;/li&gt;</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     * &lt;/ul&gt;</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     */</em>
<a name="75" href="#75">75</a>      <strong class="jxr_keyword">public</strong> String getBundleSymbolicName( Artifact artifact )
<a name="76" href="#76">76</a>      {
<a name="77" href="#77">77</a>          <strong class="jxr_keyword">if</strong> ( ( artifact.getFile() != <strong class="jxr_keyword">null</strong> ) &amp;&amp; artifact.getFile().isFile() )
<a name="78" href="#78">78</a>          {
<a name="79" href="#79">79</a>              Analyzer analyzer = <strong class="jxr_keyword">new</strong> Analyzer();
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>              JarFile jar = <strong class="jxr_keyword">null</strong>;
<a name="82" href="#82">82</a>              <strong class="jxr_keyword">try</strong>
<a name="83" href="#83">83</a>              {
<a name="84" href="#84">84</a>                  jar = <strong class="jxr_keyword">new</strong> JarFile( artifact.getFile(), false );
<a name="85" href="#85">85</a>  
<a name="86" href="#86">86</a>                  <strong class="jxr_keyword">if</strong> ( jar.getManifest() != <strong class="jxr_keyword">null</strong> )
<a name="87" href="#87">87</a>                  {
<a name="88" href="#88">88</a>                      String symbolicNameAttribute = jar.getManifest().getMainAttributes()
<a name="89" href="#89">89</a>                          .getValue( Analyzer.BUNDLE_SYMBOLICNAME );
<a name="90" href="#90">90</a>                      Map bundleSymbolicNameHeader = analyzer.parseHeader( symbolicNameAttribute );
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>                      Iterator it = bundleSymbolicNameHeader.keySet().iterator();
<a name="93" href="#93">93</a>                      <strong class="jxr_keyword">if</strong> ( it.hasNext() )
<a name="94" href="#94">94</a>                      {
<a name="95" href="#95">95</a>                          <strong class="jxr_keyword">return</strong> ( String ) it.next();
<a name="96" href="#96">96</a>                      }
<a name="97" href="#97">97</a>                  }
<a name="98" href="#98">98</a>              }
<a name="99" href="#99">99</a>              <strong class="jxr_keyword">catch</strong> ( IOException e )
<a name="100" href="#100">100</a>             {
<a name="101" href="#101">101</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/maven/shared/osgi/ManifestReadingException.html">ManifestReadingException</a>( <span class="jxr_string">"Error reading manifest in jar "</span>
<a name="102" href="#102">102</a>                     + artifact.getFile().getAbsolutePath(), e );
<a name="103" href="#103">103</a>             }
<a name="104" href="#104">104</a>             <strong class="jxr_keyword">finally</strong>
<a name="105" href="#105">105</a>             {
<a name="106" href="#106">106</a>                 <strong class="jxr_keyword">if</strong> ( jar != <strong class="jxr_keyword">null</strong> )
<a name="107" href="#107">107</a>                 {
<a name="108" href="#108">108</a>                     <strong class="jxr_keyword">try</strong>
<a name="109" href="#109">109</a>                     {
<a name="110" href="#110">110</a>                         jar.close();
<a name="111" href="#111">111</a>                     }
<a name="112" href="#112">112</a>                     <strong class="jxr_keyword">catch</strong> ( IOException e )
<a name="113" href="#113">113</a>                     {
<a name="114" href="#114">114</a>                     }
<a name="115" href="#115">115</a>                 }
<a name="116" href="#116">116</a>             }
<a name="117" href="#117">117</a>         }
<a name="118" href="#118">118</a> 
<a name="119" href="#119">119</a>         <strong class="jxr_keyword">int</strong> i = artifact.getGroupId().lastIndexOf( '.' );
<a name="120" href="#120">120</a>         <strong class="jxr_keyword">if</strong> ( ( i &lt; 0 ) &amp;&amp; ( artifact.getFile() != <strong class="jxr_keyword">null</strong> ) &amp;&amp; artifact.getFile().isFile() )
<a name="121" href="#121">121</a>         {
<a name="122" href="#122">122</a>             String groupIdFromPackage = getGroupIdFromPackage( artifact.getFile() );
<a name="123" href="#123">123</a>             <strong class="jxr_keyword">if</strong> ( groupIdFromPackage != <strong class="jxr_keyword">null</strong> )
<a name="124" href="#124">124</a>             {
<a name="125" href="#125">125</a>                 <strong class="jxr_keyword">return</strong> groupIdFromPackage;
<a name="126" href="#126">126</a>             }
<a name="127" href="#127">127</a>         }
<a name="128" href="#128">128</a>         String lastSection = artifact.getGroupId().substring( ++i );
<a name="129" href="#129">129</a>         <strong class="jxr_keyword">if</strong> ( artifact.getArtifactId().equals( lastSection ) )
<a name="130" href="#130">130</a>         {
<a name="131" href="#131">131</a>             <strong class="jxr_keyword">return</strong> artifact.getGroupId();
<a name="132" href="#132">132</a>         }
<a name="133" href="#133">133</a>         <strong class="jxr_keyword">if</strong> ( artifact.getArtifactId().equals( artifact.getGroupId() )
<a name="134" href="#134">134</a>             || artifact.getArtifactId().startsWith( artifact.getGroupId() + <span class="jxr_string">"."</span> ) )
<a name="135" href="#135">135</a>         {
<a name="136" href="#136">136</a>             <strong class="jxr_keyword">return</strong> artifact.getArtifactId();
<a name="137" href="#137">137</a>         }
<a name="138" href="#138">138</a>         <strong class="jxr_keyword">if</strong> ( artifact.getArtifactId().startsWith( lastSection ) )
<a name="139" href="#139">139</a>         {
<a name="140" href="#140">140</a>             String artifactId = artifact.getArtifactId().substring( lastSection.length() );
<a name="141" href="#141">141</a>             <strong class="jxr_keyword">if</strong> ( Character.isLetterOrDigit( artifactId.charAt( 0 ) ) )
<a name="142" href="#142">142</a>             {
<a name="143" href="#143">143</a>                 <strong class="jxr_keyword">return</strong> getBundleSymbolicName( artifact.getGroupId(), artifactId );
<a name="144" href="#144">144</a>             }
<a name="145" href="#145">145</a>             <strong class="jxr_keyword">else</strong>
<a name="146" href="#146">146</a>             {
<a name="147" href="#147">147</a>                 <strong class="jxr_keyword">return</strong> getBundleSymbolicName( artifact.getGroupId(), artifactId.substring( 1 ) );
<a name="148" href="#148">148</a>             }
<a name="149" href="#149">149</a>         }
<a name="150" href="#150">150</a>         <strong class="jxr_keyword">return</strong> getBundleSymbolicName( artifact.getGroupId(), artifact.getArtifactId() );
<a name="151" href="#151">151</a>     }
<a name="152" href="#152">152</a> 
<a name="153" href="#153">153</a> 
<a name="154" href="#154">154</a>     <strong class="jxr_keyword">private</strong> String getGroupIdFromPackage( File artifactFile )
<a name="155" href="#155">155</a>     {
<a name="156" href="#156">156</a>         <strong class="jxr_keyword">try</strong>
<a name="157" href="#157">157</a>         {
<a name="158" href="#158">158</a>             <em class="jxr_comment">/*<em class="jxr_comment"> get package names from jar */</em></em>
<a name="159" href="#159">159</a>             Set packageNames = <strong class="jxr_keyword">new</strong> HashSet();
<a name="160" href="#160">160</a>             JarFile jar = <strong class="jxr_keyword">new</strong> JarFile( artifactFile, false );
<a name="161" href="#161">161</a>             Enumeration entries = jar.entries();
<a name="162" href="#162">162</a>             <strong class="jxr_keyword">while</strong> ( entries.hasMoreElements() )
<a name="163" href="#163">163</a>             {
<a name="164" href="#164">164</a>                 ZipEntry entry = ( ZipEntry ) entries.nextElement();
<a name="165" href="#165">165</a>                 <strong class="jxr_keyword">if</strong> ( entry.getName().endsWith( <span class="jxr_string">".class"</span> ) )
<a name="166" href="#166">166</a>                 {
<a name="167" href="#167">167</a>                     File f = <strong class="jxr_keyword">new</strong> File( entry.getName() );
<a name="168" href="#168">168</a>                     String packageName = f.getParent();
<a name="169" href="#169">169</a>                     <strong class="jxr_keyword">if</strong> ( packageName != <strong class="jxr_keyword">null</strong> )
<a name="170" href="#170">170</a>                     {
<a name="171" href="#171">171</a>                         packageNames.add( packageName );
<a name="172" href="#172">172</a>                     }
<a name="173" href="#173">173</a>                 }
<a name="174" href="#174">174</a>             }
<a name="175" href="#175">175</a>             jar.close();
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>             <em class="jxr_comment">/*<em class="jxr_comment"> find the top package */</em></em>
<a name="178" href="#178">178</a>             String[] groupIdSections = <strong class="jxr_keyword">null</strong>;
<a name="179" href="#179">179</a>             <strong class="jxr_keyword">for</strong> ( Iterator it = packageNames.iterator(); it.hasNext(); )
<a name="180" href="#180">180</a>             {
<a name="181" href="#181">181</a>                 String packageName = ( String ) it.next();
<a name="182" href="#182">182</a> 
<a name="183" href="#183">183</a>                 String[] packageNameSections = packageName.split( <span class="jxr_string">"&#92;&#92;"</span> + FILE_SEPARATOR );
<a name="184" href="#184">184</a>                 <strong class="jxr_keyword">if</strong> ( groupIdSections == <strong class="jxr_keyword">null</strong> )
<a name="185" href="#185">185</a>                 {
<a name="186" href="#186">186</a>                     <em class="jxr_comment">/*<em class="jxr_comment"> first candidate */</em></em>
<a name="187" href="#187">187</a>                     groupIdSections = packageNameSections;
<a name="188" href="#188">188</a>                 }
<a name="189" href="#189">189</a>                 <strong class="jxr_keyword">else</strong>
<a name="190" href="#190">190</a>                 <em class="jxr_comment">// if ( packageNameSections.length &lt; groupIdSections.length )</em>
<a name="191" href="#191">191</a>                 {
<a name="192" href="#192">192</a>                     <em class="jxr_comment">/*</em>
<a name="193" href="#193">193</a> <em class="jxr_comment">                     * find the common portion of current package and previous selected groupId</em>
<a name="194" href="#194">194</a> <em class="jxr_comment">                     */</em>
<a name="195" href="#195">195</a>                     <strong class="jxr_keyword">int</strong> i;
<a name="196" href="#196">196</a>                     <strong class="jxr_keyword">for</strong> ( i = 0; ( i &lt; packageNameSections.length ) &amp;&amp; ( i &lt; groupIdSections.length ); i++ )
<a name="197" href="#197">197</a>                     {
<a name="198" href="#198">198</a>                         <strong class="jxr_keyword">if</strong> ( !packageNameSections[i].equals( groupIdSections[i] ) )
<a name="199" href="#199">199</a>                         {
<a name="200" href="#200">200</a>                             <strong class="jxr_keyword">break</strong>;
<a name="201" href="#201">201</a>                         }
<a name="202" href="#202">202</a>                     }
<a name="203" href="#203">203</a>                     groupIdSections = <strong class="jxr_keyword">new</strong> String[i];
<a name="204" href="#204">204</a>                     System.arraycopy( packageNameSections, 0, groupIdSections, 0, i );
<a name="205" href="#205">205</a>                 }
<a name="206" href="#206">206</a>             }
<a name="207" href="#207">207</a> 
<a name="208" href="#208">208</a>             <strong class="jxr_keyword">if</strong> ( ( groupIdSections == <strong class="jxr_keyword">null</strong> ) || ( groupIdSections.length == 0 ) )
<a name="209" href="#209">209</a>             {
<a name="210" href="#210">210</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="211" href="#211">211</a>             }
<a name="212" href="#212">212</a> 
<a name="213" href="#213">213</a>             <em class="jxr_comment">/*<em class="jxr_comment"> only one section as id doesn't seem enough, so ignore it */</em></em>
<a name="214" href="#214">214</a>             <strong class="jxr_keyword">if</strong> ( groupIdSections.length == 1 )
<a name="215" href="#215">215</a>             {
<a name="216" href="#216">216</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="217" href="#217">217</a>             }
<a name="218" href="#218">218</a> 
<a name="219" href="#219">219</a>             StringBuffer sb = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="220" href="#220">220</a>             <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; groupIdSections.length; i++ )
<a name="221" href="#221">221</a>             {
<a name="222" href="#222">222</a>                 sb.append( groupIdSections[i] );
<a name="223" href="#223">223</a>                 <strong class="jxr_keyword">if</strong> ( i &lt; groupIdSections.length - 1 )
<a name="224" href="#224">224</a>                 {
<a name="225" href="#225">225</a>                     sb.append( '.' );
<a name="226" href="#226">226</a>                 }
<a name="227" href="#227">227</a>             }
<a name="228" href="#228">228</a>             <strong class="jxr_keyword">return</strong> sb.toString();
<a name="229" href="#229">229</a>         }
<a name="230" href="#230">230</a>         <strong class="jxr_keyword">catch</strong> ( IOException e )
<a name="231" href="#231">231</a>         {
<a name="232" href="#232">232</a>             <em class="jxr_comment">/*<em class="jxr_comment"> we took all the precautions to avoid this */</em></em>
<a name="233" href="#233">233</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException( e );
<a name="234" href="#234">234</a>         }
<a name="235" href="#235">235</a>     }
<a name="236" href="#236">236</a> 
<a name="237" href="#237">237</a> 
<a name="238" href="#238">238</a>     <strong class="jxr_keyword">public</strong> String getBundleFileName( Artifact artifact )
<a name="239" href="#239">239</a>     {
<a name="240" href="#240">240</a>         <strong class="jxr_keyword">return</strong> getBundleSymbolicName( artifact ) + <span class="jxr_string">"_"</span> + getVersion( artifact.getVersion() ) + <span class="jxr_string">".jar"</span>;
<a name="241" href="#241">241</a>     }
<a name="242" href="#242">242</a> 
<a name="243" href="#243">243</a> 
<a name="244" href="#244">244</a>     <strong class="jxr_keyword">public</strong> String getVersion( Artifact artifact )
<a name="245" href="#245">245</a>     {
<a name="246" href="#246">246</a>         <strong class="jxr_keyword">return</strong> getVersion( artifact.getVersion() );
<a name="247" href="#247">247</a>     }
<a name="248" href="#248">248</a> 
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>     <strong class="jxr_keyword">public</strong> String getVersion( String version )
<a name="251" href="#251">251</a>     {
<a name="252" href="#252">252</a>         <strong class="jxr_keyword">return</strong> cleanupVersion( version );
<a name="253" href="#253">253</a>     }
<a name="254" href="#254">254</a> 
<a name="255" href="#255">255</a>     <em class="jxr_javadoccomment">/**</em>
<a name="256" href="#256">256</a> <em class="jxr_javadoccomment">     * Clean up version parameters. Other builders use more fuzzy definitions of</em>
<a name="257" href="#257">257</a> <em class="jxr_javadoccomment">     * the version syntax. This method cleans up such a version to match an OSGi</em>
<a name="258" href="#258">258</a> <em class="jxr_javadoccomment">     * version.</em>
<a name="259" href="#259">259</a> <em class="jxr_javadoccomment">     *</em>
<a name="260" href="#260">260</a> <em class="jxr_javadoccomment">     * @param VERSION_STRING</em>
<a name="261" href="#261">261</a> <em class="jxr_javadoccomment">     * @return</em>
<a name="262" href="#262">262</a> <em class="jxr_javadoccomment">     */</em>
<a name="263" href="#263">263</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Pattern FUZZY_VERSION = Pattern.compile( <span class="jxr_string">"(&#92;&#92;d+)(&#92;&#92;.(&#92;&#92;d+)(&#92;&#92;.(&#92;&#92;d+))?)?([^a-zA-Z0-9](.*))?"</span>,
<a name="264" href="#264">264</a>         Pattern.DOTALL );
<a name="265" href="#265">265</a> 
<a name="266" href="#266">266</a> 
<a name="267" href="#267">267</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> String cleanupVersion( String version )
<a name="268" href="#268">268</a>     {
<a name="269" href="#269">269</a>         StringBuffer result = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="270" href="#270">270</a>         Matcher m = FUZZY_VERSION.matcher( version );
<a name="271" href="#271">271</a>         <strong class="jxr_keyword">if</strong> ( m.matches() )
<a name="272" href="#272">272</a>         {
<a name="273" href="#273">273</a>             String major = m.group( 1 );
<a name="274" href="#274">274</a>             String minor = m.group( 3 );
<a name="275" href="#275">275</a>             String micro = m.group( 5 );
<a name="276" href="#276">276</a>             String qualifier = m.group( 7 );
<a name="277" href="#277">277</a> 
<a name="278" href="#278">278</a>             <strong class="jxr_keyword">if</strong> ( major != <strong class="jxr_keyword">null</strong> )
<a name="279" href="#279">279</a>             {
<a name="280" href="#280">280</a>                 result.append( major );
<a name="281" href="#281">281</a>                 <strong class="jxr_keyword">if</strong> ( minor != <strong class="jxr_keyword">null</strong> )
<a name="282" href="#282">282</a>                 {
<a name="283" href="#283">283</a>                     result.append( <span class="jxr_string">"."</span> );
<a name="284" href="#284">284</a>                     result.append( minor );
<a name="285" href="#285">285</a>                     <strong class="jxr_keyword">if</strong> ( micro != <strong class="jxr_keyword">null</strong> )
<a name="286" href="#286">286</a>                     {
<a name="287" href="#287">287</a>                         result.append( <span class="jxr_string">"."</span> );
<a name="288" href="#288">288</a>                         result.append( micro );
<a name="289" href="#289">289</a>                         <strong class="jxr_keyword">if</strong> ( qualifier != <strong class="jxr_keyword">null</strong> )
<a name="290" href="#290">290</a>                         {
<a name="291" href="#291">291</a>                             result.append( <span class="jxr_string">"."</span> );
<a name="292" href="#292">292</a>                             cleanupModifier( result, qualifier );
<a name="293" href="#293">293</a>                         }
<a name="294" href="#294">294</a>                     }
<a name="295" href="#295">295</a>                     <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( qualifier != <strong class="jxr_keyword">null</strong> )
<a name="296" href="#296">296</a>                     {
<a name="297" href="#297">297</a>                         result.append( <span class="jxr_string">".0."</span> );
<a name="298" href="#298">298</a>                         cleanupModifier( result, qualifier );
<a name="299" href="#299">299</a>                     }
<a name="300" href="#300">300</a>                     <strong class="jxr_keyword">else</strong>
<a name="301" href="#301">301</a>                     {
<a name="302" href="#302">302</a>                         result.append( <span class="jxr_string">".0"</span> );
<a name="303" href="#303">303</a>                     }
<a name="304" href="#304">304</a>                 }
<a name="305" href="#305">305</a>                 <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( qualifier != <strong class="jxr_keyword">null</strong> )
<a name="306" href="#306">306</a>                 {
<a name="307" href="#307">307</a>                     result.append( <span class="jxr_string">".0.0."</span> );
<a name="308" href="#308">308</a>                     cleanupModifier( result, qualifier );
<a name="309" href="#309">309</a>                 }
<a name="310" href="#310">310</a>                 <strong class="jxr_keyword">else</strong>
<a name="311" href="#311">311</a>                 {
<a name="312" href="#312">312</a>                     result.append( <span class="jxr_string">".0.0"</span> );
<a name="313" href="#313">313</a>                 }
<a name="314" href="#314">314</a>             }
<a name="315" href="#315">315</a>         }
<a name="316" href="#316">316</a>         <strong class="jxr_keyword">else</strong>
<a name="317" href="#317">317</a>         {
<a name="318" href="#318">318</a>             result.append( <span class="jxr_string">"0.0.0."</span> );
<a name="319" href="#319">319</a>             cleanupModifier( result, version );
<a name="320" href="#320">320</a>         }
<a name="321" href="#321">321</a>         <strong class="jxr_keyword">return</strong> result.toString();
<a name="322" href="#322">322</a>     }
<a name="323" href="#323">323</a> 
<a name="324" href="#324">324</a> 
<a name="325" href="#325">325</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> cleanupModifier( StringBuffer result, String modifier )
<a name="326" href="#326">326</a>     {
<a name="327" href="#327">327</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; modifier.length(); i++ )
<a name="328" href="#328">328</a>         {
<a name="329" href="#329">329</a>             <strong class="jxr_keyword">char</strong> c = modifier.charAt( i );
<a name="330" href="#330">330</a>             <strong class="jxr_keyword">if</strong> ( ( c &gt;= '0' &amp;&amp; c &lt;= '9' ) || ( c &gt;= 'a' &amp;&amp; c &lt;= 'z' ) || ( c &gt;= 'A' &amp;&amp; c &lt;= 'Z' ) || c == '_'
<a name="331" href="#331">331</a>                 || c == '-' )
<a name="332" href="#332">332</a>                 result.append( c );
<a name="333" href="#333">333</a>             <strong class="jxr_keyword">else</strong>
<a name="334" href="#334">334</a>                 result.append( '_' );
<a name="335" href="#335">335</a>         }
<a name="336" href="#336">336</a>     }
<a name="337" href="#337">337</a> 
<a name="338" href="#338">338</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

