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

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.felix.bundleplugin;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   
<a name="4" href="#4">4</a>   <em class="jxr_comment">/*</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *</em>
<a name="13" href="#13">13</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="14" href="#14">14</a>  <em class="jxr_comment"> *</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="20" href="#20">20</a>  <em class="jxr_comment"> * under the License.</em>
<a name="21" href="#21">21</a>  <em class="jxr_comment"> */</em>
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.FileOutputStream;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedHashSet;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Properties;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.TreeMap;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.jar.Manifest;
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.model.Organization;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.testing.stubs.MavenProjectStub;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.project.MavenProject;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.osgi.framework.Constants;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Analyzer;
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Builder;
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Jar;
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>  
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment">/**</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * Test for {@link BundlePlugin}.</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * </em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:dev@felix.apache.org" target="alexandria_uri">mailto:dev@felix.apache.org</a>"&gt;Felix Project Team&lt;/a&gt;</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> */</em>
<a name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/felix/bundleplugin/BundlePluginTest.html">BundlePluginTest</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/felix/bundleplugin/AbstractBundlePluginTest.html">AbstractBundlePluginTest</a>
<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> BundlePlugin plugin;
<a name="54" href="#54">54</a>  
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception
<a name="57" href="#57">57</a>      {
<a name="58" href="#58">58</a>          <strong class="jxr_keyword">super</strong>.setUp();
<a name="59" href="#59">59</a>          plugin = <strong class="jxr_keyword">new</strong> BundlePlugin();
<a name="60" href="#60">60</a>          plugin.setMaven2OsgiConverter( <strong class="jxr_keyword">new</strong> DefaultMaven2OsgiConverter() );
<a name="61" href="#61">61</a>          plugin.setBuildDirectory( <span class="jxr_string">"."</span> );
<a name="62" href="#62">62</a>          plugin.setOutputDirectory( <strong class="jxr_keyword">new</strong> File( getBasedir(), <span class="jxr_string">"target"</span> + File.separatorChar + <span class="jxr_string">"scratch"</span> ) );
<a name="63" href="#63">63</a>      }
<a name="64" href="#64">64</a>  
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testConvertVersionToOsgi()
<a name="67" href="#67">67</a>      {
<a name="68" href="#68">68</a>          String osgiVersion;
<a name="69" href="#69">69</a>  
<a name="70" href="#70">70</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2.1.0-SNAPSHOT"</span> );
<a name="71" href="#71">71</a>          assertEquals( <span class="jxr_string">"2.1.0.SNAPSHOT"</span>, osgiVersion );
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2.1-SNAPSHOT"</span> );
<a name="74" href="#74">74</a>          assertEquals( <span class="jxr_string">"2.1.0.SNAPSHOT"</span>, osgiVersion );
<a name="75" href="#75">75</a>  
<a name="76" href="#76">76</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2-SNAPSHOT"</span> );
<a name="77" href="#77">77</a>          assertEquals( <span class="jxr_string">"2.0.0.SNAPSHOT"</span>, osgiVersion );
<a name="78" href="#78">78</a>  
<a name="79" href="#79">79</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2"</span> );
<a name="80" href="#80">80</a>          assertEquals( <span class="jxr_string">"2.0.0"</span>, osgiVersion );
<a name="81" href="#81">81</a>  
<a name="82" href="#82">82</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2.1"</span> );
<a name="83" href="#83">83</a>          assertEquals( <span class="jxr_string">"2.1.0"</span>, osgiVersion );
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2.1.3"</span> );
<a name="86" href="#86">86</a>          assertEquals( <span class="jxr_string">"2.1.3"</span>, osgiVersion );
<a name="87" href="#87">87</a>  
<a name="88" href="#88">88</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"2.1.3.4"</span> );
<a name="89" href="#89">89</a>          assertEquals( <span class="jxr_string">"2.1.3.4"</span>, osgiVersion );
<a name="90" href="#90">90</a>  
<a name="91" href="#91">91</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"4aug2000r7-dev"</span> );
<a name="92" href="#92">92</a>          assertEquals( <span class="jxr_string">"0.0.0.4aug2000r7-dev"</span>, osgiVersion );
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"1.1-alpha-2"</span> );
<a name="95" href="#95">95</a>          assertEquals( <span class="jxr_string">"1.1.0.alpha-2"</span>, osgiVersion );
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"1.0-alpha-16-20070122.203121-13"</span> );
<a name="98" href="#98">98</a>          assertEquals( <span class="jxr_string">"1.0.0.alpha-16-20070122_203121-13"</span>, osgiVersion );
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>         osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"1.0-20070119.021432-1"</span> );
<a name="101" href="#101">101</a>         assertEquals( <span class="jxr_string">"1.0.0.20070119_021432-1"</span>, osgiVersion );
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>         osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"1-20070119.021432-1"</span> );
<a name="104" href="#104">104</a>         assertEquals( <span class="jxr_string">"1.0.0.20070119_021432-1"</span>, osgiVersion );
<a name="105" href="#105">105</a> 
<a name="106" href="#106">106</a>         osgiVersion = plugin.convertVersionToOsgi( <span class="jxr_string">"1.4.1-20070217.082013-7"</span> );
<a name="107" href="#107">107</a>         assertEquals( <span class="jxr_string">"1.4.1.20070217_082013-7"</span>, osgiVersion );
<a name="108" href="#108">108</a>     }
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadExportedModules() <strong class="jxr_keyword">throws</strong> Exception
<a name="112" href="#112">112</a>     {
<a name="113" href="#113">113</a>         File osgiBundleFile = getTestBundle();
<a name="114" href="#114">114</a> 
<a name="115" href="#115">115</a>         assertTrue( osgiBundleFile.exists() );
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>         MavenProject project = getMavenProjectStub();
<a name="118" href="#118">118</a> 
<a name="119" href="#119">119</a>         <em class="jxr_comment">//        PackageVersionAnalyzer analyzer = new PackageVersionAnalyzer();</em>
<a name="120" href="#120">120</a>         Builder analyzer = <strong class="jxr_keyword">new</strong> Builder();
<a name="121" href="#121">121</a>         Jar jar = <strong class="jxr_keyword">new</strong> Jar( <span class="jxr_string">"name"</span>, osgiBundleFile );
<a name="122" href="#122">122</a>         analyzer.setJar( jar );
<a name="123" href="#123">123</a>         analyzer.setClasspath( <strong class="jxr_keyword">new</strong> Jar[]
<a name="124" href="#124">124</a>             { jar } );
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a>         analyzer.setProperty( Analyzer.EXPORT_PACKAGE, <span class="jxr_string">"*"</span> );
<a name="127" href="#127">127</a>         analyzer.getJar().setManifest( analyzer.calcManifest() );
<a name="128" href="#128">128</a> 
<a name="129" href="#129">129</a>         assertEquals( 3, analyzer.getExports().size() );
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>         analyzer.close();
<a name="132" href="#132">132</a>     }
<a name="133" href="#133">133</a> 
<a name="134" href="#134">134</a> 
<a name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransformDirectives() <strong class="jxr_keyword">throws</strong> Exception
<a name="136" href="#136">136</a>     {
<a name="137" href="#137">137</a>         Map instructions = <strong class="jxr_keyword">new</strong> TreeMap();
<a name="138" href="#138">138</a> 
<a name="139" href="#139">139</a>         instructions.put( <span class="jxr_string">"a"</span>, <span class="jxr_string">"1"</span> );
<a name="140" href="#140">140</a>         instructions.put( <span class="jxr_string">"-a"</span>, <span class="jxr_string">"2"</span> );
<a name="141" href="#141">141</a>         instructions.put( <span class="jxr_string">"_a"</span>, <span class="jxr_string">"3"</span> );
<a name="142" href="#142">142</a>         instructions.put( <span class="jxr_string">"A"</span>, <span class="jxr_string">"3"</span> );
<a name="143" href="#143">143</a>         instructions.put( <span class="jxr_string">"_A"</span>, <span class="jxr_string">"1"</span> );
<a name="144" href="#144">144</a>         instructions.put( <span class="jxr_string">"_b"</span>, <span class="jxr_string">"4"</span> );
<a name="145" href="#145">145</a>         instructions.put( <span class="jxr_string">"b"</span>, <span class="jxr_string">"6"</span> );
<a name="146" href="#146">146</a>         instructions.put( <span class="jxr_string">"_B"</span>, <span class="jxr_string">"6"</span> );
<a name="147" href="#147">147</a>         instructions.put( <span class="jxr_string">"-B"</span>, <span class="jxr_string">"5"</span> );
<a name="148" href="#148">148</a>         instructions.put( <span class="jxr_string">"B"</span>, <span class="jxr_string">"4"</span> );
<a name="149" href="#149">149</a> 
<a name="150" href="#150">150</a>         instructions.put( <span class="jxr_string">"z"</span>, <strong class="jxr_keyword">null</strong> );
<a name="151" href="#151">151</a>         instructions.put( <span class="jxr_string">"_z"</span>, <strong class="jxr_keyword">null</strong> );
<a name="152" href="#152">152</a> 
<a name="153" href="#153">153</a>         Map transformedInstructions = BundlePlugin.transformDirectives( instructions );
<a name="154" href="#154">154</a> 
<a name="155" href="#155">155</a>         assertEquals( <span class="jxr_string">"1"</span>, transformedInstructions.get( <span class="jxr_string">"a"</span> ) );
<a name="156" href="#156">156</a>         assertEquals( <span class="jxr_string">"3"</span>, transformedInstructions.get( <span class="jxr_string">"-a"</span> ) );
<a name="157" href="#157">157</a>         assertEquals( <strong class="jxr_keyword">null</strong>, transformedInstructions.get( <span class="jxr_string">"_a"</span> ) );
<a name="158" href="#158">158</a>         assertEquals( <span class="jxr_string">"3"</span>, transformedInstructions.get( <span class="jxr_string">"A"</span> ) );
<a name="159" href="#159">159</a>         assertEquals( <span class="jxr_string">"1"</span>, transformedInstructions.get( <span class="jxr_string">"-A"</span> ) );
<a name="160" href="#160">160</a>         assertEquals( <strong class="jxr_keyword">null</strong>, transformedInstructions.get( <span class="jxr_string">"_A"</span> ) );
<a name="161" href="#161">161</a>         assertEquals( <strong class="jxr_keyword">null</strong>, transformedInstructions.get( <span class="jxr_string">"_b"</span> ) );
<a name="162" href="#162">162</a>         assertEquals( <span class="jxr_string">"4"</span>, transformedInstructions.get( <span class="jxr_string">"-b"</span> ) );
<a name="163" href="#163">163</a>         assertEquals( <span class="jxr_string">"6"</span>, transformedInstructions.get( <span class="jxr_string">"b"</span> ) );
<a name="164" href="#164">164</a>         assertEquals( <strong class="jxr_keyword">null</strong>, transformedInstructions.get( <span class="jxr_string">"_B"</span> ) );
<a name="165" href="#165">165</a>         assertEquals( <span class="jxr_string">"6"</span>, transformedInstructions.get( <span class="jxr_string">"-B"</span> ) );
<a name="166" href="#166">166</a>         assertEquals( <span class="jxr_string">"4"</span>, transformedInstructions.get( <span class="jxr_string">"B"</span> ) );
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>         assertEquals( <span class="jxr_string">""</span>, transformedInstructions.get( <span class="jxr_string">"z"</span> ) );
<a name="169" href="#169">169</a>         assertEquals( <span class="jxr_string">""</span>, transformedInstructions.get( <span class="jxr_string">"-z"</span> ) );
<a name="170" href="#170">170</a>     }
<a name="171" href="#171">171</a> 
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultPropertiesIncludeOrganization()
<a name="174" href="#174">174</a>     {
<a name="175" href="#175">175</a>         <strong class="jxr_keyword">final</strong> Organization organization = <strong class="jxr_keyword">new</strong> Organization();
<a name="176" href="#176">176</a>         organization.setName( <span class="jxr_string">"Example Organization"</span> );
<a name="177" href="#177">177</a>         organization.setUrl( <span class="jxr_string">"http://example.org"</span> );
<a name="178" href="#178">178</a> 
<a name="179" href="#179">179</a>         <em class="jxr_comment">// MavenProjectStub.setOrganization(Organization) doesn't do anything, so we have to make it work this way</em>
<a name="180" href="#180">180</a>         MavenProject project = <strong class="jxr_keyword">new</strong> MavenProjectStub()
<a name="181" href="#181">181</a>         {
<a name="182" href="#182">182</a>             @Override
<a name="183" href="#183">183</a>             <strong class="jxr_keyword">public</strong> Organization getOrganization()
<a name="184" href="#184">184</a>             {
<a name="185" href="#185">185</a>                 <strong class="jxr_keyword">return</strong> organization;
<a name="186" href="#186">186</a>             }
<a name="187" href="#187">187</a>         };
<a name="188" href="#188">188</a>         project.setGroupId( <span class="jxr_string">"group"</span> );
<a name="189" href="#189">189</a>         project.setArtifactId( <span class="jxr_string">"project"</span> );
<a name="190" href="#190">190</a>         project.setVersion( <span class="jxr_string">"1.2.3.4"</span> );
<a name="191" href="#191">191</a> 
<a name="192" href="#192">192</a>         Properties properties = plugin.getDefaultProperties( project );
<a name="193" href="#193">193</a>         assertEquals( organization.getName(), properties.getProperty( <span class="jxr_string">"project.organization.name"</span> ) );
<a name="194" href="#194">194</a>         assertEquals( organization.getName(), properties.getProperty( <span class="jxr_string">"pom.organization.name"</span> ) );
<a name="195" href="#195">195</a>         assertEquals( organization.getUrl(), properties.getProperty( <span class="jxr_string">"project.organization.url"</span> ) );
<a name="196" href="#196">196</a>         assertEquals( organization.getUrl(), properties.getProperty( <span class="jxr_string">"pom.organization.url"</span> ) );
<a name="197" href="#197">197</a>     }
<a name="198" href="#198">198</a> 
<a name="199" href="#199">199</a> 
<a name="200" href="#200">200</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testVersion() <strong class="jxr_keyword">throws</strong> Exception
<a name="201" href="#201">201</a>     {
<a name="202" href="#202">202</a>         String cleanupVersion = Builder.cleanupVersion( <span class="jxr_string">"0.0.0.4aug2000r7-dev"</span> );
<a name="203" href="#203">203</a>         assertEquals( <span class="jxr_string">"0.0.0.4aug2000r7-dev"</span>, cleanupVersion );
<a name="204" href="#204">204</a>     }
<a name="205" href="#205">205</a> 
<a name="206" href="#206">206</a> 
<a name="207" href="#207">207</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPackageInfoDetection() <strong class="jxr_keyword">throws</strong> Exception
<a name="208" href="#208">208</a>     {
<a name="209" href="#209">209</a>         MavenProject project = getMavenProjectStub();
<a name="210" href="#210">210</a>         project.addCompileSourceRoot( getBasedir() + <span class="jxr_string">"/src/test/java"</span> );
<a name="211" href="#211">211</a> 
<a name="212" href="#212">212</a>         String resourcePaths = plugin.getMavenResourcePaths( project, false );
<a name="213" href="#213">213</a> 
<a name="214" href="#214">214</a>         assertEquals( <span class="jxr_string">"org/apache/felix/bundleplugin/packageinfo="</span>
<a name="215" href="#215">215</a>             + <span class="jxr_string">"src/test/java/org/apache/felix/bundleplugin/packageinfo"</span>, resourcePaths );
<a name="216" href="#216">216</a>     }
<a name="217" href="#217">217</a> 
<a name="218" href="#218">218</a> 
<a name="219" href="#219">219</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testEmbedDependencyPositiveClauses() <strong class="jxr_keyword">throws</strong> Exception
<a name="220" href="#220">220</a>     {
<a name="221" href="#221">221</a>         <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a> artifactFactory = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a>( plugin.getOutputDirectory(), <strong class="jxr_keyword">true</strong> );
<a name="222" href="#222">222</a> 
<a name="223" href="#223">223</a>         Set artifacts = <strong class="jxr_keyword">new</strong> LinkedHashSet();
<a name="224" href="#224">224</a> 
<a name="225" href="#225">225</a>         artifacts.addAll( artifactFactory.getClassifiedArtifacts() );
<a name="226" href="#226">226</a>         artifacts.addAll( artifactFactory.getScopedArtifacts() );
<a name="227" href="#227">227</a>         artifacts.addAll( artifactFactory.getTypedArtifacts() );
<a name="228" href="#228">228</a> 
<a name="229" href="#229">229</a>         MavenProject project = getMavenProjectStub();
<a name="230" href="#230">230</a>         project.setDependencyArtifacts( artifacts );
<a name="231" href="#231">231</a> 
<a name="232" href="#232">232</a>         Map instructions = <strong class="jxr_keyword">new</strong> HashMap();
<a name="233" href="#233">233</a>         instructions.put( DependencyEmbedder.EMBED_DEPENDENCY, <span class="jxr_string">"*;classifier=;type=jar;scope=compile,"</span>
<a name="234" href="#234">234</a>             + <span class="jxr_string">"*;classifier=;type=jar;scope=runtime"</span> );
<a name="235" href="#235">235</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="236" href="#236">236</a> 
<a name="237" href="#237">237</a>         Builder builder = plugin.buildOSGiBundle( project, instructions, props, plugin.getClasspath( project ) );
<a name="238" href="#238">238</a>         Manifest manifest = builder.getJar().getManifest();
<a name="239" href="#239">239</a> 
<a name="240" href="#240">240</a>         String bcp = manifest.getMainAttributes().getValue( Constants.BUNDLE_CLASSPATH );
<a name="241" href="#241">241</a>         assertEquals( <span class="jxr_string">".,"</span> + <span class="jxr_string">"compile-1.0.jar,b-1.0.jar,runtime-1.0.jar"</span>, bcp );
<a name="242" href="#242">242</a> 
<a name="243" href="#243">243</a>         String eas = manifest.getMainAttributes().getValue( <span class="jxr_string">"Embedded-Artifacts"</span> );
<a name="244" href="#244">244</a>         assertEquals( <span class="jxr_string">"compile-1.0.jar;g=\&quot;g\&quot;;a=\&quot;compile\&quot;;v=\&quot;1.0\&quot;,"</span> + <span class="jxr_string">"b-1.0.jar;g=\&quot;g\&quot;;a=\&quot;b\&quot;;v=\&quot;1.0\&quot;,"</span>
<a name="245" href="#245">245</a>             + <span class="jxr_string">"runtime-1.0.jar;g=\&quot;g\&quot;;a=\&quot;runtime\&quot;;v=\&quot;1.0\&quot;"</span>, eas );
<a name="246" href="#246">246</a>     }
<a name="247" href="#247">247</a> 
<a name="248" href="#248">248</a> 
<a name="249" href="#249">249</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testEmbedDependencyNegativeClauses() <strong class="jxr_keyword">throws</strong> Exception
<a name="250" href="#250">250</a>     {
<a name="251" href="#251">251</a>         <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a> artifactFactory = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a>( plugin.getOutputDirectory(), <strong class="jxr_keyword">true</strong> );
<a name="252" href="#252">252</a> 
<a name="253" href="#253">253</a>         Set artifacts = <strong class="jxr_keyword">new</strong> LinkedHashSet();
<a name="254" href="#254">254</a> 
<a name="255" href="#255">255</a>         artifacts.addAll( artifactFactory.getClassifiedArtifacts() );
<a name="256" href="#256">256</a>         artifacts.addAll( artifactFactory.getScopedArtifacts() );
<a name="257" href="#257">257</a>         artifacts.addAll( artifactFactory.getTypedArtifacts() );
<a name="258" href="#258">258</a> 
<a name="259" href="#259">259</a>         MavenProject project = getMavenProjectStub();
<a name="260" href="#260">260</a>         project.setDependencyArtifacts( artifacts );
<a name="261" href="#261">261</a> 
<a name="262" href="#262">262</a>         Map instructions = <strong class="jxr_keyword">new</strong> HashMap();
<a name="263" href="#263">263</a>         instructions.put( DependencyEmbedder.EMBED_DEPENDENCY, <span class="jxr_string">"!type=jar, !artifactId=c"</span> );
<a name="264" href="#264">264</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="265" href="#265">265</a> 
<a name="266" href="#266">266</a>         Builder builder = plugin.buildOSGiBundle( project, instructions, props, plugin.getClasspath( project ) );
<a name="267" href="#267">267</a>         Manifest manifest = builder.getJar().getManifest();
<a name="268" href="#268">268</a> 
<a name="269" href="#269">269</a>         String bcp = manifest.getMainAttributes().getValue( Constants.BUNDLE_CLASSPATH );
<a name="270" href="#270">270</a>         assertEquals( <span class="jxr_string">".,"</span> + <span class="jxr_string">"a-1.0.war,"</span> + <span class="jxr_string">"d-1.0.zip,"</span> + <span class="jxr_string">"e-1.0.rar"</span>, bcp );
<a name="271" href="#271">271</a> 
<a name="272" href="#272">272</a>         String eas = manifest.getMainAttributes().getValue( <span class="jxr_string">"Embedded-Artifacts"</span> );
<a name="273" href="#273">273</a>         assertEquals( <span class="jxr_string">"a-1.0.war;g=\&quot;g\&quot;;a=\&quot;a\&quot;;v=\&quot;1.0\&quot;,"</span> + <span class="jxr_string">"d-1.0.zip;g=\&quot;g\&quot;;a=\&quot;d\&quot;;v=\&quot;1.0\&quot;,"</span>
<a name="274" href="#274">274</a>             + <span class="jxr_string">"e-1.0.rar;g=\&quot;g\&quot;;a=\&quot;e\&quot;;v=\&quot;1.0\&quot;"</span>, eas );
<a name="275" href="#275">275</a>     }
<a name="276" href="#276">276</a> 
<a name="277" href="#277">277</a> 
<a name="278" href="#278">278</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testEmbedDependencyDuplicateKeys() <strong class="jxr_keyword">throws</strong> Exception
<a name="279" href="#279">279</a>     {
<a name="280" href="#280">280</a>         <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a> artifactFactory = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a>( plugin.getOutputDirectory(), <strong class="jxr_keyword">true</strong> );
<a name="281" href="#281">281</a> 
<a name="282" href="#282">282</a>         Set artifacts = <strong class="jxr_keyword">new</strong> LinkedHashSet();
<a name="283" href="#283">283</a> 
<a name="284" href="#284">284</a>         artifacts.addAll( artifactFactory.getClassifiedArtifacts() );
<a name="285" href="#285">285</a>         artifacts.addAll( artifactFactory.getScopedArtifacts() );
<a name="286" href="#286">286</a>         artifacts.addAll( artifactFactory.getTypedArtifacts() );
<a name="287" href="#287">287</a> 
<a name="288" href="#288">288</a>         MavenProject project = getMavenProjectStub();
<a name="289" href="#289">289</a>         project.setDependencyArtifacts( artifacts );
<a name="290" href="#290">290</a> 
<a name="291" href="#291">291</a>         Map instructions = <strong class="jxr_keyword">new</strong> HashMap();
<a name="292" href="#292">292</a>         instructions.put( DependencyEmbedder.EMBED_DEPENDENCY, <span class="jxr_string">"c;type=jar,c;type=sources"</span> );
<a name="293" href="#293">293</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="294" href="#294">294</a> 
<a name="295" href="#295">295</a>         Builder builder = plugin.buildOSGiBundle( project, instructions, props, plugin.getClasspath( project ) );
<a name="296" href="#296">296</a>         Manifest manifest = builder.getJar().getManifest();
<a name="297" href="#297">297</a> 
<a name="298" href="#298">298</a>         String bcp = manifest.getMainAttributes().getValue( Constants.BUNDLE_CLASSPATH );
<a name="299" href="#299">299</a>         assertEquals( <span class="jxr_string">".,"</span> + <span class="jxr_string">"c-1.0-three.jar,"</span> + <span class="jxr_string">"c-1.0.sources"</span>, bcp );
<a name="300" href="#300">300</a> 
<a name="301" href="#301">301</a>         String eas = manifest.getMainAttributes().getValue( <span class="jxr_string">"Embedded-Artifacts"</span> );
<a name="302" href="#302">302</a>         assertEquals( <span class="jxr_string">"c-1.0-three.jar;g=\&quot;g\&quot;;a=\&quot;c\&quot;;v=\&quot;1.0\&quot;;c=\&quot;three\&quot;,"</span>
<a name="303" href="#303">303</a>             + <span class="jxr_string">"c-1.0.sources;g=\&quot;g\&quot;;a=\&quot;c\&quot;;v=\&quot;1.0\&quot;"</span>, eas );
<a name="304" href="#304">304</a>     }
<a name="305" href="#305">305</a> 
<a name="306" href="#306">306</a> 
<a name="307" href="#307">307</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testEmbedDependencyMissingPositiveKey() <strong class="jxr_keyword">throws</strong> Exception
<a name="308" href="#308">308</a>     {
<a name="309" href="#309">309</a>         <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a> artifactFactory = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a>( plugin.getOutputDirectory(), <strong class="jxr_keyword">true</strong> );
<a name="310" href="#310">310</a> 
<a name="311" href="#311">311</a>         Set artifacts = <strong class="jxr_keyword">new</strong> LinkedHashSet();
<a name="312" href="#312">312</a> 
<a name="313" href="#313">313</a>         artifacts.addAll( artifactFactory.getClassifiedArtifacts() );
<a name="314" href="#314">314</a>         artifacts.addAll( artifactFactory.getScopedArtifacts() );
<a name="315" href="#315">315</a>         artifacts.addAll( artifactFactory.getTypedArtifacts() );
<a name="316" href="#316">316</a> 
<a name="317" href="#317">317</a>         MavenProject project = getMavenProjectStub();
<a name="318" href="#318">318</a>         project.setDependencyArtifacts( artifacts );
<a name="319" href="#319">319</a> 
<a name="320" href="#320">320</a>         Map instructions = <strong class="jxr_keyword">new</strong> HashMap();
<a name="321" href="#321">321</a>         instructions.put( DependencyEmbedder.EMBED_DEPENDENCY, <span class="jxr_string">"artifactId=a|b"</span> );
<a name="322" href="#322">322</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="323" href="#323">323</a> 
<a name="324" href="#324">324</a>         Builder builder = plugin.buildOSGiBundle( project, instructions, props, plugin.getClasspath( project ) );
<a name="325" href="#325">325</a>         Manifest manifest = builder.getJar().getManifest();
<a name="326" href="#326">326</a> 
<a name="327" href="#327">327</a>         String bcp = manifest.getMainAttributes().getValue( Constants.BUNDLE_CLASSPATH );
<a name="328" href="#328">328</a>         assertEquals( <span class="jxr_string">".,"</span> + <span class="jxr_string">"a-1.0-one.jar,"</span> + <span class="jxr_string">"b-1.0-two.jar,"</span> + <span class="jxr_string">"a-1.0.war,"</span> + <span class="jxr_string">"b-1.0.jar"</span>, bcp );
<a name="329" href="#329">329</a> 
<a name="330" href="#330">330</a>         String eas = manifest.getMainAttributes().getValue( <span class="jxr_string">"Embedded-Artifacts"</span> );
<a name="331" href="#331">331</a>         assertEquals( <span class="jxr_string">"a-1.0-one.jar;g=\&quot;g\&quot;;a=\&quot;a\&quot;;v=\&quot;1.0\&quot;;c=\&quot;one\&quot;,"</span>
<a name="332" href="#332">332</a>             + <span class="jxr_string">"b-1.0-two.jar;g=\&quot;g\&quot;;a=\&quot;b\&quot;;v=\&quot;1.0\&quot;;c=\&quot;two\&quot;,"</span> + <span class="jxr_string">"a-1.0.war;g=\&quot;g\&quot;;a=\&quot;a\&quot;;v=\&quot;1.0\&quot;,"</span>
<a name="333" href="#333">333</a>             + <span class="jxr_string">"b-1.0.jar;g=\&quot;g\&quot;;a=\&quot;b\&quot;;v=\&quot;1.0\&quot;"</span>, eas );
<a name="334" href="#334">334</a>     }
<a name="335" href="#335">335</a> 
<a name="336" href="#336">336</a> 
<a name="337" href="#337">337</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testEmbedDependencyMissingNegativeKey() <strong class="jxr_keyword">throws</strong> Exception
<a name="338" href="#338">338</a>     {
<a name="339" href="#339">339</a>         <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a> artifactFactory = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/ArtifactStubFactory.html">ArtifactStubFactory</a>( plugin.getOutputDirectory(), <strong class="jxr_keyword">true</strong> );
<a name="340" href="#340">340</a> 
<a name="341" href="#341">341</a>         Set artifacts = <strong class="jxr_keyword">new</strong> LinkedHashSet();
<a name="342" href="#342">342</a> 
<a name="343" href="#343">343</a>         artifacts.addAll( artifactFactory.getClassifiedArtifacts() );
<a name="344" href="#344">344</a>         artifacts.addAll( artifactFactory.getScopedArtifacts() );
<a name="345" href="#345">345</a>         artifacts.addAll( artifactFactory.getTypedArtifacts() );
<a name="346" href="#346">346</a> 
<a name="347" href="#347">347</a>         MavenProject project = getMavenProjectStub();
<a name="348" href="#348">348</a>         project.setDependencyArtifacts( artifacts );
<a name="349" href="#349">349</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="350" href="#350">350</a> 
<a name="351" href="#351">351</a>         Map instructions1 = <strong class="jxr_keyword">new</strong> HashMap();
<a name="352" href="#352">352</a>         instructions1.put( DependencyEmbedder.EMBED_DEPENDENCY, <span class="jxr_string">"!scope=compile"</span> );
<a name="353" href="#353">353</a>         Builder builder1 = plugin.buildOSGiBundle( project, instructions1, props, plugin.getClasspath( project ) );
<a name="354" href="#354">354</a>         Manifest manifest1 = builder1.getJar().getManifest();
<a name="355" href="#355">355</a> 
<a name="356" href="#356">356</a>         Map instructions2 = <strong class="jxr_keyword">new</strong> HashMap();
<a name="357" href="#357">357</a>         instructions2.put( DependencyEmbedder.EMBED_DEPENDENCY, <span class="jxr_string">"scope=!compile"</span> );
<a name="358" href="#358">358</a>         Builder builder2 = plugin.buildOSGiBundle( project, instructions2, props, plugin.getClasspath( project ) );
<a name="359" href="#359">359</a>         Manifest manifest2 = builder2.getJar().getManifest();
<a name="360" href="#360">360</a> 
<a name="361" href="#361">361</a>         String bcp1 = manifest1.getMainAttributes().getValue( Constants.BUNDLE_CLASSPATH );
<a name="362" href="#362">362</a>         assertEquals( <span class="jxr_string">".,"</span> + <span class="jxr_string">"provided-1.0.jar,"</span> + <span class="jxr_string">"test-1.0.jar,"</span> + <span class="jxr_string">"runtime-1.0.jar,"</span> + <span class="jxr_string">"system-1.0.jar"</span>, bcp1 );
<a name="363" href="#363">363</a> 
<a name="364" href="#364">364</a>         String eas1 = manifest1.getMainAttributes().getValue( <span class="jxr_string">"Embedded-Artifacts"</span> );
<a name="365" href="#365">365</a>         assertEquals( <span class="jxr_string">"provided-1.0.jar;g=\&quot;g\&quot;;a=\&quot;provided\&quot;;v=\&quot;1.0\&quot;,"</span>
<a name="366" href="#366">366</a>             + <span class="jxr_string">"test-1.0.jar;g=\&quot;g\&quot;;a=\&quot;test\&quot;;v=\&quot;1.0\&quot;,"</span> + <span class="jxr_string">"runtime-1.0.jar;g=\&quot;g\&quot;;a=\&quot;runtime\&quot;;v=\&quot;1.0\&quot;,"</span>
<a name="367" href="#367">367</a>             + <span class="jxr_string">"system-1.0.jar;g=\&quot;g\&quot;;a=\&quot;system\&quot;;v=\&quot;1.0\&quot;"</span>, eas1 );
<a name="368" href="#368">368</a> 
<a name="369" href="#369">369</a>         String bcp2 = manifest2.getMainAttributes().getValue( Constants.BUNDLE_CLASSPATH );
<a name="370" href="#370">370</a>         assertEquals( bcp1, bcp2 );
<a name="371" href="#371">371</a> 
<a name="372" href="#372">372</a>         String eas2 = manifest2.getMainAttributes().getValue( <span class="jxr_string">"Embedded-Artifacts"</span> );
<a name="373" href="#373">373</a>         assertEquals( eas1, eas2 );
<a name="374" href="#374">374</a>     }
<a name="375" href="#375">375</a> 
<a name="376" href="#376">376</a> 
<a name="377" href="#377">377</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPropertySanitizing() <strong class="jxr_keyword">throws</strong> Exception
<a name="378" href="#378">378</a>     {
<a name="379" href="#379">379</a>         MavenProject project = getMavenProjectStub();
<a name="380" href="#380">380</a> 
<a name="381" href="#381">381</a>         Properties props = <strong class="jxr_keyword">new</strong> Properties();
<a name="382" href="#382">382</a> 
<a name="383" href="#383">383</a>         props.put( <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"A"</span> ), <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"B"</span> ) );
<a name="384" href="#384">384</a>         props.put( <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[4], <strong class="jxr_keyword">new</strong> HashMap( 2 ) );
<a name="385" href="#385">385</a>         props.put( Arrays.asList( 1, <span class="jxr_string">"two"</span>, 3.0 ), <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">float</strong>[5] );
<a name="386" href="#386">386</a> 
<a name="387" href="#387">387</a>         props.put( <span class="jxr_string">"A"</span>, <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"B"</span> ) );
<a name="388" href="#388">388</a>         props.put( <span class="jxr_string">"4"</span>, <strong class="jxr_keyword">new</strong> HashMap( 2 ) );
<a name="389" href="#389">389</a>         props.put( <span class="jxr_string">"1, two, 3.0"</span>, <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">char</strong>[5] );
<a name="390" href="#390">390</a> 
<a name="391" href="#391">391</a>         Builder builder = plugin.getOSGiBuilder( project, <strong class="jxr_keyword">new</strong> HashMap(), props, plugin.getClasspath( project ) );
<a name="392" href="#392">392</a> 
<a name="393" href="#393">393</a>         File file = <strong class="jxr_keyword">new</strong> File( getBasedir(), <span class="jxr_string">"target"</span> + File.separatorChar + <span class="jxr_string">"test.props"</span> );
<a name="394" href="#394">394</a>         builder.getProperties().store( <strong class="jxr_keyword">new</strong> FileOutputStream( file ), <span class="jxr_string">"TEST"</span> );
<a name="395" href="#395">395</a>     }
<a name="396" href="#396">396</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

