Remove obsolete obr plugin

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1695268 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-obr-plugin/LICENSE b/maven-obr-plugin/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/maven-obr-plugin/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maven-obr-plugin/LICENSE.kxml2 b/maven-obr-plugin/LICENSE.kxml2
deleted file mode 100644
index 1fe595b..0000000
--- a/maven-obr-plugin/LICENSE.kxml2
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The  above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE. 
diff --git a/maven-obr-plugin/NOTICE b/maven-obr-plugin/NOTICE
deleted file mode 100644
index 9730d77..0000000
--- a/maven-obr-plugin/NOTICE
+++ /dev/null
@@ -1,39 +0,0 @@
-Apache Felix OBR Maven Plugin
-Copyright 2007-2008 The Apache Software Foundation
-
-
-I. Included Software
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-Licensed under the Apache License 2.0.
-
-This product includes software developed at
-The OSGi Alliance (http://www.osgi.org/).
-Copyright 2006-2008 The OSGi Alliance.
-Licensed under the Apache License 2.0.
-
-
-II. Used Software
-
-This product uses software developed at
-The OSGi Alliance (http://www.osgi.org/).
-Copyright 2006-2008 The OSGi Alliance.
-Licensed under the Apache License 2.0.
-
-This product uses software developed at
-The Apache Software Foundation (http://www.apache.org/).
-Licensed under the Apache License 2.0.
-
-This product uses software developed at
-The Codehaus (http://www.codehaus.org)
-Licensed under the Apache License 2.0.
-
-This product uses software from http://kxml.sourceforge.net.
-Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany.
-Licensed under the BSD License.
-
-
-III. License Summary
-- Apache License 2.0
-- BSD License
diff --git a/maven-obr-plugin/doc/maven-obr-plugin.html b/maven-obr-plugin/doc/maven-obr-plugin.html
deleted file mode 100644
index a36af1b..0000000
--- a/maven-obr-plugin/doc/maven-obr-plugin.html
+++ /dev/null
@@ -1,285 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title>Apache Felix - Maven OBR Plugin</title>
-
-
-  
-    
-    <link rel="stylesheet" href="maven-obr-plugin_files/site.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body>
-    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="maven-obr-plugin_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="maven-obr-plugin_files/apache.png" border="0"></a></div></div>
-    <div class="menu">
-<ul>
-	<li><a href="http://felix.apache.org/site/index.html" title="Index">home</a></li>
-	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
-	<li><a href="http://felix.apache.org/site/status.html" title="status">status</a></li>
-	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
-	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
-	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
-	<li><span class="nobr"><a href="http://cwiki.apache.org/confluence/x/O-" title="Visit page outside Confluence" rel="nofollow">wiki<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><a href="http://felix.apache.org/site/committers.html" title="committers">committers</a></li>
-	<li><a href="http://felix.apache.org/site/faq.html" title="faq">faq</a></li>
-	<li><a href="http://felix.apache.org/site/roadmap.html" title="roadmap">roadmap</a></li>
-	<li><a href="http://felix.apache.org/site/sourcecode.html" title="sourcecode">source code</a></li>
-	<li><a href="http://felix.apache.org/site/codingstandards.html" title="codingstandards">coding standards</a></li>
-	<li><a href="http://felix.apache.org/site/issuetracking.html" title="issuetracking">issue tracking</a></li>
-	<li><a href="http://felix.apache.org/site/dependencies.html" title="dependencies">dependencies</a></li>
-	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">apache software foundation<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-</ul> </div>
-    <div class="main">
-<p>This Maven plug-in aims to automate OBR (OSGi Bundle Repository)
-management. It helps manage a local OBR for your local Maven
-repository, and also supports remote OBRs for bundle distribution. The
-plug-in automatically computes bundle capabilities and requirements,
-using a combination of Bindex and Maven metadata.</p>
-
-<h2><a name="MavenOBRPlugin-Features"></a>Features</h2>
-
-<p>The maven-obr-plugin supports:</p>
-
-<ul>
-	<li>Management of both local and remote OBRs</li>
-	<li>Registering Maven and non-Maven artifacts with OBRs</li>
-	<li>Automatically discovering bundle capabilities and requirements</li>
-	<li>Customizing bundle descriptions</li>
-</ul>
-
-
-<h2><a name="MavenOBRPlugin-Howtousethemavenobrplugin?"></a>How to use the maven-obr-plugin?</h2>
-
-<p>The plug-in offers five Maven goals:</p>
-
-<ul>
-	<li><b>install</b>       adds the current bundle project to the local OBR</li>
-	<li><b>install-file</b>  adds a local bundle file to the local OBR</li>
-	<li><b>deploy</b>        adds the current bundle project to a remote OBR</li>
-	<li><b>deploy-file</b>   adds a local bundle file to a remote OBR</li>
-	<li><b>clean</b>         cleans the local OBR, removing missing bundles</li>
-</ul>
-
-
-<p>Any of these goals can be disabled by setting <tt>-DobrRepository=NONE</tt></p>
-
-<h2><a name="MavenOBRPlugin-obr:install"></a>obr:install</h2>
-
-<p>The <b>install</b> goal updates the local OBR with the details of the installed bundle from the local Maven repository.</p>
-
-<p>(If the project has an <tt>obr.xml</tt> file somewhere in its resources, then it will be automatically detected and applied.)</p>
-
-<p>configuration:</p>
-
-<ul>
-	<li><em>obrRepository</em>  path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
-</ul>
-
-
-<p>To attach this goal to your project's lifecycle, use:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;plugin&gt;</span>
-  <span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
-  <span class="code-tag">&lt;artifactId&gt;</span>maven-obr-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
-  <span class="code-tag">&lt;version&gt;</span>1.2.0<span class="code-tag">&lt;/version&gt;</span>
-  <span class="code-tag">&lt;executions&gt;</span>
-    <span class="code-tag">&lt;execution&gt;</span>
-      <span class="code-tag">&lt;goals&gt;</span>
-        <span class="code-tag">&lt;goal&gt;</span>install<span class="code-tag">&lt;/goal&gt;</span>
-      <span class="code-tag">&lt;/goals&gt;</span>
-    <span class="code-tag">&lt;/execution&gt;</span>
-  <span class="code-tag">&lt;/executions&gt;</span>
-<span class="code-tag">&lt;/plugin&gt;</span></pre>
-</div></div>
-
-<h2><a name="MavenOBRPlugin-obr:installfile"></a>obr:install-file</h2>
-
-<p>The <b>install-file</b> goal updates the local OBR with the details of a bundle from the local filesystem.</p>
-
-<p>configuration:</p>
-
-<ul>
-	<li><em>obrRepository</em>  path to local OBR, defaults to <em>&lt;local-maven-repository&gt;</em><tt>/repository.xml</tt></li>
-	<li><em>groupId</em>        Maven groupId for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>artifactId</em>     Maven artifactId for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>version</em>        Maven version for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>packaging</em>      Maven packaging type for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>classifier</em>     Maven classifier type, defaults to none</li>
-	<li><em>pomFile</em>        optional Pom file describing the bundle</li>
-	<li><em>file</em>           bundle file, defaults to the bundle from the local Maven repository</li>
-	<li><em>obrXml</em>         optional additional properties for the bundle</li>
-</ul>
-
-
-<p>Example:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>mvn org.apache.felix:maven-obr-plugin:1.2.0:install-file \
-  -DpomFile=myPom.xml -Dfile=foo-1.0.jar
-</pre>
-</div></div>
-
-<h2><a name="MavenOBRPlugin-obr:deploy"></a>obr:deploy</h2>
-
-<p>The <b>deploy goal</b> updates the remote OBR with the details of
-the deployed bundle from the local Maven repository. The remote OBR is
-found by querying the <tt>&lt;distributionManagement&gt;</tt> section of the project, unless <tt>-DaltDeploymentRepository</tt> is set. See <span class="nobr"><a href="http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html" title="Visit page outside Confluence" rel="nofollow">http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span> for more details about these particular settings.</p>
-
-<p>(If the project has an <tt>obr.xml</tt> file somewhere in its resources, then it will be automatically detected and applied.)</p>
-
-<p>configuration:</p>
-
-<ul>
-	<li><em>obrRepository</em>             name of remote OBR, defaults to <tt>repository.xml</tt></li>
-	<li><em>altDeploymentRepository</em>   alternative remote repository, <em>id::layout::url</em></li>
-	<li><em>ignoreLock</em>                ignore remote locking when updating the OBR</li>
-</ul>
-
-
-<p>To attach this goal to your project's lifecycle, use:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;plugin&gt;</span>
-  <span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
-  <span class="code-tag">&lt;artifactId&gt;</span>maven-obr-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
-  <span class="code-tag">&lt;version&gt;</span>1.2.0<span class="code-tag">&lt;/version&gt;</span>
-  <span class="code-tag">&lt;executions&gt;</span>
-    <span class="code-tag">&lt;execution&gt;</span>
-      <span class="code-tag">&lt;goals&gt;</span>
-        <span class="code-tag">&lt;goal&gt;</span>deploy<span class="code-tag">&lt;/goal&gt;</span>
-      <span class="code-tag">&lt;/goals&gt;</span>
-    <span class="code-tag">&lt;/execution&gt;</span>
-  <span class="code-tag">&lt;/executions&gt;</span>
-<span class="code-tag">&lt;/plugin&gt;</span></pre>
-</div></div>
-
-<h2><a name="MavenOBRPlugin-obr:deployfile"></a>obr:deploy-file</h2>
-
-<p>The <b>deploy-file</b> goal updates the remote OBR with the details of a deployed bundle from the local filesystem. The remote OBR is found using the <tt>-DrepositoryId</tt> and <tt>-Durl</tt> parameters. See <span class="nobr"><a href="http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html" title="Visit page outside Confluence" rel="nofollow">http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html<sup><img class="rendericon" src="maven-obr-plugin_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span> for more details about these particular settings.</p>
-
-<p>You can use the <tt>-DbundleUrl</tt> parameter to give the public location of the deployed bundle, which may differ from the remote OBR location.</p>
-
-<p>configuration:</p>
-
-<ul>
-	<li><em>obrRepository</em>  name of remote OBR, defaults to <tt>repository.xml</tt></li>
-	<li><em>repositoryId</em>   optional repository id, used to lookup authentication settings</li>
-	<li><em>url</em>            remote repository transport URL, like <div class="preformatted"><div class="preformattedContent">
-<pre>scpexe://host/path/to/obr</pre>
-</div></div></li>
-	<li><em>bundleUrl</em>      public URL of deployed bundle, like <div class="preformatted"><div class="preformattedContent">
-<pre>http://www.foo.org/bundles/foo.jar</pre>
-</div></div></li>
-	<li><em>groupId</em>        Maven groupId for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>artifactId</em>     Maven artifactId for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>version</em>        Maven version for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>packaging</em>      Maven packaging type for the bundle, taken from <em>pomFile</em> if given</li>
-	<li><em>classifier</em>     Maven classifier type, defaults to none</li>
-	<li><em>pomFile</em>        optional Pom file describing the bundle</li>
-	<li><em>file</em>           bundle file, defaults to the bundle from the local Maven repository</li>
-	<li><em>obrXml</em>         optional additional properties for the bundle</li>
-	<li><em>ignoreLock</em>     ignore remote locking when updating the OBR</li>
-</ul>
-
-
-<p>Example:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>mvn org.apache.felix:maven-obr-plugin:1.2.0:deploy-file \
-  -DpomFile=myPom.xml -Dfile=foo-1.0.jar -Durl=file:/tmp/example/OBR \
-  -DbundleUrl=http://www.foo.org/bundles/foo.jar
-</pre>
-</div></div>
-
-<h2><a name="MavenOBRPlugin-obr:clean"></a>obr:clean</h2>
-
-<p>Sometimes you would like to clean your local OBR because it contains
-bundles that are no longer in your local Maven repository. This case
-often occurs when artifacts were deleted manually. The maven-obr-plugin
-provides a simple goal to check for missing bundles, and remove them
-from the local OBR.</p>
-
-<p>configuration:</p>
-
-<ul>
-	<li><em>obrRepository</em>  path to local OBR, defaults to <em>&lt;local-maven-repository&gt;<tt></tt></em><tt>/repository.xml</tt></li>
-</ul>
-
-
-<p>To attach this goal to your project's lifecycle, use:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;plugin&gt;</span>
-  <span class="code-tag">&lt;groupId&gt;</span>org.apache.felix<span class="code-tag">&lt;/groupId&gt;</span>
-  <span class="code-tag">&lt;artifactId&gt;</span>maven-obr-plugin<span class="code-tag">&lt;/artifactId&gt;</span>
-  <span class="code-tag">&lt;version&gt;</span>1.2.0<span class="code-tag">&lt;/version&gt;</span>
-  <span class="code-tag">&lt;executions&gt;</span>
-    <span class="code-tag">&lt;execution&gt;</span>
-      <span class="code-tag">&lt;goals&gt;</span>
-        <span class="code-tag">&lt;goal&gt;</span>clean<span class="code-tag">&lt;/goal&gt;</span>
-      <span class="code-tag">&lt;/goals&gt;</span>
-    <span class="code-tag">&lt;/execution&gt;</span>
-  <span class="code-tag">&lt;/executions&gt;</span>
-<span class="code-tag">&lt;/plugin&gt;</span></pre>
-</div></div>
-
-<h2><a name="MavenOBRPlugin-Concurrentupdates"></a>Concurrent updates</h2>
-
-<p>With a remote OBR, several uploads may occur at the same time.
-However, the remote OBR is centralized in one file, so concurrent
-modification must be avoided. To achieve this, the plug-in implements a
-locking system. Each time the plug-in tries to modify the file it sets
-a file based lock. If it can't take the lock, it will wait and retry.
-After 3 attempts the upload process fails. To bypass this lock add <tt>-DignoreLock</tt> to the command-line (or add <tt>&lt;ignoreLock&gt;true&lt;ignoreLock&gt;</tt> to the configuration section of your Pom).</p>
-
-<h2><a name="MavenOBRPlugin-FTPprotocol"></a>FTP protocol</h2>
-
-<p>Not all protocols are supported by Maven out of the box. For example the ftp protocol requires the <b>wagon-ftp</b> component. To enable the ftp protocol add this to your Pom:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;build&gt;</span>
-  <span class="code-tag">&lt;extensions&gt;</span>
-    <span class="code-tag">&lt;extension&gt;</span>
-      <span class="code-tag">&lt;groupId&gt;</span>org.apache.maven.wagon<span class="code-tag">&lt;/groupId&gt;</span>
-      <span class="code-tag">&lt;artifactId&gt;</span>wagon-ftp<span class="code-tag">&lt;/artifactId&gt;</span>
-      <span class="code-tag">&lt;version&gt;</span>1.0-alpha-6<span class="code-tag">&lt;/version&gt;</span>
-    <span class="code-tag">&lt;/extension&gt;</span>
-  <span class="code-tag">&lt;/extensions&gt;</span>
-<span class="code-tag">&lt;/build&gt;</span></pre>
-</div></div>
-
-<h2><a name="MavenOBRPlugin-Howtheplugincomputesthedescriptionofthebundle"></a>How the plug-in computes the description of the bundle</h2>
-
-<p>The description of the bundle comes from three different sources:</p>
-
-<ul>
-	<li>Bindex : Bindex is a tool that analyzes a bundle manifest to generate OBR description</li>
-	<li>pom.xml : by analyzing the pom file, various information is collected (symbolic name ...)</li>
-	<li>obr.xml : this file contains customized description and capabilities for the bundle</li>
-</ul>
-
-
-<p>These sources are merged together using the following precedence:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>Bindex
-| (overrides)
-pom.xml
-| (overrides)
-obr.xml
-</pre>
-</div></div>
-
-<p>A warning message is displayed when existing information is overridden.</p>
-
-<h2><a name="MavenOBRPlugin-Knownissues&amp;limitations"></a>Known issues &amp; limitations</h2>
-
-<ol>
-	<li>obr.xml (file given by the user to add properties not found
-by Bindex) must be correct, because the plug-in does not check its
-syntax.</li>
-</ol>
-
-    </div>
-  
-</body></html>
diff --git a/maven-obr-plugin/doc/maven-obr-plugin_files/apache.png b/maven-obr-plugin/doc/maven-obr-plugin_files/apache.png
deleted file mode 100644
index 5132f65..0000000
--- a/maven-obr-plugin/doc/maven-obr-plugin_files/apache.png
+++ /dev/null
Binary files differ
diff --git a/maven-obr-plugin/doc/maven-obr-plugin_files/linkext7.gif b/maven-obr-plugin/doc/maven-obr-plugin_files/linkext7.gif
deleted file mode 100644
index f2dd2dc..0000000
--- a/maven-obr-plugin/doc/maven-obr-plugin_files/linkext7.gif
+++ /dev/null
Binary files differ
diff --git a/maven-obr-plugin/doc/maven-obr-plugin_files/logo.png b/maven-obr-plugin/doc/maven-obr-plugin_files/logo.png
deleted file mode 100644
index dccbddc..0000000
--- a/maven-obr-plugin/doc/maven-obr-plugin_files/logo.png
+++ /dev/null
Binary files differ
diff --git a/maven-obr-plugin/doc/maven-obr-plugin_files/site.css b/maven-obr-plugin/doc/maven-obr-plugin_files/site.css
deleted file mode 100644
index 959ab0a..0000000
--- a/maven-obr-plugin/doc/maven-obr-plugin_files/site.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/* @override http://felix.apache.org/site/media.data/site.css */
-
-body { background-color: #ffffff; color: #3b3b3b; font-family: Tahoma, Arial, sans-serif; font-size: 10pt; line-height: 140% }
-h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; line-height: 100%; margin-top: 0px}
-h1 { font-size: 200% }
-h2 { font-size: 175% }
-h3 { font-size: 150% }
-h4 { font-size: 140% }
-h5 { font-size: 130% }
-h6 { font-size: 120% }
-a { color: #1980af }
-a:visited { color: #1980af }
-a:hover { color: #1faae9 }
-.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(http://felix.apache.org/site/media.data/gradient.png) repeat-x; background-position: bottom; }
-.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
-.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
-.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
-.menu ul { background-color: #fdf5d9; list-style: none; padding-left: 4em; margin-top: 0px; padding-top: 2em; padding-bottom: 2em; margin-left: 0px; color: #4a4a43}
-.menu a { text-decoration: none; color: #4a4a43 }
-.main { position: absolute; border-top: 10px solid #cde0ea; top: 107px; left: 15em; right: 1px; margin-left: 2px; padding-right: 4em; padding-left: 1em; padding-top: 1em;}
-.code { background-color: #eeeeee; border: solid 1px black; padding: 0.5em }
-.code-keyword { color: #880000 }
-.code-quote { color: #008800 }
-.code-object { color: #0000dd }
-.code-java { margin: 0em }
\ No newline at end of file
diff --git a/maven-obr-plugin/pom.xml b/maven-obr-plugin/pom.xml
deleted file mode 100644
index f29ab50..0000000
--- a/maven-obr-plugin/pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <parent>
-    <artifactId>felix</artifactId>
-    <groupId>org.apache.felix</groupId>
-    <version>1.0.4</version>
-    <relativePath>../pom/pom.xml</relativePath>
- </parent>
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>maven-obr-plugin</artifactId>
-  <version>1.2.1-SNAPSHOT</version>
-  <packaging>maven-plugin</packaging>
-  
-  <name>OBR Maven Plugin</name>
-  <description>
-    Provides a maven plugin that supports the automatic creation and
-    update of an OSGi Bundle Repository compliant with OSGi RFC 0112.
-  </description>
-
-  <dependencies>
-    <dependency>
-      <groupId>net.sf.kxml</groupId>
-      <artifactId>kxml2</artifactId>
-      <version>2.2.2</version>
-    </dependency>
-    <dependency>
-      <groupId>xmlpull</groupId>
-      <artifactId>xmlpull</artifactId>
-      <version>1.1.3.1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.osgi.core</artifactId>
-      <version>1.0.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.osgi.service.obr</artifactId>
-      <version>1.0.1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-      <version>2.0.7</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.0.7</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-model</artifactId>
-      <version>2.0.7</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
-      <version>2.0.7</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact-manager</artifactId>
-      <version>2.0.7</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-settings</artifactId>
-      <version>2.0.7</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.wagon</groupId>
-      <artifactId>wagon-provider-api</artifactId>
-      <version>1.0-beta-2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
-      <version>1.4.7</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/AbstractFileMojo.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/AbstractFileMojo.java
deleted file mode 100644
index ddd6c1d..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/AbstractFileMojo.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-
-
-/**
- * Base class for the command-line install-file and deploy-file goals.
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public abstract class AbstractFileMojo extends AbstractMojo
-{
-    /**
-     * GroupId of the bundle. Retrieved from POM file if specified.
-     *
-     * @parameter expression="${groupId}"
-     */
-    private String groupId;
-
-    /**
-     * ArtifactId of the bundle. Retrieved from POM file if specified.
-     *
-     * @parameter expression="${artifactId}"
-     */
-    private String artifactId;
-
-    /**
-     * Version of the bundle. Retrieved from POM file if specified.
-     *
-     * @parameter expression="${version}"
-     */
-    private String version;
-
-    /**
-     * Packaging type of the bundle. Retrieved from POM file if specified.
-     *
-     * @parameter expression="${packaging}"
-     */
-    private String packaging;
-
-    /**
-     * Classifier type of the bundle. Defaults to none.
-     *
-     * @parameter expression="${classifier}"
-     */
-    private String classifier;
-
-    /**
-     * Location of an existing POM file.
-     *
-     * @parameter expression="${pomFile}"
-     */
-    private File pomFile;
-
-    /**
-     * Bundle file, defaults to the artifact in the local Maven repository.
-     *
-     * @parameter expression="${file}"
-     */
-    protected File file;
-
-    /**
-     * Optional XML file describing additional requirements and capabilities.
-     * 
-     * @parameter expression="${obrXml}"
-     */
-    protected String obrXml;
-
-    /**
-     * Component factory for Maven artifacts
-     * 
-     * @component
-     */
-    private ArtifactFactory m_factory;
-
-
-    /**
-     * @return project based on command-line settings, with bundle attached
-     * @throws MojoExecutionException
-     */
-    public MavenProject getProject() throws MojoExecutionException
-    {
-        final MavenProject project;
-        if ( pomFile != null && pomFile.exists() )
-        {
-            project = PomHelper.readPom( pomFile );
-
-            groupId = project.getGroupId();
-            artifactId = project.getArtifactId();
-            version = project.getVersion();
-            packaging = project.getPackaging();
-        }
-        else
-        {
-            project = PomHelper.buildPom( groupId, artifactId, version, packaging );
-        }
-
-        if ( groupId == null || artifactId == null || version == null || packaging == null )
-        {
-            throw new MojoExecutionException( "Missing group, artifact, version, or packaging information" );
-        }
-
-        Artifact bundle = m_factory.createArtifactWithClassifier( groupId, artifactId, version, packaging, classifier );
-        project.setArtifact( bundle );
-
-        return project;
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Capability.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Capability.java
deleted file mode 100644
index 4bf0f76..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Capability.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-/**
- * This class describe and store capability node.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class Capability
-{
-
-    /**
-     * m_name: name of the capability.
-     */
-    private String m_name;
-
-    /**
-     * m_p: List of PElement.
-     */
-    private List m_p = new ArrayList();
-
-
-    /**
-     * get the name attribute.
-     * 
-     * @return name attribute
-     */
-    public String getName()
-    {
-        return m_name;
-    }
-
-
-    /**
-     * set the name attribute.
-     * 
-     * @param name new name value
-     *            
-     */
-    public void setName( String name )
-    {
-        m_name = name;
-    }
-
-
-    /**
-     * return the capabilities.
-     * 
-     * @return List of PElement
-     */
-    public List getP()
-    {
-        return m_p;
-    }
-
-
-    /**
-     * set the capabilities.
-     * 
-     * @param mp List of PElement
-     *            
-     */
-    public void setP( List mp )
-    {
-        m_p = mp;
-    }
-
-
-    /**
-     * add one element in List.
-     * 
-     * @param pelement PElement
-     *            
-     */
-    public void addP( PElement pelement )
-    {
-        m_p.add( pelement );
-    }
-
-
-    /**
-     * transform this object to Node.
-     * 
-     * @param father father document for create Node
-     * @return node
-     */
-    public Node getNode( Document father )
-    {
-        Element capability = father.createElement( "capability" );
-        capability.setAttribute( "name", getName() );
-        for ( int i = 0; i < getP().size(); i++ )
-        {
-            capability.appendChild( ( ( PElement ) ( getP().get( i ) ) ).getNode( father ) );
-        }
-        return capability;
-    }
-
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Category.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Category.java
deleted file mode 100644
index 75086da..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Category.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-/**
- * describe and store category node.
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-
-public class Category
-{
-    /**
-     * id of the category.
-     */
-    private String m_id;
-
-
-    /**
-     * get the id attribute.
-     * 
-     * @return id
-     */
-    public String getId()
-    {
-        return m_id;
-    }
-
-
-    /**
-     * set the id attribute.
-     * @param id new id value
-     */
-    public void setId( String id )
-    {
-        m_id = id;
-    }
-
-
-    /**
-     * transform this object to node.
-     * @param father father document for create Node
-     * @return node
-     */
-    public Node getNode( Document father )
-    {
-        Element category = father.createElement( "category" );
-        category.setAttribute( "id", getId() );
-        return category;
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Config.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Config.java
deleted file mode 100644
index c2d12c7..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Config.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.net.URI;
-
-
-/**
- * this class is used to store some user information about configuration of the plugin.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- *
- */
-public class Config
-{
-    private boolean m_pathRelative; // use relative or absolute path in repository.xml
-    private boolean m_remoteFile; // deploy file on remote server
-    private URI m_remoteBundle; // public address of deployed bundle
-
-
-    /**
-     * constructor: set default configuration: use relative path and don't upload file.
-     */
-    public Config()
-    {
-        // default configuration
-        m_pathRelative = true;
-        m_remoteFile = false;
-        m_remoteBundle = null;
-    }
-
-
-    /**
-     * @param value enable to use relative path
-     */
-    public void setPathRelative( boolean value )
-    {
-        m_pathRelative = value;
-    }
-
-
-    /**
-     * @param value enable when uploading
-     */
-    public void setRemoteFile( boolean value )
-    {
-        m_remoteFile = value;
-    }
-
-
-    /**
-     * @param value public address of deployed bundle
-     */
-    public void setRemoteBundle( URI value )
-    {
-        m_remoteBundle = value;
-    }
-
-
-    /**
-     * @return true if plugin uses relative path, else false
-     */
-    public boolean isPathRelative()
-    {
-        return m_pathRelative;
-    }
-
-
-    /**
-     * @return true if the file will be uploaded, else false
-     */
-    public boolean isRemoteFile()
-    {
-        return m_remoteFile;
-    }
-
-
-    /**
-     * @return public address of deployed bundle
-     */
-    public URI getRemoteBundle()
-    {
-        return m_remoteBundle;
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ExtractBindexInfo.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ExtractBindexInfo.java
deleted file mode 100644
index 86aee85..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ExtractBindexInfo.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.osgi.impl.bundle.obr.resource.BundleInfo;
-import org.osgi.impl.bundle.obr.resource.CapabilityImpl;
-import org.osgi.impl.bundle.obr.resource.RepositoryImpl;
-import org.osgi.impl.bundle.obr.resource.RequirementImpl;
-import org.osgi.impl.bundle.obr.resource.ResourceImpl;
-import org.osgi.impl.bundle.obr.resource.VersionRange;
-
-
-/**
- * this class is used to configure bindex and get information built by bindex about targeted bundle.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class ExtractBindexInfo
-{
-
-    /**
-     * attribute get from bindex which describe targeted resource.
-     */
-    private ResourceImpl m_resource;
-
-
-    /**
-     * configure bindex and build information.
-     * @param repoFilename URI on OBR descriptor file
-     * @param outFile path on targeted jar-file
-     * @throws MojoExecutionException occurs if bindex configuration failed
-     */
-    public ExtractBindexInfo( URI repoFilename, String outFile ) throws MojoExecutionException
-    {
-
-        m_resource = null;
-        RepositoryImpl repository = null;
-        try
-        {
-            repository = new RepositoryImpl( new File( repoFilename ).getAbsoluteFile().toURL() );
-        }
-        catch ( MalformedURLException e )
-        {
-            e.printStackTrace();
-            throw new MojoExecutionException( "MalformedURLException" );
-        }
-        BundleInfo info = null;
-        try
-        {
-            info = new BundleInfo( repository, new File( outFile ) );
-        }
-        catch ( Exception e )
-        {
-            e.printStackTrace();
-            throw new MojoExecutionException( "Exception" );
-        }
-
-        try
-        {
-            m_resource = info.build();
-        }
-        catch ( Exception e )
-        {
-            e.printStackTrace();
-            throw new MojoExecutionException( "Exception" );
-        }
-    }
-
-
-    /**
-     * extract capabilities from bindex information.
-     * @return bundle capabilities List
-     */
-    public List getCapabilities()
-    {
-        List list = new ArrayList();
-        Collection res = m_resource.getCapabilityList();
-        Iterator it = res.iterator();
-        while ( it.hasNext() )
-        {
-            Capability capability = new Capability();
-            CapabilityImpl ci = ( CapabilityImpl ) it.next();
-            capability.setName( ci.getName() );
-            // System.out.println(ci.getName()) ;
-            if ( !( ci.getName().compareTo( "bundle" ) == 0 ) )
-            {
-                Map properties = ci.getProperties();
-                for ( Iterator e = properties.entrySet().iterator(); e.hasNext(); )
-                {
-                    PElement p = new PElement();
-                    Map.Entry entry = ( Map.Entry ) e.next();
-                    String key = ( String ) entry.getKey();
-                    List values = ( List ) entry.getValue();
-                    for ( Iterator v = values.iterator(); v.hasNext(); )
-                    {
-                        Object value = v.next();
-                        p.setN( key );
-                        if ( value != null )
-                        {
-                            p.setV( value.toString() );
-                        }
-                        else
-                        {
-                            System.out.println( "Missing value " + key );
-                        }
-                        String type = null;
-                        if ( value instanceof Number )
-                        {
-                            type = "number";
-                        }
-                        else
-                        {
-                            if ( value instanceof VersionRange )
-                            {
-                                type = "version";
-                            }
-                        }
-                        if ( type != null )
-                        {
-                            p.setT( type );
-                        }
-                    }
-                    capability.addP( p );
-                }
-
-                list.add( capability );
-            }
-        }
-        return list;
-    }
-
-
-    /**
-     * extract requirement from bindex information.
-     * @return bundle requirement List
-     */
-    public List getRequirement()
-    {
-        List list = new ArrayList();
-        Collection res = m_resource.getRequirementList();
-        Iterator it = res.iterator();
-        while ( it.hasNext() )
-        {
-            RequirementImpl ci = ( RequirementImpl ) it.next();
-            Require require = new Require();
-
-            require.setExtend( String.valueOf( ci.isExtend() ) );
-            require.setMultiple( String.valueOf( ci.isMultiple() ) );
-            require.setOptional( String.valueOf( ci.isOptional() ) );
-            require.setName( ci.getName() );
-            require.setFilter( ci.getFilter() );
-            require.setValue( ci.getComment() );
-            list.add( require );
-        }
-        return list;
-    }
-
-
-    /**
-     * extract symbolic name from bindex information.
-     * @return bundle symbolic name
-     */
-    public String getSymbolicName()
-    {
-        return m_resource.getSymbolicName();
-    }
-
-
-    /**
-     * extract version from bindex information.
-     * @return bundle version
-     */
-    public String getVersion()
-    {
-        if ( m_resource.getVersion() != null )
-        {
-            return m_resource.getVersion().toString();
-        }
-
-        return null;
-    }
-
-
-    /**
-     * extract presentation name from bindex information.
-     * @return bundle presentation name
-     */
-    public String getPresentationName()
-    {
-        return m_resource.getPresentationName();
-    }
-
-
-    /**
-     * extract copyright from bindex information.
-     * @return bundle copyright
-     */
-    public String getCopyright()
-    {
-        return m_resource.getCopyright();
-    }
-
-
-    /**
-     * extract description from bindex information.
-     * @return bundle description
-     */
-    public String getDescription()
-    {
-        return m_resource.getDescription();
-    }
-
-
-    /**
-     * extract documentation from bindex information.
-     * @return bundle documentation
-     */
-    public String getDocumentation()
-    {
-        if ( m_resource.getDocumentation() != null )
-        {
-            return m_resource.getDocumentation().toString();
-        }
-
-        return null;
-    }
-
-
-    /**
-     * extract license from bindex information.
-     * @return bundle license
-     */
-    public String getLicense()
-    {
-        if ( m_resource.getLicense() != null )
-        {
-            return m_resource.getLicense().toString();
-        }
-
-        return null;
-    }
-
-
-    /**
-     * extract source from bindex information.
-     * @return bundle source
-     */
-    public String getSource()
-    {
-        if ( m_resource.getSource() != null )
-        {
-            return m_resource.getSource().toString();
-        }
-
-        return null;
-    }
-
-
-    /**
-     * extract source from bindex information.
-     * @return bundle source
-     */
-    public String getId()
-    {
-        if ( m_resource.getId() != null )
-        {
-            return m_resource.getId();
-        }
-
-        return null;
-    }
-
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrCleanRepo.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrCleanRepo.java
deleted file mode 100644
index f89d08d..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrCleanRepo.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.URI;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Result;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-
-/**
- * Clean an OBR repository by finding and removing missing resources.
- * 
- * @requiresProject false
- * @goal clean
- * @phase clean
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class ObrCleanRepo extends AbstractMojo
-{
-    /**
-     * OBR Repository.
-     * 
-     * @parameter expression="${obrRepository}"
-     */
-    private String obrRepository;
-
-    /**
-     * Local Repository.
-     * 
-     * @parameter expression="${localRepository}"
-     * @required
-     * @readonly
-     */
-    private ArtifactRepository localRepository;
-
-
-    public void execute()
-    {
-        if ( "NONE".equalsIgnoreCase( obrRepository ) )
-        {
-            getLog().info( "OBR clean disabled (enable with -DobrRepository)" );
-            return;
-        }
-
-        try
-        {
-            // Compute local repository location
-            URI repositoryXml = ObrUtils.findRepositoryXml( localRepository.getBasedir(), obrRepository );
-            if ( !"file".equals( repositoryXml.getScheme() ) )
-            {
-                getLog().error( "The repository URI " + repositoryXml + " is not a local file" );
-                return;
-            }
-
-            File repositoryFile = new File( repositoryXml );
-
-            // Check if the file exist
-            if ( !repositoryFile.exists() )
-            {
-                getLog().error( "The repository file " + repositoryFile + " does not exist" );
-                return;
-            }
-
-            getLog().info( "Cleaning..." );
-
-            Document doc = parseFile( repositoryFile, initConstructor() );
-            Node finalDocument = cleanDocument( doc.getDocumentElement() ); // Analyze existing repository.
-
-            if ( finalDocument == null )
-            {
-                getLog().info( "Nothing to clean in " + repositoryFile );
-            }
-            else
-            {
-                writeToFile( repositoryXml, finalDocument ); // Write the new file
-                getLog().info( "Repository " + repositoryFile + " cleaned" );
-            }
-        }
-        catch ( Exception e )
-        {
-            getLog().error( "Exception while cleaning local OBR: " + e.getLocalizedMessage(), e );
-        }
-    }
-
-
-    /**
-     * Analyze the given XML tree (DOM of the repository file) and remove missing resources.
-     * 
-     * @param elem : the input XML tree
-     * @return the cleaned XML tree
-     */
-    private Element cleanDocument( Element elem )
-    {
-        String localRepoPath = localRepository.getBasedir();
-        NodeList nodes = elem.getElementsByTagName( "resource" );
-        List toRemove = new ArrayList();
-
-        // First, look for missing resources
-        for ( int i = 0; i < nodes.getLength(); i++ )
-        {
-            Element n = ( Element ) nodes.item( i );
-            String value = n.getAttribute( "uri" );
-
-            File file = new File( localRepoPath, value );
-            if ( !file.exists() )
-            {
-                getLog().info(
-                    "The bundle " + n.getAttribute( "presentationname" ) + " - " + n.getAttribute( "version" )
-                        + " will be removed" );
-                toRemove.add( n );
-            }
-        }
-
-        Date d = new Date();
-        if ( toRemove.size() > 0 )
-        {
-            // Then remove missing resources.
-            for ( int i = 0; i < toRemove.size(); i++ )
-            {
-                elem.removeChild( ( Node ) toRemove.get( i ) );
-            }
-
-            // If we have to remove resources, we need to update 'lastmodified' attribute
-            SimpleDateFormat format = new SimpleDateFormat( "yyyyMMddHHmmss.SSS" );
-            d.setTime( System.currentTimeMillis() );
-            elem.setAttribute( "lastmodified", format.format( d ) );
-            return elem;
-        }
-
-        return null;
-    }
-
-
-    /**
-     * Initialize the document builder from Xerces.
-     * 
-     * @return DocumentBuilder ready to create new document
-     * @throws MojoExecutionException : occurs when the instantiation of the document builder fails
-     */
-    private DocumentBuilder initConstructor() throws MojoExecutionException
-    {
-        DocumentBuilder constructor = null;
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        try
-        {
-            constructor = factory.newDocumentBuilder();
-        }
-        catch ( ParserConfigurationException e )
-        {
-            getLog().error( "Unable to create a new xml document" );
-            throw new MojoExecutionException( "Cannot create the Document Builder : " + e.getMessage() );
-        }
-        return constructor;
-    }
-
-
-    /**
-     * Open an XML file.
-     * 
-     * @param filename : XML file path
-     * @param constructor DocumentBuilder get from xerces
-     * @return Document which describes this file
-     * @throws MojoExecutionException occurs when the given file cannot be opened or is a valid XML file.
-     */
-    private Document parseFile( File file, DocumentBuilder constructor ) throws MojoExecutionException
-    {
-        if ( constructor == null )
-        {
-            return null;
-        }
-        // The document is the root of the DOM tree.
-        File targetFile = file.getAbsoluteFile();
-        getLog().info( "Parsing " + targetFile );
-        Document doc = null;
-        try
-        {
-            doc = constructor.parse( targetFile );
-        }
-        catch ( SAXException e )
-        {
-            getLog().error( "Cannot parse " + targetFile + " : " + e.getMessage() );
-            throw new MojoExecutionException( "Cannot parse " + targetFile + " : " + e.getMessage() );
-        }
-        catch ( IOException e )
-        {
-            getLog().error( "Cannot open " + targetFile + " : " + e.getMessage() );
-            throw new MojoExecutionException( "Cannot open " + targetFile + " : " + e.getMessage() );
-        }
-        return doc;
-    }
-
-
-    /**
-     * write a Node in a xml file.
-     * 
-     * @param outputFilename URI to the output file
-     * @param treeToBeWrite Node root of the tree to be write in file
-     * @throws MojoExecutionException if the plugin failed
-     */
-    private void writeToFile( URI outputFilename, Node treeToBeWrite ) throws MojoExecutionException
-    {
-        // init the transformer
-        Transformer transformer = null;
-        TransformerFactory tfabrique = TransformerFactory.newInstance();
-        try
-        {
-            transformer = tfabrique.newTransformer();
-        }
-        catch ( TransformerConfigurationException e )
-        {
-            getLog().error( "Unable to write to file: " + outputFilename.toString() );
-            throw new MojoExecutionException( "Unable to write to file: " + outputFilename.toString() + " : "
-                + e.getMessage() );
-        }
-        Properties proprietes = new Properties();
-        proprietes.put( "method", "xml" );
-        proprietes.put( "version", "1.0" );
-        proprietes.put( "encoding", "ISO-8859-1" );
-        proprietes.put( "standalone", "yes" );
-        proprietes.put( "indent", "yes" );
-        proprietes.put( "omit-xml-declaration", "no" );
-        transformer.setOutputProperties( proprietes );
-
-        DOMSource input = new DOMSource( treeToBeWrite );
-
-        File fichier = new File( outputFilename );
-        FileOutputStream flux = null;
-        try
-        {
-            flux = new FileOutputStream( fichier );
-        }
-        catch ( FileNotFoundException e )
-        {
-            getLog().error( "Unable to write to file: " + fichier.getName() );
-            throw new MojoExecutionException( "Unable to write to file: " + fichier.getName() + " : " + e.getMessage() );
-        }
-        Result output = new StreamResult( flux );
-        try
-        {
-            transformer.transform( input, output );
-        }
-        catch ( TransformerException e )
-        {
-            throw new MojoExecutionException( "Unable to write to file: " + outputFilename.toString() + " : "
-                + e.getMessage() );
-        }
-
-        try
-        {
-            flux.flush();
-            flux.close();
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "IOException when closing file : " + e.getMessage() );
-        }
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrDeploy.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrDeploy.java
deleted file mode 100644
index 7915082..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrDeploy.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.maven.artifact.manager.WagonManager;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Settings;
-
-
-/**
- * Deploys bundle details to a remote OBR repository (life-cycle goal)
- * 
- * @goal deploy
- * @phase deploy
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public final class ObrDeploy extends AbstractMojo
-{
-    /**
-     * When true, ignore remote locking.
-     * 
-     * @parameter expression="${ignoreLock}"
-     */
-    private boolean ignoreLock;
-
-    /**
-     * OBR Repository.
-     * 
-     * @parameter expression="${obrRepository}"
-     */
-    private String obrRepository;
-
-    /**
-     * Project types which this plugin supports.
-     *
-     * @parameter
-     */
-    private List supportedProjectTypes = Arrays.asList( new String[]
-        { "jar", "bundle" } );
-
-    /**
-     * @parameter expression="${project.distributionManagementArtifactRepository}"
-     * @readonly
-     */
-    private ArtifactRepository deploymentRepository;
-
-    /**
-     * Alternative deployment repository. Format: id::layout::url
-     * 
-     * @parameter expression="${altDeploymentRepository}"
-     */
-    private String altDeploymentRepository;
-
-    /**
-     * Local Repository.
-     * 
-     * @parameter expression="${localRepository}"
-     * @required
-     * @readonly
-     */
-    private ArtifactRepository localRepository;
-
-    /**
-     * The Maven project.
-     * 
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * Local Maven settings.
-     * 
-     * @parameter expression="${settings}"
-     * @required
-     * @readonly
-     */
-    private Settings settings;
-
-    /**
-     * The Wagon manager.
-     * 
-     * @component
-     */
-    private WagonManager m_wagonManager;
-
-
-    public void execute() throws MojoExecutionException
-    {
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
-        {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
-            return;
-        }
-        else if ( "NONE".equalsIgnoreCase( obrRepository ) )
-        {
-            getLog().info( "OBR update disabled (enable with -DobrRepository)" );
-            return;
-        }
-
-        URI tempURI = ObrUtils.findRepositoryXml( "", obrRepository );
-        String repositoryName = new File( tempURI.getPath() ).getName();
-
-        Log log = getLog();
-        ObrUpdate update;
-
-        RemoteFileManager remoteFile = new RemoteFileManager( m_wagonManager, settings, log );
-        openRepositoryConnection( remoteFile );
-
-        // ======== LOCK REMOTE OBR ========
-        log.info( "LOCK " + remoteFile + '/' + repositoryName );
-        remoteFile.lockFile( repositoryName, ignoreLock );
-        File downloadedRepositoryXml = null;
-
-        try
-        {
-            // ======== DOWNLOAD REMOTE OBR ========
-            log.info( "Downloading " + repositoryName );
-            downloadedRepositoryXml = remoteFile.get( repositoryName, ".xml" );
-
-            String mavenRepository = localRepository.getBasedir();
-
-            URI repositoryXml = downloadedRepositoryXml.toURI();
-            URI obrXmlFile = ObrUtils.findObrXml( project.getResources() );
-            URI bundleJar = ObrUtils.findBundleJar( localRepository, project.getArtifact() );
-
-            Config userConfig = new Config();
-            userConfig.setPathRelative( true );
-            userConfig.setRemoteFile( true );
-
-            update = new ObrUpdate( repositoryXml, obrXmlFile, project, bundleJar, mavenRepository, userConfig, log );
-
-            update.updateRepository();
-
-            if ( downloadedRepositoryXml.exists() )
-            {
-                // ======== UPLOAD MODIFIED OBR ========
-                log.info( "Uploading " + repositoryName );
-                remoteFile.put( downloadedRepositoryXml, repositoryName );
-            }
-        }
-        catch ( Exception e )
-        {
-            log.warn( "Exception while updating remote OBR: " + e.getLocalizedMessage(), e );
-        }
-        finally
-        {
-            // ======== UNLOCK REMOTE OBR ========
-            log.info( "UNLOCK " + remoteFile + '/' + repositoryName );
-            remoteFile.unlockFile( repositoryName );
-            remoteFile.disconnect();
-
-            if ( null != downloadedRepositoryXml )
-            {
-                downloadedRepositoryXml.delete();
-            }
-        }
-    }
-
-    private static final Pattern ALT_REPO_SYNTAX_PATTERN = Pattern.compile( "(.+)::(.+)::(.+)" );
-
-
-    private void openRepositoryConnection( RemoteFileManager remoteFile ) throws MojoExecutionException
-    {
-        if ( deploymentRepository == null && altDeploymentRepository == null )
-        {
-            String msg = "Deployment failed: repository element was not specified in the pom inside"
-                + " distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter";
-
-            throw new MojoExecutionException( msg );
-        }
-
-        if ( altDeploymentRepository != null )
-        {
-            getLog().info( "Using alternate deployment repository " + altDeploymentRepository );
-
-            Matcher matcher = ALT_REPO_SYNTAX_PATTERN.matcher( altDeploymentRepository );
-            if ( !matcher.matches() )
-            {
-                throw new MojoExecutionException( "Invalid syntax for alternative repository \""
-                    + altDeploymentRepository + "\". Use \"id::layout::url\"." );
-            }
-
-            remoteFile.connect( matcher.group( 1 ).trim(), matcher.group( 3 ).trim() );
-        }
-        else
-        {
-            remoteFile.connect( deploymentRepository.getId(), deploymentRepository.getUrl() );
-        }
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrDeployFile.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrDeployFile.java
deleted file mode 100644
index ca673f0..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrDeployFile.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.maven.artifact.manager.WagonManager;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Settings;
-
-
-/**
- * Deploys bundle details to a remote OBR repository (command-line goal)
- * 
- * @requiresProject false
- * @goal deploy-file
- * @phase deploy
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public final class ObrDeployFile extends AbstractFileMojo
-{
-    /**
-     * When true, ignore remote locking.
-     * 
-     * @parameter expression="${ignoreLock}"
-     */
-    private boolean ignoreLock;
-
-    /**
-     * OBR Repository.
-     * 
-     * @parameter expression="${obrRepository}"
-     */
-    private String obrRepository;
-
-    /**
-     * Project types which this plugin supports.
-     *
-     * @parameter
-     */
-    private List supportedProjectTypes = Arrays.asList( new String[]
-        { "jar", "bundle" } );
-
-    /**
-     * Remote repository id, used to lookup authentication settings.
-     *
-     * @parameter expression="${repositoryId}" default-value="remote-repository"
-     * @required
-     */
-    private String repositoryId;
-
-    /**
-     * Remote OBR repository URL, where the bundle details are to be uploaded.
-     *
-     * @parameter expression="${url}"
-     * @required
-     */
-    private String url;
-
-    /**
-     * Optional public URL where the bundle has been deployed.
-     *
-     * @parameter expression="${bundleUrl}"
-     */
-    private String bundleUrl;
-
-    /**
-     * Local Repository.
-     * 
-     * @parameter expression="${localRepository}"
-     * @required
-     * @readonly
-     */
-    private ArtifactRepository localRepository;
-
-    /**
-     * Local Maven settings.
-     * 
-     * @parameter expression="${settings}"
-     * @required
-     * @readonly
-     */
-    private Settings settings;
-
-    /**
-     * The Wagon manager.
-     * 
-     * @component
-     */
-    private WagonManager m_wagonManager;
-
-
-    public void execute() throws MojoExecutionException
-    {
-        MavenProject project = getProject();
-
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
-        {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
-            return;
-        }
-        else if ( "NONE".equalsIgnoreCase( obrRepository ) )
-        {
-            getLog().info( "OBR update disabled (enable with -DobrRepository)" );
-            return;
-        }
-
-        URI tempURI = ObrUtils.findRepositoryXml( "", obrRepository );
-        String repositoryName = new File( tempURI.getPath() ).getName();
-
-        Log log = getLog();
-        ObrUpdate update;
-
-        RemoteFileManager remoteFile = new RemoteFileManager( m_wagonManager, settings, log );
-        remoteFile.connect( repositoryId, url );
-
-        // ======== LOCK REMOTE OBR ========
-        log.info( "LOCK " + remoteFile + '/' + repositoryName );
-        remoteFile.lockFile( repositoryName, ignoreLock );
-        File downloadedRepositoryXml = null;
-
-        try
-        {
-            // ======== DOWNLOAD REMOTE OBR ========
-            log.info( "Downloading " + repositoryName );
-            downloadedRepositoryXml = remoteFile.get( repositoryName, ".xml" );
-
-            String mavenRepository = localRepository.getBasedir();
-
-            URI repositoryXml = downloadedRepositoryXml.toURI();
-            URI obrXmlFile = ObrUtils.toFileURI( obrXml );
-            URI bundleJar;
-
-            if ( null == file )
-            {
-                bundleJar = ObrUtils.findBundleJar( localRepository, project.getArtifact() );
-            }
-            else
-            {
-                bundleJar = file.toURI();
-            }
-
-            URI remoteBundleURI = null;
-            if ( null != bundleUrl )
-            {
-                remoteBundleURI = URI.create( bundleUrl );
-            }
-            else if ( null != file )
-            {
-                remoteBundleURI = URI.create( localRepository.pathOf( project.getArtifact() ) );
-            }
-
-            Config userConfig = new Config();
-            userConfig.setRemoteBundle( remoteBundleURI );
-            userConfig.setPathRelative( true );
-            userConfig.setRemoteFile( true );
-
-            update = new ObrUpdate( repositoryXml, obrXmlFile, project, bundleJar, mavenRepository, userConfig, log );
-
-            update.updateRepository();
-
-            if ( downloadedRepositoryXml.exists() )
-            {
-                // ======== UPLOAD MODIFIED OBR ========
-                log.info( "Uploading " + repositoryName );
-                remoteFile.put( downloadedRepositoryXml, repositoryName );
-            }
-        }
-        catch ( Exception e )
-        {
-            log.warn( "Exception while updating remote OBR: " + e.getLocalizedMessage(), e );
-        }
-        finally
-        {
-            // ======== UNLOCK REMOTE OBR ========
-            log.info( "UNLOCK " + remoteFile + '/' + repositoryName );
-            remoteFile.unlockFile( repositoryName );
-            remoteFile.disconnect();
-
-            if ( null != downloadedRepositoryXml )
-            {
-                downloadedRepositoryXml.delete();
-            }
-        }
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrInstall.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrInstall.java
deleted file mode 100644
index 8d0207f..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrInstall.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.felix.obr.plugin.Config;
-import org.apache.felix.obr.plugin.ObrUpdate;
-import org.apache.felix.obr.plugin.ObrUtils;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-
-
-/**
- * Installs bundle details in the local OBR repository (life-cycle goal)
- * 
- * @goal install
- * @phase install
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public final class ObrInstall extends AbstractMojo
-{
-    /**
-     * OBR Repository.
-     * 
-     * @parameter expression="${obrRepository}"
-     */
-    private String obrRepository;
-
-    /**
-     * Project types which this plugin supports.
-     *
-     * @parameter
-     */
-    private List supportedProjectTypes = Arrays.asList( new String[]
-        { "jar", "bundle" } );
-
-    /**
-     * Local Repository.
-     * 
-     * @parameter expression="${localRepository}"
-     * @required
-     * @readonly
-     */
-    private ArtifactRepository localRepository;
-
-    /**
-     * The Maven project.
-     * 
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-
-    public void execute()
-    {
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
-        {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
-            return;
-        }
-        else if ( "NONE".equalsIgnoreCase( obrRepository ) )
-        {
-            getLog().info( "OBR update disabled (enable with -DobrRepository)" );
-            return;
-        }
-
-        Log log = getLog();
-        ObrUpdate update;
-
-        try
-        {
-            String mavenRepository = localRepository.getBasedir();
-
-            URI repositoryXml = ObrUtils.findRepositoryXml( mavenRepository, obrRepository );
-            URI obrXmlFile = ObrUtils.findObrXml( project.getResources() );
-            URI bundleJar = ObrUtils.findBundleJar( localRepository, project.getArtifact() );
-
-            Config userConfig = new Config();
-
-            update = new ObrUpdate( repositoryXml, obrXmlFile, project, bundleJar, mavenRepository, userConfig, log );
-
-            update.updateRepository();
-        }
-        catch ( Exception e )
-        {
-            log.warn( "Exception while updating local OBR: " + e.getLocalizedMessage(), e );
-        }
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrInstallFile.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrInstallFile.java
deleted file mode 100644
index 2b22d57..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrInstallFile.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-
-
-/**
- * Installs bundle details in the local OBR repository (command-line goal)
- * 
- * @requiresProject false
- * @goal install-file
- * @phase install
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public final class ObrInstallFile extends AbstractFileMojo
-{
-    /**
-     * OBR Repository.
-     * 
-     * @parameter expression="${obrRepository}"
-     */
-    private String obrRepository;
-
-    /**
-     * Project types which this plugin supports.
-     *
-     * @parameter
-     */
-    private List supportedProjectTypes = Arrays.asList( new String[]
-        { "jar", "bundle" } );
-
-    /**
-     * Local Repository.
-     * 
-     * @parameter expression="${localRepository}"
-     * @required
-     * @readonly
-     */
-    private ArtifactRepository localRepository;
-
-
-    public void execute() throws MojoExecutionException
-    {
-        MavenProject project = getProject();
-
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
-        {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
-            return;
-        }
-        else if ( "NONE".equalsIgnoreCase( obrRepository ) )
-        {
-            getLog().info( "OBR update disabled (enable with -DobrRepository)" );
-            return;
-        }
-
-        Log log = getLog();
-        ObrUpdate update;
-
-        String mavenRepository = localRepository.getBasedir();
-
-        URI repositoryXml = ObrUtils.findRepositoryXml( mavenRepository, obrRepository );
-        URI obrXmlFile = ObrUtils.toFileURI( obrXml );
-        URI bundleJar;
-
-        if ( null == file )
-        {
-            bundleJar = ObrUtils.findBundleJar( localRepository, project.getArtifact() );
-        }
-        else
-        {
-            bundleJar = file.toURI();
-        }
-
-        Config userConfig = new Config();
-
-        update = new ObrUpdate( repositoryXml, obrXmlFile, project, bundleJar, mavenRepository, userConfig, log );
-
-        update.updateRepository();
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrUpdate.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrUpdate.java
deleted file mode 100644
index 27dfd7e..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrUpdate.java
+++ /dev/null
@@ -1,582 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.URI;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Result;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-
-/**
- * this class parse the old repository.xml file build the bundle resource description and update the repository.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class ObrUpdate
-{
-    /**
-     * generate the date format to insert it in repository descriptor file.
-     */
-    static SimpleDateFormat m_format = new SimpleDateFormat( "yyyyMMddHHmmss.SSS" );
-
-    /**
-     * logger for this plugin.
-     */
-    private Log m_logger;
-
-    /**
-     * name and path to the repository descriptor file.
-     */
-    private URI m_repositoryXml;
-
-    /**
-     * name and path to the obr.xml file.
-     */
-    private URI m_obrXml;
-
-    /**
-     * name and path to the bundle jar file.
-     */
-    private URI m_bundleJar;
-
-    /**
-     * maven project description.
-     */
-    private MavenProject m_project;
-
-    /**
-     * user configuration information.
-     */
-    private Config m_userConfig;
-
-    /**
-     * used to build another xml document.
-     */
-    private DocumentBuilder m_documentBuilder;
-
-    /**
-     * root on parent document.
-     */
-    private Document m_repositoryDoc;
-
-    /**
-     * used to store bundle information.
-     */
-    private ResourcesBundle m_resourceBundle;
-
-    /**
-     * base URI used to relativize bundle URIs.
-     */
-    private URI m_baseURI;
-
-
-    /**
-     * initialize information.
-     * @param repositoryXml path to the repository descriptor file
-     * @param obrXml path and filename to the obr.xml file
-     * @param project maven project description
-     * @param bundleJar path to the bundle jar file
-     * @param mavenRepositoryPath path to the local maven repository
-     * @param userConfig user information
-     * @param logger plugin logger
-     */
-    public ObrUpdate( URI repositoryXml, URI obrXml, MavenProject project, URI bundleJar, String mavenRepositoryPath,
-        Config userConfig, Log logger )
-    {
-        m_bundleJar = bundleJar;
-        m_repositoryXml = repositoryXml;
-        m_obrXml = obrXml;
-        m_project = project;
-        m_logger = logger;
-
-        m_userConfig = userConfig;
-
-        m_resourceBundle = new ResourcesBundle( logger );
-
-        if ( userConfig.isRemoteFile() )
-        {
-            m_baseURI = ObrUtils.toFileURI( mavenRepositoryPath );
-        }
-        else
-        {
-            m_baseURI = m_repositoryXml;
-        }
-    }
-
-
-    /**
-     * update the repository descriptor file. parse the old repository descriptor file, get the old reference of the bundle or determine the id for a new bundle, extract information from bindex set the new information in descriptor file and save it.
-     * @throws MojoExecutionException if the plugin failed
-     */
-    public void updateRepository() throws MojoExecutionException
-    {
-        m_logger.debug( " (f) repositoryXml = " + m_repositoryXml );
-        m_logger.debug( " (f) bundleJar = " + m_bundleJar );
-        m_logger.debug( " (f) obrXml = " + m_obrXml );
-
-        m_documentBuilder = initDocumentBuilder();
-
-        if ( m_documentBuilder == null )
-        {
-            return;
-        }
-
-        // get the file size
-        File bundleFile = new File( m_bundleJar );
-        if ( bundleFile.exists() )
-        {
-            URI resourceURI = m_userConfig.getRemoteBundle();
-            if ( null == resourceURI )
-            {
-                resourceURI = m_bundleJar;
-                if ( m_userConfig.isPathRelative() )
-                {
-                    resourceURI = ObrUtils.getRelativeURI( m_baseURI, resourceURI );
-                }
-            }
-
-            m_resourceBundle.setSize( String.valueOf( bundleFile.length() ) );
-            m_resourceBundle.setUri( resourceURI.toASCIIString() );
-        }
-        else
-        {
-            m_logger.error( "file doesn't exist: " + m_bundleJar );
-            return;
-        }
-
-        // parse repository
-        if ( parseRepositoryXml() == -1 )
-        {
-            return;
-        }
-
-        // parse the obr.xml file
-        if ( m_obrXml != null )
-        {
-            m_logger.info( "Adding " + m_obrXml );
-
-            // URL url = getClass().getResource("/SchemaObr.xsd");
-            // TODO validate obr.xml file
-
-            Document obrXmlDoc = parseFile( m_obrXml, m_documentBuilder );
-            if ( obrXmlDoc == null )
-            {
-                return;
-            }
-
-            Node obrXmlRoot = obrXmlDoc.getDocumentElement();
-
-            // add contents to resource bundle
-            sortObrXml( obrXmlRoot );
-        }
-
-        ExtractBindexInfo bindexExtractor;
-        try
-        {
-            // use bindex to extract bundle information
-            bindexExtractor = new ExtractBindexInfo( m_repositoryXml, m_bundleJar.getPath() );
-        }
-        catch ( MojoExecutionException e )
-        {
-            m_logger.error( "unable to build Bindex informations" );
-            e.printStackTrace();
-
-            throw new MojoExecutionException( "BindexException" );
-        }
-
-        m_resourceBundle.construct( m_project, bindexExtractor );
-
-        Element rootElement = m_repositoryDoc.getDocumentElement();
-        if ( !walkOnTree( rootElement ) )
-        {
-            // the correct resource node was not found, we must create it
-            // we compute the new id
-            String id = m_resourceBundle.getId();
-            searchRepository( rootElement, id );
-        }
-
-        // the repository.xml file have been modified, so we save it
-        m_logger.info( "Writing OBR metadata" );
-        writeToFile( m_repositoryXml, rootElement );
-    }
-
-
-    /**
-     * init the document builder from xerces.
-     * @return DocumentBuilder ready to create new document
-     */
-    private DocumentBuilder initDocumentBuilder()
-    {
-        DocumentBuilder documentBuilder = null;
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        try
-        {
-            documentBuilder = factory.newDocumentBuilder();
-        }
-        catch ( ParserConfigurationException e )
-        {
-            m_logger.error( "unable to create a new xml document" );
-            e.printStackTrace();
-        }
-        return documentBuilder;
-
-    }
-
-
-    /**
-     * Parse the repository descriptor file.
-     * 
-     * @return 0 if the bundle is already in the descriptor, else -1
-     * @throws MojoExecutionException if the plugin failed
-     */
-    private int parseRepositoryXml() throws MojoExecutionException
-    {
-
-        File fout = new File( m_repositoryXml );
-        if ( !fout.exists() )
-        {
-            Document doc = m_documentBuilder.newDocument();
-
-            // create xml tree
-            Date d = new Date();
-            d.setTime( System.currentTimeMillis() );
-            Element root = doc.createElement( "repository" );
-            root.setAttribute( "lastmodified", m_format.format( d ) );
-            root.setAttribute( "name", "MyRepository" );
-            try
-            {
-                writeToFile( m_repositoryXml, root );
-            }
-            catch ( MojoExecutionException e )
-            {
-                e.printStackTrace();
-                throw new MojoExecutionException( "IOException" );
-            }
-        }
-
-        // now we parse the repository.xml file
-        m_repositoryDoc = parseFile( m_repositoryXml, m_documentBuilder );
-        if ( m_repositoryDoc == null )
-        {
-            return -1;
-        }
-
-        return 0;
-    }
-
-
-    /**
-     * transform a xml file to a xerces Document.
-     * @param filename path to the xml file
-     * @param documentBuilder DocumentBuilder get from xerces
-     * @return Document which describe this file
-     */
-    private Document parseFile( URI filename, DocumentBuilder documentBuilder )
-    {
-        if ( documentBuilder == null )
-        {
-            return null;
-        }
-        // The document is the root of the DOM tree.
-        m_logger.info( "Parsing " + filename );
-        Document doc = null;
-        try
-        {
-            doc = documentBuilder.parse( new File( filename ) );
-        }
-        catch ( SAXException e )
-        {
-            e.printStackTrace();
-            return null;
-        }
-        catch ( IOException e )
-        {
-            m_logger.error( "cannot open file: " + filename );
-            e.printStackTrace();
-            return null;
-        }
-        return doc;
-    }
-
-
-    /**
-     * put the information from obr.xml into ressourceBundle object.
-     * @param node Node to the OBR.xml file
-     */
-    private void sortObrXml( Node node )
-    {
-        if ( node.getNodeName().compareTo( "require" ) == 0 )
-        {
-            Require newRequireNode = new Require();
-            NamedNodeMap list = node.getAttributes();
-            try
-            {
-                newRequireNode.setExtend( list.getNamedItem( "extend" ).getNodeValue() );
-                newRequireNode.setMultiple( list.getNamedItem( "multiple" ).getNodeValue() );
-                newRequireNode.setOptional( list.getNamedItem( "optional" ).getNodeValue() );
-                newRequireNode.setFilter( list.getNamedItem( "filter" ).getNodeValue() );
-                newRequireNode.setName( list.getNamedItem( "name" ).getNodeValue() );
-            }
-            catch ( NullPointerException e )
-            {
-                m_logger
-                    .error( "the obr.xml file seems to be invalid in a \"require\" tag (one or more attributes are missing)" );
-                // e.printStackTrace();
-            }
-            newRequireNode.setValue( XmlHelper.getTextContent( node ) );
-            m_resourceBundle.addRequire( newRequireNode );
-        }
-        else if ( node.getNodeName().compareTo( "capability" ) == 0 )
-        {
-            Capability newCapability = new Capability();
-            try
-            {
-                newCapability.setName( node.getAttributes().getNamedItem( "name" ).getNodeValue() );
-            }
-            catch ( NullPointerException e )
-            {
-                m_logger.error( "attribute \"name\" is missing in obr.xml in a \"capability\" tag" );
-                e.printStackTrace();
-            }
-            NodeList list = node.getChildNodes();
-            for ( int i = 0; i < list.getLength(); i++ )
-            {
-                PElement p = new PElement();
-                Node n = list.item( i );
-                Node item = null;
-                // System.err.println(n.getNodeName());
-                if ( n.getNodeName().compareTo( "p" ) == 0 )
-                {
-
-                    p.setN( n.getAttributes().getNamedItem( "n" ).getNodeValue() );
-                    item = n.getAttributes().getNamedItem( "t" );
-                    if ( item != null )
-                    {
-                        p.setT( item.getNodeValue() );
-                    }
-                    item = n.getAttributes().getNamedItem( "v" );
-                    if ( item != null )
-                    {
-                        p.setV( item.getNodeValue() );
-                    }
-
-                    newCapability.addP( p );
-                }
-            }
-            m_resourceBundle.addCapability( newCapability );
-        }
-        else if ( node.getNodeName().compareTo( "category" ) == 0 )
-        {
-            Category newCategory = new Category();
-            newCategory.setId( node.getAttributes().getNamedItem( "id" ).getNodeValue() );
-            m_resourceBundle.addCategory( newCategory );
-        }
-        else
-        {
-            NodeList list = node.getChildNodes();
-            for ( int i = 0; i < list.getLength(); i++ )
-            {
-                sortObrXml( list.item( i ) );
-            }
-        }
-    }
-
-
-    /**
-     * write a Node in a xml file.
-     * @param outputFilename URI to the output file
-     * @param treeToBeWrite Node root of the tree to be write in file
-     * @throws MojoExecutionException if the plugin failed
-     */
-    private void writeToFile( URI outputFilename, Node treeToBeWrite ) throws MojoExecutionException
-    {
-        // init the transformer
-        Transformer transformer = null;
-        TransformerFactory tfabrique = TransformerFactory.newInstance();
-        try
-        {
-            transformer = tfabrique.newTransformer();
-        }
-        catch ( TransformerConfigurationException e )
-        {
-            m_logger.error( "Unable to write to file: " + outputFilename.toString() );
-            e.printStackTrace();
-            throw new MojoExecutionException( "TransformerConfigurationException" );
-        }
-        Properties proprietes = new Properties();
-        proprietes.put( "method", "xml" );
-        proprietes.put( "version", "1.0" );
-        proprietes.put( "encoding", "ISO-8859-1" );
-        proprietes.put( "standalone", "yes" );
-        proprietes.put( "indent", "yes" );
-        proprietes.put( "omit-xml-declaration", "no" );
-        transformer.setOutputProperties( proprietes );
-
-        DOMSource input = new DOMSource( treeToBeWrite );
-
-        File fichier = new File( outputFilename );
-        fichier.getParentFile().mkdirs();
-        FileOutputStream flux = null;
-        try
-        {
-            flux = new FileOutputStream( fichier );
-        }
-        catch ( FileNotFoundException e )
-        {
-            m_logger.error( "Unable to write to file: " + fichier.getName() );
-            e.printStackTrace();
-            throw new MojoExecutionException( "FileNotFoundException" );
-        }
-        Result output = new StreamResult( flux );
-        try
-        {
-            transformer.transform( input, output );
-        }
-        catch ( TransformerException e )
-        {
-            e.printStackTrace();
-            throw new MojoExecutionException( "TransformerException" );
-        }
-
-        try
-        {
-            flux.flush();
-            flux.close();
-        }
-        catch ( IOException e )
-        {
-            e.printStackTrace();
-            throw new MojoExecutionException( "IOException" );
-        }
-
-    }
-
-
-    /**
-     * walk on the tree until the targeted node was found.
-     * @param node targeted node
-     * @return true if the requiered node was found else false.
-     */
-    private boolean walkOnTree( Node node )
-    {
-
-        if ( node.getNodeName().compareTo( "resource" ) == 0 )
-        {
-            return resource( node );
-        }
-
-        // look at the repository node (first in the file)
-        if ( node.getNodeName().compareTo( "repository" ) == 0 )
-        {
-            Date d = new Date();
-            d.setTime( System.currentTimeMillis() );
-            NamedNodeMap nList = node.getAttributes();
-            Node n = nList.getNamedItem( "lastmodified" );
-            n.setNodeValue( m_format.format( d ) );
-        }
-
-        NodeList list = node.getChildNodes();
-        if ( list.getLength() > 0 )
-        {
-            for ( int i = 0; i < list.getLength(); i++ )
-            {
-                if ( walkOnTree( list.item( i ) ) )
-                {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-
-    /**
-     * put the resource bundle in the tree.
-     * @param node Node on the xml file
-     * @param id id of the bundle ressource
-     */
-    private void searchRepository( Node node, String id )
-    {
-        if ( node.getNodeName().compareTo( "repository" ) == 0 )
-        {
-            node.appendChild( m_resourceBundle.getNode( m_repositoryDoc ) );
-            return;
-        }
-
-        m_logger.info( "Second branch..." );
-        NodeList list = node.getChildNodes();
-        if ( list.getLength() > 0 )
-        {
-            for ( int i = 0; i < list.getLength(); i++ )
-            {
-                searchRepository( list.item( i ), id );
-            }
-        }
-    }
-
-
-    /**
-     * compare two node and update the array which compute the smallest free id.
-     * @param node : node
-     * @return true if the node is the same bundle than the ressourceBundle, else false.
-     */
-    private boolean resource( Node node )
-    {
-
-        // this part save all the id free if we need to add resource
-        String id = node.getAttributes().getNamedItem( "id" ).getNodeValue();
-        NamedNodeMap map = node.getAttributes();
-
-        if ( m_resourceBundle.isSameBundleResource( map.getNamedItem( "symbolicname" ).getNodeValue(), map
-            .getNamedItem( "version" ).getNodeValue() ) )
-        {
-            m_resourceBundle.setId( String.valueOf( id ) );
-            node.getParentNode().replaceChild( m_resourceBundle.getNode( m_repositoryDoc ), node );
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrUtils.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrUtils.java
deleted file mode 100644
index 94728a0..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ObrUtils.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.net.URI;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Resource;
-
-
-/**
- * Various OBR utility methods
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class ObrUtils
-{
-    private static final String DOT_XML = ".xml";
-    private static final String REPO_XML = "repository.xml";
-    private static final String OBR_XML = "obr.xml";
-
-
-    /**
-     * @param mavenRepository path to local maven repository
-     * @param obrRepository path to specific repository.xml
-     * @return URI pointing to correct repository.xml
-     */
-    public static URI findRepositoryXml( String mavenRepository, String obrRepository )
-    {
-        String targetPath = obrRepository;
-
-        // Combine location settings into a single repository location
-        if ( null == targetPath || targetPath.trim().length() == 0 || "true".equalsIgnoreCase( targetPath ) )
-        {
-            targetPath = mavenRepository + '/' + REPO_XML;
-        }
-        else if ( !targetPath.toLowerCase().endsWith( DOT_XML ) )
-        {
-            targetPath = targetPath + '/' + REPO_XML;
-        }
-
-        URI uri;
-        try
-        {
-            uri = new URI( targetPath );
-            uri.toURL(); // check protocol
-        }
-        catch ( Exception e )
-        {
-            uri = null;
-        }
-
-        // fall-back to file-system approach
-        if ( null == uri || !uri.isAbsolute() )
-        {
-            uri = new File( targetPath ).toURI();
-        }
-
-        return uri;
-    }
-
-
-    /**
-     * @param resources collection of resource locations
-     * @return URI pointing to correct obr.xml, null if not found
-     */
-    public static URI findObrXml( Collection resources )
-    {
-        for ( Iterator i = resources.iterator(); i.hasNext(); )
-        {
-            Resource resource = ( Resource ) i.next();
-            File obrFile = new File( resource.getDirectory(), OBR_XML );
-            if ( obrFile.exists() )
-            {
-                return obrFile.toURI();
-            }
-        }
-        return null;
-    }
-
-
-    /**
-     * @param repository maven repository
-     * @param artifact maven artifact
-     * @return file URI pointing to artifact in repository
-     */
-    public static URI findBundleJar( ArtifactRepository repository, Artifact artifact )
-    {
-        String baseDir = repository.getBasedir();
-        String artifactPath = repository.pathOf( artifact );
-
-        return toFileURI( baseDir + '/' + artifactPath );
-    }
-
-
-    /**
-     * @param path filesystem path
-     * @return file URI for the path
-     */
-    public static URI toFileURI( String path )
-    {
-        if ( null == path )
-        {
-            return null;
-        }
-        else if ( path.startsWith( "file:" ) )
-        {
-            return URI.create( path );
-        }
-        else
-        {
-            return new File( path ).toURI();
-        }
-    }
-
-
-    /**
-     * @param repositoryXml URI pointing to repository.xml, or directory containing it
-     * @param bundleJar URI pointing to bundle jarfile
-     * @return relative URI to bundle jarfile
-     */
-    public static URI getRelativeURI( URI repositoryXml, URI bundleJar )
-    {
-        try
-        {
-            String repositoryPath = repositoryXml.getPath();
-            if ( repositoryPath.toLowerCase().endsWith( DOT_XML ) )
-            {
-                // remove filename to get containing directory
-                int dirnameIndex = repositoryPath.lastIndexOf( '/' );
-                repositoryPath = repositoryPath.substring( 0, dirnameIndex );
-            }
-
-            URI rootURI = new URI( null, repositoryPath, null );
-            URI localURI = new URI( null, bundleJar.getPath(), null );
-
-            return rootURI.relativize( localURI );
-        }
-        catch ( Exception e )
-        {
-            return bundleJar;
-        }
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/PElement.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/PElement.java
deleted file mode 100644
index 63ae409..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/PElement.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-/**
- * this class describe the p element in a capability tag.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- * 
- */
-public class PElement
-{
-    /**
-     * store the v tag (value).
-     */
-    private String m_v;
-
-    /**
-     * store the t tag (type).
-     */
-    private String m_t;
-
-    /**
-     * store the n tag (name).
-     */
-    private String m_n;
-
-
-    /**
-     * get the n tag.
-     * @return attribute n
-     */
-    public String getN()
-    {
-        return m_n;
-    }
-
-
-    /**
-     * set the n tage.
-     * @param n new value
-     */
-    public void setN( String n )
-    {
-        m_n = n;
-    }
-
-
-    /**
-     * get the t tag.
-     * @return attribute t
-     */
-    public String getT()
-    {
-        return m_t;
-    }
-
-
-    /**
-     * set the t tag.
-     * @param t new value
-     */
-    public void setT( String t )
-    {
-        m_t = t;
-    }
-
-
-    /**
-     * get the v tag.
-     * @return attribute v
-     */
-    public String getV()
-    {
-        return m_v;
-    }
-
-
-    /**
-     * set the v tag.
-     * @param v new value
-     */
-    public void setV( String v )
-    {
-        m_v = v;
-    }
-
-
-    /**
-     * transform this object to node.
-     * @param father father document for create Node
-     * @return node
-     */
-    public Node getNode( Document father )
-    {
-        Element p = father.createElement( "p" );
-        p.setAttribute( "n", getN() );
-        if ( getT() != null )
-        {
-            p.setAttribute( "t", getT() );
-        }
-
-        if ( getV() != null )
-        {
-            p.setAttribute( "v", getV() );
-        }
-
-        return p;
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/PomHelper.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/PomHelper.java
deleted file mode 100644
index 7d81e09..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/PomHelper.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-
-import org.apache.maven.model.Model;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
-
-/**
- * Maven POM helper methods.
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public final class PomHelper
-{
-    public static MavenProject readPom( File pomFile ) throws MojoExecutionException
-    {
-        Reader reader = null;
-
-        try
-        {
-            reader = new FileReader( pomFile );
-            MavenXpp3Reader modelReader = new MavenXpp3Reader();
-            return new MavenProject( modelReader.read( reader ) );
-        }
-        catch ( FileNotFoundException e )
-        {
-            throw new MojoExecutionException( "Error reading specified POM file: " + e.getMessage(), e );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error reading specified POM file: " + e.getMessage(), e );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new MojoExecutionException( "Error reading specified POM file: " + e.getMessage(), e );
-        }
-        finally
-        {
-            IOUtil.close( reader );
-        }
-    }
-
-
-    public static MavenProject buildPom( String groupId, String artifactId, String version, String packaging )
-    {
-        Model model = new Model();
-
-        model.setModelVersion( "4.0.0" );
-        model.setGroupId( groupId );
-        model.setArtifactId( artifactId );
-        model.setVersion( version );
-        model.setPackaging( packaging );
-
-        return new MavenProject( model );
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/RemoteFileManager.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/RemoteFileManager.java
deleted file mode 100644
index 4a01d21..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/RemoteFileManager.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-
-import org.apache.maven.artifact.manager.WagonConfigurationException;
-import org.apache.maven.artifact.manager.WagonManager;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.settings.Proxy;
-import org.apache.maven.settings.Settings;
-import org.apache.maven.wagon.ConnectionException;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.UnsupportedProtocolException;
-import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authorization.AuthorizationException;
-import org.apache.maven.wagon.proxy.ProxyInfo;
-import org.apache.maven.wagon.repository.Repository;
-
-
-/**
- * this class is used to manage all connections by wagon.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class RemoteFileManager
-{
-    /**
-     * save the connection.
-     */
-    private Wagon m_wagon;
-
-    /**
-     * the wagon manager.
-     */
-    private WagonManager m_wagonManager;
-
-    /**
-     * the project settings.
-     */
-    private Settings m_settings;
-
-    /**
-     * logger instance.
-     */
-    private Log m_log;
-
-
-    /**
-     * initialize main information.
-     * @param wm WagonManager provides by maven
-     * @param settings settings of the current project provides by maven
-     * @param log logger
-     */
-    public RemoteFileManager( WagonManager wm, Settings settings, Log log )
-    {
-        m_wagonManager = wm;
-        m_settings = settings;
-        m_log = log;
-        m_wagon = null;
-    }
-
-
-    /**
-     * disconnect the current object.
-     */
-    public void disconnect()
-    {
-        try
-        {
-            if ( m_wagon != null )
-            {
-                m_wagon.disconnect();
-            }
-        }
-        catch ( ConnectionException e )
-        {
-            m_log.error( "Error disconnecting Wagon", e );
-        }
-    }
-
-
-    /**
-     * connect the current object to repository given in constructor.
-     * @param id repository id
-     * @param url repository url
-     * @throws MojoExecutionException
-     */
-    public void connect( String id, String url ) throws MojoExecutionException
-    {
-        Repository repository = new Repository( id, url );
-
-        try
-        {
-            m_wagon = m_wagonManager.getWagon( repository );
-        }
-        catch ( UnsupportedProtocolException e )
-        {
-            throw new MojoExecutionException( "Unsupported protocol: '" + repository.getProtocol() + "'", e );
-        }
-        catch ( WagonConfigurationException e )
-        {
-            throw new MojoExecutionException( "Unable to configure Wagon: '" + repository.getProtocol() + "'", e );
-        }
-
-        try
-        {
-            ProxyInfo proxyInfo = getProxyInfo( m_settings );
-            if ( proxyInfo != null )
-            {
-                m_wagon.connect( repository, m_wagonManager.getAuthenticationInfo( id ), proxyInfo );
-            }
-            else
-            {
-                m_wagon.connect( repository, m_wagonManager.getAuthenticationInfo( id ) );
-            }
-        }
-        catch ( ConnectionException e )
-        {
-            throw new MojoExecutionException( "Connection failed", e );
-        }
-        catch ( AuthenticationException e )
-        {
-            throw new MojoExecutionException( "Authentication failed", e );
-        }
-    }
-
-
-    /**
-     * get a file from the current repository connected.
-     * @param url url to the targeted file
-     * @param suffix suggested file suffix
-     * @return get a file descriptor on the required resource
-     * @throws MojoExecutionException
-     */
-    public File get( String url, String suffix ) throws MojoExecutionException
-    {
-        if ( m_wagon == null )
-        {
-            m_log.error( "must be connected first!" );
-            return null;
-        }
-
-        File file = null;
-        try
-        {
-            file = File.createTempFile( String.valueOf( System.currentTimeMillis() ), suffix );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "I/O problem", e );
-        }
-
-        try
-        {
-            m_wagon.get( url, file );
-        }
-        catch ( TransferFailedException e )
-        {
-            file.delete(); // cleanup on failure
-            throw new MojoExecutionException( "Transfer failed", e );
-        }
-        catch ( AuthorizationException e )
-        {
-            file.delete(); // cleanup on failure
-            throw new MojoExecutionException( "Authorization failed", e );
-        }
-        catch ( ResourceDoesNotExistException e )
-        {
-            file.delete(); // return non-existent file
-        }
-
-        return file;
-    }
-
-
-    /**
-     * put a file on the current repository connected.
-     * @param file file to upload
-     * @param url url to copy file
-     * @throws MojoExecutionException
-     */
-    public void put( File file, String url ) throws MojoExecutionException
-    {
-        if ( m_wagon == null )
-        {
-            m_log.error( "must be connected first!" );
-            return;
-        }
-
-        try
-        {
-            m_wagon.put( file, url );
-        }
-        catch ( TransferFailedException e )
-        {
-            throw new MojoExecutionException( "Transfer failed", e );
-        }
-        catch ( AuthorizationException e )
-        {
-            throw new MojoExecutionException( "Authorization failed", e );
-        }
-        catch ( ResourceDoesNotExistException e )
-        {
-            throw new MojoExecutionException( "Resource does not exist:" + file, e );
-        }
-    }
-
-
-    /**
-     * Convenience method to map a Proxy object from the user system settings to a ProxyInfo object.
-     * @param settings project settings given by maven
-     * @return a proxyInfo object instancied or null if no active proxy is define in the settings.xml
-     */
-    public static ProxyInfo getProxyInfo( Settings settings )
-    {
-        ProxyInfo proxyInfo = null;
-        if ( settings != null && settings.getActiveProxy() != null )
-        {
-            Proxy settingsProxy = settings.getActiveProxy();
-
-            proxyInfo = new ProxyInfo();
-            proxyInfo.setHost( settingsProxy.getHost() );
-            proxyInfo.setType( settingsProxy.getProtocol() );
-            proxyInfo.setPort( settingsProxy.getPort() );
-            proxyInfo.setNonProxyHosts( settingsProxy.getNonProxyHosts() );
-            proxyInfo.setUserName( settingsProxy.getUsername() );
-            proxyInfo.setPassword( settingsProxy.getPassword() );
-        }
-
-        return proxyInfo;
-    }
-
-
-    public void lockFile( String fileName, boolean ignoreLock ) throws MojoExecutionException
-    {
-        if ( !ignoreLock )
-        {
-            int countError = 0;
-            while ( isLockedFile( fileName ) && countError < 2 )
-            {
-                countError++;
-                m_log.warn( "File is currently locked, retry in 10s" );
-                try
-                {
-                    Thread.sleep( 10000 );
-                }
-                catch ( InterruptedException e )
-                {
-                    m_log.warn( "Sleep interrupted" );
-                }
-            }
-
-            if ( countError == 2 )
-            {
-                m_log.error( "File " + fileName + " is locked. Use -DignoreLock to force uploading" );
-                throw new MojoExecutionException( "Remote file locked" );
-            }
-        }
-
-        File file = null;
-        try
-        {
-            // create a non-empty file used to lock the remote file
-            file = File.createTempFile( String.valueOf( System.currentTimeMillis() ), ".lock" );
-
-            Writer writer = new BufferedWriter( new FileWriter( file ) );
-            writer.write( "LOCKED" );
-            writer.close();
-
-            put( file, fileName + ".lock" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "I/O problem", e );
-        }
-        finally
-        {
-            if ( null != file )
-            {
-                file.delete();
-            }
-        }
-    }
-
-
-    public void unlockFile( String fileName ) throws MojoExecutionException
-    {
-        File file = null;
-        try
-        {
-            // clear the contents of the file used to lock the remote file
-            file = File.createTempFile( String.valueOf( System.currentTimeMillis() ), ".lock" );
-
-            Writer writer = new BufferedWriter( new FileWriter( file ) );
-            writer.write( " " ); // write 1 byte to force wagon upload
-            writer.close();
-
-            put( file, fileName + ".lock" );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "I/O problem", e );
-        }
-        finally
-        {
-            if ( null != file )
-            {
-                file.delete();
-            }
-        }
-    }
-
-
-    /**
-     * this method indicates if the targeted file is locked or not.
-     * @param remote connection manager
-     * @param fileName name targeted
-     * @return  true if the required file is locked, else false
-     * @throws MojoExecutionException
-     */
-    public boolean isLockedFile( String fileName ) throws MojoExecutionException
-    {
-        File file = null;
-        try
-        {
-            file = get( fileName + ".lock", ".lock" );
-
-            // file is locked with contents "LOCKED"
-            if ( null != file && file.length() <= 2 )
-            {
-                return false;
-            }
-        }
-        finally
-        {
-            if ( null != file )
-            {
-                file.delete();
-            }
-        }
-
-        return true;
-    }
-
-
-    public String toString()
-    {
-        return m_wagon.getRepository().getUrl();
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Require.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Require.java
deleted file mode 100644
index 370eb38..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/Require.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-/**
- * this class store a Require tag.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class Require
-{
-
-    /**
-     * store the extend attribute.
-     */
-    private String m_extend;
-
-    /**
-     * store the multiple attribute.
-     */
-    private String m_multiple;
-
-    /**
-     * store the optional attribute.
-     */
-    private String m_optional;
-
-    /**
-     * store the name attribute.
-     */
-    private String m_name;
-
-    /**
-     * store the filter attribute.
-     */
-    private String m_filter;
-
-    /**
-     * store the value of the tag.
-     */
-    private String m_value;
-
-
-    /**
-     * get the extend attribute.
-     * @return a string which contains the value of the boolean
-     */
-    public String getExtend()
-    {
-        return m_extend;
-    }
-
-
-    /**
-     * set the extend attribute.
-     * @param extend new value for the extend attribute
-     */
-    public void setExtend( String extend )
-    {
-        m_extend = extend;
-    }
-
-
-    /**
-     * get the filter attribute.
-     * @return m_filter value
-     */
-    public String getFilter()
-    {
-        return m_filter;
-    }
-
-
-    /**
-     * set the filter attribute.
-     * @param filter new value for filter
-     */
-    public void setFilter( String filter )
-    {
-        m_filter = filter;
-    }
-
-
-    /**
-     * get multiple attribute.
-     * @return m_multiple value
-     */
-    public String getMultiple()
-    {
-        return m_multiple;
-    }
-
-
-    /**
-     * set multiple attribute.
-     * @param multiple new value for m_multiple
-     */
-    public void setMultiple( String multiple )
-    {
-        m_multiple = multiple;
-    }
-
-
-    /**
-     * get name attribute.
-     * @return m_name value
-     */
-    public String getName()
-    {
-        return m_name;
-    }
-
-
-    /**
-     * set name attribute.
-     * @param name new value for m_name
-     */
-    public void setName( String name )
-    {
-        m_name = name;
-    }
-
-
-    /**
-     * get the optional attribute.
-     * @return m_optional value
-     */
-    public String getOptional()
-    {
-        return m_optional;
-    }
-
-
-    /**
-     * set the optional attribute.
-     * @param optionnal new value for m_optional
-     */
-    public void setOptional( String optionnal )
-    {
-        m_optional = optionnal;
-    }
-
-
-    /**
-     * get value of the tag.
-     * @return value of this tag
-     */
-    public String getValue()
-    {
-        return m_value;
-    }
-
-
-    /**
-     * set the value of the tag.
-     * @param value new value for this tag
-     */
-    public void setValue( String value )
-    {
-        m_value = value;
-    }
-
-
-    /**
-     * transform this object to Node.
-     * 
-     * @param father father document for create Node
-     * @return node
-     */
-    public Node getNode( Document father )
-    {
-        Element require = father.createElement( "require" );
-        require.setAttribute( "name", getName() );
-        require.setAttribute( "filter", getFilter() );
-        require.setAttribute( "extend", getExtend() );
-        require.setAttribute( "multiple", getMultiple() );
-        require.setAttribute( "optional", getOptional() );
-        XmlHelper.setTextContent( require, getValue() );
-
-        return require;
-    }
-
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ResourcesBundle.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ResourcesBundle.java
deleted file mode 100644
index 1e5f01d..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/ResourcesBundle.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-/**
- * this class describe all information by bundle.
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class ResourcesBundle
-{
-    /**
-     * store the bundle symbolic name.
-     */
-    private String m_symbolicName;
-
-    /**
-     * store the bundle presentation name.
-     */
-    private String m_presentationName;
-
-    /**
-     * store the bundle version.
-     */
-    private String m_version;
-
-    /**
-     * store the bundle URI.
-     */
-    private String m_uri;
-
-    /**
-     * store the bundle description.
-     */
-    private String m_description;
-
-    /**
-     * store the bundle size.
-     */
-    private String m_size;
-
-    /**
-     * store the bundle documentation.
-     */
-    private String m_documentation;
-
-    /**
-     * store the bundle source.
-     */
-    private String m_source;
-
-    /**
-     * store the bundle license.
-     */
-    private String m_license;
-
-    /**
-     * store the bundle id.
-     */
-    private String m_id;
-
-    /**
-     * store the bundle categories.
-     */
-    private List m_category = new ArrayList();
-
-    /**
-     * store the bundle capabilities.
-     */
-    private List m_capability = new ArrayList();
-
-    /**
-     * store the bundle requirement.
-     */
-    private List m_require = new ArrayList();
-
-    /**
-     * get the plugin logger.
-     */
-    private Log m_logger;
-
-
-    /**
-     * initialize logger.
-     * @param log log use by plugin
-     */
-    public ResourcesBundle( Log log )
-    {
-        m_logger = log;
-    }
-
-
-    public List getCapability()
-    {
-        return m_capability;
-    }
-
-
-    public void setCapability( List capability )
-    {
-        m_capability = capability;
-    }
-
-
-    public List getCategory()
-    {
-        return m_category;
-    }
-
-
-    public void setCategory( List category )
-    {
-        m_category = category;
-    }
-
-
-    public String getLicense()
-    {
-        return m_license;
-    }
-
-
-    public void setLicense( String license )
-    {
-        m_license = license;
-    }
-
-
-    public String getDescription()
-    {
-        return m_description;
-    }
-
-
-    public void setDescription( String description )
-    {
-        m_description = description;
-    }
-
-
-    public String getDocumentation()
-    {
-        return m_documentation;
-    }
-
-
-    public void setDocumentation( String documentation )
-    {
-        m_documentation = documentation;
-    }
-
-
-    public String getPresentationName()
-    {
-        return m_presentationName;
-    }
-
-
-    public void setPresentationName( String name )
-    {
-        m_presentationName = name;
-    }
-
-
-    public String getSize()
-    {
-        return m_size;
-    }
-
-
-    public void setSize( String size )
-    {
-        m_size = size;
-    }
-
-
-    public String getSymbolicName()
-    {
-        return m_symbolicName;
-    }
-
-
-    public void setSymbolicName( String name )
-    {
-        m_symbolicName = name;
-    }
-
-
-    public String getUri()
-    {
-        return m_uri;
-    }
-
-
-    public void setUri( String url )
-    {
-        m_uri = url;
-    }
-
-
-    public String getVersion()
-    {
-        return m_version;
-    }
-
-
-    public void setVersion( String version )
-    {
-        m_version = version;
-    }
-
-
-    public List getRequire()
-    {
-        return m_require;
-    }
-
-
-    public void setRequire( List require )
-    {
-        m_require = require;
-    }
-
-
-    public String getSource()
-    {
-        return m_source;
-    }
-
-
-    public void setSource( String source )
-    {
-        m_source = source;
-    }
-
-
-    public String getId()
-    {
-        return m_id;
-    }
-
-
-    public void setId( String id )
-    {
-        m_id = id;
-    }
-
-
-    /**
-     * add a new capability for this bundle description.
-     * @param capability the Capability to add
-     */
-    public void addCapability( Capability capability )
-    {
-        m_capability.add( capability );
-    }
-
-
-    /**
-     * add a new requirement for this bundle description.
-     * @param require th Require to add
-     */
-    public void addRequire( Require require )
-    {
-        m_require.add( require );
-    }
-
-
-    /**
-     * add a new category for this bundle decription.
-     * @param category the Category to add
-     */
-    public void addCategory( Category category )
-    {
-        m_category.add( category );
-    }
-
-
-    /**
-     * transform this object to Node.
-     * tranform all sub-object to node also
-     * @param father father document for create Node
-     * @return node
-     */
-    public Node getNode( Document father )
-    {
-        // return the complete resource tree
-        if ( !isValid() || getId() == null )
-        {
-            m_logger.error( "those properties was not defined:" + getInvalidProperties() );
-            return null;
-        }
-
-        Element resource = father.createElement( "resource" );
-        Element description = father.createElement( "description" );
-        Element size = father.createElement( "size" );
-        Element documentation = father.createElement( "documentation" );
-        Element source = father.createElement( "source" );
-        Element license = father.createElement( "license" );
-
-        resource.setAttribute( "id", getId() );
-        resource.setAttribute( "symbolicname", getSymbolicName() );
-        resource.setAttribute( "presentationname", getPresentationName() );
-        resource.setAttribute( "uri", getUri() );
-        resource.setAttribute( "version", getVersion() );
-
-        XmlHelper.setTextContent( description, getDescription() );
-        resource.appendChild( description );
-
-        XmlHelper.setTextContent( size, getSize() );
-        resource.appendChild( size );
-
-        if ( getDocumentation() != null )
-        {
-            XmlHelper.setTextContent( documentation, getDocumentation() );
-            resource.appendChild( documentation );
-        }
-
-        if ( getSource() != null )
-        {
-            XmlHelper.setTextContent( source, getSource() );
-            resource.appendChild( source );
-        }
-
-        if ( getLicense() != null )
-        {
-            XmlHelper.setTextContent( license, getLicense() );
-            resource.appendChild( license );
-        }
-
-        List list = getNodeCategories( father );
-        for ( int i = 0; i < list.size(); i++ )
-        {
-            resource.appendChild( ( Node ) list.get( i ) );
-        }
-
-        list = getNodeCapabilities( father );
-        for ( int i = 0; i < list.size(); i++ )
-        {
-            resource.appendChild( ( Node ) list.get( i ) );
-        }
-
-        list = getNodeRequirement( father );
-        for ( int i = 0; i < list.size(); i++ )
-        {
-            resource.appendChild( ( Node ) list.get( i ) );
-        }
-
-        return resource;
-    }
-
-
-    /**
-     * this method gets information form pom.xml to complete missing data from those given by user.
-     * @param project project information given by maven
-     * @param ebi bundle information extracted from bindex
-     * @return true
-     */
-    public boolean construct( MavenProject project, ExtractBindexInfo ebi )
-    {
-
-        if ( ebi.getPresentationName() != null )
-        {
-            setPresentationName( ebi.getPresentationName() );
-            if ( project.getName() != null )
-            {
-                m_logger.debug( "pom property override:<presentationname> " + project.getName() );
-            }
-        }
-        else
-        {
-            setPresentationName( project.getName() );
-        }
-
-        if ( ebi.getSymbolicName() != null )
-        {
-            setSymbolicName( ebi.getSymbolicName() );
-            if ( project.getArtifactId() != null )
-            {
-                m_logger.debug( "pom property override:<symbolicname> " + project.getArtifactId() );
-            }
-        }
-        else
-        {
-            setSymbolicName( project.getArtifactId() );
-        }
-
-        if ( ebi.getVersion() != null )
-        {
-            setVersion( ebi.getVersion() );
-            if ( project.getVersion() != null )
-            {
-                m_logger.debug( "pom property override:<version> " + project.getVersion() );
-            }
-        }
-        else
-        {
-            setVersion( project.getVersion() );
-        }
-
-        if ( ebi.getId() != null )
-        {
-            setId( ebi.getId() );
-        }
-
-        if ( ebi.getDescription() != null )
-        {
-            setDescription( ebi.getDescription() );
-            if ( project.getDescription() != null )
-            {
-                m_logger.debug( "pom property override:<description> " + project.getDescription() );
-            }
-        }
-        else
-        {
-            setDescription( project.getDescription() );
-        }
-
-        if ( ebi.getDocumentation() != null )
-        {
-            setDocumentation( ebi.getDocumentation() );
-            if ( project.getUrl() != null )
-            {
-                m_logger.debug( "pom property override:<documentation> " + project.getUrl() );
-            }
-        }
-        else
-        {
-            setDocumentation( project.getUrl() );
-        }
-
-        if ( ebi.getSource() != null )
-        {
-            setSource( ebi.getSource() );
-            if ( project.getScm() != null )
-            {
-                m_logger.debug( "pom property override:<source> " + project.getScm() );
-            }
-        }
-        else
-        {
-            String src = null;
-            if ( project.getScm() != null )
-            {
-                src = project.getScm().getUrl();
-            }
-            setSource( src );
-        }
-
-        if ( ebi.getLicense() != null )
-        {
-            setLicense( ebi.getLicense() );
-            String lic = null;
-            List l = project.getLicenses();
-            Iterator it = l.iterator();
-            while ( it.hasNext() )
-            {
-                if ( it.next() != null )
-                {
-                    m_logger.debug( "pom property override:<license> " + lic );
-                    break;
-                }
-            }
-        }
-        else
-        {
-            String lic = null;
-            List l = project.getLicenses();
-            Iterator it = l.iterator();
-            while ( it.hasNext() )
-            {
-                lic = it.next() + ";";
-            }
-
-            setLicense( lic );
-        }
-
-        // create the first capability (ie : bundle)
-        Capability capability = new Capability();
-        capability.setName( "bundle" );
-        PElement p = new PElement();
-        p.setN( "manifestversion" );
-        p.setV( "2" );
-        capability.addP( p );
-
-        p = new PElement();
-        p.setN( "presentationname" );
-        p.setV( getPresentationName() );
-        capability.addP( p );
-
-        p = new PElement();
-        p.setN( "symbolicname" );
-        p.setV( getSymbolicName() );
-        capability.addP( p );
-
-        p = new PElement();
-        p.setN( "version" );
-        p.setT( "version" );
-        p.setV( getVersion() );
-        capability.addP( p );
-
-        addCapability( capability );
-
-        List capabilities = ebi.getCapabilities();
-        for ( int i = 0; i < capabilities.size(); i++ )
-        {
-            addCapability( ( Capability ) capabilities.get( i ) );
-        }
-
-        List requirement = ebi.getRequirement();
-        for ( int i = 0; i < requirement.size(); i++ )
-        {
-            addRequire( ( Require ) requirement.get( i ) );
-        }
-
-        // we also add the goupId
-        Category category = new Category();
-        category.setId( project.getGroupId() );
-        addCategory( category );
-
-        return true;
-    }
-
-
-    /**
-     * return if the bundle resource is complete.
-     * @return false if an information is missing, else true
-     */
-    public boolean isValid()
-    {
-        // we must verify required properties are present
-        return getPresentationName() != null && getSymbolicName() != null && getVersion() != null && getUri() != null
-            && getSize() != null;
-    }
-
-
-    /**
-     * test if this bundle has the same symbolicname, and version number.
-     * @param symbolicName symbolicName to compare with current bundle
-     * @param presentationName presentationName to compare with current bundlde
-     * @param version version to compare with current bundle
-     * @return true if the information are the same, else false
-     */
-    public boolean isSameBundleResource( String symbolicName, String version )
-    {
-        if ( isValid() )
-        {
-            return ( symbolicName.compareTo( getSymbolicName() ) == 0 ) && ( version.compareTo( getVersion() ) == 0 );
-        }
-
-        return false;
-    }
-
-
-    /**
-     * return a list of categories transformed to node.
-     * @param father father document to create node from same document
-     * @return List of Node
-     */
-    private List getNodeCategories( Document father )
-    {
-        List listNode = new ArrayList();
-        List listCategory = getCategory();
-        for ( int i = 0; i < listCategory.size(); i++ )
-        {
-            listNode.add( ( ( Category ) listCategory.get( i ) ).getNode( father ) );
-        }
-        return listNode;
-    }
-
-
-    /**
-     * return a list of capabilities transformed to node.
-     * @param father father document to create node from same document
-     * @return List of Node
-     */
-    private List getNodeCapabilities( Document father )
-    {
-        List listNode = new ArrayList();
-        List listCapability = getCapability();
-        for ( int i = 0; i < listCapability.size(); i++ )
-        {
-            listNode.add( ( ( Capability ) listCapability.get( i ) ).getNode( father ) );
-        }
-        return listNode;
-    }
-
-
-    /**
-     * return a list of requirement transformed to node.
-     * @param father father document to create node from same document
-     * @return List of Node.
-     */
-    private List getNodeRequirement( Document father )
-    {
-        List listNode = new ArrayList();
-        List listRequirement = getRequire();
-        for ( int i = 0; i < listRequirement.size(); i++ )
-        {
-            listNode.add( ( ( Require ) listRequirement.get( i ) ).getNode( father ) );
-        }
-        return listNode;
-    }
-
-
-    /**
-     * return the list of properties not define in this bundle resource.
-     * @return list of properties not define
-     */
-    private String getInvalidProperties()
-    {
-        if ( isValid() )
-        {
-            if ( getId() == null )
-            {
-                return "id";
-            }
-
-            return "";
-        }
-        String result = "";
-        if ( getPresentationName() == null )
-        {
-            result = result + "presentationName;";
-        }
-        if ( getSymbolicName() == null )
-        {
-            result = result + "symbolicName;";
-        }
-        if ( getVersion() == null )
-        {
-            result = result + "version;";
-        }
-        if ( getUri() == null )
-        {
-            result = result + "Uri;";
-        }
-        if ( getSize() == null )
-        {
-            result = result + "Size";
-        }
-        return result;
-    }
-
-}
diff --git a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/XmlHelper.java b/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/XmlHelper.java
deleted file mode 100644
index 5ad06fb..0000000
--- a/maven-obr-plugin/src/main/java/org/apache/felix/obr/plugin/XmlHelper.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.obr.plugin;
-
-
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-/**
- * Provide XML helper methods to support pre-Java5 runtimes
- * 
- * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
- */
-public class XmlHelper
-{
-    /**
-     * based on public Java5 javadoc of org.w3c.dom.Node.getTextContent method
-     */
-    public static String getTextContent( Node node )
-    {
-        switch ( node.getNodeType() )
-        {
-            case Node.ELEMENT_NODE:
-            case Node.ATTRIBUTE_NODE:
-            case Node.ENTITY_NODE:
-            case Node.ENTITY_REFERENCE_NODE:
-            case Node.DOCUMENT_FRAGMENT_NODE:
-                return mergeTextContent( node.getChildNodes() );
-            case Node.TEXT_NODE:
-            case Node.CDATA_SECTION_NODE:
-            case Node.COMMENT_NODE:
-            case Node.PROCESSING_INSTRUCTION_NODE:
-                return node.getNodeValue();
-            case Node.DOCUMENT_NODE:
-            case Node.DOCUMENT_TYPE_NODE:
-            case Node.NOTATION_NODE:
-            default:
-                return null;
-        }
-    }
-
-
-    /**
-     * based on the following quote from public Java5 javadoc of org.w3c.dom.Node.getTextContent method:
-     * 
-     * "concatenation of the textContent attribute value of every child node, excluding COMMENT_NODE and
-     * PROCESSING_INSTRUCTION_NODE nodes. This is the empty string if the node has no children"
-     */
-    private static String mergeTextContent( NodeList nodes )
-    {
-        StringBuffer buf = new StringBuffer();
-        for ( int i = 0; i < nodes.getLength(); i++ )
-        {
-            Node n = nodes.item( i );
-            final String text;
-
-            switch ( n.getNodeType() )
-            {
-                case Node.COMMENT_NODE:
-                case Node.PROCESSING_INSTRUCTION_NODE:
-                    text = null;
-                    break;
-                default:
-                    text = getTextContent( n );
-                    break;
-            }
-
-            if ( text != null )
-            {
-                buf.append( text );
-            }
-        }
-        return buf.toString();
-    }
-
-
-    /**
-     * based on public Java5 javadoc of org.w3c.dom.Node.setTextContent method
-     */
-    public static void setTextContent( Node node, final String text )
-    {
-        while ( node.hasChildNodes() )
-        {
-            node.removeChild( node.getFirstChild() );
-        }
-
-        if ( text != null && text.length() > 0 )
-        {
-            Node textNode = node.getOwnerDocument().createTextNode( text );
-            node.appendChild( textNode );
-        }
-    }
-}
diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/BundleInfo.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/BundleInfo.java
deleted file mode 100644
index 2e68a9a..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/BundleInfo.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*

- * $Id: BundleInfo.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.io.*;

-import java.net.URL;

-import java.util.*;

-import java.util.zip.*;

-

-import org.osgi.service.obr.Resource;

-

-/**

- * Convert a bundle to a generic resource description and store its local

- * dependencies (like for example a license file in the JAR) in a zip file.

- * 

- * @version $Revision: 44 $

- */

-public class BundleInfo {

-	Manifest	manifest;

-	File		bundleJar;

-	ZipFile		jar;

-	String		license;

-	Properties	localization;

-	RepositoryImpl	repository;

-

-	/**

-	 * Parse a zipFile from the file system. We only need the manifest and the

-	 * localization. So a zip file is used to minimze memory consumption.

-	 * 

-	 * @param bundleJar Path name

-	 * @throws Exception Any errors that occur

-	 */

-	public BundleInfo(RepositoryImpl repository, File bundleJar) throws Exception {

-		this.bundleJar = bundleJar;

-		this.repository = repository;

-		

-		if (!this.bundleJar.exists())

-			throw new FileNotFoundException(bundleJar.toString());

-

-		jar = new ZipFile(bundleJar);

-		ZipEntry entry = jar.getEntry("META-INF/MANIFEST.MF");

-		if (entry == null)

-			throw new FileNotFoundException("No Manifest in "

-					+ bundleJar.toString());

-		manifest = new Manifest(jar.getInputStream(entry));

-	}

-

-	public BundleInfo(Manifest manifest) throws Exception {

-		this.manifest = manifest;

-	}

-

-	/**

-	 * Convert the bundle to a Resource. All URIs are going to be abslute, but

-	 * could be local.

-	 * 

-	 * @return the resource

-	 * @throws Exception

-	 */

-	public ResourceImpl build() throws Exception {

-		ResourceImpl resource;

-		// Setup the manifest

-		// and create a resource

-		resource = new ResourceImpl(repository, manifest.getSymbolicName(), manifest

-				.getVersion());

-

-		try {

-

-			// Calculate the location URL of the JAR

-			URL location = new URL("jar:" + bundleJar.toURL().toString() + "!/");

-			resource.setURL(bundleJar.toURL());

-			resource.setFile(bundleJar);

-

-			doReferences(resource, location);

-			doSize(resource);

-			doCategories(resource);

-			doImportExportServices(resource);

-			doDeclarativeServices(resource);

-			doFragment(resource);

-			doRequires(resource);

-			doBundle(resource);

-			doExports(resource);

-			doImports(resource);

-			doExecutionEnvironment(resource);

-

-			return resource;

-		}

-		finally {

-			try {

-				jar.close();

-			}

-			catch (Exception e) {

-				// ignore

-			}

-		}

-	}

-

-	/**

-	 * Check the size and add it.

-	 * 

-	 * @param resource

-	 */

-	void doSize(ResourceImpl resource) {

-		long size = bundleJar.length();

-		if (size > 0)

-			resource.setSize(size);

-	}

-

-	/**

-	 * Find the categories, break them up and add them.

-	 * 

-	 * @param resource

-	 */

-	void doCategories(ResourceImpl resource) {

-		for (int i = 0; i < manifest.getCategories().length; i++) {

-			String category = manifest.getCategories()[i];

-			resource.addCategory(category);

-		}

-	}

-

-	void doReferences(ResourceImpl resource, URL location) {

-		// Presentation name

-		String name = translated("Bundle-Name");

-		if (name != null)

-			resource.setPresentationName(name);

-

-		// Handle license. -l allows a global license

-		// set when no license is included.

-

-		String license = translated("Bundle-License");

-		if (license != null)

-			resource.setLicense(toURL(location, license));

-		else if (this.license != null)

-			resource.setLicense(toURL(location, this.license));

-

-		String description = translated("Bundle-Description");

-		if (description != null)

-			resource.setDescription(description);

-

-		String copyright = translated("Bundle-Copyright");

-		if (copyright != null)

-			resource.setCopyright(copyright);

-

-		String documentation = translated("Bundle-DocURL");

-		if (documentation != null)

-			resource.setDocumentation(toURL(location, documentation));

-

-		String source = manifest.getValue("Bundle-Source");

-		if (source != null)

-			resource.setSource(toURL(location, source));

-	}

-

-	URL toURL(URL location, String source) {

-		try {

-			return new URL(location, source);

-		}

-		catch (Exception e) {

-			System.err.println("Error in converting url: " + location + " : "

-					+ source);

-			return null;

-		}

-	}

-

-	void doDeclarativeServices(ResourceImpl resource) throws Exception {

-		String serviceComponent = manifest.getValue("service-component");

-		if (serviceComponent == null)

-			return;

-

-		StringTokenizer st = new StringTokenizer(serviceComponent, " ,\t");

-		String parts[] = new String[st.countTokens()];

-		for (int i = 0; i < parts.length; i++)

-			parts[i] = st.nextToken();

-

-		for (int i = 0; i < parts.length; i++) {

-			ZipEntry entry = jar.getEntry(parts[i]);

-			if (entry == null) {

-				System.err.println("Bad Service-Component header: "

-						+ serviceComponent + ", no such file " + parts[i]);

-			}

-			InputStream in = jar.getInputStream(entry);

-			// TODO parse declarative services files.

-			in.close();

-		}

-	}

-

-	void doImportExportServices(ResourceImpl resource) throws IOException {

-		String importServices = manifest.getValue("import-service");

-		if (importServices != null) {

-			List entries = manifest.getEntries(importServices);

-			for (Iterator i = entries.iterator(); i.hasNext();) {

-				ManifestEntry entry = (ManifestEntry) i.next();

-				RequirementImpl ri = new RequirementImpl("service");

-				ri.setFilter(createServiceFilter(entry));

-				ri.setComment("Import Service " + entry.getName());

-

-				// TODO the following is arbitrary

-				ri.setOptional(false);

-				ri.setMultiple(true);

-				resource.addRequirement(ri);

-			}

-		}

-

-		String exportServices = manifest.getValue("export-service");

-		if (exportServices != null) {

-			List entries = manifest.getEntries(exportServices);

-			for (Iterator i = entries.iterator(); i.hasNext();) {

-				ManifestEntry entry = (ManifestEntry) i.next();

-				CapabilityImpl cap = createServiceCapability(entry);

-				resource.addCapability(cap);

-			}

-		}

-	}

-

-	String translated(String key) {

-		return translate(manifest.getValue(key));

-	}

-

-	void doFragment(ResourceImpl resource) {

-		// Check if we are a fragment

-		ManifestEntry entry = manifest.getHost();

-		if (entry == null) {

-			return;

-		}

-		else {

-			// We are a fragment, create a requirement

-			// to our host.

-			RequirementImpl r = new RequirementImpl("bundle");

-			StringBuffer sb = new StringBuffer();

-			sb.append("(&(symbolicname=");

-			sb.append(entry.getName());

-			sb.append(")(version>=");

-			sb.append(entry.getVersion());

-			sb.append("))");

-			r.setFilter(sb.toString());

-			r.setComment("Required Host " + entry.getName() );

-			r.setExtend(true);

-			r.setOptional(false);

-			r.setMultiple(false);

-			resource.addRequirement(r);

-

-			// And insert a capability that we are available

-			// as a fragment. ### Do we need that with extend?

-			CapabilityImpl capability = new CapabilityImpl("fragment");

-			capability.addProperty("host", entry.getName());

-			capability.addProperty("version", entry.getVersion());

-			resource.addCapability(capability);

-		}

-	}

-

-	void doRequires(ResourceImpl resource) {

-		List entries = manifest.getRequire();

-		if (entries == null)

-			return;

-

-		for (Iterator i = entries.iterator(); i.hasNext();) {

-			ManifestEntry entry = (ManifestEntry) i.next();

-			RequirementImpl r = new RequirementImpl("bundle");

-

-			StringBuffer sb = new StringBuffer();

-			sb.append("(&(symbolicname=");

-			sb.append(entry.getName());

-			sb.append(")(version>=");

-			sb.append(entry.getVersion());

-			sb.append("))");

-			r.setFilter(sb.toString());

-			r.setComment("Require Bundle " + entry.getName() + "; "

-					+ entry.getVersion());

-			if (entry.directives == null

-					|| "true".equalsIgnoreCase((String) entry.directives

-							.get("resolution")))

-				r.setOptional(false);

-			else

-				r.setOptional(true);

-			resource.addRequirement(r);

-		}

-	}

-

-	void doExecutionEnvironment(ResourceImpl resource) {

-		String[] parts = manifest.getRequiredExecutionEnvironments();

-		if (parts == null)

-			return;

-

-		StringBuffer sb = new StringBuffer();

-		sb.append("(|");

-		for (int i = 0; i < parts.length; i++) {

-			String part = parts[i];

-			sb.append("(ee=");

-			sb.append(part);

-			sb.append(")");

-		}

-		sb.append(")");

-

-		RequirementImpl req = new RequirementImpl("ee");

-		req.setFilter(sb.toString());

-		req.setComment("Execution Environment " + sb.toString());

-		resource.addRequirement(req);

-	}

-

-	void doImports(ResourceImpl resource) {

-		List requirements = new ArrayList();

-		List packages = manifest.getImports();

-		if (packages == null)

-			return;

-

-		for (Iterator i = packages.iterator(); i.hasNext();) {

-			ManifestEntry pack = (ManifestEntry) i.next();

-			RequirementImpl requirement = new RequirementImpl("package");

-

-			createImportFilter(requirement, "package", pack);

-			requirement.setComment("Import package " + pack);

-			requirements.add(requirement);

-		}

-		for (Iterator i = requirements.iterator(); i.hasNext();)

-			resource.addRequirement((RequirementImpl) i.next());

-	}

-

-	String createServiceFilter(ManifestEntry pack) {

-		StringBuffer filter = new StringBuffer();

-		filter.append("(service=");

-		filter.append(pack.getName());

-		filter.append(")");

-		return filter.toString();

-	}

-

-	void createImportFilter(RequirementImpl req, String name, ManifestEntry pack) {

-		StringBuffer filter = new StringBuffer();

-		filter.append("(&(");

-		filter.append(name);

-		filter.append("=");

-		filter.append(pack.getName());

-		filter.append(")");

-		VersionRange version = pack.getVersion();

-		if (version != null) {

-			if ( version.isRange() ) {

-				filter.append("(version");

-				filter.append(">");

-				if (version.includeLow())

-					filter.append("=");

-				filter.append(version.low);

-				filter.append(")");

-

-				filter.append("(version");

-				filter.append("<");

-				if (version.includeHigh())

-					filter.append("=");

-				filter.append(version.high);

-				filter.append(")");

-			}

-			else {

-				filter.append("(version>=");

-				filter.append(pack.getVersion());

-				filter.append(")");

-			}

-		}

-		Map attributes = pack.getAttributes();

-		Set attrs = doImportPackageAttributes(req, filter, attributes);

-		if (attrs.size() > 0) {

-			String del = "";

-			filter.append("(mandatory:<*");

-			for (Iterator i = attrs.iterator(); i.hasNext();) {

-				filter.append(del);

-				filter.append(i.next());

-				del = ", ";

-			}

-			filter.append(")");

-		}

-		filter.append(")");

-		req.setFilter(filter.toString());

-	}

-

-	Set doImportPackageAttributes(RequirementImpl req, StringBuffer filter,

-			Map attributes) {

-		HashSet set = new HashSet();

-

-		if (attributes != null)

-			for (Iterator i = attributes.keySet().iterator(); i.hasNext();) {

-				String attribute = (String) i.next();

-				String value = (String) attributes.get(attribute);

-				if (attribute.equalsIgnoreCase("specification-version")

-						|| attribute.equalsIgnoreCase("version"))

-					continue;

-				else if (attribute.equalsIgnoreCase("resolution:")) {

-					req.setOptional(value.equalsIgnoreCase("optional"));

-				}

-				if (attribute.endsWith(":")) {

-					// Ignore

-				}

-				else {

-					filter.append("(");

-					filter.append(attribute);

-					filter.append("=");

-					filter.append(attributes.get(attribute));

-					filter.append(")");

-					set.add(attribute);

-				}

-			}

-		return set;

-	}

-

-	void doBundle(ResourceImpl resource) {

-		CapabilityImpl capability = new CapabilityImpl("bundle");

-		capability.addProperty("symbolicname", manifest.getSymbolicName());

-		if (manifest.getValue("Bundle-Name") != null)

-			capability.addProperty(

-					Resource.PRESENTATION_NAME,

-					translated("Bundle-Name"));

-		capability.addProperty("version", manifest.getVersion());

-		capability

-				.addProperty("manifestversion", manifest.getManifestVersion());

-

-		/**

-		 * Is this needed TODO

-		 */

-		ManifestEntry host = manifest.getHost();

-		if (host != null) {

-			capability.addProperty("host", host.getName());

-			if (host.getVersion() != null)

-				capability.addProperty("version", host.getVersion());

-		}

-		resource.addCapability(capability);

-	}

-

-	void doExports(ResourceImpl resource) {

-		List capabilities = new ArrayList();

-		List packages = manifest.getExports();

-		if (packages != null) {

-			for (Iterator i = packages.iterator(); i.hasNext();) {

-				ManifestEntry pack = (ManifestEntry) i.next();

-				CapabilityImpl capability = createCapability("package", pack);

-				capabilities.add(capability);

-			}

-        }

-		for (Iterator i = capabilities.iterator(); i.hasNext();)

-			resource.addCapability((CapabilityImpl) i.next());

-	}

-

-	CapabilityImpl createServiceCapability(ManifestEntry pack) {

-		CapabilityImpl capability = new CapabilityImpl("service");

-		capability.addProperty("service", pack.getName());

-		return capability;

-	}

-

-	CapabilityImpl createCapability(String name, ManifestEntry pack) {

-		CapabilityImpl capability = new CapabilityImpl(name);

-		capability.addProperty(name, pack.getName());

-		capability.addProperty("version", pack.getVersion());

-		Map attributes = pack.getAttributes();

-		if (attributes != null)

-			for (Iterator at = attributes.keySet().iterator(); at.hasNext();) {

-				String key = (String) at.next();

-				if (key.equalsIgnoreCase("specification-version")

-						|| key.equalsIgnoreCase("version"))

-					continue;

-				else {

-					Object value = attributes.get(key);

-					capability.addProperty(key, value);

-				}

-			}

-		return capability;

-	}

-

-	String translate(String s) {

-		if (s == null)

-			return null;

-

-		if (!s.startsWith("%")) {

-			return s;

-		}

-

-		if (localization == null)

-			try {

-				localization = new Properties();

-				String path = manifest

-						.getValue("Bundle-Localization", "bundle");

-				path += ".properties";

-				InputStream in = jar.getInputStream(new ZipEntry(path));

-				if (in != null) {

-					localization.load(in);

-					in.close();

-				}

-			}

-			catch (IOException e) {

-				e.printStackTrace();

-			}

-		s = s.substring(1);

-		return localization.getProperty(s, s);

-	}

-

-	File getZipFile() {

-		return bundleJar;

-	}

-}
\ No newline at end of file
diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/CapabilityImpl.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/CapabilityImpl.java
deleted file mode 100644
index 45d2d1b..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/CapabilityImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*

- * $Id: CapabilityImpl.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.util.*;

-

-import org.osgi.service.obr.Capability;

-import org.xmlpull.v1.XmlPullParser;

-

-

-

-public class CapabilityImpl implements Capability {

-	String				name;

-	Map	properties	= new TreeMap();

-

-	public CapabilityImpl(String name) {

-		this.name = name;

-	}

-

-	public CapabilityImpl(XmlPullParser parser) throws Exception {

-		parser.require(XmlPullParser.START_TAG, null, "capability");

-		name = parser.getAttributeValue(null,"name");

-		while ( parser.nextTag() == XmlPullParser.START_TAG ) {

-			if ( parser.getName().equals("p")) {

-				String name = parser.getAttributeValue(null,"n");

-				String value = parser.getAttributeValue(null,"v");

-				String type = parser.getAttributeValue(null,"t");

-				Object v = value;

-

-				if ( "nummeric".equals(type))

-					v = new Long(value);

-				else if ( "version".equals(type))

-					v = new VersionRange(value);

-				addProperty(name,v);

-			}

-			parser.next();

-			parser.require(XmlPullParser.END_TAG, null, "p" );

-		}

-		parser.require(XmlPullParser.END_TAG, null, "capability" );

-	}

-

-

-	public void addProperty(String key, Object value) {

-		List values = (List) properties.get(key);

-		if (values == null) {

-			values = new ArrayList();

-			properties.put(key, values);

-		}

-		values.add(value);

-	}

-

-	public Tag toXML() {

-		return toXML(this);

-	}

-	

-	public static Tag toXML(Capability capability) {

-		Tag tag = new Tag("capability");

-		tag.addAttribute("name", capability.getName());

-		Map properties = capability.getProperties();

-		for ( Iterator k= properties.keySet().iterator(); k.hasNext(); ) {

-			String key = (String) k.next();

-			List values = (List) properties.get(key);

-			for ( Iterator v = values.iterator(); v.hasNext(); ) {

-				Object value = v.next();

-				Tag p = new Tag("p");

-				tag.addContent(p);

-				p.addAttribute("n", key);

-				if ( value != null )

-					p.addAttribute("v", value.toString());

-				else

-					System.out.println("Missing value " + key);

-				String type = null;

-				if (value instanceof Number )

-					type = "number";

-				else if (value.getClass() == VersionRange.class)

-					type = "version";

-				if (type != null)

-					p.addAttribute("t", type);

-			}

-		}

-		return tag;

-	}

-

-

-	public String getName() {

-		return name;

-	}

-

-

-	public Map getProperties() {

-		return properties;

-	}

-

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/FilterImpl.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/FilterImpl.java
deleted file mode 100644
index bc12314..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/FilterImpl.java
+++ /dev/null
@@ -1,437 +0,0 @@
-/*

- * $Id: FilterImpl.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) 2000 Gatespace AB. All Rights Reserved.

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- *

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.lang.reflect.*;

-import java.math.BigInteger;

-import java.util.*;

-

-public class FilterImpl {

-	final char		WILDCARD	= 65535;

-

-	final int		EQ			= 0;

-	final int		LE			= 1;

-	final int		GE			= 2;

-	final int		APPROX		= 3;

-	final int		LESS		= 4;

-	final int		GREATER		= 5;

-	final int		SUBSET		= 6;

-	final int		SUPERSET	= 7;

-

-	private String	filter;

-

-	abstract class Query {

-		static final String	GARBAGE		= "Trailing garbage";

-		static final String	MALFORMED	= "Malformed query";

-		static final String	EMPTY		= "Empty list";

-		static final String	SUBEXPR		= "No subexpression";

-		static final String	OPERATOR	= "Undefined operator";

-		static final String	TRUNCATED	= "Truncated expression";

-		static final String	EQUALITY	= "Only equality supported";

-

-		private String		tail;

-

-		boolean match() throws IllegalArgumentException {

-			tail = filter;

-			boolean val = doQuery();

-			if (tail.length() > 0)

-				error(GARBAGE);

-			return val;

-		}

-

-		private boolean doQuery() throws IllegalArgumentException {

-			if (tail.length() < 3 || !prefix("("))

-				error(MALFORMED);

-			boolean val;

-

-			switch (tail.charAt(0)) {

-				case '&' :

-					val = doAnd();

-					break;

-				case '|' :

-					val = doOr();

-					break;

-				case '!' :

-					val = doNot();

-					break;

-				default :

-					val = doSimple();

-					break;

-			}

-

-			if (!prefix(")"))

-				error(MALFORMED);

-			return val;

-		}

-

-		private boolean doAnd() throws IllegalArgumentException {

-			tail = tail.substring(1);

-			boolean val = true;

-			if (!tail.startsWith("("))

-				error(EMPTY);

-			do {

-				if (!doQuery())

-					val = false;

-			} while (tail.startsWith("("));

-			return val;

-		}

-

-		private boolean doOr() throws IllegalArgumentException {

-			tail = tail.substring(1);

-			boolean val = false;

-			if (!tail.startsWith("("))

-				error(EMPTY);

-			do {

-				if (doQuery())

-					val = true;

-			} while (tail.startsWith("("));

-			return val;

-		}

-

-		private boolean doNot() throws IllegalArgumentException {

-			tail = tail.substring(1);

-			if (!tail.startsWith("("))

-				error(SUBEXPR);

-			return !doQuery();

-		}

-

-		private boolean doSimple() throws IllegalArgumentException {

-			int op = 0;

-			Object attr = getAttr();

-

-			if (prefix("="))

-				op = EQ;

-			else if (prefix("<="))

-				op = LE;

-			else if (prefix(">="))

-				op = GE;

-			else if (prefix("~="))

-				op = APPROX;

-			else if (prefix("*>"))

-				op = SUPERSET;

-			else if (prefix("<*"))

-				op = SUBSET;

-			else if (prefix("<"))

-				op = LESS;

-			else if (prefix(">"))

-				op = GREATER;

-			else

-				error(OPERATOR);

-

-			return compare(attr, op, getValue());

-		}

-

-		private boolean prefix(String pre) {

-			if (!tail.startsWith(pre))

-				return false;

-			tail = tail.substring(pre.length());

-			return true;

-		}

-

-		private Object getAttr() {

-			int len = tail.length();

-			int ix = 0;

-			label: for (; ix < len; ix++) {

-				switch (tail.charAt(ix)) {

-					case '(' :

-					case ')' :

-					case '<' :

-					case '>' :

-					case '=' :

-					case '~' :

-					case '*' :

-					case '}' :

-					case '{' :

-					case '\\' :

-						break label;

-				}

-			}

-			String attr = tail.substring(0, ix).toLowerCase();

-			tail = tail.substring(ix);

-			return getProp(attr);

-		}

-

-		abstract Object getProp(String key);

-

-		private String getValue() {

-			StringBuffer sb = new StringBuffer();

-			int len = tail.length();

-			int ix = 0;

-			label: for (; ix < len; ix++) {

-				char c = tail.charAt(ix);

-				switch (c) {

-					case '(' :

-					case ')' :

-						break label;

-					case '*' :

-						sb.append(WILDCARD);

-						break;

-					case '\\' :

-						if (ix == len - 1)

-							break label;

-						sb.append(tail.charAt(++ix));

-						break;

-					default :

-						sb.append(c);

-						break;

-				}

-			}

-			tail = tail.substring(ix);

-			return sb.toString();

-		}

-

-		private void error(String m) throws IllegalArgumentException {

-			throw new IllegalArgumentException(m + " " + tail);

-		}

-

-		private boolean compare(Object obj, int op, String s) {

-			if (obj == null) {

-				// No value is ok for a subset

-				if (op == SUBSET)

-					return true;

-

-				// No value is ok for a superset when the value is

-				// empty

-				if (op == SUPERSET) {

-					return s.trim().length() == 0;

-				}

-

-				return false;

-			}

-			try {

-				Class numClass = obj.getClass();

-				if (numClass == String.class) {

-					return compareString((String) obj, op, s);

-				}

-				else if (numClass == Character.class) {

-					return compareString(obj.toString(), op, s);

-				}

-				else if (numClass == Long.class) {

-					return compareSign(op, Long.valueOf(s)

-							.compareTo((Long) obj));

-				}

-				else if (numClass == Integer.class) {

-					return compareSign(op, Integer.valueOf(s).compareTo(

-							(Integer) obj));

-				}

-				else if (numClass == Short.class) {

-					return compareSign(op, Short.valueOf(s).compareTo(

-							(Short) obj));

-				}

-				else if (numClass == Byte.class) {

-					return compareSign(op, Byte.valueOf(s)

-							.compareTo((Byte) obj));

-				}

-				else if (numClass == Double.class) {

-					return compareSign(op, Double.valueOf(s).compareTo(

-							(Double) obj));

-				}

-				else if (numClass == Float.class) {

-					return compareSign(op, Float.valueOf(s).compareTo(

-							(Float) obj));

-				}

-				else if (numClass == Boolean.class) {

-					if (op != EQ)

-						return false;

-					int a = Boolean.valueOf(s).booleanValue() ? 1 : 0;

-					int b = ((Boolean) obj).booleanValue() ? 1 : 0;

-					return compareSign(op, a - b);

-				}

-				else if (numClass == BigInteger.class) {

-					return compareSign(op, new BigInteger(s)

-							.compareTo((BigInteger) obj));

-				}

-				else if (obj instanceof Collection) {

-					if (op == SUBSET || op == SUPERSET) {

-						StringSet set = new StringSet(s);

-						if (op == SUBSET)

-							return set.containsAll((Collection) obj);

-						else

-							return ((Collection) obj).containsAll(set);

-					}

-

-					for (Iterator i = ((Collection) obj).iterator(); i

-							.hasNext();) {

-						Object element = i.next();

-						if (compare(element, op, s))

-							return true;

-					}

-				}

-				else if (numClass.isArray()) {

-					int len = Array.getLength(obj);

-					for (int i = 0; i < len; i++)

-						if (compare(Array.get(obj, i), op, s))

-							return true;

-				}

-				else {

-					try {

-						if (op == SUPERSET || op == SUBSET) {

-							StringSet set = new StringSet(s);

-							if (op == SUPERSET)

-								return set.contains(obj);

-							else

-								return set.size() == 0

-										|| (set.size() == 1 && set.iterator()

-												.next().equals(obj));

-						}

-						else {

-							Constructor constructor = numClass

-									.getConstructor(new Class[] {String.class});

-							Object instance = constructor

-									.newInstance(new Object[] {s});

-							switch (op) {

-								case EQ :

-									return obj.equals(instance);

-								case LESS :

-									return ((Comparable) obj)

-											.compareTo(instance) < 0;

-								case GREATER :

-									return ((Comparable) obj)

-											.compareTo(instance) > 0;

-								case LE :

-									return ((Comparable) obj)

-											.compareTo(instance) <= 0;

-								case GE :

-									return ((Comparable) obj)

-											.compareTo(instance) >= 0;

-							}

-						}

-					}

-					catch (Exception e) {

-						e.printStackTrace();

-						// Ignore

-					}

-				}

-			}

-			catch (Exception e) {

-			}

-			return false;

-		}

-	}

-

-	class DictQuery extends Query {

-		private Map	dict;

-

-		DictQuery(Map dict) {

-			this.dict = dict;

-		}

-

-		Object getProp(String key) {

-			return dict.get(key);

-		}

-	}

-

-	public FilterImpl(String filter) throws IllegalArgumentException {

-		// NYI: Normalize the filter string?

-		this.filter = filter;

-		if (filter == null || filter.length() == 0)

-			throw new IllegalArgumentException("Null query");

-	}

-

-	public boolean match(Map dict) {

-		try {

-			return new DictQuery(dict).match();

-		}

-		catch (IllegalArgumentException e) {

-			return false;

-		}

-	}

-

-	public String toString() {

-		return filter;

-	}

-

-	public boolean equals(Object obj) {

-		return obj != null && obj instanceof FilterImpl

-				&& filter.equals(((FilterImpl) obj).filter);

-	}

-

-	public int hashCode() {

-		return filter.hashCode();

-	}

-

-	boolean compareString(String s1, int op, String s2) {

-		switch (op) {

-			case EQ :

-				return patSubstr(s1, s2);

-			case APPROX :

-				return patSubstr(fixupString(s1), fixupString(s2));

-			default :

-				return compareSign(op, s2.compareTo(s1));

-		}

-	}

-

-	boolean compareSign(int op, int cmp) {

-		switch (op) {

-			case LE :

-				return cmp >= 0;

-			case GE :

-				return cmp <= 0;

-			case EQ :

-				return cmp == 0;

-			default : /* APPROX */

-				return cmp == 0;

-		}

-	}

-

-	String fixupString(String s) {

-		StringBuffer sb = new StringBuffer();

-		int len = s.length();

-		boolean isStart = true;

-		boolean isWhite = false;

-		for (int i = 0; i < len; i++) {

-			char c = s.charAt(i);

-			if (Character.isWhitespace(c)) {

-				isWhite = true;

-			}

-			else {

-				if (!isStart && isWhite)

-					sb.append(' ');

-				if (Character.isUpperCase(c))

-					c = Character.toLowerCase(c);

-				sb.append(c);

-				isStart = false;

-				isWhite = false;

-			}

-		}

-		return sb.toString();

-	}

-

-	boolean patSubstr(String s, String pat) {

-		if (s == null)

-			return false;

-		if (pat.length() == 0)

-			return s.length() == 0;

-		if (pat.charAt(0) == WILDCARD) {

-			pat = pat.substring(1);

-			for (;;) {

-				if (patSubstr(s, pat))

-					return true;

-				if (s.length() == 0)

-					return false;

-				s = s.substring(1);

-			}

-		}

-		else {

-			if (s.length() == 0 || s.charAt(0) != pat.charAt(0))

-				return false;

-			return patSubstr(s.substring(1), pat.substring(1));

-		}

-	}

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Manifest.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Manifest.java
deleted file mode 100644
index 01c3f51..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Manifest.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*

- * $Id: Manifest.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.io.*;

-import java.util.*;

-

-

-public class Manifest extends Hashtable {

-	static final long	serialVersionUID	= 1L;

-	List				imports;

-	List				exports;

-	ManifestEntry		name;

-	String				activator;

-	String				classpath[]	= new String[] {"."};

-	int					section;

-	String				location;

-	Native				_native[];

-	Vector				duplicates	= new Vector();

-	final static String	wordparts	= "~!@#$%^&*_:/?><.-+";

-	ManifestEntry		bsn;

-	VersionRange			version;

-	ManifestEntry		host;

-	List				require;

-

-	public Manifest(InputStream in) throws IOException {

-		parse(new InputStreamReader(in, "UTF8"));

-	}

-

-	public Manifest(Reader in) throws IOException {

-		parse(in);

-	}

-

-	public Object put(Object header, Object value) {

-		if (containsKey(header)) {

-			if (!((String) header).equalsIgnoreCase("comment"))

-				duplicates.add(header + ":" + value);

-		}

-		return super.put(header, value);

-	}

-

-	void parse(Reader in) throws IOException {

-		BufferedReader rdr = new BufferedReader(in);

-		String current = " ";

-		String buffer = rdr.readLine();

-		int section = 0;

-		if (buffer != null && !buffer.startsWith("Manifest-Version")) {

-			System.err

-					.println("The first line of a manifest file must be the Manifest-Version attribute");

-			throw new IOException(

-					"The first line of a manifest file must be the Manifest-Version attribute");

-		}

-		while (buffer != null && current != null && section == 0) {

-			if (current.startsWith(" ")) {

-				buffer += current.substring(1);

-			}

-			else {

-				section += entry(buffer);

-				buffer = current;

-			}

-			current = rdr.readLine();

-		}

-		entry(buffer);

-	}

-

-	int entry(String line) throws IOException {

-		if (line.length() < 2)

-			return 1;

-		int colon = line.indexOf(':');

-		if (colon < 1) {

-			error("Invalid header '" + line + "'");

-		}

-		else {

-			String header = line.substring(0, colon).toLowerCase();

-			String alphanum = "abcdefghijklmnopqrstuvwxyz0123456789";

-			String set = alphanum;

-			if (alphanum.indexOf(header.charAt(0)) < 0)

-				error("Header does not start with alphanum: " + header);

-			for (int i = 0; i < header.length(); i++) {

-				if (set.indexOf(header.charAt(i)) < 0)

-					error("Header contains non alphanum, - _: " + header);

-				set = "_-" + alphanum;

-			}

-			String value = "";

-			if (colon + 2 < line.length())

-				value = line.substring(colon + 2);

-			else

-				error("No value for manifest header " + header);

-			if (section == 0) {

-				if (header.equals("bundle-symbolicname")) {

-					bsn = (ManifestEntry) getEntries(value).get(0);

-				}

-				if (header.equals("bundle-version")) {

-					try {

-						version = new VersionRange(value.trim());

-					}

-					catch (Exception e) {

-						version = new VersionRange("0");

-						System.err.println("Invalid version attr for: " + bsn

-								+ " value is " + value);

-					}

-				}

-				if (header.equals("fragment-host"))

-					host = (ManifestEntry) getEntries(value).get(0);

-				if (header.equals("require-bundle"))

-					require = getEntries(value);

-				if (header.equals("import-package"))

-					imports = getEntries(value);

-				else if (header.equals("export-package"))

-					exports = getEntries(value);

-				else if (header.equals("bundle-activator"))

-					activator = value.trim();

-				else if (header.equals("bundle-updatelocation"))

-					location = value.trim();

-				else if (header.equals("bundle-classpath"))

-					classpath = getClasspath(value);

-				else if (header.equals("bundle-nativecode"))

-					_native = getNative(value);

-				put(header, value);

-			}

-		}

-		return 0;

-	}

-

-	void error(String msg) throws IOException {

-		System.err.println("Reading manifest: " + msg);

-	}

-

-	void warning(String msg) throws IOException {

-		System.err.println("Reading manifest: " + msg);

-	}

-

-	StreamTokenizer getStreamTokenizer(String line) {

-		StreamTokenizer st = new StreamTokenizer(new StringReader(line));

-		st.resetSyntax();

-		st.wordChars('a', 'z');

-		st.wordChars('A', 'Z');

-		st.wordChars('0', '9');

-		st.whitespaceChars(0, ' ');

-		st.quoteChar('"');

-		for (int i = 0; i < wordparts.length(); i++)

-			st.wordChars(wordparts.charAt(i), wordparts.charAt(i));

-		return st;

-	}

-

-	String word(StreamTokenizer st) throws IOException {

-		switch (st.nextToken()) {

-			case '"' :

-			case StreamTokenizer.TT_WORD :

-				String result = st.sval;

-				st.nextToken();

-				return result;

-		}

-		return null;

-	}

-

-	Parameter getParameter(StreamTokenizer st) throws IOException {

-

-		Parameter parameter = new Parameter();

-		parameter.key = word(st);

-		if (st.ttype == ':') {

-			st.nextToken();

-			parameter.type = Parameter.DIRECTIVE;

-		}

-		else {

-			parameter.type = Parameter.ATTRIBUTE;

-		}

-

-		if (st.ttype == '=') {

-			parameter.value = word(st);

-			while (st.ttype == StreamTokenizer.TT_WORD || st.ttype == '"') {

-				parameter.value += " " + st.sval;

-				st.nextToken();

-			}

-		}

-

-		return parameter;

-	}

-

-	public List getEntries(String line) throws IOException {

-		List v = new Vector();

-		Set aliases = new HashSet();

-

-		StreamTokenizer st = getStreamTokenizer(line);

-		do {

-			Parameter parameter = getParameter(st);

-			ManifestEntry p = new ManifestEntry(parameter.key);

-			while (st.ttype == ';') {

-				parameter = getParameter(st);

-				if (parameter.value == null) {

-					aliases.add(parameter.key);

-				}

-				else {

-					if (parameter.type == Parameter.ATTRIBUTE)

-						p.addParameter(parameter);

-					else

-						p.addParameter(parameter);

-				}

-			}

-			v.add(p);

-			for (Iterator a = aliases.iterator(); a.hasNext();) {

-				v.add(p.getAlias((String) a.next()));

-			}

-		} while (st.ttype == ',');

-		return v;

-	}

-

-	Native[] getNative(String line) throws IOException {

-		Vector v = new Vector();

-		StreamTokenizer st = getStreamTokenizer(line);

-		do {

-			Native spec = new Native();

-			Vector names = new Vector();

-			do {

-				Parameter parameter = getParameter(st);

-				if (parameter.value == null)

-					names.add(parameter.key);

-				else if (parameter.is("processor", Parameter.ATTRIBUTE))

-					spec.processor = parameter.value;

-				else if (parameter.is("osname", Parameter.ATTRIBUTE))

-					spec.osname = parameter.value;

-				else if (parameter.is("osversion", Parameter.ATTRIBUTE))

-					spec.osversion = parameter.value;

-				else if (parameter.is("language", Parameter.ATTRIBUTE))

-					spec.language = parameter.value;

-				else if (parameter.is("selection-filter", Parameter.DIRECTIVE))

-					spec.filter = parameter.value;

-				else

-					warning("Unknown parameter for native code : " + parameter);

-			} while (st.ttype == ';');

-			spec.paths = new String[names.size()];

-			names.copyInto(spec.paths);

-			v.add(spec);

-		} while (st.ttype == ',');

-		Native[] result = new Native[v.size()];

-		v.copyInto(result);

-		return result;

-	}

-

-	String[] getClasspath(String line) throws IOException {

-		StringTokenizer st = new StringTokenizer(line, " \t,");

-		String result[] = new String[st.countTokens()];

-		for (int i = 0; i < result.length; i++)

-			result[i] = st.nextToken();

-		return result;

-	}

-

-	public List getImports() {

-		return imports;

-	}

-

-	public List getExports() {

-		return exports;

-	}

-

-	public String getActivator() {

-		return activator;

-	}

-

-	public String getLocation() {

-		return location;

-	}

-

-	public String[] getClasspath() {

-		return classpath;

-	}

-

-	public Native[] getNative() {

-		return _native;

-	}

-

-	public Object get(Object key) {

-		if (key instanceof String)

-			return super.get(((String) key).toLowerCase());

-		else

-			return null;

-	}

-

-	public String getValue(String key) {

-		return (String) super.get(key.toLowerCase());

-	}

-

-	public String getValue(String key, String deflt) {

-		String s = getValue(key);

-		if (s == null)

-			return deflt;

-		else

-			return s;

-	}

-

-	public String[] getRequiredExecutionEnvironments() {

-		String ees = getValue("Bundle-RequiredExecutionEnvironment");

-		if (ees != null)

-			return ees.trim().split("\\s*,\\s*");

-		else

-			return null;

-	}

-

-	public VersionRange getVersion() {

-		if (version == null)

-			return new VersionRange("0");

-		return version;

-	}

-

-	public String getSymbolicName() {

-		ManifestEntry bsn = getBsn();

-

-		if (bsn == null) {

-			String name = getValue("Bundle-Name");

-			if (name == null)

-				name = "Untitled-" + hashCode();

-			return name;

-		}

-		else

-			return bsn.getName();

-	}

-

-	public String getManifestVersion() {

-		return getValue("Bundle-ManifestVersion", "1");

-	}

-

-	public String getCopyright() {

-		return getValue("Bundle-Copyright");

-	}

-

-	public String getDocumentation() {

-		return getValue("Bundle-DocURL");

-	}

-

-	public String[] getCategories() {

-		String cats = getValue("Bundle-Category");

-		if (cats == null)

-			return new String[0];

-		else

-			return cats.split("\\s*,\\s*");

-	}

-

-	public Native[] get_native() {

-		return _native;

-	}

-

-	public void set_native(Native[] _native) {

-		this._native = _native;

-	}

-

-	public ManifestEntry getBsn() {

-		return bsn;

-	}

-

-	public void setBsn(ManifestEntry bsn) {

-		this.bsn = bsn;

-	}

-

-	public Vector getDuplicates() {

-		return duplicates;

-	}

-

-	public void setDuplicates(Vector duplicates) {

-		this.duplicates = duplicates;

-	}

-

-	public ManifestEntry getHost() {

-		return host;

-	}

-

-	public void setHost(ManifestEntry host) {

-		this.host = host;

-	}

-

-	public List getRequire() {

-		return require;

-	}

-

-}

-

-class Native {

-	String	filter;

-	int		index	= -1;

-	String	paths[];

-	String	osname;

-	String	osversion;

-	String	language;

-	String	processor;

-

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/ManifestEntry.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/ManifestEntry.java
deleted file mode 100644
index 2dc3e69..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/ManifestEntry.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*

- * $Id: ManifestEntry.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.util.*;

-

-

-public class ManifestEntry implements Comparable {

-	String		name;

-	VersionRange	version;

-	Map			attributes;

-	public Map	directives;

-	public Set	uses;

-

-	public ManifestEntry(String name) {

-		this.name = name;

-	}

-

-	public ManifestEntry(String name, VersionRange version) {

-		this.name = name;

-		this.version = version;

-	}

-

-	public String toString() {

-		if (version == null)

-			return name;

-		return name + " ;version=" + version;

-	}

-

-	public String getName() {

-		return name;

-	}

-

-	public VersionRange getVersion() {

-		if (version != null)

-			return version;

-		return new VersionRange("0");

-	}

-

-	/*

-	 * (non-Javadoc)

-	 * 

-	 * @see java.lang.Comparable#compareTo(java.lang.Object)

-	 */

-	public int compareTo(Object o) {

-		ManifestEntry p = (ManifestEntry) o;

-		return name.compareTo(p.name);

-	}

-

-	/**

-	 * @return

-	 */

-	public Object getPath() {

-		return getName().replace('.', '/');

-	}

-

-	public Map getDirectives() {

-		return directives;

-	}

-

-	public Map getAttributes() {

-		return attributes;

-	}

-

-	/**

-	 * @param parameter

-	 */

-	public void addParameter(Parameter parameter) {

-		switch (parameter.type) {

-			case Parameter.ATTRIBUTE :

-				if (attributes == null)

-					attributes = new HashMap();

-				attributes.put(parameter.key, parameter.value);

-				if (parameter.key.equalsIgnoreCase("version")

-						|| parameter.key

-								.equalsIgnoreCase("specification-version"))

-					this.version = new VersionRange(parameter.value);

-				break;

-

-			case Parameter.DIRECTIVE :

-				if (directives == null)

-					directives = new HashMap();

-				directives.put(parameter.key, parameter.value);

-				break;

-		}

-	}

-

-	public ManifestEntry getAlias(String key) {

-		ManifestEntry me = new ManifestEntry(key);

-		me.attributes = attributes;

-		me.directives = directives;

-		me.version = version;

-		return me;

-	}

-

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Parameter.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Parameter.java
deleted file mode 100644
index 5038132..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Parameter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*

- * $Id: Parameter.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-class Parameter {

-	final static int	ATTRIBUTE	= 1;

-	final static int	DIRECTIVE	= 2;

-	final static int	SINGLE		= 0;

-

-	int					type;

-	String				key;

-	String				value;

-

-	public String toString() {

-		StringBuffer sb = new StringBuffer();

-		sb.append(key);

-		switch (type) {

-			case ATTRIBUTE :

-				sb.append("=");

-				break;

-			case DIRECTIVE :

-				sb.append(":=");

-				break;

-			case SINGLE :

-				return sb.toString();

-		}

-		sb.append(value);

-		return sb.toString();

-	}

-

-	boolean is(String s, int type) {

-		return this.type == type && key.equalsIgnoreCase(s);

-	}

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/RepositoryImpl.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/RepositoryImpl.java
deleted file mode 100644
index bc6953b..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/RepositoryImpl.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/*

- * $Id: RepositoryImpl.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-

-package org.osgi.impl.bundle.obr.resource;

-

-import java.io.*;

-import java.net.*;

-import java.util.*;

-import java.util.zip.*;

-

-import org.kxml2.io.KXmlParser;

-import org.osgi.service.obr.*;

-import org.xmlpull.v1.*;

-

-/**

- * Implements the basic repository. A repository holds a set of resources.

- * 

- * 

- * @version $Revision: 44 $

- */

-public class RepositoryImpl implements Repository {

-	transient Set			resources		= new HashSet();

-	URL						url;

-	String					date;

-	Set						visited			= new HashSet();

-	final static Resource[]	EMPTY_RESOURCE	= new Resource[0];

-	String					name			= "Untitled";

-	long					lastModified;

-	Exception				exception;

-	int						ranking=0;

-

-	/**

-	 * Each repository is identified by a single URL.

-	 * 

-	 * A repository can hold referrals to other repositories. These referred

-	 * repositories are included at the point of referall.

-	 * 

-	 * @param url

-	 */

-	public RepositoryImpl(URL url) {

-		this.url = url;

-	}

-

-	/**

-	 * Refresh the repository from the URL.

-	 * 

-	 * @throws Exception

-	 */

-	public boolean refresh() {

-		exception = null;

-		try {

-			resources.clear();

-			parseDocument(url);

-			visited = null;

-			return true;

-		}

-		catch (Exception e) {

-			e.printStackTrace();

-			exception = e;

-		}

-		return false;

-	}

-

-	/**

-	 * Parse the repository.

-	 * 

-	 * @param parser

-	 * @throws Exception

-	 */

-	private void parseRepository(XmlPullParser parser) throws Exception {

-		try {

-			parser.require(XmlPullParser.START_DOCUMENT, null, null);

-			parser.nextTag();

-			if (parser.getName().equals("bundles"))

-				parseOscar(parser);

-			else {

-				parser.require(XmlPullParser.START_TAG, null, "repository");

-				date = parser.getAttributeValue(null, "lastmodified");

-				name = parser.getAttributeValue(null, "name");

-				if (name == null)

-					name = "Untitled";

-

-				while (parser.nextTag() == XmlPullParser.START_TAG) {

-					if (parser.getName().equals("resource")) {

-						ResourceImpl resource = new ResourceImpl(this, parser);

-						resources.add(resource);

-					}

-					else if (parser.getName().equals("referral"))

-						referral(parser);

-					else

-						throw new IllegalArgumentException(

-								"Invalid tag in repository: " + url + " "

-										+ parser.getName());

-				}

-				parser.require(XmlPullParser.END_TAG, null, "repository");

-			}

-		}

-		catch (XmlPullParserException e) {

-			e.printStackTrace();

-			throw new IllegalArgumentException("XML unregognized around: "

-					+ e.getLineNumber() + " " + e.getMessage());

-		}

-	}

-

-	/**

-	 * Parse an old style OBR repository.

-	 * 

-	 * <dtd-version>1.0</dtd-version> <repository> <name>Oscar Bundle

-	 * Repository</name> <url>http://oscar-osgi.sourceforge.net/</url>

-	 * <date>Fri May 07 16:45:07 CEST 2004</date> <extern-repositories> <!--

-	 * Stefano Lenzi (kismet@interfree.it) -->

-	 * <url>http://domoware.isti.cnr.it/osgi-obr/niche-osgi-obr.xml</url>

-	 * <!--Manuel Palencia (santillan@dit.upm.es) --> <!--

-	 * <url>http://jmood.forge.os4os.org/repository.xml</url> --> <!-- Enrique

-	 * Rodriguez (erodriguez@apache.org) -->

-	 * <url>http://update.cainenable.org/repository.xml</url>

-	 * </extern-repositories> </repository> <bundle> <bundle-name>Bundle

-	 * Repository</bundle-name> <bundle-description> A bundle repository

-	 * service for Oscar. </bundle-description> <bundle-updatelocation>

-	 * http://oscar-osgi.sf.net/repo/bundlerepository/bundlerepository.jar

-	 * </bundle-updatelocation> <bundle-sourceurl>

-	 * http://oscar-osgi.sf.net/repo/bundlerepository/bundlerepository-src.jar

-	 * </bundle-sourceurl> <bundle-version>1.1.3</bundle-version>

-	 * <bundle-docurl> http://oscar-osgi.sf.net/repo/bundlerepository/

-	 * </bundle-docurl> <bundle-category>General</bundle-category>

-	 * <import-package package="org.osgi.framework"/> <export-package

-	 * package="org.ungoverned.osgi.service.bundlerepository"

-	 * specification-version="1.1.0"/> </bundle> *

-	 */

-	private void parseOscar(XmlPullParser parser) throws Exception {

-		parser.require(XmlPullParser.START_TAG, null, "bundles");

-		while (true) {

-			int event = parser.next();

-

-			// Error ..

-			if (event == XmlPullParser.TEXT)

-				event = parser.next();

-

-			if (event != XmlPullParser.START_TAG)

-				break;

-

-			ResourceImpl resource = new ResourceImpl(this);

-

-			if (parser.getName().equals("bundle")) {

-				while (parser.nextTag() == XmlPullParser.START_TAG) {

-					String key = parser.getName();

-					if (key.equals("import-package")) {

-						RequirementImpl requirement = new RequirementImpl(

-								"package");

-						

-						requirement.setOptional(false);

-						requirement.setMultiple(false);

-						

-						String p = parser.getAttributeValue(null, "package");

-						StringBuffer sb = new StringBuffer();

-						sb.append("(&(package=");

-						sb.append(p);

-						sb.append(")");

-						String version = parser.getAttributeValue(null,

-								"specification-version");

-						VersionRange v = new VersionRange("0");

-						if (version != null) {

-							sb.append("(version=");

-							sb.append(v= new VersionRange(version));

-							sb.append(")");

-						}

-						sb.append(")");

-						requirement.setFilter(sb.toString());

-						requirement.setComment("Import-Package: " + p + ";" + v );

-						resource.addRequirement(requirement);

-						

-						parser.nextTag();

-					}

-					else if (key.equals("export-package")) {

-						CapabilityImpl capability = new CapabilityImpl(

-								"package");

-						capability.addProperty("package", parser

-								.getAttributeValue(null, "package"));

-						String version = parser.getAttributeValue(null,

-								"specification-version");

-						if (version != null) {

-							capability.addProperty("version", new VersionRange(

-									version));

-						}

-						resource.addCapability(capability);

-						parser.nextTag();

-					}

-					else {

-						String value = parser.nextText().trim();

-						if (key.equals("bundle-sourceurl"))

-							resource.setSource(new URL(value));

-						else if (key.equals("bundle-docurl"))

-							resource.setDocumentation(new URL(value));

-						else if (key.equals("bundle-updatelocation"))

-							resource.setURL(new URL(value));

-						else if (key.equals("bundle-description"))

-							resource.setDescription(value);

-						else if (key.equals("bundle-category"))

-							resource.addCategory(value);

-						else if (key.equals("bundle-name")) {

-							resource.setName(value);

-							resource.setPresentationName(value);

-						}

-						else if (key.equals("bundle-version"))

-							resource.setVersion(new VersionRange(value));

-						else {

-							resource.put(key, value);

-						}

-					}

-				}

-				resources.add(resource);

-				parser.require(XmlPullParser.END_TAG, null, "bundle");

-			}

-			else if (parser.getName().equals("repository")) {

-				parser.require(XmlPullParser.START_TAG, null, "repository");

-				while (parser.nextTag() == XmlPullParser.START_TAG) {

-					String tag = parser.getName();

-					if (tag.equals("name")) {

-						String name = parser.nextText();

-						if (this.name == null)

-							this.name = name.trim();

-					}

-					else if (tag.equals("url"))

-						parser.nextText().trim();

-					else if (tag.equals("date"))

-						parser.nextText().trim();

-					else if (tag.equals("extern-repositories")) {

-						parser.require(XmlPullParser.START_TAG, null,

-								"extern-repositories");

-						while (parser.nextTag() == XmlPullParser.START_TAG) {

-							if (parser.getName().equals("url"))

-								parseDocument(new URL(parser.nextText().trim()));

-							else

-								throw new IllegalArgumentException(

-										"Invalid tag in repository while parsing extern repositories: "

-												+ url + " " + parser.getName());

-						}

-						parser.require(XmlPullParser.END_TAG, null,

-								"extern-repositories");

-					}

-					else

-						throw new IllegalArgumentException(

-								"Invalid tag in repository: " + url + " "

-										+ parser.getName());

-				}

-				parser.require(XmlPullParser.END_TAG, null, "repository");

-			}

-			else if (parser.getName().equals("dtd-version")) {

-				parser.nextText();

-			}

-			else

-				throw new IllegalArgumentException(

-						"Invalid tag in repository: " + url + " "

-								+ parser.getName());

-		}

-		parser.require(XmlPullParser.END_TAG, null, "bundles");

-	}

-

-	/**

-	 * We have a referral to another repository. Just create another parser and

-	 * read it inline.

-	 * 

-	 * @param parser

-	 */

-	void referral(XmlPullParser parser) {

-		// TODO handle depth!

-		try {

-			parser.require(XmlPullParser.START_TAG, null, "referral");

-			// String depth = parser.getAttributeValue(null, "depth");

-			String path = parser.getAttributeValue(null, "url");

-			URL url = new URL(this.url, path);

-			parseDocument(url);

-			parser.next();

-			parser.require(XmlPullParser.END_TAG, null, "referral");

-		}

-		catch (Exception e) {

-			e.printStackTrace();

-		}

-	}

-

-	/**

-	 * Parse a repository document.

-	 * 

-	 * @param url

-	 * @throws IOException

-	 * @throws XmlPullParserException

-	 * @throws Exception

-	 */

-	void parseDocument(URL url) throws IOException, XmlPullParserException,

-			Exception {

-		if (!visited.contains(url)) {

-			visited.add(url);

-			try {

-				System.out.println("Visiting: " + url);

-				InputStream in = null;

-				

-				if ( url.getPath().endsWith(".zip")) {

-					ZipInputStream zin = new ZipInputStream( url.openStream() );

-					ZipEntry entry = zin.getNextEntry();

-					while ( entry != null ) {

-						if ( entry.getName().equals("repository.xml")) {

-							in = zin;

-							break;

-						}

-						entry = zin.getNextEntry();

-					}

-				} else {

-					in = url.openStream();

-				}

-				Reader reader = new InputStreamReader(in);

-				XmlPullParser parser = new KXmlParser();

-				parser.setInput(reader);

-				parseRepository(parser);

-			} catch( MalformedURLException e ) {

-				System.out.println("Cannot create connection to url");

-			}

-		}

-	}

-

-	public URL getURL() {

-		return url;

-	}

-

-	/**

-	 * @return

-	 */

-	public Collection getResourceList() {

-		return resources;

-	}

-

-	public Resource[] getResources() {

-		return (Resource[]) getResourceList().toArray(EMPTY_RESOURCE);

-	}

-

-	public String getName() {

-		return name;

-	}

-

-	public Resource getResource(String id) {

-		for (Iterator i = getResourceList().iterator(); i.hasNext();) {

-			ResourceImpl resource = (ResourceImpl) i.next();

-			if (resource.getId().equals(id))

-				return resource;

-		}

-		return null;

-	}

-

-	public long getLastModified() {

-		return lastModified;

-	}

-

-	public int getRanking() {

-		return ranking;

-	}

-

-	public void setRanking(int ranking) {

-		this.ranking = ranking;

-	}

-

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/RequirementImpl.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/RequirementImpl.java
deleted file mode 100644
index 146618a..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/RequirementImpl.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*

- * $Id: RequirementImpl.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import org.osgi.service.obr.*;

-import org.xmlpull.v1.XmlPullParser;

-

-

-

-/**

- * Implements the Requirement interface.

- * 

- * 

- * @version $Revision: 44 $

- */

-public class RequirementImpl implements Requirement {

-	int		id;

-	String	name;

-	String	filter="()";

-	FilterImpl	_filter;

-	String	comment;

-	boolean optional;

-	boolean multiple;

-	boolean extend;

-	

-	/**

-	 * Create a requirement with the given name.

-	 * 

-	 * @param name

-	 */

-	public RequirementImpl(String name) {

-		this.name = name;

-	}

-

-

-	/**

-	 * Parse the requirement from the pull parser.

-	 * 

-	 * @param parser

-	 * @throws Exception

-	 */

-	public RequirementImpl(XmlPullParser parser) throws Exception {

-		parser.require(XmlPullParser.START_TAG, null, null );

-		name = parser.getAttributeValue(null, "name");

-		filter = parser.getAttributeValue(null, "filter");

-		

-		String opt = parser.getAttributeValue(null,"optional");

-		String mul = parser.getAttributeValue(null,"multiple");

-		String ext = parser.getAttributeValue(null,"extend");

-		optional = "true".equalsIgnoreCase(opt);

-		multiple = "true".equalsIgnoreCase(mul);

-		extend = "true".equalsIgnoreCase(ext);

-		

-		

-		StringBuffer sb = new StringBuffer();

-		while ( parser.next() == XmlPullParser.TEXT ) {

-			sb.append( parser.getText() );

-		}

-		if ( sb.length() > 0 )

-			setComment(sb.toString().trim());

-			

-		parser.require(XmlPullParser.END_TAG, null, null );

-	}

-

-	public void setFilter(String filter) {

-		this.filter = filter;

-		_filter= null;

-	}

-

-	public String getFilter() {

-		return filter;

-	}

-

-	public Tag toXML(String name) {

-		Tag tag = toXML(this);

-		tag.rename(name);

-		return tag;

-	}

-

-

-	public String getName() {

-		return name;

-	}

-

-	public boolean isSatisfied(Capability capability) {

-		if (_filter == null)

-			_filter = new FilterImpl(filter);

-

-		boolean result = _filter.match(capability.getProperties());

-		return result;

-	}

-

-	public String toString() {

-		return name + " " + filter;

-	}

-

-

-	public String getComment() {

-		return comment;

-	}

-

-

-	public void setComment(String comment) {

-		this.comment=comment;

-	}

-

-

-	public static Tag toXML(Requirement requirement) {

-		Tag req = new Tag("require");

-		req.addAttribute("name", requirement.getName());

-		req.addAttribute("filter", requirement.getFilter());

-		

-		req.addAttribute("optional", requirement.isOptional()+"");

-		req.addAttribute("multiple", requirement.isMultiple()+"");

-		req.addAttribute("extend", requirement.isExtend()+"");

-		

-		if ( requirement.getComment() != null )

-			req.addContent(requirement.getComment());

-		

-		return req;

-	}

-

-

-	public boolean isMultiple() {

-		return multiple;

-	}

-

-

-	public boolean isOptional() {

-		return optional;

-	}

-

-

-	public void setOptional(boolean b) {

-		optional = b;

-	}

-

-	public void setMultiple(boolean b) {

-		multiple = b;

-	}

-

-

-	public boolean equals(Object o) {

-		if ( ! (o instanceof Requirement) )

-			return false;

-		

-		Requirement r2 = (Requirement)o;

-		return filter.equals(r2.getFilter()) && name.equals(r2.getName()); 

-	}

-	

-	public int hashCode() {

-		return filter.hashCode() ^ name.hashCode();

-	}

-	

-	public boolean isExtend() {

-		return extend;

-	}

-	

-	public void setExtend(boolean extend) {

-		this.extend = extend;

-	}

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/ResourceImpl.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/ResourceImpl.java
deleted file mode 100644
index 55cd298..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/ResourceImpl.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*

- * $Id: ResourceImpl.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.io.File;

-import java.net.URL;

-import java.util.*;

-

-import org.osgi.framework.Version;

-import org.osgi.service.obr.*;

-import org.xmlpull.v1.XmlPullParser;

-

-public class ResourceImpl implements Resource {

-	List			capabilities	= new ArrayList();

-	List			requirements	= new ArrayList();

-	URL				url;

-	String			symbolicName;

-	VersionRange		version;

-	List			categories		= new ArrayList();

-	long			size			= -1;

-	String			id;

-	static int		ID				= 1;

-	Map				map				= new HashMap();

-	RepositoryImpl	repository;

-	String			presentationName;

-	File			file;

-

-

-	public ResourceImpl(RepositoryImpl repository, String name,

-			VersionRange version) {

-		this.version = version;

-		if ( version == null)

-			this.version = new VersionRange("0");

-		this.symbolicName = name;

-		this.repository = repository;

-	}

-

-	public ResourceImpl(RepositoryImpl repository, XmlPullParser parser)

-			throws Exception {

-		this.repository = repository;

-		parser.require(XmlPullParser.START_TAG, null, "resource");

-		symbolicName = parser.getAttributeValue(null, "symbolicname");

-		if (symbolicName == null)

-			System.err.println("Hey, no symb name! "

-					+ parser.getAttributeValue(null, "uri"));

-

-		map.put(SYMBOLIC_NAME, symbolicName);

-		presentationName = parser.getAttributeValue(null, PRESENTATION_NAME);

-		if (presentationName != null)

-			map.put(PRESENTATION_NAME, presentationName);

-		String v = parser.getAttributeValue(null, "version");

-		if (v == null)

-			setVersion(new VersionRange("0"));

-		else

-			setVersion(new VersionRange(v));

-

-		setURL(toURL(parser.getAttributeValue(null, "uri")));

-

-		while (parser.nextTag() == XmlPullParser.START_TAG) {

-			if (parser.getName().equals("category")) {

-				categories.add(parser.getAttributeValue(null, "id").trim());

-			}

-			else if (parser.getName().equals("require"))

-				addRequirement(new RequirementImpl(parser));

-			else if (parser.getName().equals("capability"))

-				addCapability(new CapabilityImpl(parser));

-			else {

-				String text = parser.nextText();

-				if (text != null)

-					map.put(parser.getName(), text.trim());

-			}

-			parser.next();

-		}

-		parser.require(XmlPullParser.END_TAG, null, "resource");

-	}

-

-	public ResourceImpl(RepositoryImpl impl) {

-		this.repository = impl;

-	}

-

-	private URL toURL(String attributeValue) throws Exception {

-		if (attributeValue == null)

-			return null;

-

-		return new URL(repository.getURL(), attributeValue);

-	}

-

-	public void addCategory(String category) {

-		categories.add(category);

-	}

-

-	public void addCapability(CapabilityImpl capability) {

-		if (capability != null)

-			capabilities.add(capability);

-	}

-

-	public void addRequirement(RequirementImpl requirement) {

-		if (requirement != null)

-			requirements.add(requirement);

-	}

-

-	public void setLicense(URL license) {

-		if (license != null)

-			map.put(LICENSE_URL, license);

-	}

-

-	public String getDescription() {

-		return (String) map.get(DESCRIPTION);

-	}

-

-	public void setDescription(String description) {

-		if (description != null)

-			map.put(DESCRIPTION, description);

-	}

-

-	public Capability[] getCapabilities() {

-		return (Capability[]) capabilities.toArray(new Capability[capabilities

-				.size()]);

-	}

-

-	public URL getLicense() {

-		return (URL) map.get(LICENSE_URL);

-	}

-

-	public String getSymbolicName() {

-		return symbolicName;

-	}

-

-	public Requirement[] getRequirements() {

-		return (Requirement[]) requirements

-				.toArray(new Requirement[requirements.size()]);

-	}

-

-	public Tag toXML() {

-		return toXML(this );

-	}

-

-	public static Tag toXML(Resource resource) {

-		return toXML(resource,true);

-	}

-

-	public static Tag toXML(Resource resource, boolean relative ) {

-		Tag meta = new Tag("resource");

-		URL url = resource.getURL();

-		String urlString = url.toExternalForm();

-		

-		if ( relative )

-			urlString = makeRelative(resource.getRepository().getURL(), url);

-		

-		meta.addAttribute("uri", urlString );

-		meta.addAttribute(SYMBOLIC_NAME, resource.getSymbolicName());

-		if (resource.getPresentationName() != null)

-			meta

-					.addAttribute(PRESENTATION_NAME, resource

-							.getPresentationName());

-		meta.addAttribute(VERSION, resource.getVersion().toString());

-		meta.addAttribute("id", resource.getId());

-		Map map = new TreeMap(resource.getProperties());

-		for (int i = 0; i < Resource.KEYS.length; i++) {

-			String key = KEYS[i];

-			if (!(key.equals(URL) || key.equals(SYMBOLIC_NAME) || key

-					.equals(VERSION) || key.equals(PRESENTATION_NAME))) {

-				Object value = map.get(KEYS[i]);

-				if (value != null) {

-					if (value instanceof URL)

-						value = makeRelative(resource.getRepository().getURL(),(URL) value);

-					meta.addContent(new Tag(key, value.toString()));

-				}

-			}

-		}

-

-		String[] categories = resource.getCategories();

-		for (int i = 0; i < categories.length; i++) {

-			String category = categories[i];

-			meta.addContent(new Tag("category", new String[] {"id",

-					category.toLowerCase()}));

-		}

-

-		Capability[] capabilities = resource.getCapabilities();

-		for (int i = 0; i < capabilities.length; i++) {

-			meta.addContent(CapabilityImpl.toXML(capabilities[i]));

-		}

-

-		Requirement[] requirements = resource.getRequirements();

-		for (int i = 0; i < requirements.length; i++) {

-			meta.addContent(RequirementImpl.toXML(requirements[i]));

-		}

-		return meta;

-	}

-

-	public URL getURL() {

-		return url;

-	}

-

-	static String makeRelative(URL repository, URL url) {

-		try {

-			if (repository != null) {

-				String a = url.toExternalForm();

-				String b = repository.toExternalForm();

-				int index = b.lastIndexOf('/');

-				if ( index > 0 )

-					b = b.substring(0,index+1);

-				if (a.startsWith(b))

-					return a.substring(b.length());

-			}

-		}

-		catch (Exception e) {

-			// Ignore

-		}

-		return url.toExternalForm();

-	}

-

-	public void setURL(URL url) {

-		this.url = url;

-		if (url != null)

-			map.put(URL, url);

-	}

-

-	public String getCopyright() {

-		return (String) map.get(COPYRIGHT);

-	}

-

-	public Version getVersion() {

-		if (version == null)

-			version = new VersionRange("0");

-		return version.low;

-	}

-

-	void setVersion(VersionRange version) {

-		if (version == null)

-			this.version = new VersionRange("0");

-		else

-			this.version = version;

-	}

-

-	public void setCopyright(String copyright) {

-		if (copyright != null)

-			map.put(COPYRIGHT, copyright);

-	}

-

-	public URL getDocumentation() {

-		return (URL) map.get(DOCUMENTATION_URL);

-	}

-

-	public void setDocumentation(URL documentation) {

-		if (documentation != null)

-			map.put(DOCUMENTATION_URL, documentation);

-	}

-

-	public URL getSource() {

-		return (URL) map.get(SOURCE_URL);

-	}

-

-	public void setSource(URL source) {

-		if (source != null)

-			map.put(SOURCE_URL, source);

-	}

-

-	public boolean satisfies(RequirementImpl requirement) {

-		for (Iterator i = capabilities.iterator(); i.hasNext();) {

-			CapabilityImpl capability = (CapabilityImpl) i.next();

-			if (requirement.isSatisfied(capability))

-				return true;

-		}

-		return false;

-	}

-

-	public String toString() {

-		return symbolicName + "-" + version;

-	}

-

-	public long getSize() {

-		return size;

-	}

-

-	public void setSize(long size) {

-		this.size = size;

-		map.put(SIZE, new Long(size));

-	}

-

-	public Collection getRequirementList() {

-		return requirements;

-	}

-

-	public Collection getCapabilityList() {

-		return capabilities;

-	}

-

-	public int hashCode() {

-		return symbolicName.hashCode() ^ version.hashCode();

-	}

-

-	public boolean equals(Object o) {

-		try {

-			ResourceImpl other = (ResourceImpl) o;

-			return symbolicName.equals(other.symbolicName)

-					&& version.equals(other.version);

-		}

-		catch (ClassCastException e) {

-			return false;

-		}

-	}

-

-	public String[] getCategories() {

-		return (String[]) categories.toArray(new String[categories.size()]);

-	}

-

-	public Map getProperties() {

-		return Collections.unmodifiableMap(map);

-	}

-

-	public synchronized String getId() {

-		if ( id == null )

-			id = symbolicName + "/" + version;

-		return id;

-	}

-

-	public Repository getRepository() {

-		return repository;

-	}

-

-	void setName(String value) {

-		this.symbolicName = value;

-	}

-

-	void put(String name, Object value) {

-		map.put(name, value);

-	}

-

-	public void setPresentationName(String name) {

-		presentationName = name;

-		if (name != null)

-			map.put(PRESENTATION_NAME, name);

-	}

-

-	public String getPresentationName() {

-		return presentationName;

-	}

-

-	public void setFile(File zipFile) {

-		file = zipFile;

-	}

-

-	public Set getExtendList() {

-		Set set = new HashSet();

-		for (Iterator i = requirements.iterator(); i.hasNext();) {

-			RequirementImpl	impl = (RequirementImpl) i.next();

-			if ( impl.isExtend())

-				set.add(impl);

-		}

-		return set;

-	}

-

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/StringSet.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/StringSet.java
deleted file mode 100644
index d2bbd5d..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/StringSet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*

- * $Id: StringSet.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-

-

-package org.osgi.impl.bundle.obr.resource;

-

-import java.util.*;

-

-public class StringSet extends HashSet {

-	static final long	serialVersionUID	= 1L;

-

-	public StringSet(String set) {

-		StringTokenizer st = new StringTokenizer(set, ",");

-		while (st.hasMoreTokens())

-			add(st.nextToken().trim());

-	}

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Tag.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Tag.java
deleted file mode 100644
index 3c1375f..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/Tag.java
+++ /dev/null
@@ -1,488 +0,0 @@
-/*

- * $Id: Tag.java 44 2007-07-13 20:49:41Z hargrave@us.ibm.com $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package org.osgi.impl.bundle.obr.resource;

-

-import java.io.*;

-import java.text.SimpleDateFormat;

-import java.util.*;

-

-/**

- * The Tag class represents a minimal XML tree. It consist of a named element

- * with a hashtable of named attributes. Methods are provided to walk the tree

- * and get its constituents. The content of a Tag is a list that contains String

- * objects or other Tag objects.

- */

-public class Tag {

-	Tag						parent;

-	String					name;

-	Map						attributes	= new TreeMap();

-	Vector					content		= new Vector();

-

-	static SimpleDateFormat	format		= new SimpleDateFormat(

-												"yyyyMMddhhmmss.SSS");

-

-	/**

-	 * Construct a new Tag with a name.

-	 */

-	public Tag(String name) {

-		this.name = name;

-	}

-

-	/**

-	 * Construct a new Tag with a name.

-	 */

-	public Tag(String name, Map attributes) {

-		this.name = name;

-		this.attributes = attributes;

-	}

-

-	/**

-	 * Construct a new Tag with a name and a set of attributes. The attributes

-	 * are given as ( name, value ) ...

-	 */

-	public Tag(String name, String[] attributes) {

-		this.name = name;

-		for (int i = 0; i < attributes.length; i += 2)

-			addAttribute(attributes[i], attributes[i + 1]);

-	}

-

-	/**

-	 * Construct a new Tag with a single string as content.

-	 */

-	public Tag(String name, String content) {

-		this.name = name;

-		addContent(content);

-	}

-

-	/**

-	 * Add a new attribute.

-	 */

-	public void addAttribute(String key, String value) {

-		attributes.put(key, value);

-	}

-

-	/**

-	 * Add a new attribute.

-	 */

-	public void addAttribute(String key, Object value) {

-		if (value == null)

-			return;

-		attributes.put(key, value.toString());

-	}

-

-	/**

-	 * Add a new attribute.

-	 */

-	public void addAttribute(String key, int value) {

-		attributes.put(key, Integer.toString(value));

-	}

-

-	/**

-	 * Add a new date attribute. The date is formatted as the SimpleDateFormat

-	 * describes at the top of this class.

-	 */

-	public void addAttribute(String key, Date value) {

-		attributes.put(key, format.format(value));

-	}

-

-	/**

-	 * Add a new content string.

-	 */

-	public void addContent(String string) {

-		content.addElement(string);

-	}

-

-	/**

-	 * Add a new content tag.

-	 */

-	public void addContent(Tag tag) {

-		content.addElement(tag);

-		tag.parent = this;

-	}

-

-	/**

-	 * Return the name of the tag.

-	 */

-	public String getName() {

-		return name;

-	}

-

-	/**

-	 * Return the attribute value.

-	 */

-	public String getAttribute(String key) {

-		return (String) attributes.get(key);

-	}

-

-	/**

-	 * Return the attribute value or a default if not defined.

-	 */

-	public String getAttribute(String key, String deflt) {

-		String answer = getAttribute(key);

-		return answer == null ? deflt : answer;

-	}

-

-	/**

-	 * Answer the attributes as a Dictionary object.

-	 */

-	public Map getAttributes() {

-		return attributes;

-	}

-

-	/**

-	 * Return the contents.

-	 */

-	public Vector getContents() {

-		return content;

-	}

-

-	/**

-	 * Return a string representation of this Tag and all its children

-	 * recursively.

-	 */

-	public String toString() {

-		StringWriter sw = new StringWriter();

-		print(0, new PrintWriter(sw));

-		return sw.toString();

-	}

-

-	/**

-	 * Return only the tags of the first level of descendants that match the

-	 * name.

-	 */

-	public Vector getContents(String tag) {

-		Vector out = new Vector();

-		for (Enumeration e = content.elements(); e.hasMoreElements();) {

-			Object o = e.nextElement();

-			if (o instanceof Tag && ((Tag) o).getName().equals(tag))

-				out.addElement(o);

-		}

-		return out;

-	}

-

-	/**

-	 * Return the whole contents as a String (no tag info and attributes).

-	 */

-	public String getContentsAsString() {

-		StringBuffer sb = new StringBuffer();

-		getContentsAsString(sb);

-		return sb.toString();

-	}

-

-	/**

-	 * convenient method to get the contents in a StringBuffer.

-	 */

-	public void getContentsAsString(StringBuffer sb) {

-		for (Enumeration e = content.elements(); e.hasMoreElements();) {

-			Object o = e.nextElement();

-			if (o instanceof Tag)

-				((Tag) o).getContentsAsString(sb);

-			else

-				sb.append(o.toString());

-		}

-	}

-

-	/**

-	 * Print the tag formatted to a PrintWriter.

-	 */

-	public void print(int indent, PrintWriter pw) {

-		pw.print("\n");

-		spaces(pw, indent);

-		pw.print('<');

-		pw.print(name);

-

-		for (Iterator e = attributes.keySet().iterator(); e.hasNext();) {

-			String key = (String) e.next();

-			String value = escape((String) attributes.get(key));

-			pw.print(' ');

-			pw.print(key);

-			pw.print("=");

-			String quote = "'";

-			if (value.indexOf(quote) >= 0)

-				quote = "\"";

-			pw.print(quote);

-			pw.print(value);

-			pw.print(quote);

-		}

-

-		if (content.size() == 0)

-			pw.print('/');

-		else {

-			pw.print('>');

-			for (Enumeration e = content.elements(); e.hasMoreElements();) {

-				Object content = e.nextElement();

-				if (content instanceof String) {

-					formatted(pw, indent + 2, 60, escape((String) content));

-				}

-				else if (content instanceof Tag) {

-					Tag tag = (Tag) content;

-					tag.print(indent + 2, pw);

-				}

-			}

-			pw.print("\n");

-			spaces(pw, indent);

-			pw.print("</");

-			pw.print(name);

-		}

-		pw.print('>');

-	}

-

-	/**

-	 * Convenience method to print a string nicely and does character conversion

-	 * to entities.

-	 */

-	void formatted(PrintWriter pw, int left, int width, String s) {

-		int pos = width + 1;

-		s = s.trim();

-

-		for (int i = 0; i < s.length(); i++) {

-			char c = s.charAt(i);

-			if (i == 0 || (Character.isWhitespace(c) && pos > width - 3)) {

-				pw.print("\n");

-				spaces(pw, left);

-				pos = 0;

-			}

-			switch (c) {

-				case '<' :

-					pw.print("&lt;");

-					pos += 4;

-					break;

-				case '>' :

-					pw.print("&gt;");

-					pos += 4;

-					break;

-				case '&' :

-					pw.print("&amp;");

-					pos += 5;

-					break;

-				default :

-					pw.print(c);

-					pos++;

-					break;

-			}

-

-		}

-	}

-

-	/**

-	 * Escape a string, do entity conversion.

-	 */

-	String escape(String s) {

-		if  ( s == null )

-			return "?null?";

-		

-		StringBuffer sb = new StringBuffer();

-		for (int i = 0; i < s.length(); i++) {

-			char c = s.charAt(i);

-			switch (c) {

-				case '<' :

-					sb.append("&lt;");

-					break;

-				case '>' :

-					sb.append("&gt;");

-					break;

-				case '&' :

-					sb.append("&amp;");

-					break;

-				default :

-					sb.append(c);

-					break;

-			}

-		}

-		return sb.toString();

-	}

-

-	/**

-	 * Make spaces.

-	 */

-	void spaces(PrintWriter pw, int n) {

-		while (n-- > 0)

-			pw.print(' ');

-	}

-

-	/**

-	 * root/preferences/native/os

-	 */

-	public Tag[] select(String path) {

-		return select(path, (Tag) null);

-	}

-

-	public Tag[] select(String path, Tag mapping) {

-		Vector v = new Vector();

-		select(path, v, mapping);

-		Tag[] result = new Tag[v.size()];

-		v.copyInto(result);

-		return result;

-	}

-

-	void select(String path, Vector results, Tag mapping) {

-		if (path.startsWith("//")) {

-			int i = path.indexOf('/', 2);

-			String name = path.substring(2, i < 0 ? path.length() : i);

-

-			for (Enumeration e = content.elements(); e.hasMoreElements();) {

-				Object o = e.nextElement();

-				if (o instanceof Tag) {

-					Tag child = (Tag) o;

-					if (match(name, child, mapping))

-						results.add(child);

-					child.select(path, results, mapping);

-				}

-

-			}

-			return;

-		}

-

-		if (path.length() == 0) {

-			results.addElement(this);

-			return;

-		}

-

-		int i = path.indexOf("/");

-		String elementName = path;

-		String remainder = "";

-		if (i > 0) {

-			elementName = path.substring(0, i);

-			remainder = path.substring(i + 1);

-		}

-

-		for (Enumeration e = content.elements(); e.hasMoreElements();) {

-			Object o = e.nextElement();

-			if (o instanceof Tag) {

-				Tag child = (Tag) o;

-				if (child.getName().equals(elementName)

-						|| elementName.equals("*"))

-					child.select(remainder, results, mapping);

-			}

-		}

-	}

-

-	public boolean match(String search, Tag child, Tag mapping) {

-		String target = child.getName();

-		String sn = null;

-		String tn = null;

-

-		if (search.equals("*"))

-			return true;

-

-		int s = search.indexOf(':');

-		if (s > 0) {

-			sn = search.substring(0, s);

-			search = search.substring(s + 1);

-		}

-		int t = target.indexOf(':');

-		if (t > 0) {

-			tn = target.substring(0, t);

-			target = target.substring(t + 1);

-		}

-

-		if (!search.equals(target)) // different tag names

-			return false;

-

-		if (mapping == null) {

-			return tn == sn || (sn != null && sn.equals(tn));

-		}

-		else {

-			String suri = sn == null ? mapping.getAttribute("xmlns") : mapping

-					.getAttribute("xmlns:" + sn);

-			String turi = tn == null ? child.findRecursiveAttribute("xmlns")

-					: child.findRecursiveAttribute("xmlns:" + tn);

-			return turi == suri

-					|| (turi != null && suri != null && turi.equals(suri));

-		}

-	}

-

-	public String getString(String path) {

-		String attribute = null;

-		int index = path.indexOf("@");

-		if (index >= 0) {

-			// attribute

-			attribute = path.substring(index + 1);

-

-			if (index > 0) {

-				// prefix path

-				path = path.substring(index - 1); // skip -1

-			}

-			else

-				path = "";

-		}

-		Tag tags[] = select(path);

-		StringBuffer sb = new StringBuffer();

-		for (int i = 0; i < tags.length; i++) {

-			if (attribute == null)

-				tags[i].getContentsAsString(sb);

-			else

-				sb.append(tags[i].getAttribute(attribute));

-		}

-		return sb.toString();

-	}

-

-	public String getStringContent() {

-		StringBuffer sb = new StringBuffer();

-		for (Enumeration e = content.elements(); e.hasMoreElements();) {

-			Object c = e.nextElement();

-			if (!(c instanceof Tag))

-				sb.append(c);

-		}

-		return sb.toString();

-	}

-

-	public String getNameSpace() {

-		return getNameSpace(name);

-	}

-

-	public String getNameSpace(String name) {

-		int index = name.indexOf(':');

-		if (index > 0) {

-			String ns = name.substring(0, index);

-			return findRecursiveAttribute("xmlns:" + ns);

-		}

-		else

-			return findRecursiveAttribute("xmlns");

-	}

-

-	public String findRecursiveAttribute(String name) {

-		String value = getAttribute(name);

-		if (value != null)

-			return value;

-		if (parent != null)

-			return parent.findRecursiveAttribute(name);

-		return null;

-	}

-

-	public String getLocalName() {

-		int index = name.indexOf(':');

-		if (index <= 0)

-			return name;

-

-		return name.substring(index + 1);

-	}

-

-	public void rename(String string) {

-		name = string;

-	}

-

-

-	public static void convert( Collection c, String type, Tag parent ) {

-		for ( Iterator i=c.iterator(); i.hasNext(); ) {

-			Map	map = (Map) i.next();

-			parent.addContent( new Tag(type, map) );

-		}

-	}

-

-}

diff --git a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/VersionRange.java b/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/VersionRange.java
deleted file mode 100644
index afc99fc..0000000
--- a/maven-obr-plugin/src/main/java/org/osgi/impl/bundle/obr/resource/VersionRange.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*

- * $Id: VersionRange.java 45 2007-10-01 12:56:02Z peter.kriens@aqute.biz $

- * 

- * Copyright (c) OSGi Alliance (2002, 2006, 2007). All Rights Reserved.

- * 

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-

-package org.osgi.impl.bundle.obr.resource;

-

-import java.util.regex.*;

-

-import org.osgi.framework.*;

-

-public class VersionRange implements Comparable {

-	Version high;

-	Version low;

-	char start = '[';

-	char end = ']';

-

-	static String V = "\\s*[0-9]+(\\.[0-9]+(\\.[0-9]+(\\.[a-zA-Z0-9_-]+)?)?)?\\s*";

-	static Pattern RANGE = Pattern.compile("(\\(|\\[)(" + V + "),(" + V

-			+ ")(\\)|\\])");

-

-	public VersionRange(String string) {

-		string = string.trim();

-		Matcher m = RANGE.matcher(string);

-		if (m.matches()) {

-			start = m.group(1).charAt(0);

-			low = new Version(m.group(2).trim());

-			high = new Version(m.group(6).trim());

-			end = m.group(10).charAt(0);

-			if (low.compareTo(high) >= 0)

-				throw new IllegalArgumentException(

-						"Low Range is higher than High Range: " + low + "-"

-								+ high);

-

-		} else

-			high = low = new Version(string);

-	}

-

-	public boolean isRange() {

-		return high != low;

-	}

-

-	public boolean includeLow() {

-		return start == '[';

-	}

-

-	public boolean includeHigh() {

-		return end == ']';

-	}

-

-	public String toString() {

-		if (high == low)

-			return high.toString();

-

-		StringBuffer sb = new StringBuffer();

-		sb.append(start);

-		sb.append(low);

-		sb.append(',');

-		sb.append(high);

-		sb.append(end);

-		return sb.toString();

-	}

-

-	public boolean equals(Object other) {

-		if (other instanceof VersionRange) {

-			return compareTo(other)==0;

-		}

-		return false;

-	}

-

-	public int hashCode() {

-		return low.hashCode() * high.hashCode();

-	}

-

-	public int compareTo(Object other) {

-		VersionRange range = (VersionRange) other;

-		VersionRange a = this, b = range;

-		if (range.isRange()) {

-			a = range;

-			b = this;

-		} else {

-			if ( !isRange() )

-				return low.compareTo(range.high);

-		}

-		int l = a.low.compareTo(b.low);

-		boolean ll = false;

-		if (a.includeLow())

-			ll = l <= 0;

-		else

-			ll = l < 0;

-

-		if (!ll)

-			return -1;

-

-		int h = a.high.compareTo(b.high);

-		if (a.includeHigh())

-			ll = h >= 0;

-		else

-			ll = h > 0;

-

-		if (ll)

-			return 0;

-		else

-			return 1;

-	}

-}
\ No newline at end of file
diff --git a/maven-obr-plugin/src/main/resources/SchemaObr.xsd b/maven-obr-plugin/src/main/resources/SchemaObr.xsd
deleted file mode 100644
index 63b63e9..0000000
--- a/maven-obr-plugin/src/main/resources/SchemaObr.xsd
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>

-<!--

- Licensed to the Apache Software Foundation (ASF) under one

- or more contributor license agreements.  See the NOTICE file

- distributed with this work for additional information

- regarding copyright ownership.  The ASF licenses this file

- to you under the Apache License, Version 2.0 (the

- "License"); you may not use this file except in compliance

- with the License.  You may obtain a copy of the License at

-

-    http://www.apache.org/licenses/LICENSE-2.0

-

- Unless required by applicable law or agreed to in writing,

- software distributed under the License is distributed on an

- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

- KIND, either express or implied.  See the License for the

- specific language governing permissions and limitations

- under the License.

--->

-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

-<!-- definition of simple elements -->

-

-<!-- definition of attribute  -->

-<xs:attribute name="name"     type="xs:string"/>

-<xs:attribute name="filter"   type="xs:string"/>

-<xs:attribute name="extend"   type="xs:boolean"/>

-<xs:attribute name="multiple" type="xs:boolean"/>

-<xs:attribute name="optional" type="xs:boolean"/>

-<xs:attribute name="id" type="xs:string"/>

-<xs:attribute name="n" type="xs:string"/>

-<xs:attribute name="v" type="xs:string"/>

-<xs:attribute name="t" type="xs:string"/>

-

-<xs:element name="require">

-  <xs:complexType mixed="true">

-    <xs:attribute ref="name"     use="required"/>

-    <xs:attribute ref="filter"   use="required"/>

-    <xs:attribute ref="extend"   use="required"/>

-    <xs:attribute ref="multiple" use="required"/>

-    <xs:attribute ref="optional" use="required"/>

-  </xs:complexType>

-</xs:element>

-

-<xs:element name="category">

-  <xs:complexType>

-	<xs:attribute ref="id" use="required"/>

-  </xs:complexType>

-</xs:element>

-

-<xs:element name="p">

-  <xs:complexType>

-	<xs:attribute ref="n" use="required"/>

-    <xs:attribute ref="v" use="required"/>

-    <xs:attribute ref="t" />

-  </xs:complexType>

-</xs:element>

-

-

-<xs:element name="capability">

-  <xs:complexType>

-    <xs:sequence>

-  		<xs:element ref="p" minOccurs="0" maxOccurs="unbounded"/>

-	</xs:sequence>

-  </xs:complexType>

-</xs:element>

-

-<xs:element name="resource">

-  <xs:complexType>

-    <xs:sequence>

-		  <xs:element ref="capability" minOccurs="0" maxOccurs="unbounded"/> 

-		  <xs:element ref="require" minOccurs="0" maxOccurs="unbounded"/> 

-		  <xs:element ref="category" minOccurs="0" maxOccurs="unbounded"/> 

-	</xs:sequence>

-  </xs:complexType>

-</xs:element>

-</xs:schema>

diff --git a/pom.xml b/pom.xml
index 6b58182..930b8c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,11 +77,8 @@
         </property>
       </activation>
       <modules>
-        <module>maven-obr-plugin</module>
         <module>bundleplugin</module>
         <module>scrplugin</module>
-        <module>tools/maven2/maven-osgi-plugin</module>
-<!--        <module>tools/maven2/maven-felix-plugin</module> -->
       </modules>
     </profile>
 
@@ -144,10 +141,6 @@
       </activation>
       <modules>
         <module>org.apache.felix.daemon</module>
-
-        <!--    <module>tools/mangen</module> -->
-
-
       </modules>
     </profile>