<!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>BundlePlugin 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.felix.bundleplugin;
<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.ByteArrayInputStream;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayOutputStream;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.FileInputStream;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.io.FileOutputStream;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.Array;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.Method;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedHashMap;
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedHashSet;
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.Properties;
<a name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.jar.Attributes;
<a name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> java.util.jar.Manifest;
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.archiver.ManifestSection;
<a name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.archiver.MavenArchiveConfiguration;
<a name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.archiver.MavenArchiver;
<a name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.artifact.Artifact;
<a name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
<a name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.execution.MavenSession;
<a name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.model.License;
<a name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.model.Model;
<a name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.model.Resource;
<a name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.AbstractMojo;
<a name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.MojoExecutionException;
<a name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.MojoFailureException;
<a name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.logging.Log;
<a name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.project.MavenProject;
<a name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.project.MavenProjectHelper;
<a name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
<a name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> org.apache.maven.shared.osgi.Maven2OsgiConverter;
<a name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.archiver.UnArchiver;
<a name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.archiver.manager.ArchiverManager;
<a name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.util.DirectoryScanner;
<a name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.util.FileUtils;
<a name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.util.PropertyUtils;
<a name="70" href="#70">70</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.util.StringUtils;
<a name="71" href="#71">71</a>  
<a name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.header.Attrs;
<a name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Analyzer;
<a name="74" href="#74">74</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Builder;
<a name="75" href="#75">75</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Constants;
<a name="76" href="#76">76</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Descriptors.PackageRef;
<a name="77" href="#77">77</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.EmbeddedResource;
<a name="78" href="#78">78</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.FileResource;
<a name="79" href="#79">79</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Jar;
<a name="80" href="#80">80</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Packages;
<a name="81" href="#81">81</a>  <strong class="jxr_keyword">import</strong> aQute.bnd.osgi.Processor;
<a name="82" href="#82">82</a>  <strong class="jxr_keyword">import</strong> aQute.lib.spring.SpringXMLType;
<a name="83" href="#83">83</a>  
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>  <em class="jxr_javadoccomment">/**</em>
<a name="86" href="#86">86</a>  <em class="jxr_javadoccomment"> * Create an OSGi bundle from Maven project</em>
<a name="87" href="#87">87</a>  <em class="jxr_javadoccomment"> *</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment"> * @goal bundle</em>
<a name="89" href="#89">89</a>  <em class="jxr_javadoccomment"> * @phase package</em>
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment"> * @requiresDependencyResolution test</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment"> * @description build an OSGi bundle jar</em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment"> * @threadSafe</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment"> */</em>
<a name="94" href="#94">94</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/felix/bundleplugin/BundlePlugin.html">BundlePlugin</a> <strong class="jxr_keyword">extends</strong> AbstractMojo
<a name="95" href="#95">95</a>  {
<a name="96" href="#96">96</a>      <em class="jxr_javadoccomment">/**</em>
<a name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     * Directory where the manifest will be written</em>
<a name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     *</em>
<a name="99" href="#99">99</a>  <em class="jxr_javadoccomment">     * @parameter expression="${manifestLocation}" default-value="${project.build.outputDirectory}/META-INF"</em>
<a name="100" href="#100">100</a> <em class="jxr_javadoccomment">     */</em>
<a name="101" href="#101">101</a>     <strong class="jxr_keyword">protected</strong> File manifestLocation;
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <em class="jxr_javadoccomment">/**</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">     * File where the BND instructions will be dumped</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     *</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * @parameter expression="${dumpInstructions}"</em>
<a name="107" href="#107">107</a> <em class="jxr_javadoccomment">     */</em>
<a name="108" href="#108">108</a>     <strong class="jxr_keyword">protected</strong> File dumpInstructions;
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>     <em class="jxr_javadoccomment">/**</em>
<a name="111" href="#111">111</a> <em class="jxr_javadoccomment">     * File where the BND class-path will be dumped</em>
<a name="112" href="#112">112</a> <em class="jxr_javadoccomment">     *</em>
<a name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * @parameter expression="${dumpClasspath}"</em>
<a name="114" href="#114">114</a> <em class="jxr_javadoccomment">     */</em>
<a name="115" href="#115">115</a>     <strong class="jxr_keyword">protected</strong> File dumpClasspath;
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>     <em class="jxr_javadoccomment">/**</em>
<a name="118" href="#118">118</a> <em class="jxr_javadoccomment">     * When true, unpack the bundle contents to the outputDirectory</em>
<a name="119" href="#119">119</a> <em class="jxr_javadoccomment">     *</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">     * @parameter expression="${unpackBundle}"</em>
<a name="121" href="#121">121</a> <em class="jxr_javadoccomment">     */</em>
<a name="122" href="#122">122</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> unpackBundle;
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>     <em class="jxr_javadoccomment">/**</em>
<a name="125" href="#125">125</a> <em class="jxr_javadoccomment">     * Comma separated list of artifactIds to exclude from the dependency classpath passed to BND (use "true" to exclude everything)</em>
<a name="126" href="#126">126</a> <em class="jxr_javadoccomment">     *</em>
<a name="127" href="#127">127</a> <em class="jxr_javadoccomment">     * @parameter expression="${excludeDependencies}"</em>
<a name="128" href="#128">128</a> <em class="jxr_javadoccomment">     */</em>
<a name="129" href="#129">129</a>     <strong class="jxr_keyword">protected</strong> String excludeDependencies;
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>     <em class="jxr_javadoccomment">/**</em>
<a name="132" href="#132">132</a> <em class="jxr_javadoccomment">     * Final name of the bundle (without classifier or extension)</em>
<a name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * </em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * @parameter expression="${project.build.finalName}"</em>
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">     */</em> 
<a name="136" href="#136">136</a>     <strong class="jxr_keyword">private</strong> String finalName; 
<a name="137" href="#137">137</a> 
<a name="138" href="#138">138</a>     <em class="jxr_javadoccomment">/**</em>
<a name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * Classifier type of the bundle to be installed.  For example, "jdk14".</em>
<a name="140" href="#140">140</a> <em class="jxr_javadoccomment">     * Defaults to none which means this is the project's main bundle.</em>
<a name="141" href="#141">141</a> <em class="jxr_javadoccomment">     *</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">     * @parameter</em>
<a name="143" href="#143">143</a> <em class="jxr_javadoccomment">     */</em>
<a name="144" href="#144">144</a>     <strong class="jxr_keyword">protected</strong> String classifier;
<a name="145" href="#145">145</a> 
<a name="146" href="#146">146</a>     <em class="jxr_javadoccomment">/**</em>
<a name="147" href="#147">147</a> <em class="jxr_javadoccomment">     * Packaging type of the bundle to be installed.  For example, "jar".</em>
<a name="148" href="#148">148</a> <em class="jxr_javadoccomment">     * Defaults to none which means use the same packaging as the project.</em>
<a name="149" href="#149">149</a> <em class="jxr_javadoccomment">     *</em>
<a name="150" href="#150">150</a> <em class="jxr_javadoccomment">     * @parameter</em>
<a name="151" href="#151">151</a> <em class="jxr_javadoccomment">     */</em>
<a name="152" href="#152">152</a>     <strong class="jxr_keyword">protected</strong> String packaging;
<a name="153" href="#153">153</a> 
<a name="154" href="#154">154</a>     <em class="jxr_javadoccomment">/**</em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * @component</em>
<a name="156" href="#156">156</a> <em class="jxr_javadoccomment">     */</em>
<a name="157" href="#157">157</a>     <strong class="jxr_keyword">private</strong> MavenProjectHelper m_projectHelper;
<a name="158" href="#158">158</a> 
<a name="159" href="#159">159</a>     <em class="jxr_javadoccomment">/**</em>
<a name="160" href="#160">160</a> <em class="jxr_javadoccomment">     * @component</em>
<a name="161" href="#161">161</a> <em class="jxr_javadoccomment">     */</em>
<a name="162" href="#162">162</a>     <strong class="jxr_keyword">private</strong> ArchiverManager m_archiverManager;
<a name="163" href="#163">163</a> 
<a name="164" href="#164">164</a>     <em class="jxr_javadoccomment">/**</em>
<a name="165" href="#165">165</a> <em class="jxr_javadoccomment">     * @component</em>
<a name="166" href="#166">166</a> <em class="jxr_javadoccomment">     */</em>
<a name="167" href="#167">167</a>     <strong class="jxr_keyword">private</strong> ArtifactHandlerManager m_artifactHandlerManager;
<a name="168" href="#168">168</a> 
<a name="169" href="#169">169</a>     <em class="jxr_javadoccomment">/**</em>
<a name="170" href="#170">170</a> <em class="jxr_javadoccomment">     * Project types which this plugin supports.</em>
<a name="171" href="#171">171</a> <em class="jxr_javadoccomment">     *</em>
<a name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * @parameter</em>
<a name="173" href="#173">173</a> <em class="jxr_javadoccomment">     */</em>
<a name="174" href="#174">174</a>     <strong class="jxr_keyword">protected</strong> List supportedProjectTypes = Arrays.asList( <strong class="jxr_keyword">new</strong> String[]
<a name="175" href="#175">175</a>         { <span class="jxr_string">"jar"</span>, <span class="jxr_string">"bundle"</span> } );
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>     <em class="jxr_javadoccomment">/**</em>
<a name="178" href="#178">178</a> <em class="jxr_javadoccomment">     * The directory for the generated bundles.</em>
<a name="179" href="#179">179</a> <em class="jxr_javadoccomment">     *</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">     * @parameter expression="${project.build.outputDirectory}"</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * @required</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">     */</em>
<a name="183" href="#183">183</a>     <strong class="jxr_keyword">private</strong> File outputDirectory;
<a name="184" href="#184">184</a> 
<a name="185" href="#185">185</a>     <em class="jxr_javadoccomment">/**</em>
<a name="186" href="#186">186</a> <em class="jxr_javadoccomment">     * The directory for the generated JAR.</em>
<a name="187" href="#187">187</a> <em class="jxr_javadoccomment">     *</em>
<a name="188" href="#188">188</a> <em class="jxr_javadoccomment">     * @parameter expression="${project.build.directory}"</em>
<a name="189" href="#189">189</a> <em class="jxr_javadoccomment">     * @required</em>
<a name="190" href="#190">190</a> <em class="jxr_javadoccomment">     */</em>
<a name="191" href="#191">191</a>     <strong class="jxr_keyword">private</strong> String buildDirectory;
<a name="192" href="#192">192</a> 
<a name="193" href="#193">193</a>     <em class="jxr_javadoccomment">/**</em>
<a name="194" href="#194">194</a> <em class="jxr_javadoccomment">     * The Maven project.</em>
<a name="195" href="#195">195</a> <em class="jxr_javadoccomment">     *</em>
<a name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * @parameter expression="${project}"</em>
<a name="197" href="#197">197</a> <em class="jxr_javadoccomment">     * @required</em>
<a name="198" href="#198">198</a> <em class="jxr_javadoccomment">     * @readonly</em>
<a name="199" href="#199">199</a> <em class="jxr_javadoccomment">     */</em>
<a name="200" href="#200">200</a>     <strong class="jxr_keyword">private</strong> MavenProject project;
<a name="201" href="#201">201</a> 
<a name="202" href="#202">202</a>     <em class="jxr_javadoccomment">/**</em>
<a name="203" href="#203">203</a> <em class="jxr_javadoccomment">     * The BND instructions for the bundle.</em>
<a name="204" href="#204">204</a> <em class="jxr_javadoccomment">     *</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">     * @parameter</em>
<a name="206" href="#206">206</a> <em class="jxr_javadoccomment">     */</em>
<a name="207" href="#207">207</a>     <strong class="jxr_keyword">private</strong> Map instructions = <strong class="jxr_keyword">new</strong> LinkedHashMap();
<a name="208" href="#208">208</a> 
<a name="209" href="#209">209</a>     <em class="jxr_javadoccomment">/**</em>
<a name="210" href="#210">210</a> <em class="jxr_javadoccomment">     * Use locally patched version for now.</em>
<a name="211" href="#211">211</a> <em class="jxr_javadoccomment">     */</em>
<a name="212" href="#212">212</a>     <strong class="jxr_keyword">private</strong> Maven2OsgiConverter m_maven2OsgiConverter = <strong class="jxr_keyword">new</strong> DefaultMaven2OsgiConverter();
<a name="213" href="#213">213</a> 
<a name="214" href="#214">214</a>     <em class="jxr_javadoccomment">/**</em>
<a name="215" href="#215">215</a> <em class="jxr_javadoccomment">     * The archive configuration to use.</em>
<a name="216" href="#216">216</a> <em class="jxr_javadoccomment">     *</em>
<a name="217" href="#217">217</a> <em class="jxr_javadoccomment">     * @parameter</em>
<a name="218" href="#218">218</a> <em class="jxr_javadoccomment">     */</em>
<a name="219" href="#219">219</a>     <strong class="jxr_keyword">private</strong> MavenArchiveConfiguration archive; <em class="jxr_comment">// accessed indirectly in JarPluginConfiguration</em>
<a name="220" href="#220">220</a> 
<a name="221" href="#221">221</a>     <em class="jxr_javadoccomment">/**</em>
<a name="222" href="#222">222</a> <em class="jxr_javadoccomment">     * @parameter default-value="${session}"</em>
<a name="223" href="#223">223</a> <em class="jxr_javadoccomment">     * @required</em>
<a name="224" href="#224">224</a> <em class="jxr_javadoccomment">     * @readonly</em>
<a name="225" href="#225">225</a> <em class="jxr_javadoccomment">     */</em>
<a name="226" href="#226">226</a>     <strong class="jxr_keyword">private</strong> MavenSession m_mavenSession;
<a name="227" href="#227">227</a> 
<a name="228" href="#228">228</a>     <em class="jxr_javadoccomment">/**</em>
<a name="229" href="#229">229</a> <em class="jxr_javadoccomment">     * Output a nicely formatted manifest that still respects the 72 character line limit.</em>
<a name="230" href="#230">230</a> <em class="jxr_javadoccomment">     *</em>
<a name="231" href="#231">231</a> <em class="jxr_javadoccomment">     * @parameter</em>
<a name="232" href="#232">232</a> <em class="jxr_javadoccomment">     */</em>
<a name="233" href="#233">233</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> niceManifest = false;
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAVEN_SYMBOLICNAME = <span class="jxr_string">"maven-symbolicname"</span>;
<a name="236" href="#236">236</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAVEN_RESOURCES = <span class="jxr_string">"{maven-resources}"</span>;
<a name="237" href="#237">237</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAVEN_TEST_RESOURCES = <span class="jxr_string">"{maven-test-resources}"</span>;
<a name="238" href="#238">238</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LOCAL_PACKAGES = <span class="jxr_string">"{local-packages}"</span>;
<a name="239" href="#239">239</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAVEN_SOURCES = <span class="jxr_string">"{maven-sources}"</span>;
<a name="240" href="#240">240</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAVEN_TEST_SOURCES = <span class="jxr_string">"{maven-test-sources}"</span>;
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String[] EMPTY_STRING_ARRAY =
<a name="243" href="#243">243</a>         {};
<a name="244" href="#244">244</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String[] DEFAULT_INCLUDES =
<a name="245" href="#245">245</a>         { <span class="jxr_string">"**/**"</span> };
<a name="246" href="#246">246</a> 
<a name="247" href="#247">247</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NL = System.getProperty( <span class="jxr_string">"line.separator"</span> );
<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">protected</strong> Maven2OsgiConverter getMaven2OsgiConverter()
<a name="251" href="#251">251</a>     {
<a name="252" href="#252">252</a>         <strong class="jxr_keyword">return</strong> m_maven2OsgiConverter;
<a name="253" href="#253">253</a>     }
<a name="254" href="#254">254</a> 
<a name="255" href="#255">255</a> 
<a name="256" href="#256">256</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setMaven2OsgiConverter( Maven2OsgiConverter maven2OsgiConverter )
<a name="257" href="#257">257</a>     {
<a name="258" href="#258">258</a>         m_maven2OsgiConverter = maven2OsgiConverter;
<a name="259" href="#259">259</a>     }
<a name="260" href="#260">260</a> 
<a name="261" href="#261">261</a> 
<a name="262" href="#262">262</a>     <strong class="jxr_keyword">protected</strong> MavenProject getProject()
<a name="263" href="#263">263</a>     {
<a name="264" href="#264">264</a>         <strong class="jxr_keyword">return</strong> project;
<a name="265" href="#265">265</a>     }
<a name="266" href="#266">266</a> 
<a name="267" href="#267">267</a> 
<a name="268" href="#268">268</a>     <em class="jxr_javadoccomment">/**</em>
<a name="269" href="#269">269</a> <em class="jxr_javadoccomment">     * @see org.apache.maven.plugin.AbstractMojo#execute()</em>
<a name="270" href="#270">270</a> <em class="jxr_javadoccomment">     */</em>
<a name="271" href="#271">271</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> execute() <strong class="jxr_keyword">throws</strong> MojoExecutionException
<a name="272" href="#272">272</a>     {
<a name="273" href="#273">273</a>         Properties properties = <strong class="jxr_keyword">new</strong> Properties();
<a name="274" href="#274">274</a>         String projectType = getProject().getArtifact().getType();
<a name="275" href="#275">275</a> 
<a name="276" href="#276">276</a>         <em class="jxr_comment">// ignore unsupported project types, useful when bundleplugin is configured in parent pom</em>
<a name="277" href="#277">277</a>         <strong class="jxr_keyword">if</strong> ( !supportedProjectTypes.contains( projectType ) )
<a name="278" href="#278">278</a>         {
<a name="279" href="#279">279</a>             getLog().warn(
<a name="280" href="#280">280</a>                 <span class="jxr_string">"Ignoring project type "</span> + projectType + <span class="jxr_string">" - supportedProjectTypes = "</span> + supportedProjectTypes );
<a name="281" href="#281">281</a>             <strong class="jxr_keyword">return</strong>;
<a name="282" href="#282">282</a>         }
<a name="283" href="#283">283</a> 
<a name="284" href="#284">284</a>         execute( getProject(), instructions, properties );
<a name="285" href="#285">285</a>     }
<a name="286" href="#286">286</a> 
<a name="287" href="#287">287</a> 
<a name="288" href="#288">288</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> execute( MavenProject currentProject, Map originalInstructions, Properties properties )
<a name="289" href="#289">289</a>         <strong class="jxr_keyword">throws</strong> MojoExecutionException
<a name="290" href="#290">290</a>     {
<a name="291" href="#291">291</a>         <strong class="jxr_keyword">try</strong>
<a name="292" href="#292">292</a>         {
<a name="293" href="#293">293</a>             execute( currentProject, originalInstructions, properties, getClasspath( currentProject ) );
<a name="294" href="#294">294</a>         }
<a name="295" href="#295">295</a>         <strong class="jxr_keyword">catch</strong> ( IOException e )
<a name="296" href="#296">296</a>         {
<a name="297" href="#297">297</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> MojoExecutionException( <span class="jxr_string">"Error calculating classpath for project "</span> + currentProject, e );
<a name="298" href="#298">298</a>         }
<a name="299" href="#299">299</a>     }
<a name="300" href="#300">300</a> 
<a name="301" href="#301">301</a> 
<a name="302" href="#302">302</a>     <em class="jxr_comment">/*<em class="jxr_comment"> transform directives from their XML form to the expected BND syntax (eg. _include becomes -include) */</em></em>
<a name="303" href="#303">303</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> Map transformDirectives( Map originalInstructions )
<a name="304" href="#304">304</a>     {
<a name="305" href="#305">305</a>         Map transformedInstructions = <strong class="jxr_keyword">new</strong> LinkedHashMap();
<a name="306" href="#306">306</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = originalInstructions.entrySet().iterator(); i.hasNext(); )
<a name="307" href="#307">307</a>         {
<a name="308" href="#308">308</a>             Map.Entry e = ( Map.Entry ) i.next();
<a name="309" href="#309">309</a> 
<a name="310" href="#310">310</a>             String key = ( String ) e.getKey();
<a name="311" href="#311">311</a>             <strong class="jxr_keyword">if</strong> ( key.startsWith( <span class="jxr_string">"_"</span> ) )
<a name="312" href="#312">312</a>             {
<a name="313" href="#313">313</a>                 key = <span class="jxr_string">"-"</span> + key.substring( 1 );
<a name="314" href="#314">314</a>             }
<a name="315" href="#315">315</a> 
<a name="316" href="#316">316</a>             String value = ( String ) e.getValue();
<a name="317" href="#317">317</a>             <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">null</strong> == value )
<a name="318" href="#318">318</a>             {
<a name="319" href="#319">319</a>                 value = <span class="jxr_string">""</span>;
<a name="320" href="#320">320</a>             }
<a name="321" href="#321">321</a>             <strong class="jxr_keyword">else</strong>
<a name="322" href="#322">322</a>             {
<a name="323" href="#323">323</a>                 value = value.replaceAll( <span class="jxr_string">"&#92;&#92;p{Blank}*[\r\n]&#92;&#92;p{Blank}*"</span>, <span class="jxr_string">""</span> );
<a name="324" href="#324">324</a>             }
<a name="325" href="#325">325</a> 
<a name="326" href="#326">326</a>             <strong class="jxr_keyword">if</strong> ( Analyzer.WAB.equals( key ) &amp;&amp; value.length() == 0 )
<a name="327" href="#327">327</a>             {
<a name="328" href="#328">328</a>                 <em class="jxr_comment">// provide useful default</em>
<a name="329" href="#329">329</a>                 value = <span class="jxr_string">"src/main/webapp/"</span>;
<a name="330" href="#330">330</a>             }
<a name="331" href="#331">331</a> 
<a name="332" href="#332">332</a>             transformedInstructions.put( key, value );
<a name="333" href="#333">333</a>         }
<a name="334" href="#334">334</a>         <strong class="jxr_keyword">return</strong> transformedInstructions;
<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>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> reportErrors( String prefix, Analyzer analyzer )
<a name="339" href="#339">339</a>     {
<a name="340" href="#340">340</a>         List errors = analyzer.getErrors();
<a name="341" href="#341">341</a>         List warnings = analyzer.getWarnings();
<a name="342" href="#342">342</a> 
<a name="343" href="#343">343</a>         <strong class="jxr_keyword">for</strong> ( Iterator w = warnings.iterator(); w.hasNext(); )
<a name="344" href="#344">344</a>         {
<a name="345" href="#345">345</a>             String msg = ( String ) w.next();
<a name="346" href="#346">346</a>             getLog().warn( prefix + <span class="jxr_string">" : "</span> + msg );
<a name="347" href="#347">347</a>         }
<a name="348" href="#348">348</a> 
<a name="349" href="#349">349</a>         <strong class="jxr_keyword">boolean</strong> hasErrors = false;
<a name="350" href="#350">350</a>         String fileNotFound = <span class="jxr_string">"Input file does not exist: "</span>;
<a name="351" href="#351">351</a>         <strong class="jxr_keyword">for</strong> ( Iterator e = errors.iterator(); e.hasNext(); )
<a name="352" href="#352">352</a>         {
<a name="353" href="#353">353</a>             String msg = ( String ) e.next();
<a name="354" href="#354">354</a>             <strong class="jxr_keyword">if</strong> ( msg.startsWith( fileNotFound ) &amp;&amp; msg.endsWith( <span class="jxr_string">"~"</span> ) )
<a name="355" href="#355">355</a>             {
<a name="356" href="#356">356</a>                 <em class="jxr_comment">// treat as warning; this error happens when you have duplicate entries in Include-Resource</em>
<a name="357" href="#357">357</a>                 String duplicate = Processor.removeDuplicateMarker( msg.substring( fileNotFound.length() ) );
<a name="358" href="#358">358</a>                 getLog().warn( prefix + <span class="jxr_string">" : Duplicate path '"</span> + duplicate + <span class="jxr_string">"' in Include-Resource"</span> );
<a name="359" href="#359">359</a>             }
<a name="360" href="#360">360</a>             <strong class="jxr_keyword">else</strong>
<a name="361" href="#361">361</a>             {
<a name="362" href="#362">362</a>                 getLog().error( prefix + <span class="jxr_string">" : "</span> + msg );
<a name="363" href="#363">363</a>                 hasErrors = <strong class="jxr_keyword">true</strong>;
<a name="364" href="#364">364</a>             }
<a name="365" href="#365">365</a>         }
<a name="366" href="#366">366</a>         <strong class="jxr_keyword">return</strong> hasErrors;
<a name="367" href="#367">367</a>     }
<a name="368" href="#368">368</a> 
<a name="369" href="#369">369</a> 
<a name="370" href="#370">370</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> execute( MavenProject currentProject, Map originalInstructions, Properties properties,
<a name="371" href="#371">371</a>         Jar[] classpath ) <strong class="jxr_keyword">throws</strong> MojoExecutionException
<a name="372" href="#372">372</a>     {
<a name="373" href="#373">373</a>         <strong class="jxr_keyword">try</strong>
<a name="374" href="#374">374</a>         {
<a name="375" href="#375">375</a>             File jarFile = <strong class="jxr_keyword">new</strong> File( getBuildDirectory(), getBundleName( currentProject ) );
<a name="376" href="#376">376</a>             Builder builder = buildOSGiBundle( currentProject, originalInstructions, properties, classpath );
<a name="377" href="#377">377</a>             <strong class="jxr_keyword">boolean</strong> hasErrors = reportErrors( <span class="jxr_string">"Bundle "</span> + currentProject.getArtifact(), builder );
<a name="378" href="#378">378</a>             <strong class="jxr_keyword">if</strong> ( hasErrors )
<a name="379" href="#379">379</a>             {
<a name="380" href="#380">380</a>                 String failok = builder.getProperty( <span class="jxr_string">"-failok"</span> );
<a name="381" href="#381">381</a>                 <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">null</strong> == failok || <span class="jxr_string">"false"</span>.equalsIgnoreCase( failok ) )
<a name="382" href="#382">382</a>                 {
<a name="383" href="#383">383</a>                     jarFile.delete();
<a name="384" href="#384">384</a> 
<a name="385" href="#385">385</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> MojoFailureException( <span class="jxr_string">"Error(s) found in bundle configuration"</span> );
<a name="386" href="#386">386</a>                 }
<a name="387" href="#387">387</a>             }
<a name="388" href="#388">388</a> 
<a name="389" href="#389">389</a>             <em class="jxr_comment">// attach bundle to maven project</em>
<a name="390" href="#390">390</a>             jarFile.getParentFile().mkdirs();
<a name="391" href="#391">391</a>             builder.getJar().write( jarFile );
<a name="392" href="#392">392</a> 
<a name="393" href="#393">393</a>             Artifact mainArtifact = currentProject.getArtifact();
<a name="394" href="#394">394</a> 
<a name="395" href="#395">395</a>             <strong class="jxr_keyword">if</strong> ( <span class="jxr_string">"bundle"</span>.equals( mainArtifact.getType() ) )
<a name="396" href="#396">396</a>             {
<a name="397" href="#397">397</a>                 <em class="jxr_comment">// workaround for MNG-1682: force maven to install artifact using the "jar" handler</em>
<a name="398" href="#398">398</a>                 mainArtifact.setArtifactHandler( m_artifactHandlerManager.getArtifactHandler( <span class="jxr_string">"jar"</span> ) );
<a name="399" href="#399">399</a>             }
<a name="400" href="#400">400</a> 
<a name="401" href="#401">401</a>             <strong class="jxr_keyword">boolean</strong> customClassifier = <strong class="jxr_keyword">null</strong> != classifier &amp;&amp; classifier.trim().length() &gt; 0;
<a name="402" href="#402">402</a>             <strong class="jxr_keyword">boolean</strong> customPackaging = <strong class="jxr_keyword">null</strong> != packaging &amp;&amp; packaging.trim().length() &gt; 0;
<a name="403" href="#403">403</a> 
<a name="404" href="#404">404</a>             <strong class="jxr_keyword">if</strong> ( customClassifier &amp;&amp; customPackaging )
<a name="405" href="#405">405</a>             {
<a name="406" href="#406">406</a>                 m_projectHelper.attachArtifact( currentProject, packaging, classifier, jarFile );
<a name="407" href="#407">407</a>             }
<a name="408" href="#408">408</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( customClassifier )
<a name="409" href="#409">409</a>             {
<a name="410" href="#410">410</a>                 m_projectHelper.attachArtifact( currentProject, jarFile, classifier );
<a name="411" href="#411">411</a>             }
<a name="412" href="#412">412</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( customPackaging )
<a name="413" href="#413">413</a>             {
<a name="414" href="#414">414</a>                 m_projectHelper.attachArtifact( currentProject, packaging, jarFile );
<a name="415" href="#415">415</a>             }
<a name="416" href="#416">416</a>             <strong class="jxr_keyword">else</strong>
<a name="417" href="#417">417</a>             {
<a name="418" href="#418">418</a>                 mainArtifact.setFile( jarFile );
<a name="419" href="#419">419</a>             }
<a name="420" href="#420">420</a> 
<a name="421" href="#421">421</a>             <strong class="jxr_keyword">if</strong> ( unpackBundle )
<a name="422" href="#422">422</a>             {
<a name="423" href="#423">423</a>                 unpackBundle( jarFile );
<a name="424" href="#424">424</a>             }
<a name="425" href="#425">425</a> 
<a name="426" href="#426">426</a>             <strong class="jxr_keyword">if</strong> ( manifestLocation != <strong class="jxr_keyword">null</strong> )
<a name="427" href="#427">427</a>             {
<a name="428" href="#428">428</a>                 File outputFile = <strong class="jxr_keyword">new</strong> File( manifestLocation, <span class="jxr_string">"MANIFEST.MF"</span> );
<a name="429" href="#429">429</a> 
<a name="430" href="#430">430</a>                 <strong class="jxr_keyword">try</strong>
<a name="431" href="#431">431</a>                 {
<a name="432" href="#432">432</a>                     Manifest manifest = builder.getJar().getManifest();
<a name="433" href="#433">433</a>                     FileOutputStream fos = <strong class="jxr_keyword">new</strong> FileOutputStream( outputFile );
<a name="434" href="#434">434</a>                     <strong class="jxr_keyword">try</strong>
<a name="435" href="#435">435</a>                     {
<a name="436" href="#436">436</a>                         ManifestWriter.outputManifest( manifest, fos, niceManifest );
<a name="437" href="#437">437</a>                     }
<a name="438" href="#438">438</a>                     <strong class="jxr_keyword">finally</strong>
<a name="439" href="#439">439</a>                     {
<a name="440" href="#440">440</a>                         fos.close();
<a name="441" href="#441">441</a>                     }
<a name="442" href="#442">442</a>                 }
<a name="443" href="#443">443</a>                 <strong class="jxr_keyword">catch</strong> ( IOException e )
<a name="444" href="#444">444</a>                 {
<a name="445" href="#445">445</a>                     getLog().error( <span class="jxr_string">"Error trying to write Manifest to file "</span> + outputFile, e );
<a name="446" href="#446">446</a>                 }
<a name="447" href="#447">447</a>             }
<a name="448" href="#448">448</a> 
<a name="449" href="#449">449</a>             <em class="jxr_comment">// cleanup...</em>
<a name="450" href="#450">450</a>             builder.close();
<a name="451" href="#451">451</a>         }
<a name="452" href="#452">452</a>         <strong class="jxr_keyword">catch</strong> ( MojoFailureException e )
<a name="453" href="#453">453</a>         {
<a name="454" href="#454">454</a>             getLog().error( e.getLocalizedMessage() );
<a name="455" href="#455">455</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> MojoExecutionException( <span class="jxr_string">"Error(s) found in bundle configuration"</span>, e );
<a name="456" href="#456">456</a>         }
<a name="457" href="#457">457</a>         <strong class="jxr_keyword">catch</strong> ( Exception e )
<a name="458" href="#458">458</a>         {
<a name="459" href="#459">459</a>             getLog().error( <span class="jxr_string">"An internal error occurred"</span>, e );
<a name="460" href="#460">460</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> MojoExecutionException( <span class="jxr_string">"Internal error in maven-bundle-plugin"</span>, e );
<a name="461" href="#461">461</a>         }
<a name="462" href="#462">462</a>     }
<a name="463" href="#463">463</a> 
<a name="464" href="#464">464</a> 
<a name="465" href="#465">465</a>     <strong class="jxr_keyword">protected</strong> Builder getOSGiBuilder( MavenProject currentProject, Map originalInstructions, Properties properties,
<a name="466" href="#466">466</a>         Jar[] classpath ) <strong class="jxr_keyword">throws</strong> Exception
<a name="467" href="#467">467</a>     {
<a name="468" href="#468">468</a>         properties.putAll( getDefaultProperties( currentProject ) );
<a name="469" href="#469">469</a>         properties.putAll( transformDirectives( originalInstructions ) );
<a name="470" href="#470">470</a>         <strong class="jxr_keyword">if</strong> (properties.getProperty(<span class="jxr_string">"Bundle-Activator"</span>) != <strong class="jxr_keyword">null</strong>
<a name="471" href="#471">471</a>                 &amp;&amp; properties.getProperty(<span class="jxr_string">"Bundle-Activator"</span>).isEmpty())
<a name="472" href="#472">472</a>         {
<a name="473" href="#473">473</a>             properties.remove(<span class="jxr_string">"Bundle-Activator"</span>);
<a name="474" href="#474">474</a>         }
<a name="475" href="#475">475</a>         <strong class="jxr_keyword">if</strong> (properties.containsKey(<span class="jxr_string">"-disable-plugin"</span>))
<a name="476" href="#476">476</a>         {
<a name="477" href="#477">477</a>             String[] disabled = properties.remove(<span class="jxr_string">"-disable-plugin"</span>).toString().replaceAll(<span class="jxr_string">" "</span>, <span class="jxr_string">""</span>).split(<span class="jxr_string">","</span>);
<a name="478" href="#478">478</a>             String[] enabled = properties.getProperty(Analyzer.PLUGIN, <span class="jxr_string">""</span>).replaceAll(<span class="jxr_string">" "</span>, <span class="jxr_string">""</span>).split(<span class="jxr_string">","</span>);
<a name="479" href="#479">479</a>             Set&lt;String&gt; plugin = <strong class="jxr_keyword">new</strong> LinkedHashSet&lt;String&gt;();
<a name="480" href="#480">480</a>             plugin.addAll(Arrays.asList(enabled));
<a name="481" href="#481">481</a>             plugin.removeAll(Arrays.asList(disabled));
<a name="482" href="#482">482</a>             StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="483" href="#483">483</a>             <strong class="jxr_keyword">for</strong> (String s : plugin)
<a name="484" href="#484">484</a>             {
<a name="485" href="#485">485</a>                 <strong class="jxr_keyword">if</strong> (sb.length() &gt; 0)
<a name="486" href="#486">486</a>                 {
<a name="487" href="#487">487</a>                     sb.append(<span class="jxr_string">","</span>);
<a name="488" href="#488">488</a>                 }
<a name="489" href="#489">489</a>                 sb.append(sb);
<a name="490" href="#490">490</a>             }
<a name="491" href="#491">491</a>             properties.setProperty(Analyzer.PLUGIN, sb.toString());
<a name="492" href="#492">492</a>         }
<a name="493" href="#493">493</a> 
<a name="494" href="#494">494</a>         Builder builder = <strong class="jxr_keyword">new</strong> Builder();
<a name="495" href="#495">495</a>         <strong class="jxr_keyword">synchronized</strong> ( BundlePlugin.<strong class="jxr_keyword">class</strong> ) <em class="jxr_comment">// protect setBase...getBndLastModified which uses static DateFormat </em>
<a name="496" href="#496">496</a>         {
<a name="497" href="#497">497</a>             builder.setBase( getBase( currentProject ) );
<a name="498" href="#498">498</a>         }
<a name="499" href="#499">499</a>         builder.setProperties( sanitize( properties ) );
<a name="500" href="#500">500</a>         <strong class="jxr_keyword">if</strong> ( classpath != <strong class="jxr_keyword">null</strong> )
<a name="501" href="#501">501</a>         {
<a name="502" href="#502">502</a>             builder.setClasspath( classpath );
<a name="503" href="#503">503</a>         }
<a name="504" href="#504">504</a> 
<a name="505" href="#505">505</a>         <strong class="jxr_keyword">return</strong> builder;
<a name="506" href="#506">506</a>     }
<a name="507" href="#507">507</a> 
<a name="508" href="#508">508</a> 
<a name="509" href="#509">509</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> Properties sanitize( Properties properties )
<a name="510" href="#510">510</a>     {
<a name="511" href="#511">511</a>         <em class="jxr_comment">// convert any non-String keys/values to Strings</em>
<a name="512" href="#512">512</a>         Properties sanitizedEntries = <strong class="jxr_keyword">new</strong> Properties();
<a name="513" href="#513">513</a>         <strong class="jxr_keyword">for</strong> ( Iterator itr = properties.entrySet().iterator(); itr.hasNext(); )
<a name="514" href="#514">514</a>         {
<a name="515" href="#515">515</a>             Map.Entry entry = ( Map.Entry ) itr.next();
<a name="516" href="#516">516</a>             <strong class="jxr_keyword">if</strong> ( entry.getKey() instanceof String == false )
<a name="517" href="#517">517</a>             {
<a name="518" href="#518">518</a>                 String key = sanitize( entry.getKey() );
<a name="519" href="#519">519</a>                 <strong class="jxr_keyword">if</strong> ( !properties.containsKey( key ) )
<a name="520" href="#520">520</a>                 {
<a name="521" href="#521">521</a>                     sanitizedEntries.setProperty( key, sanitize( entry.getValue() ) );
<a name="522" href="#522">522</a>                 }
<a name="523" href="#523">523</a>                 itr.remove();
<a name="524" href="#524">524</a>             }
<a name="525" href="#525">525</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( entry.getValue() instanceof String == false )
<a name="526" href="#526">526</a>             {
<a name="527" href="#527">527</a>                 entry.setValue( sanitize( entry.getValue() ) );
<a name="528" href="#528">528</a>             }
<a name="529" href="#529">529</a>         }
<a name="530" href="#530">530</a>         properties.putAll( sanitizedEntries );
<a name="531" href="#531">531</a>         <strong class="jxr_keyword">return</strong> properties;
<a name="532" href="#532">532</a>     }
<a name="533" href="#533">533</a> 
<a name="534" href="#534">534</a> 
<a name="535" href="#535">535</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> String sanitize( Object value )
<a name="536" href="#536">536</a>     {
<a name="537" href="#537">537</a>         <strong class="jxr_keyword">if</strong> ( value instanceof String )
<a name="538" href="#538">538</a>         {
<a name="539" href="#539">539</a>             <strong class="jxr_keyword">return</strong> ( String ) value;
<a name="540" href="#540">540</a>         }
<a name="541" href="#541">541</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( value instanceof Iterable )
<a name="542" href="#542">542</a>         {
<a name="543" href="#543">543</a>             String delim = <span class="jxr_string">""</span>;
<a name="544" href="#544">544</a>             StringBuilder buf = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="545" href="#545">545</a>             <strong class="jxr_keyword">for</strong> ( Object i : ( Iterable&lt;?&gt; ) value )
<a name="546" href="#546">546</a>             {
<a name="547" href="#547">547</a>                 buf.append( delim ).append( i );
<a name="548" href="#548">548</a>                 delim = <span class="jxr_string">", "</span>;
<a name="549" href="#549">549</a>             }
<a name="550" href="#550">550</a>             <strong class="jxr_keyword">return</strong> buf.toString();
<a name="551" href="#551">551</a>         }
<a name="552" href="#552">552</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( value.getClass().isArray() )
<a name="553" href="#553">553</a>         {
<a name="554" href="#554">554</a>             String delim = <span class="jxr_string">""</span>;
<a name="555" href="#555">555</a>             StringBuilder buf = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="556" href="#556">556</a>             <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0, len = Array.getLength( value ); i &lt; len; i++ )
<a name="557" href="#557">557</a>             {
<a name="558" href="#558">558</a>                 buf.append( delim ).append( Array.get( value, i ) );
<a name="559" href="#559">559</a>                 delim = <span class="jxr_string">", "</span>;
<a name="560" href="#560">560</a>             }
<a name="561" href="#561">561</a>             <strong class="jxr_keyword">return</strong> buf.toString();
<a name="562" href="#562">562</a>         }
<a name="563" href="#563">563</a>         <strong class="jxr_keyword">else</strong>
<a name="564" href="#564">564</a>         {
<a name="565" href="#565">565</a>             <strong class="jxr_keyword">return</strong> String.valueOf( value );
<a name="566" href="#566">566</a>         }
<a name="567" href="#567">567</a>     }
<a name="568" href="#568">568</a> 
<a name="569" href="#569">569</a> 
<a name="570" href="#570">570</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> addMavenInstructions( MavenProject currentProject, Builder builder ) <strong class="jxr_keyword">throws</strong> Exception
<a name="571" href="#571">571</a>     {
<a name="572" href="#572">572</a>         <strong class="jxr_keyword">if</strong> ( currentProject.getBasedir() != <strong class="jxr_keyword">null</strong> )
<a name="573" href="#573">573</a>         {
<a name="574" href="#574">574</a>             <em class="jxr_comment">// update BND instructions to add included Maven resources</em>
<a name="575" href="#575">575</a>             includeMavenResources( currentProject, builder, getLog() );
<a name="576" href="#576">576</a> 
<a name="577" href="#577">577</a>             <em class="jxr_comment">// calculate default export/private settings based on sources</em>
<a name="578" href="#578">578</a>             addLocalPackages( outputDirectory, builder );
<a name="579" href="#579">579</a> 
<a name="580" href="#580">580</a>             <em class="jxr_comment">// tell BND where the current project source resides</em>
<a name="581" href="#581">581</a>             addMavenSourcePath( currentProject, builder, getLog() );
<a name="582" href="#582">582</a>         }
<a name="583" href="#583">583</a> 
<a name="584" href="#584">584</a>         <em class="jxr_comment">// update BND instructions to embed selected Maven dependencies</em>
<a name="585" href="#585">585</a>         Collection embeddableArtifacts = getEmbeddableArtifacts( currentProject, builder );
<a name="586" href="#586">586</a>         <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/DependencyEmbedder.html">DependencyEmbedder</a>( getLog(), embeddableArtifacts ).processHeaders( builder );
<a name="587" href="#587">587</a> 
<a name="588" href="#588">588</a>         <strong class="jxr_keyword">if</strong> ( dumpInstructions != <strong class="jxr_keyword">null</strong> || getLog().isDebugEnabled() )
<a name="589" href="#589">589</a>         {
<a name="590" href="#590">590</a>             StringBuilder buf = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="591" href="#591">591</a>             getLog().debug( <span class="jxr_string">"BND Instructions:"</span> + NL + dumpInstructions( builder.getProperties(), buf ) );
<a name="592" href="#592">592</a>             <strong class="jxr_keyword">if</strong> ( dumpInstructions != <strong class="jxr_keyword">null</strong> )
<a name="593" href="#593">593</a>             {
<a name="594" href="#594">594</a>                 getLog().info( <span class="jxr_string">"Writing BND instructions to "</span> + dumpInstructions );
<a name="595" href="#595">595</a>                 dumpInstructions.getParentFile().mkdirs();
<a name="596" href="#596">596</a>                 FileUtils.fileWrite( dumpInstructions, <span class="jxr_string">"# BND instructions"</span> + NL + buf );
<a name="597" href="#597">597</a>             }
<a name="598" href="#598">598</a>         }
<a name="599" href="#599">599</a> 
<a name="600" href="#600">600</a>         <strong class="jxr_keyword">if</strong> ( dumpClasspath != <strong class="jxr_keyword">null</strong> || getLog().isDebugEnabled() )
<a name="601" href="#601">601</a>         {
<a name="602" href="#602">602</a>             StringBuilder buf = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="603" href="#603">603</a>             getLog().debug( <span class="jxr_string">"BND Classpath:"</span> + NL + dumpClasspath( builder.getClasspath(), buf ) );
<a name="604" href="#604">604</a>             <strong class="jxr_keyword">if</strong> ( dumpClasspath != <strong class="jxr_keyword">null</strong> )
<a name="605" href="#605">605</a>             {
<a name="606" href="#606">606</a>                 getLog().info( <span class="jxr_string">"Writing BND classpath to "</span> + dumpClasspath );
<a name="607" href="#607">607</a>                 dumpClasspath.getParentFile().mkdirs();
<a name="608" href="#608">608</a>                 FileUtils.fileWrite( dumpClasspath, <span class="jxr_string">"# BND classpath"</span> + NL + buf );
<a name="609" href="#609">609</a>             }
<a name="610" href="#610">610</a>         }
<a name="611" href="#611">611</a>     }
<a name="612" href="#612">612</a> 
<a name="613" href="#613">613</a> 
<a name="614" href="#614">614</a>     <strong class="jxr_keyword">protected</strong> Builder buildOSGiBundle( MavenProject currentProject, Map originalInstructions, Properties properties,
<a name="615" href="#615">615</a>         Jar[] classpath ) <strong class="jxr_keyword">throws</strong> Exception
<a name="616" href="#616">616</a>     {
<a name="617" href="#617">617</a>         Builder builder = getOSGiBuilder( currentProject, originalInstructions, properties, classpath );
<a name="618" href="#618">618</a> 
<a name="619" href="#619">619</a>         addMavenInstructions( currentProject, builder );
<a name="620" href="#620">620</a> 
<a name="621" href="#621">621</a>         builder.build();
<a name="622" href="#622">622</a> 
<a name="623" href="#623">623</a>         mergeMavenManifest( currentProject, builder );
<a name="624" href="#624">624</a> 
<a name="625" href="#625">625</a>         <strong class="jxr_keyword">return</strong> builder;
<a name="626" href="#626">626</a>     }
<a name="627" href="#627">627</a> 
<a name="628" href="#628">628</a> 
<a name="629" href="#629">629</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> StringBuilder dumpInstructions( Properties properties, StringBuilder buf )
<a name="630" href="#630">630</a>     {
<a name="631" href="#631">631</a>         <strong class="jxr_keyword">try</strong>
<a name="632" href="#632">632</a>         {
<a name="633" href="#633">633</a>             buf.append( <span class="jxr_string">"#-----------------------------------------------------------------------"</span> + NL );
<a name="634" href="#634">634</a>             Properties stringProperties = <strong class="jxr_keyword">new</strong> Properties();
<a name="635" href="#635">635</a>             <strong class="jxr_keyword">for</strong> ( Enumeration e = properties.propertyNames(); e.hasMoreElements(); )
<a name="636" href="#636">636</a>             {
<a name="637" href="#637">637</a>                 <em class="jxr_comment">// we can only store String properties</em>
<a name="638" href="#638">638</a>                 String key = ( String ) e.nextElement();
<a name="639" href="#639">639</a>                 String value = properties.getProperty( key );
<a name="640" href="#640">640</a>                 <strong class="jxr_keyword">if</strong> ( value != <strong class="jxr_keyword">null</strong> )
<a name="641" href="#641">641</a>                 {
<a name="642" href="#642">642</a>                     stringProperties.setProperty( key, value );
<a name="643" href="#643">643</a>                 }
<a name="644" href="#644">644</a>             }
<a name="645" href="#645">645</a>             ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
<a name="646" href="#646">646</a>             stringProperties.store( out, <strong class="jxr_keyword">null</strong> ); <em class="jxr_comment">// properties encoding is 8859_1</em>
<a name="647" href="#647">647</a>             buf.append( out.toString( <span class="jxr_string">"8859_1"</span> ) );
<a name="648" href="#648">648</a>             buf.append( <span class="jxr_string">"#-----------------------------------------------------------------------"</span> + NL );
<a name="649" href="#649">649</a>         }
<a name="650" href="#650">650</a>         <strong class="jxr_keyword">catch</strong> ( Throwable e )
<a name="651" href="#651">651</a>         {
<a name="652" href="#652">652</a>             <em class="jxr_comment">// ignore...</em>
<a name="653" href="#653">653</a>         }
<a name="654" href="#654">654</a>         <strong class="jxr_keyword">return</strong> buf;
<a name="655" href="#655">655</a>     }
<a name="656" href="#656">656</a> 
<a name="657" href="#657">657</a> 
<a name="658" href="#658">658</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> StringBuilder dumpClasspath( List classpath, StringBuilder buf )
<a name="659" href="#659">659</a>     {
<a name="660" href="#660">660</a>         <strong class="jxr_keyword">try</strong>
<a name="661" href="#661">661</a>         {
<a name="662" href="#662">662</a>             buf.append( <span class="jxr_string">"#-----------------------------------------------------------------------"</span> + NL );
<a name="663" href="#663">663</a>             buf.append( <span class="jxr_string">"-classpath:&#92;&#92;"</span> + NL );
<a name="664" href="#664">664</a>             <strong class="jxr_keyword">for</strong> ( Iterator i = classpath.iterator(); i.hasNext(); )
<a name="665" href="#665">665</a>             {
<a name="666" href="#666">666</a>                 File path = ( ( Jar ) i.next() ).getSource();
<a name="667" href="#667">667</a>                 <strong class="jxr_keyword">if</strong> ( path != <strong class="jxr_keyword">null</strong> )
<a name="668" href="#668">668</a>                 {
<a name="669" href="#669">669</a>                     buf.append( ' ' + path.toString() + ( i.hasNext() ? <span class="jxr_string">",&#92;&#92;"</span> : <span class="jxr_string">""</span> ) + NL );
<a name="670" href="#670">670</a>                 }
<a name="671" href="#671">671</a>             }
<a name="672" href="#672">672</a>             buf.append( <span class="jxr_string">"#-----------------------------------------------------------------------"</span> + NL );
<a name="673" href="#673">673</a>         }
<a name="674" href="#674">674</a>         <strong class="jxr_keyword">catch</strong> ( Throwable e )
<a name="675" href="#675">675</a>         {
<a name="676" href="#676">676</a>             <em class="jxr_comment">// ignore...</em>
<a name="677" href="#677">677</a>         }
<a name="678" href="#678">678</a>         <strong class="jxr_keyword">return</strong> buf;
<a name="679" href="#679">679</a>     }
<a name="680" href="#680">680</a> 
<a name="681" href="#681">681</a> 
<a name="682" href="#682">682</a>     <strong class="jxr_keyword">protected</strong> StringBuilder dumpManifest( Manifest manifest, StringBuilder buf )
<a name="683" href="#683">683</a>     {
<a name="684" href="#684">684</a>         <strong class="jxr_keyword">try</strong>
<a name="685" href="#685">685</a>         {
<a name="686" href="#686">686</a>             buf.append( <span class="jxr_string">"#-----------------------------------------------------------------------"</span> + NL );
<a name="687" href="#687">687</a>             ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
<a name="688" href="#688">688</a>             ManifestWriter.outputManifest( manifest, out, false ); <em class="jxr_comment">// manifest encoding is UTF8</em>
<a name="689" href="#689">689</a>             buf.append( out.toString( <span class="jxr_string">"UTF8"</span> ) );
<a name="690" href="#690">690</a>             buf.append( <span class="jxr_string">"#-----------------------------------------------------------------------"</span> + NL );
<a name="691" href="#691">691</a>         }
<a name="692" href="#692">692</a>         <strong class="jxr_keyword">catch</strong> ( Throwable e )
<a name="693" href="#693">693</a>         {
<a name="694" href="#694">694</a>             <em class="jxr_comment">// ignore...</em>
<a name="695" href="#695">695</a>         }
<a name="696" href="#696">696</a>         <strong class="jxr_keyword">return</strong> buf;
<a name="697" href="#697">697</a>     }
<a name="698" href="#698">698</a> 
<a name="699" href="#699">699</a> 
<a name="700" href="#700">700</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> includeMavenResources( MavenProject currentProject, Analyzer analyzer, Log log )
<a name="701" href="#701">701</a>     {
<a name="702" href="#702">702</a>         <em class="jxr_comment">// pass maven resource paths onto BND analyzer</em>
<a name="703" href="#703">703</a>         <strong class="jxr_keyword">final</strong> String mavenResourcePaths = getMavenResourcePaths( currentProject, false );
<a name="704" href="#704">704</a>         <strong class="jxr_keyword">final</strong> String mavenTestResourcePaths = getMavenResourcePaths( currentProject, <strong class="jxr_keyword">true</strong> );
<a name="705" href="#705">705</a>         <strong class="jxr_keyword">final</strong> String includeResource = analyzer.getProperty( Analyzer.INCLUDE_RESOURCE );
<a name="706" href="#706">706</a>         <strong class="jxr_keyword">if</strong> ( includeResource != <strong class="jxr_keyword">null</strong> )
<a name="707" href="#707">707</a>         {
<a name="708" href="#708">708</a>             <strong class="jxr_keyword">if</strong> ( includeResource.contains( MAVEN_RESOURCES ) || includeResource.contains( MAVEN_TEST_RESOURCES ) )
<a name="709" href="#709">709</a>             {
<a name="710" href="#710">710</a>                 String combinedResource = StringUtils.replace( includeResource, MAVEN_RESOURCES, mavenResourcePaths );
<a name="711" href="#711">711</a>                 combinedResource = StringUtils.replace( combinedResource, MAVEN_TEST_RESOURCES, mavenTestResourcePaths );
<a name="712" href="#712">712</a>                 <strong class="jxr_keyword">if</strong> ( combinedResource.length() &gt; 0 )
<a name="713" href="#713">713</a>                 {
<a name="714" href="#714">714</a>                     analyzer.setProperty( Analyzer.INCLUDE_RESOURCE, combinedResource );
<a name="715" href="#715">715</a>                 }
<a name="716" href="#716">716</a>                 <strong class="jxr_keyword">else</strong>
<a name="717" href="#717">717</a>                 {
<a name="718" href="#718">718</a>                     analyzer.unsetProperty( Analyzer.INCLUDE_RESOURCE );
<a name="719" href="#719">719</a>                 }
<a name="720" href="#720">720</a>             }
<a name="721" href="#721">721</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( mavenResourcePaths.length() &gt; 0 )
<a name="722" href="#722">722</a>             {
<a name="723" href="#723">723</a>                 log.warn( Analyzer.INCLUDE_RESOURCE + <span class="jxr_string">": overriding "</span> + mavenResourcePaths + <span class="jxr_string">" with "</span> + includeResource
<a name="724" href="#724">724</a>                         + <span class="jxr_string">" (add "</span> + MAVEN_RESOURCES + <span class="jxr_string">" if you want to include the maven resources)"</span> );
<a name="725" href="#725">725</a>             }
<a name="726" href="#726">726</a>         }
<a name="727" href="#727">727</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( mavenResourcePaths.length() &gt; 0 )
<a name="728" href="#728">728</a>         {
<a name="729" href="#729">729</a>             analyzer.setProperty( Analyzer.INCLUDE_RESOURCE, mavenResourcePaths );
<a name="730" href="#730">730</a>         }
<a name="731" href="#731">731</a>     }
<a name="732" href="#732">732</a> 
<a name="733" href="#733">733</a> 
<a name="734" href="#734">734</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> mergeMavenManifest( MavenProject currentProject, Builder builder ) <strong class="jxr_keyword">throws</strong> Exception
<a name="735" href="#735">735</a>     {
<a name="736" href="#736">736</a>         Jar jar = builder.getJar();
<a name="737" href="#737">737</a> 
<a name="738" href="#738">738</a>         <strong class="jxr_keyword">if</strong> ( getLog().isDebugEnabled() )
<a name="739" href="#739">739</a>         {
<a name="740" href="#740">740</a>             getLog().debug( <span class="jxr_string">"BND Manifest:"</span> + NL + dumpManifest( jar.getManifest(), <strong class="jxr_keyword">new</strong> StringBuilder() ) );
<a name="741" href="#741">741</a>         }
<a name="742" href="#742">742</a> 
<a name="743" href="#743">743</a>         <strong class="jxr_keyword">boolean</strong> addMavenDescriptor = currentProject.getBasedir() != <strong class="jxr_keyword">null</strong>;
<a name="744" href="#744">744</a> 
<a name="745" href="#745">745</a>         <strong class="jxr_keyword">try</strong>
<a name="746" href="#746">746</a>         {
<a name="747" href="#747">747</a>             <em class="jxr_comment">/*</em>
<a name="748" href="#748">748</a> <em class="jxr_comment">             * Grab customized manifest entries from the maven-jar-plugin configuration</em>
<a name="749" href="#749">749</a> <em class="jxr_comment">             */</em>
<a name="750" href="#750">750</a>             MavenArchiveConfiguration archiveConfig = JarPluginConfiguration.getArchiveConfiguration( currentProject );
<a name="751" href="#751">751</a>             String mavenManifestText = <strong class="jxr_keyword">new</strong> MavenArchiver().getManifest( currentProject, archiveConfig ).toString();
<a name="752" href="#752">752</a>             addMavenDescriptor = addMavenDescriptor &amp;&amp; archiveConfig.isAddMavenDescriptor();
<a name="753" href="#753">753</a> 
<a name="754" href="#754">754</a>             Manifest mavenManifest = <strong class="jxr_keyword">new</strong> Manifest();
<a name="755" href="#755">755</a> 
<a name="756" href="#756">756</a>             <em class="jxr_comment">// First grab the external manifest file (if specified and different to target location)</em>
<a name="757" href="#757">757</a>             File externalManifestFile = archiveConfig.getManifestFile();
<a name="758" href="#758">758</a>             <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">null</strong> != externalManifestFile )
<a name="759" href="#759">759</a>             {
<a name="760" href="#760">760</a>                 <strong class="jxr_keyword">if</strong> ( !externalManifestFile.isAbsolute() )
<a name="761" href="#761">761</a>                 {
<a name="762" href="#762">762</a>                     externalManifestFile = <strong class="jxr_keyword">new</strong> File( currentProject.getBasedir(), externalManifestFile.getPath() );
<a name="763" href="#763">763</a>                 }
<a name="764" href="#764">764</a>                 <strong class="jxr_keyword">if</strong> ( externalManifestFile.exists() &amp;&amp; !externalManifestFile.equals( <strong class="jxr_keyword">new</strong> File( manifestLocation, <span class="jxr_string">"MANIFEST.MF"</span> ) ) )
<a name="765" href="#765">765</a>                 {
<a name="766" href="#766">766</a>                     InputStream mis = <strong class="jxr_keyword">new</strong> FileInputStream( externalManifestFile );
<a name="767" href="#767">767</a>                     mavenManifest.read( mis );
<a name="768" href="#768">768</a>                     mis.close();
<a name="769" href="#769">769</a>                 }
<a name="770" href="#770">770</a>             }
<a name="771" href="#771">771</a> 
<a name="772" href="#772">772</a>             <em class="jxr_comment">// Then apply customized entries from the jar plugin; note: manifest encoding is UTF8</em>
<a name="773" href="#773">773</a>             mavenManifest.read( <strong class="jxr_keyword">new</strong> ByteArrayInputStream( mavenManifestText.getBytes( <span class="jxr_string">"UTF8"</span> ) ) );
<a name="774" href="#774">774</a> 
<a name="775" href="#775">775</a>             <strong class="jxr_keyword">if</strong> ( !archiveConfig.isManifestSectionsEmpty() )
<a name="776" href="#776">776</a>             {
<a name="777" href="#777">777</a>                 <em class="jxr_comment">/*</em>
<a name="778" href="#778">778</a> <em class="jxr_comment">                 * Add customized manifest sections (for some reason MavenArchiver doesn't do this for us)</em>
<a name="779" href="#779">779</a> <em class="jxr_comment">                 */</em>
<a name="780" href="#780">780</a>                 List sections = archiveConfig.getManifestSections();
<a name="781" href="#781">781</a>                 <strong class="jxr_keyword">for</strong> ( Iterator i = sections.iterator(); i.hasNext(); )
<a name="782" href="#782">782</a>                 {
<a name="783" href="#783">783</a>                     ManifestSection section = ( ManifestSection ) i.next();
<a name="784" href="#784">784</a>                     Attributes attributes = <strong class="jxr_keyword">new</strong> Attributes();
<a name="785" href="#785">785</a> 
<a name="786" href="#786">786</a>                     <strong class="jxr_keyword">if</strong> ( !section.isManifestEntriesEmpty() )
<a name="787" href="#787">787</a>                     {
<a name="788" href="#788">788</a>                         Map entries = section.getManifestEntries();
<a name="789" href="#789">789</a>                         <strong class="jxr_keyword">for</strong> ( Iterator j = entries.entrySet().iterator(); j.hasNext(); )
<a name="790" href="#790">790</a>                         {
<a name="791" href="#791">791</a>                             Map.Entry entry = ( Map.Entry ) j.next();
<a name="792" href="#792">792</a>                             attributes.putValue( ( String ) entry.getKey(), ( String ) entry.getValue() );
<a name="793" href="#793">793</a>                         }
<a name="794" href="#794">794</a>                     }
<a name="795" href="#795">795</a> 
<a name="796" href="#796">796</a>                     mavenManifest.getEntries().put( section.getName(), attributes );
<a name="797" href="#797">797</a>                 }
<a name="798" href="#798">798</a>             }
<a name="799" href="#799">799</a> 
<a name="800" href="#800">800</a>             Attributes mainMavenAttributes = mavenManifest.getMainAttributes();
<a name="801" href="#801">801</a>             mainMavenAttributes.putValue( <span class="jxr_string">"Created-By"</span>, <span class="jxr_string">"Apache Maven Bundle Plugin"</span> );
<a name="802" href="#802">802</a> 
<a name="803" href="#803">803</a>             String[] removeHeaders = builder.getProperty( Constants.REMOVEHEADERS, <span class="jxr_string">""</span> ).split( <span class="jxr_string">","</span> );
<a name="804" href="#804">804</a> 
<a name="805" href="#805">805</a>             <em class="jxr_comment">// apply -removeheaders to the custom manifest</em>
<a name="806" href="#806">806</a>             <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; removeHeaders.length; i++ )
<a name="807" href="#807">807</a>             {
<a name="808" href="#808">808</a>                 <strong class="jxr_keyword">for</strong> ( Iterator j = mainMavenAttributes.keySet().iterator(); j.hasNext(); )
<a name="809" href="#809">809</a>                 {
<a name="810" href="#810">810</a>                     <strong class="jxr_keyword">if</strong> ( j.next().toString().matches( removeHeaders[i].trim() ) )
<a name="811" href="#811">811</a>                     {
<a name="812" href="#812">812</a>                         j.remove();
<a name="813" href="#813">813</a>                     }
<a name="814" href="#814">814</a>                 }
<a name="815" href="#815">815</a>             }
<a name="816" href="#816">816</a> 
<a name="817" href="#817">817</a>             <em class="jxr_comment">/*</em>
<a name="818" href="#818">818</a> <em class="jxr_comment">             * Overlay generated bundle manifest with customized entries</em>
<a name="819" href="#819">819</a> <em class="jxr_comment">             */</em>
<a name="820" href="#820">820</a>             Manifest bundleManifest = jar.getManifest();
<a name="821" href="#821">821</a>             bundleManifest.getMainAttributes().putAll( mainMavenAttributes );
<a name="822" href="#822">822</a>             bundleManifest.getEntries().putAll( mavenManifest.getEntries() );
<a name="823" href="#823">823</a> 
<a name="824" href="#824">824</a>             <em class="jxr_comment">// adjust the import package attributes so that optional dependencies use</em>
<a name="825" href="#825">825</a>             <em class="jxr_comment">// optional resolution.</em>
<a name="826" href="#826">826</a>             String importPackages = bundleManifest.getMainAttributes().getValue( <span class="jxr_string">"Import-Package"</span> );
<a name="827" href="#827">827</a>             <strong class="jxr_keyword">if</strong> ( importPackages != <strong class="jxr_keyword">null</strong> )
<a name="828" href="#828">828</a>             {
<a name="829" href="#829">829</a>                 Set optionalPackages = getOptionalPackages( currentProject );
<a name="830" href="#830">830</a> 
<a name="831" href="#831">831</a>                 Map&lt;String, ? <strong class="jxr_keyword">extends</strong> Map&lt;String, String&gt;&gt; values = <strong class="jxr_keyword">new</strong> Analyzer().parseHeader( importPackages );
<a name="832" href="#832">832</a>                 <strong class="jxr_keyword">for</strong> ( Map.Entry&lt;String, ? <strong class="jxr_keyword">extends</strong> Map&lt;String, String&gt;&gt; entry : values.entrySet() )
<a name="833" href="#833">833</a>                 {
<a name="834" href="#834">834</a>                     String pkg = entry.getKey();
<a name="835" href="#835">835</a>                     Map&lt;String, String&gt; options = entry.getValue();
<a name="836" href="#836">836</a>                     <strong class="jxr_keyword">if</strong> ( !options.containsKey( <span class="jxr_string">"resolution:"</span> ) &amp;&amp; optionalPackages.contains( pkg ) )
<a name="837" href="#837">837</a>                     {
<a name="838" href="#838">838</a>                         options.put( <span class="jxr_string">"resolution:"</span>, <span class="jxr_string">"optional"</span> );
<a name="839" href="#839">839</a>                     }
<a name="840" href="#840">840</a>                 }
<a name="841" href="#841">841</a>                 String result = Processor.printClauses( values );
<a name="842" href="#842">842</a>                 bundleManifest.getMainAttributes().putValue( <span class="jxr_string">"Import-Package"</span>, result );
<a name="843" href="#843">843</a>             }
<a name="844" href="#844">844</a> 
<a name="845" href="#845">845</a>             jar.setManifest( bundleManifest );
<a name="846" href="#846">846</a>         }
<a name="847" href="#847">847</a>         <strong class="jxr_keyword">catch</strong> ( Exception e )
<a name="848" href="#848">848</a>         {
<a name="849" href="#849">849</a>             getLog().warn( <span class="jxr_string">"Unable to merge Maven manifest: "</span> + e.getLocalizedMessage() );
<a name="850" href="#850">850</a>         }
<a name="851" href="#851">851</a> 
<a name="852" href="#852">852</a>         <strong class="jxr_keyword">if</strong> ( addMavenDescriptor )
<a name="853" href="#853">853</a>         {
<a name="854" href="#854">854</a>             doMavenMetadata( currentProject, jar );
<a name="855" href="#855">855</a>         }
<a name="856" href="#856">856</a> 
<a name="857" href="#857">857</a>         <strong class="jxr_keyword">if</strong> ( getLog().isDebugEnabled() )
<a name="858" href="#858">858</a>         {
<a name="859" href="#859">859</a>             getLog().debug( <span class="jxr_string">"Final Manifest:"</span> + NL + dumpManifest( jar.getManifest(), <strong class="jxr_keyword">new</strong> StringBuilder() ) );
<a name="860" href="#860">860</a>         }
<a name="861" href="#861">861</a> 
<a name="862" href="#862">862</a>         builder.setJar( jar );
<a name="863" href="#863">863</a>     }
<a name="864" href="#864">864</a> 
<a name="865" href="#865">865</a> 
<a name="866" href="#866">866</a>     <strong class="jxr_keyword">protected</strong> Set getOptionalPackages( MavenProject currentProject ) <strong class="jxr_keyword">throws</strong> IOException, MojoExecutionException
<a name="867" href="#867">867</a>     {
<a name="868" href="#868">868</a>         ArrayList inscope = <strong class="jxr_keyword">new</strong> ArrayList();
<a name="869" href="#869">869</a>         <strong class="jxr_keyword">final</strong> Collection artifacts = getSelectedDependencies( currentProject.getArtifacts() );
<a name="870" href="#870">870</a>         <strong class="jxr_keyword">for</strong> ( Iterator it = artifacts.iterator(); it.hasNext(); )
<a name="871" href="#871">871</a>         {
<a name="872" href="#872">872</a>             Artifact artifact = ( Artifact ) it.next();
<a name="873" href="#873">873</a>             <strong class="jxr_keyword">if</strong> ( artifact.getArtifactHandler().isAddedToClasspath() )
<a name="874" href="#874">874</a>             {
<a name="875" href="#875">875</a>                 <strong class="jxr_keyword">if</strong> ( !Artifact.SCOPE_TEST.equals( artifact.getScope() ) )
<a name="876" href="#876">876</a>                 {
<a name="877" href="#877">877</a>                     inscope.add( artifact );
<a name="878" href="#878">878</a>                 }
<a name="879" href="#879">879</a>             }
<a name="880" href="#880">880</a>         }
<a name="881" href="#881">881</a> 
<a name="882" href="#882">882</a>         HashSet optionalArtifactIds = <strong class="jxr_keyword">new</strong> HashSet();
<a name="883" href="#883">883</a>         <strong class="jxr_keyword">for</strong> ( Iterator it = inscope.iterator(); it.hasNext(); )
<a name="884" href="#884">884</a>         {
<a name="885" href="#885">885</a>             Artifact artifact = ( Artifact ) it.next();
<a name="886" href="#886">886</a>             <strong class="jxr_keyword">if</strong> ( artifact.isOptional() )
<a name="887" href="#887">887</a>             {
<a name="888" href="#888">888</a>                 String id = artifact.toString();
<a name="889" href="#889">889</a>                 <strong class="jxr_keyword">if</strong> ( artifact.getScope() != <strong class="jxr_keyword">null</strong> )
<a name="890" href="#890">890</a>                 {
<a name="891" href="#891">891</a>                     <em class="jxr_comment">// strip the scope...</em>
<a name="892" href="#892">892</a>                     id = id.replaceFirst( <span class="jxr_string">":[^:]*$"</span>, <span class="jxr_string">""</span> );
<a name="893" href="#893">893</a>                 }
<a name="894" href="#894">894</a>                 optionalArtifactIds.add( id );
<a name="895" href="#895">895</a>             }
<a name="896" href="#896">896</a> 
<a name="897" href="#897">897</a>         }
<a name="898" href="#898">898</a> 
<a name="899" href="#899">899</a>         HashSet required = <strong class="jxr_keyword">new</strong> HashSet();
<a name="900" href="#900">900</a>         HashSet optional = <strong class="jxr_keyword">new</strong> HashSet();
<a name="901" href="#901">901</a>         <strong class="jxr_keyword">for</strong> ( Iterator it = inscope.iterator(); it.hasNext(); )
<a name="902" href="#902">902</a>         {
<a name="903" href="#903">903</a>             Artifact artifact = ( Artifact ) it.next();
<a name="904" href="#904">904</a>             File file = getFile( artifact );
<a name="905" href="#905">905</a>             <strong class="jxr_keyword">if</strong> ( file == <strong class="jxr_keyword">null</strong> )
<a name="906" href="#906">906</a>             {
<a name="907" href="#907">907</a>                 <strong class="jxr_keyword">continue</strong>;
<a name="908" href="#908">908</a>             }
<a name="909" href="#909">909</a> 
<a name="910" href="#910">910</a>             Jar jar = <strong class="jxr_keyword">new</strong> Jar( artifact.getArtifactId(), file );
<a name="911" href="#911">911</a>             <strong class="jxr_keyword">if</strong> ( isTransitivelyOptional( optionalArtifactIds, artifact ) )
<a name="912" href="#912">912</a>             {
<a name="913" href="#913">913</a>                 optional.addAll( jar.getPackages() );
<a name="914" href="#914">914</a>             }
<a name="915" href="#915">915</a>             <strong class="jxr_keyword">else</strong>
<a name="916" href="#916">916</a>             {
<a name="917" href="#917">917</a>                 required.addAll( jar.getPackages() );
<a name="918" href="#918">918</a>             }
<a name="919" href="#919">919</a>             jar.close();
<a name="920" href="#920">920</a>         }
<a name="921" href="#921">921</a> 
<a name="922" href="#922">922</a>         optional.removeAll( required );
<a name="923" href="#923">923</a>         <strong class="jxr_keyword">return</strong> optional;
<a name="924" href="#924">924</a>     }
<a name="925" href="#925">925</a> 
<a name="926" href="#926">926</a> 
<a name="927" href="#927">927</a>     <em class="jxr_javadoccomment">/**</em>
<a name="928" href="#928">928</a> <em class="jxr_javadoccomment">     * Check to see if any dependency along the dependency trail of</em>
<a name="929" href="#929">929</a> <em class="jxr_javadoccomment">     * the artifact is optional.</em>
<a name="930" href="#930">930</a> <em class="jxr_javadoccomment">     *</em>
<a name="931" href="#931">931</a> <em class="jxr_javadoccomment">     * @param artifact</em>
<a name="932" href="#932">932</a> <em class="jxr_javadoccomment">     */</em>
<a name="933" href="#933">933</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isTransitivelyOptional( HashSet optionalArtifactIds, Artifact artifact )
<a name="934" href="#934">934</a>     {
<a name="935" href="#935">935</a>         List trail = artifact.getDependencyTrail();
<a name="936" href="#936">936</a>         <strong class="jxr_keyword">for</strong> ( Iterator iterator = trail.iterator(); iterator.hasNext(); )
<a name="937" href="#937">937</a>         {
<a name="938" href="#938">938</a>             String next = ( String ) iterator.next();
<a name="939" href="#939">939</a>             <strong class="jxr_keyword">if</strong> ( optionalArtifactIds.contains( next ) )
<a name="940" href="#940">940</a>             {
<a name="941" href="#941">941</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a name="942" href="#942">942</a>             }
<a name="943" href="#943">943</a>         }
<a name="944" href="#944">944</a>         <strong class="jxr_keyword">return</strong> false;
<a name="945" href="#945">945</a>     }
<a name="946" href="#946">946</a> 
<a name="947" href="#947">947</a> 
<a name="948" href="#948">948</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> unpackBundle( File jarFile )
<a name="949" href="#949">949</a>     {
<a name="950" href="#950">950</a>         File outputDir = getOutputDirectory();
<a name="951" href="#951">951</a>         <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">null</strong> == outputDir )
<a name="952" href="#952">952</a>         {
<a name="953" href="#953">953</a>             outputDir = <strong class="jxr_keyword">new</strong> File( getBuildDirectory(), <span class="jxr_string">"classes"</span> );
<a name="954" href="#954">954</a>         }
<a name="955" href="#955">955</a> 
<a name="956" href="#956">956</a>         <strong class="jxr_keyword">try</strong>
<a name="957" href="#957">957</a>         {
<a name="958" href="#958">958</a>             <em class="jxr_comment">/*</em>
<a name="959" href="#959">959</a> <em class="jxr_comment">             * this directory must exist before unpacking, otherwise the plexus</em>
<a name="960" href="#960">960</a> <em class="jxr_comment">             * unarchiver decides to use the current working directory instead!</em>
<a name="961" href="#961">961</a> <em class="jxr_comment">             */</em>
<a name="962" href="#962">962</a>             <strong class="jxr_keyword">if</strong> ( !outputDir.exists() )
<a name="963" href="#963">963</a>             {
<a name="964" href="#964">964</a>                 outputDir.mkdirs();
<a name="965" href="#965">965</a>             }
<a name="966" href="#966">966</a> 
<a name="967" href="#967">967</a>             UnArchiver unArchiver = m_archiverManager.getUnArchiver( <span class="jxr_string">"jar"</span> );
<a name="968" href="#968">968</a>             unArchiver.setDestDirectory( outputDir );
<a name="969" href="#969">969</a>             unArchiver.setSourceFile( jarFile );
<a name="970" href="#970">970</a>             unArchiver.extract();
<a name="971" href="#971">971</a>         }
<a name="972" href="#972">972</a>         <strong class="jxr_keyword">catch</strong> ( Exception e )
<a name="973" href="#973">973</a>         {
<a name="974" href="#974">974</a>             getLog().error( <span class="jxr_string">"Problem unpacking "</span> + jarFile + <span class="jxr_string">" to "</span> + outputDir, e );
<a name="975" href="#975">975</a>         }
<a name="976" href="#976">976</a>     }
<a name="977" href="#977">977</a> 
<a name="978" href="#978">978</a> 
<a name="979" href="#979">979</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> String removeTagFromInstruction( String instruction, String tag )
<a name="980" href="#980">980</a>     {
<a name="981" href="#981">981</a>         StringBuffer buf = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="982" href="#982">982</a> 
<a name="983" href="#983">983</a>         String[] clauses = instruction.split( <span class="jxr_string">","</span> );
<a name="984" href="#984">984</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; clauses.length; i++ )
<a name="985" href="#985">985</a>         {
<a name="986" href="#986">986</a>             String clause = clauses[i].trim();
<a name="987" href="#987">987</a>             <strong class="jxr_keyword">if</strong> ( !tag.equals( clause ) )
<a name="988" href="#988">988</a>             {
<a name="989" href="#989">989</a>                 <strong class="jxr_keyword">if</strong> ( buf.length() &gt; 0 )
<a name="990" href="#990">990</a>                 {
<a name="991" href="#991">991</a>                     buf.append( ',' );
<a name="992" href="#992">992</a>                 }
<a name="993" href="#993">993</a>                 buf.append( clause );
<a name="994" href="#994">994</a>             }
<a name="995" href="#995">995</a>         }
<a name="996" href="#996">996</a> 
<a name="997" href="#997">997</a>         <strong class="jxr_keyword">return</strong> buf.toString();
<a name="998" href="#998">998</a>     }
<a name="999" href="#999">999</a> 
<a name="1000" href="#1000">1000</a> 
<a name="1001" href="#1001">1001</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Map getProperties( Model projectModel, String prefix )
<a name="1002" href="#1002">1002</a>     {
<a name="1003" href="#1003">1003</a>         Map properties = <strong class="jxr_keyword">new</strong> LinkedHashMap();
<a name="1004" href="#1004">1004</a>         Method methods[] = Model.<strong class="jxr_keyword">class</strong>.getDeclaredMethods();
<a name="1005" href="#1005">1005</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; methods.length; i++ )
<a name="1006" href="#1006">1006</a>         {
<a name="1007" href="#1007">1007</a>             String name = methods[i].getName();
<a name="1008" href="#1008">1008</a>             <strong class="jxr_keyword">if</strong> ( name.startsWith( <span class="jxr_string">"get"</span> ) )
<a name="1009" href="#1009">1009</a>             {
<a name="1010" href="#1010">1010</a>                 <strong class="jxr_keyword">try</strong>
<a name="1011" href="#1011">1011</a>                 {
<a name="1012" href="#1012">1012</a>                     Object v = methods[i].invoke( projectModel, <strong class="jxr_keyword">null</strong> );
<a name="1013" href="#1013">1013</a>                     <strong class="jxr_keyword">if</strong> ( v != <strong class="jxr_keyword">null</strong> )
<a name="1014" href="#1014">1014</a>                     {
<a name="1015" href="#1015">1015</a>                         name = prefix + Character.toLowerCase( name.charAt( 3 ) ) + name.substring( 4 );
<a name="1016" href="#1016">1016</a>                         <strong class="jxr_keyword">if</strong> ( v.getClass().isArray() )
<a name="1017" href="#1017">1017</a>                             properties.put( name, Arrays.asList( ( Object[] ) v ).toString() );
<a name="1018" href="#1018">1018</a>                         <strong class="jxr_keyword">else</strong>
<a name="1019" href="#1019">1019</a>                             properties.put( name, v );
<a name="1020" href="#1020">1020</a> 
<a name="1021" href="#1021">1021</a>                     }
<a name="1022" href="#1022">1022</a>                 }
<a name="1023" href="#1023">1023</a>                 <strong class="jxr_keyword">catch</strong> ( Exception e )
<a name="1024" href="#1024">1024</a>                 {
<a name="1025" href="#1025">1025</a>                     <em class="jxr_comment">// too bad</em>
<a name="1026" href="#1026">1026</a>                 }
<a name="1027" href="#1027">1027</a>             }
<a name="1028" href="#1028">1028</a>         }
<a name="1029" href="#1029">1029</a>         <strong class="jxr_keyword">return</strong> properties;
<a name="1030" href="#1030">1030</a>     }
<a name="1031" href="#1031">1031</a> 
<a name="1032" href="#1032">1032</a> 
<a name="1033" href="#1033">1033</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> StringBuffer printLicenses( List licenses )
<a name="1034" href="#1034">1034</a>     {
<a name="1035" href="#1035">1035</a>         <strong class="jxr_keyword">if</strong> ( licenses == <strong class="jxr_keyword">null</strong> || licenses.size() == 0 )
<a name="1036" href="#1036">1036</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="1037" href="#1037">1037</a>         StringBuffer sb = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="1038" href="#1038">1038</a>         String del = <span class="jxr_string">""</span>;
<a name="1039" href="#1039">1039</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = licenses.iterator(); i.hasNext(); )
<a name="1040" href="#1040">1040</a>         {
<a name="1041" href="#1041">1041</a>             License l = ( License ) i.next();
<a name="1042" href="#1042">1042</a>             String url = l.getUrl();
<a name="1043" href="#1043">1043</a>             <strong class="jxr_keyword">if</strong> ( url == <strong class="jxr_keyword">null</strong> )
<a name="1044" href="#1044">1044</a>                 <strong class="jxr_keyword">continue</strong>;
<a name="1045" href="#1045">1045</a>             sb.append( del );
<a name="1046" href="#1046">1046</a>             sb.append( url );
<a name="1047" href="#1047">1047</a>             del = <span class="jxr_string">", "</span>;
<a name="1048" href="#1048">1048</a>         }
<a name="1049" href="#1049">1049</a>         <strong class="jxr_keyword">if</strong> ( sb.length() == 0 )
<a name="1050" href="#1050">1050</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="1051" href="#1051">1051</a>         <strong class="jxr_keyword">return</strong> sb;
<a name="1052" href="#1052">1052</a>     }
<a name="1053" href="#1053">1053</a> 
<a name="1054" href="#1054">1054</a> 
<a name="1055" href="#1055">1055</a>     <em class="jxr_javadoccomment">/**</em>
<a name="1056" href="#1056">1056</a> <em class="jxr_javadoccomment">     * @param jar</em>
<a name="1057" href="#1057">1057</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
<a name="1058" href="#1058">1058</a> <em class="jxr_javadoccomment">     */</em>
<a name="1059" href="#1059">1059</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doMavenMetadata( MavenProject currentProject, Jar jar ) <strong class="jxr_keyword">throws</strong> IOException
<a name="1060" href="#1060">1060</a>     {
<a name="1061" href="#1061">1061</a>         String path = <span class="jxr_string">"META-INF/maven/"</span> + currentProject.getGroupId() + <span class="jxr_string">"/"</span> + currentProject.getArtifactId();
<a name="1062" href="#1062">1062</a>         File pomFile = <strong class="jxr_keyword">new</strong> File( currentProject.getBasedir(), <span class="jxr_string">"pom.xml"</span> );
<a name="1063" href="#1063">1063</a>         jar.putResource( path + <span class="jxr_string">"/pom.xml"</span>, <strong class="jxr_keyword">new</strong> FileResource( pomFile ) );
<a name="1064" href="#1064">1064</a> 
<a name="1065" href="#1065">1065</a>         Properties p = <strong class="jxr_keyword">new</strong> Properties();
<a name="1066" href="#1066">1066</a>         p.put( <span class="jxr_string">"version"</span>, currentProject.getVersion() );
<a name="1067" href="#1067">1067</a>         p.put( <span class="jxr_string">"groupId"</span>, currentProject.getGroupId() );
<a name="1068" href="#1068">1068</a>         p.put( <span class="jxr_string">"artifactId"</span>, currentProject.getArtifactId() );
<a name="1069" href="#1069">1069</a>         ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
<a name="1070" href="#1070">1070</a>         p.store( out, <span class="jxr_string">"Generated by org.apache.felix.bundleplugin"</span> );
<a name="1071" href="#1071">1071</a>         jar.putResource( path + <span class="jxr_string">"/pom.properties"</span>, <strong class="jxr_keyword">new</strong> EmbeddedResource( out.toByteArray(), System.currentTimeMillis() ) );
<a name="1072" href="#1072">1072</a>     }
<a name="1073" href="#1073">1073</a> 
<a name="1074" href="#1074">1074</a> 
<a name="1075" href="#1075">1075</a>     <strong class="jxr_keyword">protected</strong> Jar[] getClasspath( MavenProject currentProject ) <strong class="jxr_keyword">throws</strong> IOException, MojoExecutionException
<a name="1076" href="#1076">1076</a>     {
<a name="1077" href="#1077">1077</a>         List list = <strong class="jxr_keyword">new</strong> ArrayList();
<a name="1078" href="#1078">1078</a> 
<a name="1079" href="#1079">1079</a>         <strong class="jxr_keyword">if</strong> ( getOutputDirectory() != <strong class="jxr_keyword">null</strong> &amp;&amp; getOutputDirectory().exists() )
<a name="1080" href="#1080">1080</a>         {
<a name="1081" href="#1081">1081</a>             list.add( <strong class="jxr_keyword">new</strong> Jar( <span class="jxr_string">"."</span>, getOutputDirectory() ) );
<a name="1082" href="#1082">1082</a>         }
<a name="1083" href="#1083">1083</a> 
<a name="1084" href="#1084">1084</a>         <strong class="jxr_keyword">final</strong> Collection artifacts = getSelectedDependencies( currentProject.getArtifacts() );
<a name="1085" href="#1085">1085</a>         <strong class="jxr_keyword">for</strong> ( Iterator it = artifacts.iterator(); it.hasNext(); )
<a name="1086" href="#1086">1086</a>         {
<a name="1087" href="#1087">1087</a>             Artifact artifact = ( Artifact ) it.next();
<a name="1088" href="#1088">1088</a>             <strong class="jxr_keyword">if</strong> ( artifact.getArtifactHandler().isAddedToClasspath() )
<a name="1089" href="#1089">1089</a>             {
<a name="1090" href="#1090">1090</a>                 <strong class="jxr_keyword">if</strong> ( !Artifact.SCOPE_TEST.equals( artifact.getScope() ) )
<a name="1091" href="#1091">1091</a>                 {
<a name="1092" href="#1092">1092</a>                     File file = getFile( artifact );
<a name="1093" href="#1093">1093</a>                     <strong class="jxr_keyword">if</strong> ( file == <strong class="jxr_keyword">null</strong> )
<a name="1094" href="#1094">1094</a>                     {
<a name="1095" href="#1095">1095</a>                         getLog().warn(
<a name="1096" href="#1096">1096</a>                             <span class="jxr_string">"File is not available for artifact "</span> + artifact + <span class="jxr_string">" in project "</span>
<a name="1097" href="#1097">1097</a>                                 + currentProject.getArtifact() );
<a name="1098" href="#1098">1098</a>                         <strong class="jxr_keyword">continue</strong>;
<a name="1099" href="#1099">1099</a>                     }
<a name="1100" href="#1100">1100</a>                     Jar jar = <strong class="jxr_keyword">new</strong> Jar( artifact.getArtifactId(), file );
<a name="1101" href="#1101">1101</a>                     list.add( jar );
<a name="1102" href="#1102">1102</a>                 }
<a name="1103" href="#1103">1103</a>             }
<a name="1104" href="#1104">1104</a>         }
<a name="1105" href="#1105">1105</a>         Jar[] cp = <strong class="jxr_keyword">new</strong> Jar[list.size()];
<a name="1106" href="#1106">1106</a>         list.toArray( cp );
<a name="1107" href="#1107">1107</a>         <strong class="jxr_keyword">return</strong> cp;
<a name="1108" href="#1108">1108</a>     }
<a name="1109" href="#1109">1109</a> 
<a name="1110" href="#1110">1110</a> 
<a name="1111" href="#1111">1111</a>     <strong class="jxr_keyword">private</strong> Collection getSelectedDependencies( Collection artifacts ) <strong class="jxr_keyword">throws</strong> MojoExecutionException
<a name="1112" href="#1112">1112</a>     {
<a name="1113" href="#1113">1113</a>         <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">null</strong> == excludeDependencies || excludeDependencies.length() == 0 )
<a name="1114" href="#1114">1114</a>         {
<a name="1115" href="#1115">1115</a>             <strong class="jxr_keyword">return</strong> artifacts;
<a name="1116" href="#1116">1116</a>         }
<a name="1117" href="#1117">1117</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( <span class="jxr_string">"true"</span>.equalsIgnoreCase( excludeDependencies ) )
<a name="1118" href="#1118">1118</a>         {
<a name="1119" href="#1119">1119</a>             <strong class="jxr_keyword">return</strong> Collections.EMPTY_LIST;
<a name="1120" href="#1120">1120</a>         }
<a name="1121" href="#1121">1121</a> 
<a name="1122" href="#1122">1122</a>         Collection selectedDependencies = <strong class="jxr_keyword">new</strong> LinkedHashSet( artifacts );
<a name="1123" href="#1123">1123</a>         <a href="../../../../org/apache/felix/bundleplugin/DependencyExcluder.html">DependencyExcluder</a> excluder = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/felix/bundleplugin/DependencyExcluder.html">DependencyExcluder</a>( artifacts );
<a name="1124" href="#1124">1124</a>         excluder.processHeaders( excludeDependencies );
<a name="1125" href="#1125">1125</a>         selectedDependencies.removeAll( excluder.getExcludedArtifacts() );
<a name="1126" href="#1126">1126</a> 
<a name="1127" href="#1127">1127</a>         <strong class="jxr_keyword">return</strong> selectedDependencies;
<a name="1128" href="#1128">1128</a>     }
<a name="1129" href="#1129">1129</a> 
<a name="1130" href="#1130">1130</a> 
<a name="1131" href="#1131">1131</a>     <em class="jxr_javadoccomment">/**</em>
<a name="1132" href="#1132">1132</a> <em class="jxr_javadoccomment">     * Get the file for an Artifact</em>
<a name="1133" href="#1133">1133</a> <em class="jxr_javadoccomment">     *</em>
<a name="1134" href="#1134">1134</a> <em class="jxr_javadoccomment">     * @param artifact</em>
<a name="1135" href="#1135">1135</a> <em class="jxr_javadoccomment">     */</em>
<a name="1136" href="#1136">1136</a>     <strong class="jxr_keyword">protected</strong> File getFile( Artifact artifact )
<a name="1137" href="#1137">1137</a>     {
<a name="1138" href="#1138">1138</a>         <strong class="jxr_keyword">return</strong> artifact.getFile();
<a name="1139" href="#1139">1139</a>     }
<a name="1140" href="#1140">1140</a> 
<a name="1141" href="#1141">1141</a> 
<a name="1142" href="#1142">1142</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> header( Properties properties, String key, Object value )
<a name="1143" href="#1143">1143</a>     {
<a name="1144" href="#1144">1144</a>         <strong class="jxr_keyword">if</strong> ( value == <strong class="jxr_keyword">null</strong> )
<a name="1145" href="#1145">1145</a>             <strong class="jxr_keyword">return</strong>;
<a name="1146" href="#1146">1146</a> 
<a name="1147" href="#1147">1147</a>         <strong class="jxr_keyword">if</strong> ( value instanceof Collection &amp;&amp; ( ( Collection ) value ).isEmpty() )
<a name="1148" href="#1148">1148</a>             <strong class="jxr_keyword">return</strong>;
<a name="1149" href="#1149">1149</a> 
<a name="1150" href="#1150">1150</a>         properties.put( key, value.toString().replaceAll( <span class="jxr_string">"[\r\n]"</span>, <span class="jxr_string">""</span> ) );
<a name="1151" href="#1151">1151</a>     }
<a name="1152" href="#1152">1152</a> 
<a name="1153" href="#1153">1153</a> 
<a name="1154" href="#1154">1154</a>     <em class="jxr_javadoccomment">/**</em>
<a name="1155" href="#1155">1155</a> <em class="jxr_javadoccomment">     * Convert a Maven version into an OSGi compliant version</em>
<a name="1156" href="#1156">1156</a> <em class="jxr_javadoccomment">     *</em>
<a name="1157" href="#1157">1157</a> <em class="jxr_javadoccomment">     * @param version Maven version</em>
<a name="1158" href="#1158">1158</a> <em class="jxr_javadoccomment">     * @return the OSGi version</em>
<a name="1159" href="#1159">1159</a> <em class="jxr_javadoccomment">     */</em>
<a name="1160" href="#1160">1160</a>     <strong class="jxr_keyword">protected</strong> String convertVersionToOsgi( String version )
<a name="1161" href="#1161">1161</a>     {
<a name="1162" href="#1162">1162</a>         <strong class="jxr_keyword">return</strong> getMaven2OsgiConverter().getVersion( version );
<a name="1163" href="#1163">1163</a>     }
<a name="1164" href="#1164">1164</a> 
<a name="1165" href="#1165">1165</a> 
<a name="1166" href="#1166">1166</a>     <em class="jxr_javadoccomment">/**</em>
<a name="1167" href="#1167">1167</a> <em class="jxr_javadoccomment">     * TODO this should return getMaven2Osgi().getBundleFileName( project.getArtifact() )</em>
<a name="1168" href="#1168">1168</a> <em class="jxr_javadoccomment">     */</em>
<a name="1169" href="#1169">1169</a>     <strong class="jxr_keyword">protected</strong> String getBundleName( MavenProject currentProject )
<a name="1170" href="#1170">1170</a>     {
<a name="1171" href="#1171">1171</a>         String extension;
<a name="1172" href="#1172">1172</a>         <strong class="jxr_keyword">try</strong>
<a name="1173" href="#1173">1173</a>         {
<a name="1174" href="#1174">1174</a>             extension = currentProject.getArtifact().getArtifactHandler().getExtension();
<a name="1175" href="#1175">1175</a>         }
<a name="1176" href="#1176">1176</a>         <strong class="jxr_keyword">catch</strong> ( Throwable e )
<a name="1177" href="#1177">1177</a>         {
<a name="1178" href="#1178">1178</a>             extension = currentProject.getArtifact().getType();
<a name="1179" href="#1179">1179</a>         }
<a name="1180" href="#1180">1180</a>         <strong class="jxr_keyword">if</strong> ( StringUtils.isEmpty( extension ) || <span class="jxr_string">"bundle"</span>.equals( extension ) || <span class="jxr_string">"pom"</span>.equals( extension ) )
<a name="1181" href="#1181">1181</a>         {
<a name="1182" href="#1182">1182</a>             extension = <span class="jxr_string">"jar"</span>; <em class="jxr_comment">// just in case maven gets confused</em>
<a name="1183" href="#1183">1183</a>         }
<a name="1184" href="#1184">1184</a>         <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">null</strong> != classifier &amp;&amp; classifier.trim().length() &gt; 0 )
<a name="1185" href="#1185">1185</a>         {
<a name="1186" href="#1186">1186</a>             <strong class="jxr_keyword">return</strong> finalName + '-' + classifier + '.' + extension;
<a name="1187" href="#1187">1187</a>         }
<a name="1188" href="#1188">1188</a>         <strong class="jxr_keyword">return</strong> finalName + '.' + extension;
<a name="1189" href="#1189">1189</a>     }
<a name="1190" href="#1190">1190</a> 
<a name="1191" href="#1191">1191</a> 
<a name="1192" href="#1192">1192</a>     <strong class="jxr_keyword">protected</strong> String getBuildDirectory()
<a name="1193" href="#1193">1193</a>     {
<a name="1194" href="#1194">1194</a>         <strong class="jxr_keyword">return</strong> buildDirectory;
<a name="1195" href="#1195">1195</a>     }
<a name="1196" href="#1196">1196</a> 
<a name="1197" href="#1197">1197</a> 
<a name="1198" href="#1198">1198</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setBuildDirectory( String _buildirectory )
<a name="1199" href="#1199">1199</a>     {
<a name="1200" href="#1200">1200</a>         buildDirectory = _buildirectory;
<a name="1201" href="#1201">1201</a>     }
<a name="1202" href="#1202">1202</a> 
<a name="1203" href="#1203">1203</a> 
<a name="1204" href="#1204">1204</a>     <strong class="jxr_keyword">protected</strong> Properties getDefaultProperties( MavenProject currentProject )
<a name="1205" href="#1205">1205</a>     {
<a name="1206" href="#1206">1206</a>         Properties properties = <strong class="jxr_keyword">new</strong> Properties();
<a name="1207" href="#1207">1207</a> 
<a name="1208" href="#1208">1208</a>         String bsn;
<a name="1209" href="#1209">1209</a>         <strong class="jxr_keyword">try</strong>
<a name="1210" href="#1210">1210</a>         {
<a name="1211" href="#1211">1211</a>             bsn = getMaven2OsgiConverter().getBundleSymbolicName( currentProject.getArtifact() );
<a name="1212" href="#1212">1212</a>         }
<a name="1213" href="#1213">1213</a>         <strong class="jxr_keyword">catch</strong> ( Exception e )
<a name="1214" href="#1214">1214</a>         {
<a name="1215" href="#1215">1215</a>             bsn = currentProject.getGroupId() + <span class="jxr_string">"."</span> + currentProject.getArtifactId();
<a name="1216" href="#1216">1216</a>         }
<a name="1217" href="#1217">1217</a> 
<a name="1218" href="#1218">1218</a>         <em class="jxr_comment">// Setup defaults</em>
<a name="1219" href="#1219">1219</a>         properties.put( MAVEN_SYMBOLICNAME, bsn );
<a name="1220" href="#1220">1220</a>         properties.put( Analyzer.BUNDLE_SYMBOLICNAME, bsn );
<a name="1221" href="#1221">1221</a>         properties.put( Analyzer.IMPORT_PACKAGE, <span class="jxr_string">"*"</span> );
<a name="1222" href="#1222">1222</a>         properties.put( Analyzer.BUNDLE_VERSION, getMaven2OsgiConverter().getVersion( currentProject.getVersion() ) );
<a name="1223" href="#1223">1223</a> 
<a name="1224" href="#1224">1224</a>         <em class="jxr_comment">// remove the extraneous Include-Resource and Private-Package entries from generated manifest</em>
<a name="1225" href="#1225">1225</a>         properties.put( Constants.REMOVEHEADERS, Analyzer.INCLUDE_RESOURCE + ',' + Analyzer.PRIVATE_PACKAGE );
<a name="1226" href="#1226">1226</a> 
<a name="1227" href="#1227">1227</a>         header( properties, Analyzer.BUNDLE_DESCRIPTION, currentProject.getDescription() );
<a name="1228" href="#1228">1228</a>         StringBuffer licenseText = printLicenses( currentProject.getLicenses() );
<a name="1229" href="#1229">1229</a>         <strong class="jxr_keyword">if</strong> ( licenseText != <strong class="jxr_keyword">null</strong> )
<a name="1230" href="#1230">1230</a>         {
<a name="1231" href="#1231">1231</a>             header( properties, Analyzer.BUNDLE_LICENSE, licenseText );
<a name="1232" href="#1232">1232</a>         }
<a name="1233" href="#1233">1233</a>         header( properties, Analyzer.BUNDLE_NAME, currentProject.getName() );
<a name="1234" href="#1234">1234</a> 
<a name="1235" href="#1235">1235</a>         <strong class="jxr_keyword">if</strong> ( currentProject.getOrganization() != <strong class="jxr_keyword">null</strong> )
<a name="1236" href="#1236">1236</a>         {
<a name="1237" href="#1237">1237</a>             <strong class="jxr_keyword">if</strong> ( currentProject.getOrganization().getName() != <strong class="jxr_keyword">null</strong> )
<a name="1238" href="#1238">1238</a>             {
<a name="1239" href="#1239">1239</a>                 String organizationName = currentProject.getOrganization().getName();
<a name="1240" href="#1240">1240</a>                 header( properties, Analyzer.BUNDLE_VENDOR, organizationName );
<a name="1241" href="#1241">1241</a>                 properties.put( <span class="jxr_string">"project.organization.name"</span>, organizationName );
<a name="1242" href="#1242">1242</a>                 properties.put( <span class="jxr_string">"pom.organization.name"</span>, organizationName );
<a name="1243" href="#1243">1243</a>             }
<a name="1244" href="#1244">1244</a>             <strong class="jxr_keyword">if</strong> ( currentProject.getOrganization().getUrl() != <strong class="jxr_keyword">null</strong> )
<a name="1245" href="#1245">1245</a>             {
<a name="1246" href="#1246">1246</a>                 String organizationUrl = currentProject.getOrganization().getUrl();
<a name="1247" href="#1247">1247</a>                 header( properties, Analyzer.BUNDLE_DOCURL, organizationUrl );
<a name="1248" href="#1248">1248</a>                 properties.put( <span class="jxr_string">"project.organization.url"</span>, organizationUrl );
<a name="1249" href="#1249">1249</a>                 properties.put( <span class="jxr_string">"pom.organization.url"</span>, organizationUrl );
<a name="1250" href="#1250">1250</a>             }
<a name="1251" href="#1251">1251</a>         }
<a name="1252" href="#1252">1252</a> 
<a name="1253" href="#1253">1253</a>         properties.putAll( currentProject.getProperties() );
<a name="1254" href="#1254">1254</a>         properties.putAll( currentProject.getModel().getProperties() );
<a name="1255" href="#1255">1255</a> 
<a name="1256" href="#1256">1256</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = currentProject.getFilters().iterator(); i.hasNext(); )
<a name="1257" href="#1257">1257</a>         {
<a name="1258" href="#1258">1258</a>             File filterFile = <strong class="jxr_keyword">new</strong> File( ( String ) i.next() );
<a name="1259" href="#1259">1259</a>             <strong class="jxr_keyword">if</strong> ( filterFile.isFile() )
<a name="1260" href="#1260">1260</a>             {
<a name="1261" href="#1261">1261</a>                 properties.putAll( PropertyUtils.loadProperties( filterFile ) );
<a name="1262" href="#1262">1262</a>             }
<a name="1263" href="#1263">1263</a>         }
<a name="1264" href="#1264">1264</a> 
<a name="1265" href="#1265">1265</a>         <strong class="jxr_keyword">if</strong> ( m_mavenSession != <strong class="jxr_keyword">null</strong> )
<a name="1266" href="#1266">1266</a>         {
<a name="1267" href="#1267">1267</a>             <strong class="jxr_keyword">try</strong>
<a name="1268" href="#1268">1268</a>             {
<a name="1269" href="#1269">1269</a>                 <em class="jxr_comment">// don't pass upper-case session settings to bnd as they end up in the manifest</em>
<a name="1270" href="#1270">1270</a>                 Properties sessionProperties = m_mavenSession.getExecutionProperties();
<a name="1271" href="#1271">1271</a>                 <strong class="jxr_keyword">for</strong> ( Enumeration e = sessionProperties.propertyNames(); e.hasMoreElements(); )
<a name="1272" href="#1272">1272</a>                 {
<a name="1273" href="#1273">1273</a>                     String key = ( String ) e.nextElement();
<a name="1274" href="#1274">1274</a>                     <strong class="jxr_keyword">if</strong> ( key.length() &gt; 0 &amp;&amp; !Character.isUpperCase( key.charAt( 0 ) ) )
<a name="1275" href="#1275">1275</a>                     {
<a name="1276" href="#1276">1276</a>                         properties.put( key, sessionProperties.getProperty( key ) );
<a name="1277" href="#1277">1277</a>                     }
<a name="1278" href="#1278">1278</a>                 }
<a name="1279" href="#1279">1279</a>             }
<a name="1280" href="#1280">1280</a>             <strong class="jxr_keyword">catch</strong> ( Exception e )
<a name="1281" href="#1281">1281</a>             {
<a name="1282" href="#1282">1282</a>                 getLog().warn( <span class="jxr_string">"Problem with Maven session properties: "</span> + e.getLocalizedMessage() );
<a name="1283" href="#1283">1283</a>             }
<a name="1284" href="#1284">1284</a>         }
<a name="1285" href="#1285">1285</a> 
<a name="1286" href="#1286">1286</a>         properties.putAll( getProperties( currentProject.getModel(), <span class="jxr_string">"project.build."</span> ) );
<a name="1287" href="#1287">1287</a>         properties.putAll( getProperties( currentProject.getModel(), <span class="jxr_string">"pom."</span> ) );
<a name="1288" href="#1288">1288</a>         properties.putAll( getProperties( currentProject.getModel(), <span class="jxr_string">"project."</span> ) );
<a name="1289" href="#1289">1289</a> 
<a name="1290" href="#1290">1290</a>         properties.put( <span class="jxr_string">"project.baseDir"</span>, getBase( currentProject ) );
<a name="1291" href="#1291">1291</a>         properties.put( <span class="jxr_string">"project.build.directory"</span>, getBuildDirectory() );
<a name="1292" href="#1292">1292</a>         properties.put( <span class="jxr_string">"project.build.outputdirectory"</span>, getOutputDirectory() );
<a name="1293" href="#1293">1293</a> 
<a name="1294" href="#1294">1294</a>         properties.put( <span class="jxr_string">"classifier"</span>, classifier == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">""</span> : classifier );
<a name="1295" href="#1295">1295</a> 
<a name="1296" href="#1296">1296</a>         <em class="jxr_comment">// Add default plugins</em>
<a name="1297" href="#1297">1297</a>         header( properties, Analyzer.PLUGIN, ScrPlugin.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">","</span>
<a name="1298" href="#1298">1298</a>                                            + BlueprintPlugin.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">","</span>
<a name="1299" href="#1299">1299</a>                                            + SpringXMLType.<strong class="jxr_keyword">class</strong>.getName() );
<a name="1300" href="#1300">1300</a> 
<a name="1301" href="#1301">1301</a>         <strong class="jxr_keyword">return</strong> properties;
<a name="1302" href="#1302">1302</a>     }
<a name="1303" href="#1303">1303</a> 
<a name="1304" href="#1304">1304</a> 
<a name="1305" href="#1305">1305</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> File getBase( MavenProject currentProject )
<a name="1306" href="#1306">1306</a>     {
<a name="1307" href="#1307">1307</a>         <strong class="jxr_keyword">return</strong> currentProject.getBasedir() != <strong class="jxr_keyword">null</strong> ? currentProject.getBasedir() : <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">""</span> );
<a name="1308" href="#1308">1308</a>     }
<a name="1309" href="#1309">1309</a> 
<a name="1310" href="#1310">1310</a> 
<a name="1311" href="#1311">1311</a>     <strong class="jxr_keyword">protected</strong> File getOutputDirectory()
<a name="1312" href="#1312">1312</a>     {
<a name="1313" href="#1313">1313</a>         <strong class="jxr_keyword">return</strong> outputDirectory;
<a name="1314" href="#1314">1314</a>     }
<a name="1315" href="#1315">1315</a> 
<a name="1316" href="#1316">1316</a> 
<a name="1317" href="#1317">1317</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setOutputDirectory( File _outputDirectory )
<a name="1318" href="#1318">1318</a>     {
<a name="1319" href="#1319">1319</a>         outputDirectory = _outputDirectory;
<a name="1320" href="#1320">1320</a>     }
<a name="1321" href="#1321">1321</a> 
<a name="1322" href="#1322">1322</a> 
<a name="1323" href="#1323">1323</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> addLocalPackages( File outputDirectory, Analyzer analyzer ) <strong class="jxr_keyword">throws</strong> IOException
<a name="1324" href="#1324">1324</a>     {
<a name="1325" href="#1325">1325</a>         Packages packages = <strong class="jxr_keyword">new</strong> Packages();
<a name="1326" href="#1326">1326</a> 
<a name="1327" href="#1327">1327</a>         <strong class="jxr_keyword">if</strong> ( outputDirectory != <strong class="jxr_keyword">null</strong> &amp;&amp; outputDirectory.isDirectory() )
<a name="1328" href="#1328">1328</a>         {
<a name="1329" href="#1329">1329</a>             <em class="jxr_comment">// scan classes directory for potential packages</em>
<a name="1330" href="#1330">1330</a>             DirectoryScanner scanner = <strong class="jxr_keyword">new</strong> DirectoryScanner();
<a name="1331" href="#1331">1331</a>             scanner.setBasedir( outputDirectory );
<a name="1332" href="#1332">1332</a>             scanner.setIncludes( <strong class="jxr_keyword">new</strong> String[]
<a name="1333" href="#1333">1333</a>                 { <span class="jxr_string">"**/*.class"</span> } );
<a name="1334" href="#1334">1334</a> 
<a name="1335" href="#1335">1335</a>             scanner.addDefaultExcludes();
<a name="1336" href="#1336">1336</a>             scanner.scan();
<a name="1337" href="#1337">1337</a> 
<a name="1338" href="#1338">1338</a>             String[] paths = scanner.getIncludedFiles();
<a name="1339" href="#1339">1339</a>             <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; paths.length; i++ )
<a name="1340" href="#1340">1340</a>             {
<a name="1341" href="#1341">1341</a>                 packages.put( analyzer.getPackageRef( getPackageName( paths[i] ) ) );
<a name="1342" href="#1342">1342</a>             }
<a name="1343" href="#1343">1343</a>         }
<a name="1344" href="#1344">1344</a> 
<a name="1345" href="#1345">1345</a>         Packages exportedPkgs = <strong class="jxr_keyword">new</strong> Packages();
<a name="1346" href="#1346">1346</a>         Packages privatePkgs = <strong class="jxr_keyword">new</strong> Packages();
<a name="1347" href="#1347">1347</a> 
<a name="1348" href="#1348">1348</a>         <strong class="jxr_keyword">boolean</strong> noprivatePackages = <span class="jxr_string">"!*"</span>.equals( analyzer.getProperty( Analyzer.PRIVATE_PACKAGE ) );
<a name="1349" href="#1349">1349</a> 
<a name="1350" href="#1350">1350</a>         <strong class="jxr_keyword">for</strong> ( PackageRef pkg : packages.keySet() )
<a name="1351" href="#1351">1351</a>         {
<a name="1352" href="#1352">1352</a>             <em class="jxr_comment">// mark all source packages as private by default (can be overridden by export list)</em>
<a name="1353" href="#1353">1353</a>             privatePkgs.put( pkg );
<a name="1354" href="#1354">1354</a> 
<a name="1355" href="#1355">1355</a>             <em class="jxr_comment">// we can't export the default package (".") and we shouldn't export internal packages </em>
<a name="1356" href="#1356">1356</a>             String fqn = pkg.getFQN();
<a name="1357" href="#1357">1357</a>             <strong class="jxr_keyword">if</strong> ( noprivatePackages || !( <span class="jxr_string">"."</span>.equals( fqn ) || fqn.contains( <span class="jxr_string">".internal"</span> ) || fqn.contains( <span class="jxr_string">".impl"</span> ) ) )
<a name="1358" href="#1358">1358</a>             {
<a name="1359" href="#1359">1359</a>                 exportedPkgs.put( pkg );
<a name="1360" href="#1360">1360</a>             }
<a name="1361" href="#1361">1361</a>         }
<a name="1362" href="#1362">1362</a> 
<a name="1363" href="#1363">1363</a>         Properties properties = analyzer.getProperties();
<a name="1364" href="#1364">1364</a>         String exported = properties.getProperty( Analyzer.EXPORT_PACKAGE );
<a name="1365" href="#1365">1365</a>         <strong class="jxr_keyword">if</strong> ( exported == <strong class="jxr_keyword">null</strong> )
<a name="1366" href="#1366">1366</a>         {
<a name="1367" href="#1367">1367</a>             <strong class="jxr_keyword">if</strong> ( !properties.containsKey( Analyzer.EXPORT_CONTENTS ) )
<a name="1368" href="#1368">1368</a>             {
<a name="1369" href="#1369">1369</a>                 <em class="jxr_comment">// no -exportcontents overriding the exports, so use our computed list</em>
<a name="1370" href="#1370">1370</a>                 <strong class="jxr_keyword">for</strong> ( Attrs attrs : exportedPkgs.values() )
<a name="1371" href="#1371">1371</a>                 {
<a name="1372" href="#1372">1372</a>                     attrs.put( Constants.SPLIT_PACKAGE_DIRECTIVE, <span class="jxr_string">"merge-first"</span> );
<a name="1373" href="#1373">1373</a>                 }
<a name="1374" href="#1374">1374</a>                 properties.setProperty( Analyzer.EXPORT_PACKAGE, Processor.printClauses( exportedPkgs ) );
<a name="1375" href="#1375">1375</a>             }
<a name="1376" href="#1376">1376</a>             <strong class="jxr_keyword">else</strong>
<a name="1377" href="#1377">1377</a>             {
<a name="1378" href="#1378">1378</a>                 <em class="jxr_comment">// leave Export-Package empty (but non-null) as we have -exportcontents</em>
<a name="1379" href="#1379">1379</a>                 properties.setProperty( Analyzer.EXPORT_PACKAGE, <span class="jxr_string">""</span> );
<a name="1380" href="#1380">1380</a>             }
<a name="1381" href="#1381">1381</a>         }
<a name="1382" href="#1382">1382</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( exported.indexOf( LOCAL_PACKAGES ) &gt;= 0 )
<a name="1383" href="#1383">1383</a>         {
<a name="1384" href="#1384">1384</a>             String newExported = StringUtils.replace( exported, LOCAL_PACKAGES, Processor.printClauses( exportedPkgs ) );
<a name="1385" href="#1385">1385</a>             properties.setProperty( Analyzer.EXPORT_PACKAGE, newExported );
<a name="1386" href="#1386">1386</a>         }
<a name="1387" href="#1387">1387</a> 
<a name="1388" href="#1388">1388</a>         String internal = properties.getProperty( Analyzer.PRIVATE_PACKAGE );
<a name="1389" href="#1389">1389</a>         <strong class="jxr_keyword">if</strong> ( internal == <strong class="jxr_keyword">null</strong> )
<a name="1390" href="#1390">1390</a>         {
<a name="1391" href="#1391">1391</a>             <strong class="jxr_keyword">if</strong> ( !privatePkgs.isEmpty() )
<a name="1392" href="#1392">1392</a>             {
<a name="1393" href="#1393">1393</a>                 <strong class="jxr_keyword">for</strong> ( Attrs attrs : privatePkgs.values() )
<a name="1394" href="#1394">1394</a>                 {
<a name="1395" href="#1395">1395</a>                     attrs.put( Constants.SPLIT_PACKAGE_DIRECTIVE, <span class="jxr_string">"merge-first"</span> );
<a name="1396" href="#1396">1396</a>                 }
<a name="1397" href="#1397">1397</a>                 properties.setProperty( Analyzer.PRIVATE_PACKAGE, Processor.printClauses( privatePkgs ) );
<a name="1398" href="#1398">1398</a>             }
<a name="1399" href="#1399">1399</a>             <strong class="jxr_keyword">else</strong>
<a name="1400" href="#1400">1400</a>             {
<a name="1401" href="#1401">1401</a>                 <em class="jxr_comment">// if there are really no private packages then use "!*" as this will keep the Bnd Tool happy</em>
<a name="1402" href="#1402">1402</a>                 properties.setProperty( Analyzer.PRIVATE_PACKAGE, <span class="jxr_string">"!*"</span> );
<a name="1403" href="#1403">1403</a>             }
<a name="1404" href="#1404">1404</a>         }
<a name="1405" href="#1405">1405</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( internal.indexOf( LOCAL_PACKAGES ) &gt;= 0 )
<a name="1406" href="#1406">1406</a>         {
<a name="1407" href="#1407">1407</a>             String newInternal = StringUtils.replace( internal, LOCAL_PACKAGES, Processor.printClauses( privatePkgs ) );
<a name="1408" href="#1408">1408</a>             properties.setProperty( Analyzer.PRIVATE_PACKAGE, newInternal );
<a name="1409" href="#1409">1409</a>         }
<a name="1410" href="#1410">1410</a>     }
<a name="1411" href="#1411">1411</a> 
<a name="1412" href="#1412">1412</a> 
<a name="1413" href="#1413">1413</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String getPackageName( String filename )
<a name="1414" href="#1414">1414</a>     {
<a name="1415" href="#1415">1415</a>         <strong class="jxr_keyword">int</strong> n = filename.lastIndexOf( File.separatorChar );
<a name="1416" href="#1416">1416</a>         <strong class="jxr_keyword">return</strong> n &lt; 0 ? <span class="jxr_string">"."</span> : filename.substring( 0, n ).replace( File.separatorChar, '.' );
<a name="1417" href="#1417">1417</a>     }
<a name="1418" href="#1418">1418</a> 
<a name="1419" href="#1419">1419</a> 
<a name="1420" href="#1420">1420</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List getMavenResources( MavenProject currentProject, <strong class="jxr_keyword">boolean</strong> test )
<a name="1421" href="#1421">1421</a>     {
<a name="1422" href="#1422">1422</a>         List resources = <strong class="jxr_keyword">new</strong> ArrayList( test ? currentProject.getTestResources() : currentProject.getResources() );
<a name="1423" href="#1423">1423</a> 
<a name="1424" href="#1424">1424</a>         <strong class="jxr_keyword">if</strong> ( currentProject.getCompileSourceRoots() != <strong class="jxr_keyword">null</strong> )
<a name="1425" href="#1425">1425</a>         {
<a name="1426" href="#1426">1426</a>             <em class="jxr_comment">// also scan for any "packageinfo" files lurking in the source folders</em>
<a name="1427" href="#1427">1427</a>             List packageInfoIncludes = Collections.singletonList( <span class="jxr_string">"**/packageinfo"</span> );
<a name="1428" href="#1428">1428</a>             <strong class="jxr_keyword">for</strong> ( Iterator i = currentProject.getCompileSourceRoots().iterator(); i.hasNext(); )
<a name="1429" href="#1429">1429</a>             {
<a name="1430" href="#1430">1430</a>                 String sourceRoot = ( String ) i.next();
<a name="1431" href="#1431">1431</a>                 Resource packageInfoResource = <strong class="jxr_keyword">new</strong> Resource();
<a name="1432" href="#1432">1432</a>                 packageInfoResource.setDirectory( sourceRoot );
<a name="1433" href="#1433">1433</a>                 packageInfoResource.setIncludes( packageInfoIncludes );
<a name="1434" href="#1434">1434</a>                 resources.add( packageInfoResource );
<a name="1435" href="#1435">1435</a>             }
<a name="1436" href="#1436">1436</a>         }
<a name="1437" href="#1437">1437</a> 
<a name="1438" href="#1438">1438</a>         <strong class="jxr_keyword">return</strong> resources;
<a name="1439" href="#1439">1439</a>     }
<a name="1440" href="#1440">1440</a> 
<a name="1441" href="#1441">1441</a> 
<a name="1442" href="#1442">1442</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> String getMavenResourcePaths( MavenProject currentProject, <strong class="jxr_keyword">boolean</strong> test )
<a name="1443" href="#1443">1443</a>     {
<a name="1444" href="#1444">1444</a>         <strong class="jxr_keyword">final</strong> String basePath = currentProject.getBasedir().getAbsolutePath();
<a name="1445" href="#1445">1445</a> 
<a name="1446" href="#1446">1446</a>         Set pathSet = <strong class="jxr_keyword">new</strong> LinkedHashSet();
<a name="1447" href="#1447">1447</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = getMavenResources( currentProject, test ).iterator(); i.hasNext(); )
<a name="1448" href="#1448">1448</a>         {
<a name="1449" href="#1449">1449</a>             Resource resource = ( Resource ) i.next();
<a name="1450" href="#1450">1450</a> 
<a name="1451" href="#1451">1451</a>             <strong class="jxr_keyword">final</strong> String sourcePath = resource.getDirectory();
<a name="1452" href="#1452">1452</a>             <strong class="jxr_keyword">final</strong> String targetPath = resource.getTargetPath();
<a name="1453" href="#1453">1453</a> 
<a name="1454" href="#1454">1454</a>             <em class="jxr_comment">// ignore empty or non-local resources</em>
<a name="1455" href="#1455">1455</a>             <strong class="jxr_keyword">if</strong> ( <strong class="jxr_keyword">new</strong> File( sourcePath ).exists() &amp;&amp; ( ( targetPath == <strong class="jxr_keyword">null</strong> ) || ( targetPath.indexOf( <span class="jxr_string">".."</span> ) &lt; 0 ) ) )
<a name="1456" href="#1456">1456</a>             {
<a name="1457" href="#1457">1457</a>                 DirectoryScanner scanner = <strong class="jxr_keyword">new</strong> DirectoryScanner();
<a name="1458" href="#1458">1458</a> 
<a name="1459" href="#1459">1459</a>                 scanner.setBasedir( sourcePath );
<a name="1460" href="#1460">1460</a>                 <strong class="jxr_keyword">if</strong> ( resource.getIncludes() != <strong class="jxr_keyword">null</strong> &amp;&amp; !resource.getIncludes().isEmpty() )
<a name="1461" href="#1461">1461</a>                 {
<a name="1462" href="#1462">1462</a>                     scanner.setIncludes( ( String[] ) resource.getIncludes().toArray( EMPTY_STRING_ARRAY ) );
<a name="1463" href="#1463">1463</a>                 }
<a name="1464" href="#1464">1464</a>                 <strong class="jxr_keyword">else</strong>
<a name="1465" href="#1465">1465</a>                 {
<a name="1466" href="#1466">1466</a>                     scanner.setIncludes( DEFAULT_INCLUDES );
<a name="1467" href="#1467">1467</a>                 }
<a name="1468" href="#1468">1468</a> 
<a name="1469" href="#1469">1469</a>                 <strong class="jxr_keyword">if</strong> ( resource.getExcludes() != <strong class="jxr_keyword">null</strong> &amp;&amp; !resource.getExcludes().isEmpty() )
<a name="1470" href="#1470">1470</a>                 {
<a name="1471" href="#1471">1471</a>                     scanner.setExcludes( ( String[] ) resource.getExcludes().toArray( EMPTY_STRING_ARRAY ) );
<a name="1472" href="#1472">1472</a>                 }
<a name="1473" href="#1473">1473</a> 
<a name="1474" href="#1474">1474</a>                 scanner.addDefaultExcludes();
<a name="1475" href="#1475">1475</a>                 scanner.scan();
<a name="1476" href="#1476">1476</a> 
<a name="1477" href="#1477">1477</a>                 List includedFiles = Arrays.asList( scanner.getIncludedFiles() );
<a name="1478" href="#1478">1478</a> 
<a name="1479" href="#1479">1479</a>                 <strong class="jxr_keyword">for</strong> ( Iterator j = includedFiles.iterator(); j.hasNext(); )
<a name="1480" href="#1480">1480</a>                 {
<a name="1481" href="#1481">1481</a>                     String name = ( String ) j.next();
<a name="1482" href="#1482">1482</a>                     String path = sourcePath + '/' + name;
<a name="1483" href="#1483">1483</a> 
<a name="1484" href="#1484">1484</a>                     <em class="jxr_comment">// make relative to project</em>
<a name="1485" href="#1485">1485</a>                     <strong class="jxr_keyword">if</strong> ( path.startsWith( basePath ) )
<a name="1486" href="#1486">1486</a>                     {
<a name="1487" href="#1487">1487</a>                         <strong class="jxr_keyword">if</strong> ( path.length() == basePath.length() )
<a name="1488" href="#1488">1488</a>                         {
<a name="1489" href="#1489">1489</a>                             path = <span class="jxr_string">"."</span>;
<a name="1490" href="#1490">1490</a>                         }
<a name="1491" href="#1491">1491</a>                         <strong class="jxr_keyword">else</strong>
<a name="1492" href="#1492">1492</a>                         {
<a name="1493" href="#1493">1493</a>                             path = path.substring( basePath.length() + 1 );
<a name="1494" href="#1494">1494</a>                         }
<a name="1495" href="#1495">1495</a>                     }
<a name="1496" href="#1496">1496</a> 
<a name="1497" href="#1497">1497</a>                     <em class="jxr_comment">// replace windows backslash with a slash</em>
<a name="1498" href="#1498">1498</a>                     <em class="jxr_comment">// this is a workaround for a problem with bnd 0.0.189</em>
<a name="1499" href="#1499">1499</a>                     <strong class="jxr_keyword">if</strong> ( File.separatorChar != '/' )
<a name="1500" href="#1500">1500</a>                     {
<a name="1501" href="#1501">1501</a>                         name = name.replace( File.separatorChar, '/' );
<a name="1502" href="#1502">1502</a>                         path = path.replace( File.separatorChar, '/' );
<a name="1503" href="#1503">1503</a>                     }
<a name="1504" href="#1504">1504</a> 
<a name="1505" href="#1505">1505</a>                     <em class="jxr_comment">// copy to correct place</em>
<a name="1506" href="#1506">1506</a>                     path = name + '=' + path;
<a name="1507" href="#1507">1507</a>                     <strong class="jxr_keyword">if</strong> ( targetPath != <strong class="jxr_keyword">null</strong> )
<a name="1508" href="#1508">1508</a>                     {
<a name="1509" href="#1509">1509</a>                         path = targetPath + '/' + path;
<a name="1510" href="#1510">1510</a>                     }
<a name="1511" href="#1511">1511</a> 
<a name="1512" href="#1512">1512</a>                     <em class="jxr_comment">// use Bnd filtering?</em>
<a name="1513" href="#1513">1513</a>                     <strong class="jxr_keyword">if</strong> ( resource.isFiltering() )
<a name="1514" href="#1514">1514</a>                     {
<a name="1515" href="#1515">1515</a>                         path = '{' + path + '}';
<a name="1516" href="#1516">1516</a>                     }
<a name="1517" href="#1517">1517</a> 
<a name="1518" href="#1518">1518</a>                     pathSet.add( path );
<a name="1519" href="#1519">1519</a>                 }
<a name="1520" href="#1520">1520</a>             }
<a name="1521" href="#1521">1521</a>         }
<a name="1522" href="#1522">1522</a> 
<a name="1523" href="#1523">1523</a>         StringBuffer resourcePaths = <strong class="jxr_keyword">new</strong> StringBuffer();
<a name="1524" href="#1524">1524</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = pathSet.iterator(); i.hasNext(); )
<a name="1525" href="#1525">1525</a>         {
<a name="1526" href="#1526">1526</a>             resourcePaths.append( i.next() );
<a name="1527" href="#1527">1527</a>             <strong class="jxr_keyword">if</strong> ( i.hasNext() )
<a name="1528" href="#1528">1528</a>             {
<a name="1529" href="#1529">1529</a>                 resourcePaths.append( ',' );
<a name="1530" href="#1530">1530</a>             }
<a name="1531" href="#1531">1531</a>         }
<a name="1532" href="#1532">1532</a> 
<a name="1533" href="#1533">1533</a>         <strong class="jxr_keyword">return</strong> resourcePaths.toString();
<a name="1534" href="#1534">1534</a>     }
<a name="1535" href="#1535">1535</a> 
<a name="1536" href="#1536">1536</a> 
<a name="1537" href="#1537">1537</a>     <strong class="jxr_keyword">protected</strong> Collection getEmbeddableArtifacts( MavenProject currentProject, Analyzer analyzer )
<a name="1538" href="#1538">1538</a>         <strong class="jxr_keyword">throws</strong> MojoExecutionException
<a name="1539" href="#1539">1539</a>     {
<a name="1540" href="#1540">1540</a>         <strong class="jxr_keyword">final</strong> Collection artifacts;
<a name="1541" href="#1541">1541</a> 
<a name="1542" href="#1542">1542</a>         String embedTransitive = analyzer.getProperty( DependencyEmbedder.EMBED_TRANSITIVE );
<a name="1543" href="#1543">1543</a>         <strong class="jxr_keyword">if</strong> ( Boolean.valueOf( embedTransitive ).booleanValue() )
<a name="1544" href="#1544">1544</a>         {
<a name="1545" href="#1545">1545</a>             <em class="jxr_comment">// includes transitive dependencies</em>
<a name="1546" href="#1546">1546</a>             artifacts = currentProject.getArtifacts();
<a name="1547" href="#1547">1547</a>         }
<a name="1548" href="#1548">1548</a>         <strong class="jxr_keyword">else</strong>
<a name="1549" href="#1549">1549</a>         {
<a name="1550" href="#1550">1550</a>             <em class="jxr_comment">// only includes direct dependencies</em>
<a name="1551" href="#1551">1551</a>             artifacts = currentProject.getDependencyArtifacts();
<a name="1552" href="#1552">1552</a>         }
<a name="1553" href="#1553">1553</a> 
<a name="1554" href="#1554">1554</a>         <strong class="jxr_keyword">return</strong> getSelectedDependencies( artifacts );
<a name="1555" href="#1555">1555</a>     }
<a name="1556" href="#1556">1556</a> 
<a name="1557" href="#1557">1557</a> 
<a name="1558" href="#1558">1558</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> addMavenSourcePath( MavenProject currentProject, Analyzer analyzer, Log log )
<a name="1559" href="#1559">1559</a>     {
<a name="1560" href="#1560">1560</a>         <em class="jxr_comment">// pass maven source paths onto BND analyzer</em>
<a name="1561" href="#1561">1561</a>         StringBuilder mavenSourcePaths = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="1562" href="#1562">1562</a>         StringBuilder mavenTestSourcePaths = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="1563" href="#1563">1563</a>         Map&lt;StringBuilder, List&lt;?&gt;&gt; map = <strong class="jxr_keyword">new</strong> HashMap&lt;StringBuilder, List&lt;?&gt;&gt;(2);
<a name="1564" href="#1564">1564</a>         map.put(mavenSourcePaths, currentProject.getCompileSourceRoots() );
<a name="1565" href="#1565">1565</a>         map.put(mavenTestSourcePaths, currentProject.getTestCompileSourceRoots() );
<a name="1566" href="#1566">1566</a>         <strong class="jxr_keyword">for</strong> ( Map.Entry&lt;StringBuilder, List&lt;?&gt;&gt; entry : map.entrySet() )
<a name="1567" href="#1567">1567</a>         {
<a name="1568" href="#1568">1568</a>             List&lt;?&gt; compileSourceRoots = entry.getValue();
<a name="1569" href="#1569">1569</a>             <strong class="jxr_keyword">if</strong> ( compileSourceRoots != <strong class="jxr_keyword">null</strong> )
<a name="1570" href="#1570">1570</a>             {
<a name="1571" href="#1571">1571</a>                 StringBuilder sourcePaths = entry.getKey();
<a name="1572" href="#1572">1572</a>                 <strong class="jxr_keyword">for</strong> ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); )
<a name="1573" href="#1573">1573</a>                 {
<a name="1574" href="#1574">1574</a>                     <strong class="jxr_keyword">if</strong> ( sourcePaths.length() &gt; 0 )
<a name="1575" href="#1575">1575</a>                     {
<a name="1576" href="#1576">1576</a>                         sourcePaths.append( ',' );
<a name="1577" href="#1577">1577</a>                     }
<a name="1578" href="#1578">1578</a>                     sourcePaths.append( ( String ) i.next() );
<a name="1579" href="#1579">1579</a>                 }
<a name="1580" href="#1580">1580</a>             }
<a name="1581" href="#1581">1581</a>         }
<a name="1582" href="#1582">1582</a>         <strong class="jxr_keyword">final</strong> String sourcePath = analyzer.getProperty( Analyzer.SOURCEPATH );
<a name="1583" href="#1583">1583</a>         <strong class="jxr_keyword">if</strong> ( sourcePath != <strong class="jxr_keyword">null</strong> )
<a name="1584" href="#1584">1584</a>         {
<a name="1585" href="#1585">1585</a>             <strong class="jxr_keyword">if</strong> ( sourcePath.contains(MAVEN_SOURCES) || sourcePath.contains(MAVEN_TEST_RESOURCES) )
<a name="1586" href="#1586">1586</a>             {
<a name="1587" href="#1587">1587</a>                 String combinedSource = StringUtils.replace( sourcePath, MAVEN_SOURCES, mavenSourcePaths.toString() );
<a name="1588" href="#1588">1588</a>                 combinedSource = StringUtils.replace( combinedSource, MAVEN_TEST_SOURCES, mavenTestSourcePaths.toString() );
<a name="1589" href="#1589">1589</a>                 <strong class="jxr_keyword">if</strong> ( combinedSource.length() &gt; 0 )
<a name="1590" href="#1590">1590</a>                 {
<a name="1591" href="#1591">1591</a>                     analyzer.setProperty( Analyzer.SOURCEPATH, combinedSource );
<a name="1592" href="#1592">1592</a>                 }
<a name="1593" href="#1593">1593</a>                 <strong class="jxr_keyword">else</strong>
<a name="1594" href="#1594">1594</a>                 {
<a name="1595" href="#1595">1595</a>                     analyzer.unsetProperty( Analyzer.SOURCEPATH );
<a name="1596" href="#1596">1596</a>                 }
<a name="1597" href="#1597">1597</a>             }
<a name="1598" href="#1598">1598</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( mavenSourcePaths.length() &gt; 0 )
<a name="1599" href="#1599">1599</a>             {
<a name="1600" href="#1600">1600</a>                 log.warn( Analyzer.SOURCEPATH + <span class="jxr_string">": overriding "</span> + mavenSourcePaths + <span class="jxr_string">" with "</span> + sourcePath + <span class="jxr_string">" (add "</span>
<a name="1601" href="#1601">1601</a>                     + MAVEN_SOURCES + <span class="jxr_string">" if you want to include the maven sources)"</span> );
<a name="1602" href="#1602">1602</a>             }
<a name="1603" href="#1603">1603</a>             <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( mavenTestSourcePaths.length() &gt; 0 )
<a name="1604" href="#1604">1604</a>             {
<a name="1605" href="#1605">1605</a>                 log.warn( Analyzer.SOURCEPATH + <span class="jxr_string">": overriding "</span> + mavenTestSourcePaths + <span class="jxr_string">" with "</span> + sourcePath + <span class="jxr_string">" (add "</span>
<a name="1606" href="#1606">1606</a>                         + MAVEN_TEST_SOURCES + <span class="jxr_string">" if you want to include the maven sources)"</span> );
<a name="1607" href="#1607">1607</a>             }
<a name="1608" href="#1608">1608</a>         }
<a name="1609" href="#1609">1609</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( mavenSourcePaths.length() &gt; 0 )
<a name="1610" href="#1610">1610</a>         {
<a name="1611" href="#1611">1611</a>             analyzer.setProperty( Analyzer.SOURCEPATH, mavenSourcePaths.toString() );
<a name="1612" href="#1612">1612</a>         }
<a name="1613" href="#1613">1613</a>     }
<a name="1614" href="#1614">1614</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

