diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr.html b/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr.html
deleted file mode 100644
index fd356d6..0000000
--- a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr.html
+++ /dev/null
@@ -1,484 +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 - Apache Felix OSGi Bundle Repository (OBR)</title>
-
-
-  
-    
-    <link rel="stylesheet" href="apache-felix-osgi-bundle-repository-obr_files/site.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body linkifying="true">
-    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-osgi-bundle-repository-obr_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-osgi-bundle-repository-obr_files/apache.png" border="0"></a></div></div>
-    <div class="menu">
-<ul>
-	<li><a href="http://cwiki.apache.org/FELIX/index.html" title="Index">home</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/news.html" title="news">news</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/status.html" title="status">status</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/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="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><a href="http://cwiki.apache.org/FELIX/documentation.html" title="documentation">documentation</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/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="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><a href="http://cwiki.apache.org/FELIX/committers.html" title="committers">committers</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/faq.html" title="faq">faq</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/roadmap.html" title="roadmap">roadmap</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/sourcecode.html" title="sourcecode">source code</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/codingstandards.html" title="codingstandards">coding standards</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/issuetracking.html" title="issuetracking">issue tracking</a></li>
-	<li><a href="http://cwiki.apache.org/FELIX/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="apache-felix-osgi-bundle-repository-obr_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="apache-felix-osgi-bundle-repository-obr_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="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-</ul> </div>
-    <div class="main">
-<h1><a name="ApacheFelixOSGiBundleRepository(OBR)-ApacheFelixOSGiBundleRepository(OBR)"></a>Apache Felix OSGi Bundle Repository (OBR)</h1>
-
-<ul>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-motivation" title="motivation on Apache Felix OSGi Bundle Repository (OBR)">Motivation</a></li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-overview" title="overview on Apache Felix OSGi Bundle Repository (OBR)">Overview</a></li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-repositoryfile" title="repository-file on Apache Felix OSGi Bundle Repository (OBR)">OBR Repository File</a></li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-serviceapi" title="service-api on Apache Felix OSGi Bundle Repository (OBR)">OBR Service API</a></li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-shellcommand" title="shell-command on Apache Felix OSGi Bundle Repository (OBR)">OBR Shell Command</a>
-	<ul>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrhelp" title="obr-help on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr help</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrlisturl" title="obr-list-url on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr list-url</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obraddurl" title="obr-add-url on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr add-url</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrremoveurl" title="obr-remove-url on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr remove-url</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrlist" title="obr-list on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr list</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrinfo" title="obr-info on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr info</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrdeploy" title="obr-deploy on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr deploy</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrstart" title="obr-start on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr start</tt></a></li>
-		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrsource" title="obr-source on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr source</tt></a></li>
-	</ul>
-	</li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-proxy" title="proxy on Apache Felix OSGi Bundle Repository (OBR)">Using OBR with a Proxy</a></li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-sourcepackaging" title="source-packaging on Apache Felix OSGi Bundle Repository (OBR)">Bundle Source Packaging</a></li>
-	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-feedback" title="feedback on Apache Felix OSGi Bundle Repository (OBR)">Feedback</a></li>
-</ul>
-
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-motivation"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-Motivation"></a>Motivation</h2>
-
-<p>The goal of the Apache Felix OSGi Bundle Repository (OBR) is two-fold:</p>
-
-<ol>
-	<li>To simplify deploying and using available bundles with Felix.</li>
-	<li>To encourage independent bundle development so that communities of interest can grow.</li>
-</ol>
-
-
-<p>OBR achieves the first goal by providing a service that can
-automatically install a bundle, with its deployment dependencies, from
-a bundle repository. This makes it easier for people to experiment with
-existing bundles. The second goal is achieved by raising the visibility
-of the available bundles and providing access to both the executable
-bundle and its source code. Hopefully, by making OBR and the bundles
-themselves more visible, community members will be encouraged to
-provide or improve service implementations.</p>
-
-<p>Note: OBR provides access to the Felix' default bundle repository,
-but you can also use it to deploy your own bundles by creating a bundle
-repository meta-data file for your local bundles; see the <tt>obr list-url</tt>, <tt>obr add-url</tt>, and <tt>obr remove-url</tt> commands for more details.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-overview"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-Overview"></a>Overview</h2>
-
-<p>For the most part, OBR is quite simple. An OBR "repository server"
-is not necessary, since all functionality may reside on the client
-side. OBR is able to provide its functionality by reading an XML-based
-meta-data file that describes the bundles available to it. The
-meta-data file essentially contains an XML encoding of the bundles'
-manifest information. From the meta-data, OBR is able to construct
-dependency information for deploying (i.e., installing and updating)
-bundles.</p>
-
-<p>OBR defines the following entities:</p>
-
-<ul>
-	<li><em><b>Repository Admin</b></em> - a service to access a federation of repositories.</li>
-	<li><em><b>Repository</b></em> - provides access to a set of resources.</li>
-	<li><em><b>Resource</b></em> - a description of an artifact to be installed on a device.</li>
-	<li><em><b>Capability</b></em> - a named set of properties.</li>
-	<li><em><b>Requirement</b></em> - an assertion on a capability.</li>
-	<li><em><b>Resolver</b></em> - an object to resolve resource dependencies and to deploy them.</li>
-	<li><em><b>Repository file</b></em> - XML file containing resource meta-data.</li>
-</ul>
-
-
-<p>The following diagram illustrates the relationships among these entities:</p>
-
-<p><img src="apache-felix-osgi-bundle-repository-obr_files/obr-entities.png" align="absmiddle" border="0"></p>
-
-<p>The client has access to a federated set of repositories via the Repository Admin service; such as depicted in this view:</p>
-
-<p><img src="apache-felix-osgi-bundle-repository-obr_files/obr-high-level.png" align="absmiddle" border="0"></p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-repositoryfile"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-OBRRepositoryFile"></a>OBR Repository File</h2>
-
-<p>The OBR repository file is an XML-based representation of bundle
-meta-data. The goal is provide a generic model for describing
-dependencies among resources; as such, the term <em><b>resource</b></em> is used instead of <em><b>bundle</b></em> in the OBR repository syntax; a detailed description of the OBR meta-data format is available in the <span class="nobr"><a href="http://www2.osgi.org/download/rfc-0112_BundleRepository.pdf" title="Visit page outside Confluence" rel="nofollow">OSGi RFC 112<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>
-document; this document is not completely in sync with the
-implementation, but the concepts are still correct. The following XML
-snippet depicts the overall structure of a repository file:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>&lt;repository presentationname="..." symbolicname="..." ... &gt;
-    &lt;resource&gt;
-        &lt;description&gt;...&lt;/description&gt;
-        &lt;size&gt;...&lt;/size&gt;
-        &lt;documentation&gt;...&lt;/documentation&gt;
-        &lt;source&gt;...&lt;/source&gt;
-        &lt;category id="..."/&gt;
-        &lt;capability&gt;...&lt;/capability&gt;
-        ...
-        &lt;requirement&gt;...&lt;/requirement&gt;
-        ...
-    &lt;/resource&gt;
-    ...
-&lt;/repository&gt;
-</pre>
-</div></div>
-
-<p>The above repository defines a set of available resources, each
-described by a set of meta-data. Some resource meta-data is purely
-intended for human consumption; the most important aspects relate to
-the generic capability/requirement model.</p>
-
-<p>A resource can provide any number of capabilities. A capability is a
-typed set of properties. For example, the following is an exported
-package capability:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>&lt;capability name='package'&gt;
-    &lt;p n='package' v='org.foo.bar'/&gt;
-    &lt;p n='version' t='version' v='1.0.0'/&gt;
-&lt;/capability&gt;
-</pre>
-</div></div>
-
-<p>This capability is of type 'package' and exports 'org.foo.bar' at
-version '1.0.0'. Conversely, a requirement is a typed LDAP query over a
-set of capability properties. For example, the following is an imported
-package requirement:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>&lt;require name='package' extend='false'
-    multiple='false' optional='false'
-    filter='(&amp;amp;(package=org.foo.bar)(version&amp;gt;=1.0.0))'&gt;
-    Import package org.foo.bar
-&lt;/require&gt;
-</pre>
-</div></div>
-
-<p>This requirement is of type 'package' and imports 'org.foo.bar' at
-versions greater than '1.0.0'. Although this syntax looks rather
-complicated with the '\&amp;' and '\&gt;=' syntax, it is simply the
-standard OSGi LDAP query syntax in XML form (additionally, Peter Kriens
-has created a tool called <tt>bindex</tt> to generate this meta-data from a bundle's manifest).</p>
-
-<p>With this generic dependency model, OBR is able to provide mappings
-for the various OSGi bundle dependencies; e.g., import/export package,
-provide/require bundle, host/fragment, import/export service, execution
-environment, and native code. In addition, it is possible for bundles
-to introduce arbitrary dependencies for custom purposes.</p>
-
-<p>Two other important pieces of meta-data are <tt>Bundle-SymbolicName</tt> and <tt>Bundle-Version</tt>;
-these are standard OSGi bundle manifest attributes that OBR uses to
-uniquely identify a bundle. For example, if you want to use OBR to
-update a locally installed bundle, OBR gets its symbolic name and
-version and searches the repository metadata for a matching symbolic
-name. If the matching symbolic name is found, then OBR checks if there
-is a newer version than the local copy using the bundle version number.
-Thus, the symbolic name plus bundle version forms a unique key to match
-locally installed bundles to remotely available bundles.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-serviceapi"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-OBRServiceAPI"></a>OBR Service API</h2>
-
-<p>Typically, OBR service clients only need to interact with the
-Repository Admin service, which provides the mechanisms necessary to
-discover available resources. The Repository Admin interface is defined
-as follows:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> RepositoryAdmin
-{
-    <span class="code-keyword">public</span> Resource[] discoverResources(<span class="code-object">String</span> filterExpr);
-    <span class="code-keyword">public</span> Resolver resolver();
-    <span class="code-keyword">public</span> Repository addRepository(URL repository)?
-        <span class="code-keyword">throws</span> Exception;
-    <span class="code-keyword">public</span> <span class="code-object">boolean</span> removeRepository(URL repository);
-    <span class="code-keyword">public</span> Repository[] listRepositories();
-    <span class="code-keyword">public</span> Resource getResource(<span class="code-object">String</span> respositoryId);
-}</pre>
-</div></div>
-
-<p>In order to resolve and deploy available resources, the Repository
-Admin provides Resolver instances, which are defined as follows:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Resolver
-{
-    <span class="code-keyword">public</span> void add(Resource resource);
-    <span class="code-keyword">public</span> Requirement[] getUnsatisfiedRequirements();
-    <span class="code-keyword">public</span> Resource[] getOptionalResources();
-    <span class="code-keyword">public</span> Requirement[] getReason(Resource resource);
-    <span class="code-keyword">public</span> Resource[] getResources(Requirement requirement);
-    <span class="code-keyword">public</span> Resource[] getRequiredResources();
-    <span class="code-keyword">public</span> Resource[] getAddedResources();
-    <span class="code-keyword">public</span> <span class="code-object">boolean</span> resolve();
-    <span class="code-keyword">public</span> void deploy(<span class="code-object">boolean</span> start);
-}</pre>
-</div></div>
-
-<p>When desired resources are discovered via the query mechanisms of
-the Repository Admin, they are added to a Resolver instance which will
-can be used to resolve all transitive dependencies and to reflect on
-any resolution result. The following code snippet depicts a typical
-usage scenario:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-java">RepositoryAdmin repoAdmin = ... <span class="code-comment">// Get repo admin service
-</span>Resolver resolver = repoAdmin.resolver();
-Resource resource = repoAdmin.discoverResources(filterStr);
-resolver.add(resource);
-<span class="code-keyword">if</span> (resolver.resolve())
-{
-    resolver.deploy(<span class="code-keyword">true</span>);
-}
-<span class="code-keyword">else</span>
-{
-    Requirement[] reqs = resolver.getUnsatisfiedRequirements();
-    <span class="code-keyword">for</span> (<span class="code-object">int</span> i = 0; i &lt; reqs.length; i++)
-    {
-        <span class="code-object">System</span>.out.println(<span class="code-quote">"Unable to resolve: "</span> + reqs[i]);
-    }
-}</pre>
-</div></div>
-
-<p>This code gets the Repository Admin service and then gets a Resolver
-instance from it. It then discovers an available resource and adds it
-to the resolver. Then it tries to resolve the resources dependencies.
-If successful it deploys the resource to the local framework instance;
-if not successful it prints the unsatisfied requirements.</p>
-
-<p>OBR's deployment algorithm appears simple at first glance, but it is
-actually somewhat complex due to the nature of deploying independently
-developed bundles. For example, in an ideal world, if an update for a
-bundle is made available, then updates for all of the bundles
-satisfying its dependencies are also made available. Unfortunately,
-this may not be the case, thus the deployment algorithm might have to
-install new bundles during an update to satisfy either new dependencies
-or updated dependencies that can no longer be satisfied by existing
-local bundles. In response to this type of scenario, the OBR deployment
-algorithm tries to favor updating existing bundles, if possible, as
-opposed to installing new bundles to satisfy dependencies.</p>
-
-<p>In the general case, OBR user's will not use the OBR API directly,
-but will use its functionality indirectly from another tool or user
-interface. For example, interactive access to OBR is available via a
-command for Felix' <a href="http://cwiki.apache.org/FELIX/apache-felix-shell-service.html" title="Apache Felix Shell Service">shell service</a>. The OBR shell command is discussed in the next section.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-shellcommand"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-OBRShellCommand"></a>OBR Shell Command</h2>
-
-<p>Besides providing a service API, OBR implements a Felix shell
-command for accessing its functionality. For the end user, the OBR
-shell command is accessed using the text-based or GUI-based user
-interfaces for Felix' shell service. This section describes the syntax
-for the OBR shell command.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrhelp"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrhelp}}"></a><tt>obr help</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr help [urls | list | info | install | deploy | start | update | source]
-</pre>
-</div></div>
-<p>This command is used to display additional information about the other OBR commands.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrlisturl"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrlisturl}}"></a><tt>obr list-url</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr list-url
-</pre>
-</div></div>
-<p>This command gets the URLs to the repository files used by the Repository Admin.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obraddurl"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obraddurl}}"></a><tt>obr add-url</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr add-url [&lt;repository-file-url&gt; ...]
-</pre>
-</div></div>
-<p>This command adds a repository file to the set of repository files
-for which the Repository Admin service provides access. The repository
-file is represented as a URL. If the repository file URL is already in
-the Repository Admin's set of repository files, the request is treated
-like a reload operation.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrremoveurl"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrremoveurl}}"></a><tt>obr remove-url</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr remove-url [&lt;repository-file-url&gt; ...]
-</pre>
-</div></div>
-<p>This command removes a repository file to the set of repository
-files for which the Repository Admin service provides access. The
-repository file is represented as a URL.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrlist"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrlist}}"></a><tt>obr list</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr list [&lt;string&gt; ...]
-</pre>
-</div></div>
-<p>This command lists bundles available in the bundle repository. If no
-arguments are specified, then all available bundles are listed,
-otherwise any arguments are concatenated with spaces and used as a
-substring filter on the bundle names.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrinfo"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrinfo}}"></a><tt>obr info</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr info &lt;bundle-name&gt;[;&lt;version&gt;] ...
-</pre>
-</div></div>
-<p>This command displays the meta-data for the specified bundles. If a
-bundle's name contains spaces, then it must be surrounded by quotes. It
-is also possible to specify a precise version if more than one version
-exists, such as:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr info "Bundle Repository";1.0.0
-</pre>
-</div></div>
-<p>The above example retrieves the meta-data for version "1.0.0" of the bundle named "Bundle Repository".</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrdeploy"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrdeploy}}"></a><tt>obr deploy</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr deploy [-nodeps] &lt;bundle-name&gt;[;&lt;version&gt;] ... | &lt;bundle-id&gt; ...
-</pre>
-</div></div>
-<p>This command tries to install or update the specified bundles and
-all of their dependencies by default; use the "-nodeps" switch to
-ignore dependencies. You can specify either the bundle name or the
-bundle identifier. If a bundle's name contains spaces, then it must be
-surrounded by quotes. It is also possible to specify a precise version
-if more than one version exists, such as:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr deploy "Bundle Repository";1.0.0
-</pre>
-</div></div>
-<p>For the above example, if version "1.0.0" of "Bundle Repository" is
-already installed locally, then the command will attempt to update it
-and all of its dependencies; otherwise, the command will install it and
-all of its dependencies.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrstart"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrstart}}"></a><tt>obr start</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr start [-nodeps] &lt;bundle-name&gt;[;&lt;version&gt;] ...
-</pre>
-</div></div>
-<p>This command installs and starts the specified bundles and all of
-their dependencies by default; use the "-nodeps" switch to ignore
-dependencies. If a bundle's name contains spaces, then it must be
-surrounded by quotes. If a specified bundle is already installed, then
-this command has no effect. It is also possible to specify a precise
-version if more than one version exists, such as:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr start "Bundle Repository";1.0.0
-</pre>
-</div></div>
-<p>The above example installs and starts the "1.0.0" version of the bundle named "Bundle Repository" and its dependencies.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrsource"></a></p>
-
-<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrsource}}"></a><tt>obr source</tt></h3>
-
-<p>Syntax:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr source [-x] &lt;local-dir&gt; &lt;bundle-name&gt;[;&lt;version&gt;] ...
-</pre>
-</div></div>
-<p>This command retrieves the source archives of the specified bundles
-and saves them to the specified local directory; use the "-x" switch to
-automatically extract the source archives. If a bundle name contains
-spaces, then it must be surrounded by quotes. It is also possible to
-specify a precise version if more than one version exists, such as:</p>
-<div class="preformatted"><div class="preformattedContent">
-<pre>obr source /home/rickhall/tmp "Bundle Repository";1.0.0
-</pre>
-</div></div>
-<p>The above example retrieves the source archive of version "1.0.0" of
-the bundle named "Bundle Repository" and saves it to the specified
-local directory.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-proxy"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-UsingOBRwithaProxy"></a>Using OBR with a Proxy</h2>
-
-<p>If you use a proxy for Web access, then OBR will not work for you in
-its default configuration; certain system properties must be set to
-enable OBR to work with a proxy. These properties are:</p>
-
-<ul>
-	<li>http.proxyHost - the name of the proxy host.</li>
-	<li>http.proxyPort - the port of the proxy host.</li>
-	<li>http.proxyAuth
-- the user name and password to use when connecting to the proxy; this
-string should be the user name and password separated by a colon (e.g.,
-rickhall:mypassword).</li>
-</ul>
-
-
-<p>These system properties can be set directly on the command line when
-starting the JVM using the standard "-D&lt;prop&gt;=&lt;value&gt;"
-syntax or you can put them in the lib/system.properties file of your
-Felix installation; see documentation on configuring Felix for more
-information.</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-sourcepackaging"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-BundleSourcePackaging"></a>Bundle Source Packaging</h2>
-
-<p>Coming soon...</p>
-
-<p><a name="ApacheFelixOSGiBundleRepository(OBR)-feedback"></a></p>
-
-<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-Feedback"></a>Feedback</h2>
-
-<p>Subscribe to the Felix users mailing list by sending a message to <span class="nobr"><a href="mailto:users-subscribe@felix.apache.org" title="Send mail to users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>; after subscribing, email questions or feedback to <span class="nobr"><a href="mailto:users@felix.apache.org" title="Send mail to users@felix.apache.org" rel="nofollow">users@felix.apache.org<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>.</p>
-    </div>
-  
-</body></html>
\ No newline at end of file
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository.html b/bundlerepository/doc/apache-felix-osgi-bundle-repository.html
new file mode 100644
index 0000000..825a9ff
--- /dev/null
+++ b/bundlerepository/doc/apache-felix-osgi-bundle-repository.html
@@ -0,0 +1,524 @@
+<!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 - Apache Felix OSGi Bundle Repository</title>
+    <link rel="stylesheet" href="apache-felix-osgi-bundle-repository_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="apache-felix-osgi-bundle-repository_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-osgi-bundle-repository_files/apache.png" border="0"></a></div></div>
+    <div class="menu">
+<ul>
+	<li><a href="http://cwiki.apache.org/FELIX/news.html" title="news">news</a></li>
+	<li><a href="http://cwiki.apache.org/FELIX/license.html" title="license">license</a></li>
+	<li><a href="http://felix.apache.org/site/downloads.cgi" rel="nofollow">downloads</a></li>
+	<li><a href="http://cwiki.apache.org/FELIX/documentation.html" title="documentation">documentation</a></li>
+	<li><a href="http://cwiki.apache.org/FELIX/mailinglists.html" title="mailinglists">mailing lists</a></li>
+	<li><a href="http://cwiki.apache.org/FELIX/contributing.html" title="Contributing">contributing</a></li>
+	<li><a href="http://www.apache.org/" rel="nofollow">asf</a></li>
+	<li><a href="http://www.apache.org/foundation/sponsorship.html" rel="nofollow">sponsorship</a></li>
+	<li><a href="http://www.apache.org/foundation/thanks.html" rel="nofollow">sponsors</a>
+<!-- ApacheCon Ad -->
+<iframe src="apache-felix-osgi-bundle-repository_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
+<p style="height: 100px;">
+<!-- ApacheCon Ad -->
+</p></li></ul> </div>
+    <div class="main">
+<h1><a name="ApacheFelixOSGiBundleRepository-ApacheFelixOSGiBundleRepository(OBR)"></a>Apache Felix OSGi Bundle Repository (OBR)</h1>
+
+<div>
+<ul>
+    <li><a href="#ApacheFelixOSGiBundleRepository-Motivation">Motivation</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-Overview">Overview</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-OBRRepositoryFile">OBR Repository File</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-OBRServiceAPI">OBR Service API</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-OBRShellCommand">OBR Shell Command</a></li>
+<ul>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrhelp">obr help</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrlisturl">obr list-url</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obraddurl">obr add-url</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrremoveurl">obr remove-url</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrlist">obr list</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrinfo">obr info</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrdeploy">obr deploy</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrstart">obr start</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrsource">obr source</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-obrjavadoc">obr javadoc</a></li>
+</ul>
+    <li><a href="#ApacheFelixOSGiBundleRepository-UsingOBRwithaProxy">Using OBR with a Proxy</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-BundleSourcePackaging">Bundle Source Packaging</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-NoteonOSGiR3Bundles">Note on OSGi R3 Bundles</a></li>
+    <li><a href="#ApacheFelixOSGiBundleRepository-Feedback">Feedback</a></li>
+</ul></div>
+
+<p><a name="ApacheFelixOSGiBundleRepository-motivation"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-Motivation"></a>Motivation</h2>
+
+<p>The goal of the Apache Felix OSGi Bundle Repository (OBR) is two-fold:</p>
+
+<ol>
+	<li>To simplify deploying and using available bundles with Felix.</li>
+	<li>To encourage independent bundle development so that communities of interest can grow.</li>
+</ol>
+
+
+<p>OBR achieves the first goal by providing a service that can
+automatically install a bundle, with its deployment dependencies, from
+a bundle repository. This makes it easier for people to experiment with
+existing bundles. The second goal is achieved by raising the visibility
+of the available bundles and providing access to both the executable
+bundle and its source code. Hopefully, by making OBR and the bundles
+themselves more visible, community members will be encouraged to
+provide or improve service implementations.</p>
+
+<p>Note: OBR provides access to the Felix' default bundle repository,
+but you can also use it to deploy your own bundles by creating a bundle
+repository meta-data file for your local bundles; see the <tt>obr list-url</tt>, <tt>obr add-url</tt>, and <tt>obr remove-url</tt> commands for more details.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-overview"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-Overview"></a>Overview</h2>
+
+<p>For the most part, OBR is quite simple. An OBR "repository server"
+is not necessary, since all functionality may reside on the client
+side. OBR is able to provide its functionality by reading an XML-based
+meta-data file that describes the bundles available to it. The
+meta-data file essentially contains an XML encoding of the bundles'
+manifest information. From the meta-data, OBR is able to construct
+dependency information for deploying (i.e., installing and updating)
+bundles.</p>
+
+<p>OBR defines the following entities:</p>
+
+<ul>
+	<li><em><b>Repository Admin</b></em> - a service to access a federation of repositories.</li>
+	<li><em><b>Repository</b></em> - provides access to a set of resources.</li>
+	<li><em><b>Resource</b></em> - a description of an artifact to be installed on a device.</li>
+	<li><em><b>Capability</b></em> - a named set of properties.</li>
+	<li><em><b>Requirement</b></em> - an assertion on a capability.</li>
+	<li><em><b>Resolver</b></em> - an object to resolve resource dependencies and to deploy them.</li>
+	<li><em><b>Repository file</b></em> - XML file containing resource meta-data.</li>
+</ul>
+
+
+<p>The following diagram illustrates the relationships among these entities:</p>
+
+<p><img src="apache-felix-osgi-bundle-repository_files/obr-entities.png" align="absmiddle" border="0"></p>
+
+<p>The client has access to a federated set of repositories via the Repository Admin service; such as depicted in this view:</p>
+
+<p><img src="apache-felix-osgi-bundle-repository_files/obr-high-level.png" align="absmiddle" border="0"></p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-repositoryfile"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-OBRRepositoryFile"></a>OBR Repository File</h2>
+
+<p>The OBR repository file is an XML-based representation of bundle
+meta-data. The goal is provide a generic model for describing
+dependencies among resources; as such, the term <em><b>resource</b></em> is used instead of <em><b>bundle</b></em> in the OBR repository syntax; a detailed description of the OBR meta-data format is available in the <a href="http://www2.osgi.org/download/rfc-0112_BundleRepository.pdf" rel="nofollow">OSGi RFC 112</a>
+document; this document is not completely in sync with the
+implementation, but the concepts are still correct. The following XML
+snippet depicts the overall structure of a repository file:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>&lt;repository presentationname="..." symbolicname="..." ... &gt;
+    &lt;resource&gt;
+        &lt;description&gt;...&lt;/description&gt;
+        &lt;size&gt;...&lt;/size&gt;
+        &lt;documentation&gt;...&lt;/documentation&gt;
+        &lt;source&gt;...&lt;/source&gt;
+        &lt;category id="..."/&gt;
+        &lt;capability&gt;...&lt;/capability&gt;
+        ...
+        &lt;requirement&gt;...&lt;/requirement&gt;
+        ...
+    &lt;/resource&gt;
+    ...
+&lt;/repository&gt;
+</pre>
+</div></div>
+
+<p>The above repository defines a set of available resources, each
+described by a set of meta-data. Some resource meta-data is purely
+intended for human consumption; the most important aspects relate to
+the generic capability/requirement model.</p>
+
+<p>A resource can provide any number of capabilities. A capability is a
+typed set of properties. For example, the following is an exported
+package capability:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>&lt;capability name='package'&gt;
+    &lt;p n='package' v='org.foo.bar'/&gt;
+    &lt;p n='version' t='version' v='1.0.0'/&gt;
+&lt;/capability&gt;
+</pre>
+</div></div>
+
+<p>This capability is of type 'package' and exports 'org.foo.bar' at
+version '1.0.0'. Conversely, a requirement is a typed LDAP query over a
+set of capability properties. For example, the following is an imported
+package requirement:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>&lt;require name='package' extend='false'
+    multiple='false' optional='false'
+    filter='(&amp;amp;(package=org.foo.bar)(version&amp;gt;=1.0.0))'&gt;
+    Import package org.foo.bar
+&lt;/require&gt;
+</pre>
+</div></div>
+
+<p>This requirement is of type 'package' and imports 'org.foo.bar' at
+versions greater than '1.0.0'. Although this syntax looks rather
+complicated with the '\&amp;' and '\&gt;=' syntax, it is simply the
+standard OSGi LDAP query syntax in XML form (additionally, Peter Kriens
+has created a tool called <tt>bindex</tt> to generate this meta-data from a bundle's manifest).</p>
+
+<p>With this generic dependency model, OBR is able to provide mappings
+for the various OSGi bundle dependencies; e.g., import/export package,
+provide/require bundle, host/fragment, import/export service, execution
+environment, and native code. In addition, it is possible for bundles
+to introduce arbitrary dependencies for custom purposes.</p>
+
+<p>Two other important pieces of meta-data are <tt>Bundle-SymbolicName</tt> and <tt>Bundle-Version</tt>;
+these are standard OSGi bundle manifest attributes that OBR uses to
+uniquely identify a bundle. For example, if you want to use OBR to
+update a locally installed bundle, OBR gets its symbolic name and
+version and searches the repository metadata for a matching symbolic
+name. If the matching symbolic name is found, then OBR checks if there
+is a newer version than the local copy using the bundle version number.
+Thus, the symbolic name plus bundle version forms a unique key to match
+locally installed bundles to remotely available bundles.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-serviceapi"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-OBRServiceAPI"></a>OBR Service API</h2>
+
+<p>Typically, OBR service clients only need to interact with the
+Repository Admin service, which provides the mechanisms necessary to
+discover available resources. The Repository Admin interface is defined
+as follows:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> RepositoryAdmin
+{
+    <span class="code-keyword">public</span> Resource[] discoverResources(<span class="code-object">String</span> filterExpr);
+    <span class="code-keyword">public</span> Resolver resolver();
+    <span class="code-keyword">public</span> Repository addRepository(URL repository)?
+        <span class="code-keyword">throws</span> Exception;
+    <span class="code-keyword">public</span> <span class="code-object">boolean</span> removeRepository(URL repository);
+    <span class="code-keyword">public</span> Repository[] listRepositories();
+    <span class="code-keyword">public</span> Resource getResource(<span class="code-object">String</span> respositoryId);
+}
+</pre>
+</div></div>
+
+<p>In order to resolve and deploy available resources, the Repository
+Admin provides Resolver instances, which are defined as follows:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Resolver
+{
+    <span class="code-keyword">public</span> void add(Resource resource);
+    <span class="code-keyword">public</span> Requirement[] getUnsatisfiedRequirements();
+    <span class="code-keyword">public</span> Resource[] getOptionalResources();
+    <span class="code-keyword">public</span> Requirement[] getReason(Resource resource);
+    <span class="code-keyword">public</span> Resource[] getResources(Requirement requirement);
+    <span class="code-keyword">public</span> Resource[] getRequiredResources();
+    <span class="code-keyword">public</span> Resource[] getAddedResources();
+    <span class="code-keyword">public</span> <span class="code-object">boolean</span> resolve();
+    <span class="code-keyword">public</span> void deploy(<span class="code-object">boolean</span> start);
+}
+</pre>
+</div></div>
+
+<p>When desired resources are discovered via the query mechanisms of
+the Repository Admin, they are added to a Resolver instance which will
+can be used to resolve all transitive dependencies and to reflect on
+any resolution result. The following code snippet depicts a typical
+usage scenario:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">RepositoryAdmin repoAdmin = ... <span class="code-comment">// Get repo admin service
+</span>Resolver resolver = repoAdmin.resolver();
+Resource resource = repoAdmin.discoverResources(filterStr);
+resolver.add(resource);
+<span class="code-keyword">if</span> (resolver.resolve())
+{
+    resolver.deploy(<span class="code-keyword">true</span>);
+}
+<span class="code-keyword">else</span>
+{
+    Requirement[] reqs = resolver.getUnsatisfiedRequirements();
+    <span class="code-keyword">for</span> (<span class="code-object">int</span> i = 0; i &lt; reqs.length; i++)
+    {
+        <span class="code-object">System</span>.out.println(<span class="code-quote">"Unable to resolve: "</span> + reqs[i]);
+    }
+}
+</pre>
+</div></div>
+
+<p>This code gets the Repository Admin service and then gets a Resolver
+instance from it. It then discovers an available resource and adds it
+to the resolver. Then it tries to resolve the resources dependencies.
+If successful it deploys the resource to the local framework instance;
+if not successful it prints the unsatisfied requirements.</p>
+
+<p>OBR's deployment algorithm appears simple at first glance, but it is
+actually somewhat complex due to the nature of deploying independently
+developed bundles. For example, in an ideal world, if an update for a
+bundle is made available, then updates for all of the bundles
+satisfying its dependencies are also made available. Unfortunately,
+this may not be the case, thus the deployment algorithm might have to
+install new bundles during an update to satisfy either new dependencies
+or updated dependencies that can no longer be satisfied by existing
+local bundles. In response to this type of scenario, the OBR deployment
+algorithm tries to favor updating existing bundles, if possible, as
+opposed to installing new bundles to satisfy dependencies.</p>
+
+<p>In the general case, OBR user's will not use the OBR API directly,
+but will use its functionality indirectly from another tool or user
+interface. For example, interactive access to OBR is available via a
+command for Felix' <a href="http://cwiki.apache.org/confluence/display/FELIX/Apache%20Felix%20Shell%20Service" title="Apache Felix Shell Service">shell service</a>. The OBR shell command is discussed in the next section.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-shellcommand"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-OBRShellCommand"></a>OBR Shell Command</h2>
+
+<p>Besides providing a service API, OBR implements a Felix shell
+command for accessing its functionality. For the end user, the OBR
+shell command is accessed using the text-based or GUI-based user
+interfaces for Felix' shell service. This section describes the syntax
+for the OBR shell command.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrhelp"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrhelp"></a>obr help</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr help [add-url | remove-url | list-url | list | info | deploy | start | source | javadoc]
+</pre>
+</div></div>
+<p>This command is used to display additional information about the other OBR commands.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrlisturl"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrlisturl"></a>obr list-url</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr list-url
+</pre>
+</div></div>
+<p>This command gets the URLs to the repository files used by the Repository Admin.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obraddurl"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obraddurl"></a>obr add-url</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr add-url [&lt;repository-file-url&gt; ...]
+</pre>
+</div></div>
+<p>This command adds a repository file to the set of repository files
+for which the Repository Admin service provides access. The repository
+file is represented as a URL. If the repository file URL is already in
+the Repository Admin's set of repository files, the request is treated
+like a reload operation.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrremoveurl"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrremoveurl"></a>obr remove-url</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr remove-url [&lt;repository-file-url&gt; ...]
+</pre>
+</div></div>
+<p>This command removes a repository file to the set of repository
+files for which the Repository Admin service provides access. The
+repository file is represented as a URL.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrlist"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrlist"></a>obr list</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr list [&lt;string&gt; ...]
+</pre>
+</div></div>
+<p>This command lists bundles available in the bundle repository. If no
+arguments are specified, then all available bundles are listed,
+otherwise any arguments are concatenated with spaces and used as a
+substring filter on the bundle names.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrinfo"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrinfo"></a>obr info</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr info &lt;bundle-name&gt;[;&lt;version&gt;] ...
+</pre>
+</div></div>
+<p>This command displays the meta-data for the specified bundles. If a
+bundle's name contains spaces, then it must be surrounded by quotes. It
+is also possible to specify a precise version if more than one version
+exists, such as:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr info "Bundle Repository";1.0.0
+</pre>
+</div></div>
+<p>The above example retrieves the meta-data for version "1.0.0" of the bundle named "Bundle Repository".</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrdeploy"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrdeploy"></a>obr deploy</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr deploy &lt;bundle-name&gt;[;&lt;version&gt;] ... | &lt;bundle-id&gt; ...
+</pre>
+</div></div>
+<p>This command tries to install or update the specified bundles and
+all of their dependencies by default. You can specify either the bundle
+name or the bundle identifier. If a bundle's name contains spaces, then
+it must be surrounded by quotes. It is also possible to specify a
+precise version if more than one version exists, such as:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr deploy "Bundle Repository";1.0.0
+</pre>
+</div></div>
+<p>For the above example, if version "1.0.0" of "Bundle Repository" is
+already installed locally, then the command will attempt to update it
+and all of its dependencies; otherwise, the command will install it and
+all of its dependencies.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrstart"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrstart"></a>obr start</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr start [-nodeps] &lt;bundle-name&gt;[;&lt;version&gt;] ...
+</pre>
+</div></div>
+<p>This command installs and starts the specified bundles and all of
+their dependencies by default; use the "-nodeps" switch to ignore
+dependencies. If a bundle's name contains spaces, then it must be
+surrounded by quotes. If a specified bundle is already installed, then
+this command has no effect. It is also possible to specify a precise
+version if more than one version exists, such as:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr start "Bundle Repository";1.0.0
+</pre>
+</div></div>
+<p>The above example installs and starts the "1.0.0" version of the bundle named "Bundle Repository" and its dependencies.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-obrsource"></a></p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrsource"></a>obr source</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr source [-x] &lt;local-dir&gt; &lt;bundle-name&gt;[;&lt;version&gt;] ...
+</pre>
+</div></div>
+<p>This command retrieves the source archives of the specified bundles
+and saves them to the specified local directory; use the "-x" switch to
+automatically extract the source archives. If a bundle name contains
+spaces, then it must be surrounded by quotes. It is also possible to
+specify a precise version if more than one version exists, such as:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr source /home/rickhall/tmp "Bundle Repository";1.0.0
+</pre>
+</div></div>
+<p>The above example retrieves the source archive of version "1.0.0" of
+the bundle named "Bundle Repository" and saves it to the specified
+local directory.</p>
+
+<h3><a name="ApacheFelixOSGiBundleRepository-obrjavadoc"></a>obr javadoc</h3>
+
+<p>Syntax:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr javadoc [-x] &lt;local-dir&gt; &lt;bundle-name&gt;[;&lt;version&gt;] ...
+</pre>
+</div></div>
+<p>This command retrieves the javadoc archives of the specified bundles
+and saves them to the specified local directory; use the "-x" switch to
+automatically extract the javadoc archives. If a bundle name contains
+spaces, then it must be surrounded by quotes. It is also possible to
+specify a precise version if more than one version exists, such as:</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>obr javadoc /home/rickhall/tmp "Bundle Repository";1.0.0
+</pre>
+</div></div>
+<p>The above example retrieves the javadoc archive of version "1.0.0"
+of the bundle named "Bundle Repository" and saves it to the specified
+local directory.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-proxy"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-UsingOBRwithaProxy"></a>Using OBR with a Proxy</h2>
+
+<p>If you use a proxy for Web access, then OBR will not work for you in
+its default configuration; certain system properties must be set to
+enable OBR to work with a proxy. These properties are:</p>
+
+<ul>
+	<li>http.proxyHost - the name of the proxy host.</li>
+	<li>http.proxyPort - the port of the proxy host.</li>
+	<li>http.proxyAuth
+- the user name and password to use when connecting to the proxy; this
+string should be the user name and password separated by a colon (e.g.,
+rickhall:mypassword).</li>
+</ul>
+
+
+<p>These system properties can be set directly on the command line when
+starting the JVM using the standard "-D&lt;prop&gt;=&lt;value&gt;"
+syntax or you can put them in the lib/system.properties file of your
+Felix installation; see documentation on configuring Felix for more
+information.</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-sourcepackaging"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-BundleSourcePackaging"></a>Bundle Source Packaging</h2>
+
+<p>Coming soon...</p>
+
+<p><a name="ApacheFelixOSGiBundleRepository-r3note"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-NoteonOSGiR3Bundles"></a>Note on OSGi R3 Bundles</h2>
+
+<p>In contrast to OSGi R4 the previous specifications, most notably R3, allowed bundles without the <tt>Bundle-SymbolicName</tt>
+header. The Felix OSGi Bundle Repository implementation heavily relies
+on the symbolic name being defined in bundles. As a consequence bundles
+without a symbolic name are not fully supported by the Bundle
+Repository:</p>
+
+<ul>
+	<li>Bundles installed in the framework are used by the Bundle
+Repository implementation to resolve dependencies regardless of whether
+they have a <tt>Bundle-SymbolicName</tt> header or not. Resolution of dependencies against the installed bundles takes place based on the <tt>Export-Package</tt> headers.</li>
+	<li>Bundles installed in the framework without a <tt>Bundle-SymbolicName</tt>
+header cannot be updated by the Bundle Repository implementation
+because updates from the bundle repository cannot be correlated to such
+"anonymous" bundles.</li>
+</ul>
+
+
+
+<p><a name="ApacheFelixOSGiBundleRepository-feedback"></a></p>
+
+<h2><a name="ApacheFelixOSGiBundleRepository-Feedback"></a>Feedback</h2>
+
+<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" rel="nofollow">users@felix.apache.org</a>.</p>
+    </div>
+  </body></html>
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/apache-felix-small.png b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/apache-felix-small.png
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/apache-felix-small.png
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/apache-felix-small.png
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/apache.png b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/apache.png
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/apache.png
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/apache.png
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/button.html b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/button.html
new file mode 100644
index 0000000..dc64b6c
--- /dev/null
+++ b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/button.html
@@ -0,0 +1,5 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"><!-- ads start -->
+</head><body><a href="http://www.us.apachecon.com/c/acus2009/" target="_blank"><img src="button_data/2009-usa-125x125.png" title="ApacheCon US 2009" border="0" height="125" width="125"></a>
+<!-- ads end -->
+</body></html>
\ No newline at end of file
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/button_data/2009-usa-125x125.png b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/button_data/2009-usa-125x125.png
new file mode 100644
index 0000000..117c695
--- /dev/null
+++ b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/button_data/2009-usa-125x125.png
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/linkext7.gif b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/linkext7.gif
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/linkext7.gif
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/linkext7.gif
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/logo.png b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/logo.png
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/logo.png
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/logo.png
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/mail_small.gif b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/mail_small.gif
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/mail_small.gif
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/mail_small.gif
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/obr-entities.png b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/obr-entities.png
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/obr-entities.png
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/obr-entities.png
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/obr-high-level.png b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/obr-high-level.png
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/obr-high-level.png
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/obr-high-level.png
Binary files differ
diff --git a/bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/site.css b/bundlerepository/doc/apache-felix-osgi-bundle-repository_files/site.css
similarity index 100%
rename from bundlerepository/doc/apache-felix-osgi-bundle-repository-obr_files/site.css
rename to bundlerepository/doc/apache-felix-osgi-bundle-repository_files/site.css
diff --git a/bundlerepository/doc/changelog.txt b/bundlerepository/doc/changelog.txt
index f85d144..0e780e7 100644
--- a/bundlerepository/doc/changelog.txt
+++ b/bundlerepository/doc/changelog.txt
@@ -1,3 +1,11 @@
+Changes from 1.4.0 to 1.4.1
+---------------------------
+
+** Bug
+    * [FELIX-1000] - Updating an bundle which was installed via OBR fails
+    * [FELIX-1157] - NPE results in OBR if a resource does not have a presentation name
+    * [FELIX-1433] - java.lang.NumberFormatException in Bundle-Version (org.osgi.framework.Version) due to trailing whitespace
+
 Changes from 1.2.1 to 1.4.0
 ---------------------------
 ** Bug
