You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/12/24 14:21:12 UTC
[2/2] karaf-cave git commit: KARAF-3679 - Use asciidoc for Cave
documentation
KARAF-3679 - Use asciidoc for Cave documentation
Project: http://git-wip-us.apache.org/repos/asf/karaf-cave/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cave/commit/12250688
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cave/tree/12250688
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cave/diff/12250688
Branch: refs/heads/cave-3.x
Commit: 122506889de9a5998d9b78a4e856dd4169f332b8
Parents: 4675cd4
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Thu Dec 24 14:20:28 2015 +0100
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Thu Dec 24 14:20:28 2015 +0100
----------------------------------------------------------------------
manual/pom.xml | 197 +----
manual/src/main/asciidoc/index.adoc | 41 +
manual/src/main/asciidoc/overview.adoc | 40 +
.../asciidoc/user-guide/administrate-cave.adoc | 35 +
.../asciidoc/user-guide/cave-repository.adoc | 178 ++++
.../main/asciidoc/user-guide/http-wrapper.adoc | 187 +++++
.../main/asciidoc/user-guide/installation.adoc | 59 ++
.../main/asciidoc/user-guide/obr-commands.adoc | 164 ++++
.../user-guide/populate-repository.adoc | 66 ++
.../asciidoc/user-guide/proxy-repository.adoc | 35 +
.../main/asciidoc/user-guide/user-index.adoc | 23 +
.../WEB-INF/scalate/layouts/default.scaml | 116 ---
.../webapp/WEB-INF/scalate/layouts/print.ssp | 817 -------------------
manual/src/main/webapp/WEB-INF/web.xml | 50 --
manual/src/main/webapp/index.conf | 6 -
manual/src/main/webapp/manual.conf | 38 -
manual/src/main/webapp/overview.conf | 26 -
.../webapp/user-guide/administrate-cave.conf | 21 -
.../main/webapp/user-guide/cave-repository.conf | 166 ----
.../main/webapp/user-guide/http-wrapper.conf | 173 ----
manual/src/main/webapp/user-guide/index.conf | 9 -
.../main/webapp/user-guide/installation.conf | 45 -
.../main/webapp/user-guide/obr-commands.conf | 150 ----
.../webapp/user-guide/populate-repository.conf | 54 --
.../webapp/user-guide/proxy-repository.conf | 21 -
25 files changed, 853 insertions(+), 1864 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/pom.xml
----------------------------------------------------------------------
diff --git a/manual/pom.xml b/manual/pom.xml
index c672783..205947d 100644
--- a/manual/pom.xml
+++ b/manual/pom.xml
@@ -31,104 +31,12 @@
<groupId>org.apache.karaf.cave</groupId>
<artifactId>manual</artifactId>
<name>Apache Karaf :: Cave :: Manual</name>
- <packaging>war</packaging>
-
- <properties>
- <manual.dir>${project.build.directory}/manual</manual.dir>
- <manual>${manual.dir}/cave-manual-${project.version}</manual>
- <scala.version>2.8.1</scala.version>
- <scalate.version>1.3.2</scalate.version>
- <cave.version>${project.version}</cave.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.fusesource.scalate</groupId>
- <artifactId>scalate-wikitext</artifactId>
- <version>${scalate.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.scala-lang</groupId>
- <artifactId>scala-library</artifactId>
- <version>${scala.version}</version>
- </dependency>
- <dependency>
- <groupId>org.scala-lang</groupId>
- <artifactId>scala-compiler</artifactId>
- <version>${scala.version}</version>
- </dependency>
- </dependencies>
+ <packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <configuration>
- <useDefaultDelimiters>false</useDefaultDelimiters>
- <delimiters>
- <delimiter>${*}</delimiter>
- </delimiters>
- </configuration>
- <executions>
- <execution>
- <id>filter</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <outputDirectory>${project.build.directory}/webapp</outputDirectory>
- <resources>
- <resource>
- <directory>src/main/webapp</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- TODO: add generate-command-help goal of karaf-maven-plugin -->
- <plugin>
- <groupId>org.fusesource.scalate</groupId>
- <artifactId>maven-scalate-plugin</artifactId>
- <version>${scalate.version}</version>
- <executions>
- <execution>
- <id>generate-htmls</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>sitegen-no-fork</goal>
- </goals>
- <configuration>
- <warSourceDirectory>${project.build.directory}/webapp</warSourceDirectory>
- </configuration>
- </execution>
- </executions>
- <configuration>
- <remoteServerId>people.apache.org</remoteServerId>
- <remoteServerUrl>scp://people.apache.org//x1/www/karaf.apache.org/manual/cave/${cave.version}</remoteServerUrl>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-ssh</artifactId>
- <version>1.0-beta-7</version>
- </dependency>
- <dependency>
- <groupId>org.fusesource.wikitext</groupId>
- <artifactId>confluence-core</artifactId>
- <version>1.3</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
@@ -140,93 +48,48 @@
</goals>
<configuration>
<tasks>
- <mkdir dir="${manual.dir}"/>
- <move file="${project.build.directory}/sitegen/manual.html" tofile="${manual}.html"/>
+ <mkdir dir="target"/>
+ <copy file="${project.build.directory}/generated-docs/index.html" tofile="target/documentation.html"/>
<echo message="Generating PDF using Prince XML (http://www.princexml.com/)"/>
<exec executable="prince">
- <arg value="${manual}.html"/>
- <arg value="${manual}.pdf"/>
+ <arg value="documentation.html"/>
+ <arg value="documentation.pdf"/>
<arg value="--log"/>
<arg value="${project.build.directory}/prince.log"/>
</exec>
- <attachartifact file="${manual}.html" type="html"/>
- <attachartifact file="${manual}.pdf" type="pdf"/>
+ <attachartifact file="target/documentation.html" type="html"/>
+ <attachartifact file="target/documentation.pdf" type="pdf"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <webResources>
- <resource>
- <directory>${project.build.directory}/webapp/</directory>
- </resource>
- </webResources>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty-maven-plugin</artifactId>
- <version>7.1.5.v20100705</version>
- <configuration>
- <webAppSourceDirectory>${project.build.directory}/webapp/</webAppSourceDirectory>
- <systemProperties>
- <systemProperty>
- <name>scalate.editor</name>
- <value>${env.SCALATE_EDITOR}</value>
- </systemProperty>
- <systemProperty>
- <name>scalate.workdir</name>
- <value>${project.build.directory}/scalateWorkDir</value>
- </systemProperty>
- <systemProperty>
- <name>scalate.mode</name>
- <value>production</value>
- </systemProperty>
- </systemProperties>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctor-maven-plugin</artifactId>
+ <version>1.5.2</version>
<executions>
<execution>
- <id>bundle-manifest</id>
- <phase>process-classes</phase>
+ <id>output-html</id>
+ <phase>generate-resources</phase>
<goals>
- <goal>manifest</goal>
+ <goal>process-asciidoc</goal>
</goals>
+ <configuration>
+ <sourceHighlighter>coderay</sourceHighlighter>
+ <backend>html5</backend>
+ <attributes>
+ <toc/>
+ <linkcss>false</linkcss>
+ <doctype>book</doctype>
+ </attributes>
+ </configuration>
</execution>
</executions>
<configuration>
- <supportedProjectTypes>
- <supportedProjectType>jar</supportedProjectType>
- <supportedProjectType>bundle</supportedProjectType>
- <supportedProjectType>war</supportedProjectType>
- </supportedProjectTypes>
- <instructions>
- <Import-Package>
- javax.servlet,
- javax.servlet.http,
- org.osgi.framework,
- org.osgi.service.packageadmin,
- javax.swing.tree,
- org.apache.commons.logging;provider=paxlogging;resolution:=optional,
- org.apache.log4j;provider=paxlogging;resolution:=optional,
- org.slf4j;provider=paxlogging;resolution:=optional;version="[1.5,2)",
- </Import-Package>
- <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
- <Embed-Directory>WEB-INF/lib</Embed-Directory>
- <Embed-Dependencies>*;scope=compile|runtime</Embed-Dependencies>
- <Embed-Transitive>true</Embed-Transitive>
- <WebApp-Context>/cave-doc</WebApp-Context>
- </instructions>
+ <sourceDirectory>src/main/asciidoc</sourceDirectory>
+ <headerFooter>true</headerFooter>
+ <imagesDir>../resources/images</imagesDir>
</configuration>
</plugin>
<plugin>
@@ -242,14 +105,4 @@
</plugins>
</build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.fusesource.scalate</groupId>
- <artifactId>maven-scalate-plugin</artifactId>
- <version>${scalate.version}</version>
- </plugin>
- </plugins>
- </reporting>
-
</project>
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/index.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/index.adoc b/manual/src/main/asciidoc/index.adoc
new file mode 100644
index 0000000..011a348
--- /dev/null
+++ b/manual/src/main/asciidoc/index.adoc
@@ -0,0 +1,41 @@
+//
+// 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.
+//
+
+Apache Karaf Cave 3.x - Documentation
+=====================================
+Apache Software Foundation
+:doctype: book
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cave 3.x - Documentation
+:numbered:
+
+include::overview.adoc[]
+
+= User Guide
+
+include::user-guide/installation.adoc[]
+
+include::user-guide/cave-repository.adoc[]
+
+include::user-guide/populate-repository.adoc[]
+
+include::user-guide/proxy-repository.adoc[]
+
+include::user-guide/obr-commands.adoc[]
+
+include::user-guide/http-wrapper.adoc[]
+
+include::user-guide/administrate-cave.adoc[]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/overview.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/overview.adoc b/manual/src/main/asciidoc/overview.adoc
new file mode 100644
index 0000000..52c2f17
--- /dev/null
+++ b/manual/src/main/asciidoc/overview.adoc
@@ -0,0 +1,40 @@
+//
+// 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.
+//
+
+= Overview
+
+Apache Karaf Cave is an Apache Karaf sub-project.
+
+It provides an OSGi Bundle Repository (OBR) and Karaf Features Repository (KFR).
+
+OBR provides a service that can automatically install a bundle, with its deployment dependencies, from a bundle
+repository.
+
+Apache Karaf Cave provides the following features:
+
+* *Storage*: Karaf Cave includes a storage backend. The default one is a simple filesystem backend. As the Cave backend
+is designed in a plugin way, you can implement your own backend (for instance, JDBC or LDAP backend).
+* *OBR Metadata Generation*: Karaf Cave automatically creates the OBR metadata for you, using the artifacts presents
+in the Cave repository storage.
+* *OBR Registration*: Karaf Cave allows you to directly register a Cave repository into an OBR RepositoryAdmin OSGi
+service.
+* *Artifact Upload*: Users can upload OSGi bundle in a Cave repository. It supports URLs like `mvn:groupId/artifactId/version`,
+`file:`, `http:`, etc.
+* *Repository proxy*: Karaf Cave is able to proxy an existing repository, for instance an existing Maven repository.
+The artifacts are located on the "external" repository, Cave handles the OBR metadata. Cave supports file: and http:
+URLs, it means that Cave is able to browse a remote HTTP Maven repository for instance.
+* *Repository population*: Karaf Cave is able to get artifacts present on an "external" repository (local file: or
+remote http:), looking for OSGi bundles, and copy the artifacts in the Cave repository storage.
+
+The `cave-server` feature provides the OBR and KFR server, including the storage backend, management layer and shell commands.
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/administrate-cave.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/administrate-cave.adoc b/manual/src/main/asciidoc/user-guide/administrate-cave.adoc
new file mode 100644
index 0000000..513b817
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/administrate-cave.adoc
@@ -0,0 +1,35 @@
+//
+// 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.
+//
+
+== Administration
+
+When you install Apache Karaf Cave server, it provides a new CaveServerMBean.
+
+This MBean use the following object name:
+
+----
+org.apache.karaf.cave:type=repository,name=*
+----
+
+Thanks to this MBean, using any JMX client (like jconsole for instance), you can do all actions as you can using the
+`cave:*` commands:
+
+* `void createRepository(String name, String location, boolean generateObr, boolean install) throws Exception;`
+* `void destroyRepository(String name) throws Exception;`
+* `void installRepository(String name) throws Exception;`
+* `void uninstallRepository(String name) throws Exception;`
+* `void populateRepository(String name, String url, boolean generateObr, String filter) throws Exception;`
+* `void proxyRepository(String name, String url, boolean generateObr, String filter) throws Exception;`
+* `void updateRepository(String name) throws Exception;`
+* `void uploadArtifact(String repository, String artifactUrl, boolean generateObr) throws Exception;`
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/cave-repository.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/cave-repository.adoc b/manual/src/main/asciidoc/user-guide/cave-repository.adoc
new file mode 100644
index 0000000..7408e61
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/cave-repository.adoc
@@ -0,0 +1,178 @@
+//
+// 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.
+//
+
+== Repository
+
+A Cave Repository is a container for:
+
+* OSGi bundles (jar files)
+* OBR (OSGi Bundle Repository) metadata (aka a repository.xml file)
+
+By default, a repository uses a filesystem backend for the storage, the directory used is KARAF_BASE/cave.
+
+You can change the storage location in the `etc/org.apache.karaf.cave.server.storage.cfg` configuration file:
+
+----
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Storage location where Apache Karaf Cave create repositories by default
+#
+storage.location=cave
+----
+
+For instance, you can define `/var/cave/store` for the `storage.location` property.
+
+=== Create
+
+The `cave:repository-create` command creates a new repository:
+
+----
+karaf@root()> cave:repository-create my-repository
+----
+
+A repository is identified by a name, `my-repository` in our example.
+
+Apache Karaf Cave creates the repository storage for you.
+
+If you want to use an existing directory, and avoid Cave to create one in the storage location, you can use the `-l`
+(`--location`) option:
+
+----
+karaf@root()> cave:repository-create -l /home/user/.m2/repository m2
+----
+
+By default, Apache Karaf Cave scans the repository storage and create the OBR metadata. You can use the `-no` (`--no-obr-generate`)
+option to avoid this step:
+
+----
+karaf@root()> cave:repository-create -no -l /home/user/.m2/repository m2
+----
+
+By default, Apache Karaf Cave registers (installs) a new repository into the OBR service. You can use the `-ni` (`--no-install`)
+option to avoid this step:
+
+----
+karaf@root()> cave:repository-create -ni -l /home/user/m2/repository m2
+----
+
+NB: the `-no` and `-ni` options are interesting when you use an existing location for the repository. If you create a
+new empty repository, these options don't have really any effect.
+
+=== List
+
+You can list the repositories using the `cave:repositories` command:
+
+----
+karaf@root()> cave:repositories
+Name | Location
+--------------------------------------------------------------------
+my-repository | /home/jbonofre/apache-karaf-3.0.1/cave/my-repository
+m2 | /home/jbonofre/.m2/repository
+----
+
+You can find the repository name and location.
+
+=== Repository and OBR service
+
+By default, Apache Karaf Cave installs the repository in the Apache Karaf OBR service.
+
+You can see the installed repositories using the `obr:url-list` command:
+
+----
+karaf@root()> obr:url-list
+Index | OBR URL
+--------------------------------------------------------------------------------
+0 | file:/home/jbonofre/.m2/repository/repository.xml
+1 | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
+----
+
+You can refresh a repository or install a repository in the OBR service using the `cave:repository-install` command:
+
+----
+karaf@root()> cave:repository-install my-repository
+----
+
+You can uninstall a repository from the Apache Karaf OBR service using the `cave:repository-uninstall` command:
+
+----
+karaf@root()> cave:repository-uninstall my-repository
+----
+
+You can see with the `obr:url-list` command that the repository is no more known by the OBR service:
+
+----
+karaf@root()> obr:url-list
+Index | OBR URL
+---------------------------------------------------------
+0 | file:/home/jbonofre/.m2/repository/repository.xml
+----
+
+You can "re-install" the repository at any time using the `cave:repository-install` command again:
+
+----
+karaf@root()> cave:repository-install my-repository
+karaf@root()> obr:url-list
+Index | OBR URL
+--------------------------------------------------------------------------------
+0 | file:/home/jbonofre/.m2/repository/repository.xml
+1 | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
+----
+
+At any time, you can force the generation and update of the OBR metadata using the `cave:repository-update` command:
+
+----
+karaf@root()> cave:repository-update my-repository
+----
+
+This command scan the repository storage location, seeking all OSGi bundles, and generate the OBR metadata (aka a repository.xml).
+
+NB: If you add or remove any artifact in the repository storage location by hand (for instance, using cp, rm, etc on Unix),
+you have to update the repository OBR metadata using the `cave:repository-update` command.
+
+=== Destroy
+
+The `cave:repository-destroy` command deletes the repository storage location:
+
+----
+karaf@root()> cave:repository-destroy my-repository
+----
+
+*Be aware that this command completely deletes the repository storage. By extremely careful when using this command
+with repository using "custom" location.*
+
+=== What's next
+
+Apache Karaf Cave provides a HTTP service to expose the repositories. It allows you to use the repositories remotely.
+You can find details in the link::http-wrapper[HTTP wrapper service section] of the user guide.
+
+If repositories are installed in the OBR service, you can use the OBR command as explained in the link::obr-command[OBR commands section]
+of the user guide.
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/http-wrapper.adoc b/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
new file mode 100644
index 0000000..eb2aab9
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/http-wrapper.adoc
@@ -0,0 +1,187 @@
+//
+// 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.
+//
+
+== HTTP wrapper service
+
+When you install the Apache Karaf Cave Server, it starts a HTTP service wrapper.
+
+It means that all artifacts and OBR metadata presents in local repositories are exposed over HTTP.
+
+=== OBR metadata access
+
+Assuming that you have the following repositories:
+
+----
+karaf@root()> cave:repositories
+Name | Location
+--------------------------------------------------------------------
+my-repository | /home/jbonofre/apache-karaf-3.0.1/cave/my-repository
+m2 | /home/jbonofre/.m2/repository
+----
+
+You can access the OBR metadata using the following URL in your favorite browser:
+
+----
+http://localhost:8181/cave/m2-repository.xml
+----
+
+and
+
+----
+http://localhost:8181/cave/my-repository-repository.xml
+----
+
+NB: the port 8181 is the default one of the Apache Karaf HTTP service.
+
+You can see that the URL follows the format:
+
+You can note the OBR metadata Cave URL format:
+
+----
+http://[cave_server_hostname]:[http_service_port]/cave/[cave_repository_name]-repository.xml
+----
+
+It means that you can register the repositories on remote Apache Karaf instances.
+
+In a remote Apache Karaf instance, you just have to install the obr feature and register the HTTP wrapper repository.xml URL:
+
+----
+karaf@other()> feature:install obr
+karaf@other()> obr:url-add http://cave_server:8181/cave/cave-repo-repository.xml
+karaf@other()> obr:url-add http://cave_server:8181/cave/m2-repository.xml
+----
+
+=== OSGi bundles access
+
+Apache Karaf Cave HTTP wrapper service also provide the OSGi bundles binaries via HTTP.
+
+For instance, you have register the my-repository repository in the OBR service:
+
+----
+karaf@root()> cave:repository-install my-repository
+----
+
+So you have the following bundles available in the OBR service:
+
+----
+karaf@root()> obr:list
+Name | Symbolic Name | Version
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp | org.apache.servicemix.bundles.commons-dbcp | 1.4.0.3
+...
+----
+
+If we take a look on the detail of the commons-dbcp bundle:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3/org.apache.servicemix.bundles.commons-dbcp-1.4_3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+ package:(&(package=javax.naming))
+ package:(&(package=javax.naming.spi))
+ package:(&(package=javax.sql))
+ package:(&(package=javax.transaction))
+ package:(&(package=javax.transaction.xa))
+ package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.xml.sax))
+ package:(&(package=org.xml.sax.helpers))
+Capabilities:
+ bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+ package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+ package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+ package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+----
+
+we can see that the URI is `file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3/org.apache.servicemix.bundles.commons-dbcp-1.4_3.jar`.
+
+But the HTTP wrapper service also exposes the bundle on:
+
+----
+http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+----
+
+Actually, Apache Karaf Cave handles bundle URI relatively to the repository.
+
+So, it means that, if you register the my-repository repository on a remote Apache Karaf instance:
+
+----
+karaf@other()> feature:install obr
+karaf@other()> obr:url-add http://cave_server:8181/cave/my-repository-repository.xml
+----
+
+you can take a look on the commons-dbcp details:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+ package:(&(package=javax.naming))
+ package:(&(package=javax.naming.spi))
+ package:(&(package=javax.sql))
+ package:(&(package=javax.transaction))
+ package:(&(package=javax.transaction.xa))
+ package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.xml.sax))
+ package:(&(package=org.xml.sax.helpers))
+Capabilities:
+ bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+ package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+ package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+ package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+----
+
+we can see that the URI is `http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar`.
+
+It means that we can use directly `obr:deploy` command:
+
+----
+karaf@root> obr:deploy org.apache.servicemix.bundles.commons-dbcp
+Target resource(s):
+-------------------
+ Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.3)
+
+Required resource(s):
+---------------------
+ Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+
+Deploying...done.
+----
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/installation.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/installation.adoc b/manual/src/main/asciidoc/user-guide/installation.adoc
new file mode 100644
index 0000000..19147bb
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/installation.adoc
@@ -0,0 +1,59 @@
+//
+// 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.
+//
+
+== Installation
+
+This chapter describes how to install Apache Karaf Cave into an existing Apache Karaf instance.
+
+=== Pre-installation requirements
+
+As Apache Karaf Cave is a Apache Karaf sub-project, it has to be installed into a running Apache Karaf instance.
+
+Apache Karaf Cave is available as Apache Karaf features. The easiest way to install is just to have an internet
+connection from the Apache Karaf running instance.
+
+=== Registration of the Apache Karaf Cave features
+
+Simply register the Apache Karaf Cave features URL in your Apache Karaf instance:
+
+----
+karaf@root()> feature:repo-add mvn:org.apache.karaf.cave/apache-karaf-cave/3.0.0/xml/features
+----
+
+Now Apache Karaf Cave features are available, ready to be installed:
+
+----
+karaf@root()> feature:list |grep -i cave
+cave-server | 3.0.0 | x | karaf-cave-3.0.0 |
+----
+
+=== Starting Apache Karaf Cave Server
+
+The Apache Karaf Cave Server is installed by the `cave-server` feature:
+
+----
+karaf@root()> feature:install cave-server
+----
+
+NB: installation of the cave-server feature will install additional features, such as obr, http, war. It could take
+several minutes depending of your network connection speed.
+
+New Apache Karaf Cave commands are now available:
+
+----
+karaf@root()> cave:<TAB>
+cave:repositories cave:repository-create cave:repository-destroy
+cave:repository-install cave:repository-populate cave:repository-proxy
+cave:repository-uninstall cave:repository-update cave:repository-upload
+----
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/obr-commands.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/obr-commands.adoc b/manual/src/main/asciidoc/user-guide/obr-commands.adoc
new file mode 100644
index 0000000..6577ece
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/obr-commands.adoc
@@ -0,0 +1,164 @@
+//
+// 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.
+//
+
+== OBR commands
+
+To install a repository in the OBR service, you have to use:
+
+----
+karaf@root()> cave:repository-install cave-repo
+----
+
+Now, you can see the repository OBR metadata register in the OBR service:
+
+----
+karaf@root()> obr:url-list
+Index | OBR URL
+--------------------------------------------------------------------------------
+0 | file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/repository.xml
+----
+
+And the OSGi bundles present in the repository OSGi bundles are available in the OBR service:
+
+----
+karaf@root()> obr:list
+Name | Symbolic Name | Version
+---------------------------------------------------------------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp | org.apache.servicemix.bundles.commons-dbcp | 1.4.0.3
+...
+----
+
+You can get some detail about an OSGi bundle:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-dbcp,1.4.0.3
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+ package:(&(package=javax.naming))
+ package:(&(package=javax.naming.spi))
+ package:(&(package=javax.sql))
+ package:(&(package=javax.transaction))
+ package:(&(package=javax.transaction.xa))
+ package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.xml.sax))
+ package:(&(package=org.xml.sax.helpers))
+Capabilities:
+ bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+ package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+ package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+ package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+----
+
+NB: in Apache Karaf, the OBR entry format is symbolicname,version
+
+You have the details of the OSGi bundle, especially the requirements and capabilities of the bundle.
+
+OBR is able to resolve the dependencies between bundles, depending of the requirements and capabilities of each bundle.
+It's able to manage version, etc.
+
+For instance, we have the following commons-dbcp bundle details:
+
+----
+karaf@root> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.3
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-dbcp-1.4.0.3.jar
+size: 171252
+version: 1.4.0.3
+Requires:
+ package:(&(package=javax.naming))
+ package:(&(package=javax.naming.spi))
+ package:(&(package=javax.sql))
+ package:(&(package=javax.transaction))
+ package:(&(package=javax.transaction.xa))
+ package:(&(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+ package:(&(package=org.xml.sax))
+ package:(&(package=org.xml.sax.helpers))
+Capabilities:
+ bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.3}
+ package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+ package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+ package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+ package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+
+----
+
+We can see that commons-dbcp requires org.apache.commons.pool package (between version 1.3.0 and 2.0.0).
+
+If we take a look on commons-pool bundle details:
+
+----
+karaf@root()> obr:info org.apache.servicemix.bundles.commons-pool
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-pool
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-pool/1.5.4.3
+description: This OSGi bundle wraps commons-pool 1.5.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-pool
+presentationname: Apache ServiceMix :: Bundles :: commons-pool
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-3.0.1/cave/my-repository/org.apache.servicemix.bundles.commons-pool-1.5.4.3.jar
+size: 97332
+version: 1.5.4.3
+Capabilities:
+ bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-pool, presentationname=Apache ServiceMix :: Bundles :: commons-pool, version=1.5.4.3}
+ package:{package=org.apache.commons.pool.impl, uses:=org.apache.commons.pool, version=1.5.4}
+ package:{package=org.apache.commons.pool, version=1.5.4}
+----
+
+This bundle provides package org.apache.commons.pool capability.
+
+It means that if I deploy the commons-dbcp bundle, the OBR should also install the commons-pool bundle:
+
+----
+karaf@root()> obr:deploy org.apache.servicemix.bundles.commons-dbcp
+Target resource(s):
+-------------------
+ Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.3)
+
+Required resource(s):
+---------------------
+ Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+
+Deploying...done.
+----
+
+Done: the OBR has resolved the commons-dbcp requirements using the commons-pool capabilities and so installed the
+commons-pool bundle.
+
+NB: in the `obr:deploy` command, if you don't mention the version, it will take the highly version available.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/populate-repository.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/populate-repository.adoc b/manual/src/main/asciidoc/user-guide/populate-repository.adoc
new file mode 100644
index 0000000..fcb3b5c
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/populate-repository.adoc
@@ -0,0 +1,66 @@
+//
+// 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.
+//
+
+== Populate repository
+
+You can add new artifacts in a repository.
+
+=== Upload a single artifact
+
+You can upload a single artifact into a Cave Repository:
+
+----
+karaf@root()> cave:repository-upload-artifact my-repository file:/home/jbonofre/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.asm/3.3_2/org.apache.servicemix.bundles.asm-3.3_2.jar
+karaf@root()> cave:repository-upload-artifact my-repository http://svn.apache.org/repos/asf/servicemix/m2-repo/org/apache/qpid/qpid-broker/0.8.0/qpid-broker-0.8.0.jar
+----
+
+You can also use Maven style URL:
+
+----
+karaf@root()> cave:repository-upload-artifact my-repository mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.7.0_5
+----
+
+=== Populate from an external repository
+
+You can also make a kind of "bulk" population of your repository, using an external repository:
+
+----
+karaf@root()> cave:repository-populate my-repository file:/home/jbonofre/.m2/repository
+----
+
+Apache Karaf Cave supports `file:` but also `http:` URL. It means that Apache Karaf Cave is able to browse a remote repository and copy the artifacts
+in your "local" repository.
+
+For instance, you can populate your repository using all Ant ServiceMix bundles present on the Central Maven
+repository:
+
+----
+karaf@root()> cave:repository-populate my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.ant/
+----
+
+You can also populate with the whole Central Maven Repository:
+
+----
+karaf@root()> cave:repository-populate my-repository http://repo1.maven.org/maven2
+----
+
+*Maven Central repository is really huge and populating from the whole Maven Central Repository will take
+very very long time. It's just for demonstration purpose.*
+
+You can filter the artifacts that you want to pick up to populate the repository. The `cave:repository-populate` command accepts
+a regex option for the filter. For instance, to pick up only joda-time version 2 artifact, you can run:
+
+----
+karaf@root()> cave:repository-populate --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+----
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/proxy-repository.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/proxy-repository.adoc b/manual/src/main/asciidoc/user-guide/proxy-repository.adoc
new file mode 100644
index 0000000..ae56768
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/proxy-repository.adoc
@@ -0,0 +1,35 @@
+//
+// 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.
+//
+
+== Proxy repository
+
+As you can link::populate-repository[populate repository], you can also proxy an "external" repository.
+
+It means that the artifacts stay on the remote repository, Apache Karaf Cave generates the OBR metadata in the local repository
+for the remote artifacts:
+
+----
+karaf@root()> cave:repository-proxy my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-lang/
+----
+
+NB: the Cave repository will only handle the OBR metadata, it doesn't monitor the remote repository. It means that you
+have to call the `cave:proxy-repository` command each time the remote repository change (new artifacts, etc).
+
+NB: a best practice is to create a Cave repository dedicated for each proxied repository.
+
+The `cave:proxy-repository` command accepts the filter option, as the `cave:populate-repository` command:
+
+----
+karaf@root()> cave:repository-proxy --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+----
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/asciidoc/user-guide/user-index.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/user-index.adoc b/manual/src/main/asciidoc/user-guide/user-index.adoc
new file mode 100644
index 0000000..0f6eca7
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/user-index.adoc
@@ -0,0 +1,23 @@
+Apache Karaf Cave 3.x - User Guide
+===================================
+Apache Software Foundation
+:doctype: book
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cave 3.x - User Guide
+:numbered:
+
+include::user-guide/installation.adoc[]
+
+include::user-guide/cave-repository.adoc[]
+
+include::user-guide/populate-repository.adoc[]
+
+include::user-guide/proxy-repository.adoc[]
+
+include::user-guide/obr-commands.adoc[]
+
+include::user-guide/http-wrapper.adoc[]
+
+include::user-guide/administrate-cave.adoc[]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml b/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
deleted file mode 100644
index 4ac4cca..0000000
--- a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
+++ /dev/null
@@ -1,116 +0,0 @@
--#
--# Copyright (C) 2009-2010 the original author or authors.
--# See the notice.md file distributed with this work for additional
--# information regarding copyright ownership.
--#
--# 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.
--#
-
--@ var body: String
--@ var title : String = "Apache Karaf Cave ${cave.version} Guides"
-- response.setContentType("text/html")
-
--# Only include the console if it's available and the engine is in dev mode.
-- val include_console = engine.isDevelopmentMode && engine.resourceLoader.exists("/org/fusesource/scalate/console/console_head.scaml")
-
-!!! Basic
-%html(lang="en")
- %head
- %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
- %meta(name="description" content="description goes here")
- %meta(name="keywords" content="keywords,goes,here")
- %meta(name="author" content="The Apache Karaf Team")
-
- - if (include_console)
- = include("/org/fusesource/scalate/console/console_head.scaml")
-
- %link(href={uri("/css/style.css")} rel="stylesheet" type="text/css")
- %link(href={uri("/css/pygmentize.css")} rel="stylesheet" type="text/css")
-
- - if (include_console)
- %link(href={uri("/css/scalate/console.css")} rel="stylesheet" type="text/css")
-
- %title
- = title
-
- %body
- %table{:width => "100%", :cellpadding => "0", :cellspacing => "0"}
- %tr{:width => "100%"}
- %td#cell-0-0{:colspan => "2"}
-
- %td#cell-0-1
-
- %td#cell-0-2{:colspan => "2"}
-
- %tr{:width => "100%"}
- %td#cell-1-0
-
- %td#cell-1-1
-
- %td#cell-1-2
- %div{:style => "padding: 5px;"}
- #banner
- = include("/_banner.ssp")
- #top-menu
- %table{:border => "0", :cellpadding => "1", :cellspacing => "0", :width => "100%"}
- %tr
- %td
- %div{:align => "left"}
- %td
- %div{:align => "right"}
- = include("/_quicklinks.ssp")
- %td#cell-1-3
-
- %td#cell-1-4
-
- %tr{:width => "100%"}
- %td#cell-2-0{:colspan => "2"}
-
- %td#cell-2-1
- %table
- %tr{:height => "100%", :valign => "top"}
- %td{:height => "100%"}
- #wrapper-menu-page-right
- #wrapper-menu-page-top
- #wrapper-menu-page-bottom
- #menu-page
- = include("/_navigation.conf")
- %td{:height =>"100%", :width => "100%"}
- .wiki-content
- !~~ body
- %td#cell-2-2{:colspan => "2"}
-
- %tr{:width => "100%"}
- %td#cell-3-0
-
- %td#cell-3-1
-
- %td#cell-3-2
- #footer
- #site-footer
- © 2008-2011 The Apache Software Foundation
- %br
- Apache Karaf, Karaf, Apache, the Apache feather logo, and the Apache Karaf project logo are trademarks of The Apache Software Foundation.
- %td#cell-3-3
-
- %td#cell-3-4
-
- %tr{:width => "100%"}
- %td#cell-4-0{:colspan => "2"}
-
- %td#cell-4-1
-
- %td#cell-4-2{:colspan => "2"}
-
- - if (include_console)
- = include("/org/fusesource/scalate/console/console.scaml")
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp b/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
deleted file mode 100644
index d2c427f..0000000
--- a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
+++ /dev/null
@@ -1,817 +0,0 @@
-<%--
-Copyright (C) 2009-2010 the original author or authors.
-See the notice.md file distributed with this work for additional
-information regarding copyright ownership.
-
-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.
---%>
-<%@ var body: String %>
-<%@ var title: String = "Apache Karaf Cave ${cave.version} Guides" %>
-<% escapeMarkup = false %>
-<!DOCTYPE html>
-<html>
-<head>
- <style type="text/css">
-/*
-
-Copyright (c) 2005 Hakon Wium Lie and Bert Bos
-
-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.
-
-*/
-html {
- margin: 0; padding: 0;
- font: 10pt/1.26 "Gill Sans", sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-family: "Gill Sans", sans-serif;
- margin: 2em 0 0.5em 0;
- page-break-after: avoid;
-}
-
-h1 {
- font-size: 2.0em;
- font-weight: 900;
-
- margin: 0;
- margin-left:-2cm;
- margin-top:-1cm;
- margin-bottom:1.5cm;
- top: 0cm;
- left: 0cm;
- padding: 2cm;
- padding-top: 0cm;
- padding-bottom: 1cm;
- background: #888;
- border-bottom-right-radius: 2cm;
- page-break-before: always;
- page-break-inside: avoid;
-}
-
-@media screen, handheld {
-h1 {
- margin-top:1cm;
- background-image: url("chapter-rounded-bottom.png");
- background-repeat: no-repeat;
- background-position: bottom right;
-}
-div.page-reset > h1 {
- margin-top:0cm;
-}
-}
-
-
-h2 {
- font-size: 1.2em;
- text-transform: uppercase;
- font-weight: bold;
-}
-
-h3 {
- font-size: 1em;
- font-weight: bold;
-}
-
-q::before {
- content: "\201C";
-}
-
-q::after {
- content: "\201D";
-}
-
-p { margin: 0 }
-p + p { text-indent: 1.3em ; margin-top: 0.2em; }
-p.sidenote + p, p.caption, p.art { text-indent: 0 }
-
-p.author {
- margin-top: 2em;
- text-indent: 0;
- text-align: right;
-}
-
-a { text-decoration: none; color: black }
-
-/* cross-references */
-
-a.pageref::after { content: " on page " target-counter(attr(href), page); }
-a.chapref::before { content: " Chapter " target-counter(attr(href), chapter) ", "; }
-a.figref { content: " Figure " target-counter(attr(href), figure); }
-a.tableref { content: " Table " target-counter(attr(href), figure); }
-a.listingref { content: " Listing " target-counter(attr(href), listing); }
-
-/* sidenotes */
-
-.sidenote {
- float: left;
- clear: left;
- margin: 0 0 1em -41%;
- width: 37%;
- font-size: 0.9em;
- font-style: normal;
- text-indent: 0;
- text-align: right;
- page-break-inside: avoid;
-}
-
-/* sidebars */
-
-div.sidebar {
- float: top-next;
- margin: 1.2em 0 1.2em 0;
- border: thin solid;
- background: #CCC;
- padding: 0.5em 1em;
- page-break-inside: avoid;
- column-count: 2;
- column-gap: 1.5em;
-}
-
-div.sidebar h2 {
- margin-top: 0;
-}
-
-/* frontpage */
-
-.title p{
- font-size:22pt;
- font-family: "Gill Sans", sans-serif;
- text-align: center;
-}
-
-.copyright-section {
- text-align: center;
- font-size: 9pt;
- page-break-after: always;
- margin-top: 50pt;
- margin-bottom: 20pt;
-}
-
-.toc-title {
- font-size:18pt;
- font-family: "Gill Sans", sans-serif;
- text-align: left;
- margin-left:20pt;
- margin-bottom: 40pt;
-
-}
-
-/* figures, tables, and listings */
-
-div.confluenceTableSmall th.confluenceTh {
- font-size: 11px;
-}
-
-div.confluenceTableSmall td.confluenceTd {
- font-size: 7px;
-}
-
-div.figure {
- margin: 1em 0;
- counter-increment: figure;
-}
-
-div.figure .caption, div.table .caption {
- font-size: 0.9em;
- font-style: italic;
-}
-
-div.figure .caption::before {
- content: "Figure " counter(figure) ". ";
- font-weight: bold;
- font-style: normal;
-}
-
-div.table .caption::before {
- content: "Table " counter(table) ". ";
- font-weight: bold;
- font-style: normal;
-}
-
-div.table {
- margin: 1em 0;
- counter-increment: table;
-}
-
-div.table th {
- text-align: left;
-}
-
-table th, table td {
- text-align: left;
- padding-right: 1em;
- page-break-inside: avoid;
-}
-
-table th {
- border-top: thin solid;
- border-bottom: thin solid;
- padding-top: 0.2em;
- padding-bottom: 0.2em;
-}
-table td {
- border-top: none;
- border-bottom: thin dotted;
- padding-top: 0.2em;
- padding-bottom: 0.2em;
-}
-
-div.Scrollbar {
- display: none;
-}
-
-
-/* Weird div.codeHeader a b::before would be a better selection
- but prince does not properly match it.. Firefox does. */
-div.codeHeader::before {
- content: "Listing " counter(listing) ". ";
- font-weight: bold;
- font-style: normal;
-}
-div.codeHeader a b {
- font-style: italic;
- font-weight: normal;
-}
-div.codeHeader {
- font-size: 0.9em;
- counter-increment: listing;
-}
-div.code {
- border: 1px dashed #c0c0c0;
- font-size: 12px;
- font-family: Courier;
- margin: 5px;
- line-height: 13px;
- padding: 3px;
- background-color: #f8f8f8;
-
-}
-
-
-@page {
- margin: 2cm;
- size: 7in 9.25in;
-
- @footnotes {
- border-top: thin solid black;
- padding-top: 0.3em;
- margin-top: 0.6em;
- }
-}
-
-
-/* define default page and names pages: cover, blank, frontmatter */
-div.page-reset {
- counter-reset: page 1;
-}
-
-@page :left {
- @top-left-corner {
- font-weight: 900; font: 9pt "Gill Sans", serif;
- content: counter(page);
- text-align: left;
- margin-left: 1cm;
- visibility: hidden;
- }
- @top-left {
- font-weight: 900;
- font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
- content: string(header, first);
- visibility: hidden;
- }
- @bottom-left-corner {
- font-weight: 900; font: 9pt "Gill Sans", serif;
- content: counter(page);
- text-align: left;
- margin-left: 1cm;
- }
- @bottom-left {
- font-weight: 900;
- font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
- content: string(header, first);
- }
-}
-
-@page :right {
- @top-right-corner {
- font-weight: 900; font: 9pt "Gill Sans", serif;
- content: counter(page);
- text-align: left;
- margin-left: 1cm;
- visibility: hidden;
- }
- @top-right {
- font-weight: 900;
- font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
- content: string(header, first)
- visibility: hidden;
- }
- @bottom-right-corner {
- font-weight: 900; font: 9pt "Gill Sans", serif;
- content: counter(page);
- text-align: right;
- margin-right: 1cm;
- }
- @bottom-right {
- font-weight: 900; font: 9pt "Gill Sans", serif;
- white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
- content: string(header, first)
- }
-}
-
-/*
- In theory we should be able to use the :first selector so taht
- we can put the page numbering on the bottom of the first page of the chapter
- but have the rest of the pages number at the top. But this does not seem
- to work. See http://www.princexml.com/doc/6.0/page-selectors/
-
- So for now just always number at the bottom :(
-*/
-/*
-div.chapter { page: bottom-number; }
-@page bottom-number :first {
- @top-left {
- visibility: hidden;
- }
- @bottom-left {
- visibility: visible;
- }
- @top-right {
- visibility: hidden;
- }
- @bottom-right {
- visibility: visible;
- }
-}
-*/
-
-@page cover { margin: 0; }
-
-@page frontmatter :left {
- @bottom-left-corner {
- content: counter(page, lower-roman);
- }
- @bottom-left-corner {
- content: counter(page, lower-roman);
- }
-}
-
-@page frontmatter :right {
- @bottom-right-corner {
- content: counter(page, lower-roman);
- }
- @bottom-right-corner {
- content: counter(page, lower-roman);
- }
-}
-
-@page blank :left {
- @top-left { visibility: hidden; }
- @bottom-left { visibility: hidden; }
- @top-left-corner { visibility: hidden; }
- @bottom-left-corner { visibility: hidden; }
-}
-
-@page blank :right {
- @top-right { visibility: hidden; }
- @bottom-right { visibility: hidden; }
- @top-right-corner { visibility: hidden; }
- @bottom-right-corner { visibility: hidden; }
-}
-
-/* footnotes */
-.footnote {
- display: none; /* default rule */
-
- display: prince-footnote; /* prince-specific rules */
- position: footnote;
- footnote-style-position: inside;
-
- counter-increment: footnote;
- margin-left: 1.4em;
- font-size: 90%;
- line-height: 1.4;
-}
-
-.footnote::footnote-call {
- vertical-align: super;
- font-size: 80%;
-}
-
-.footnote::footnote-marker {
- vertical-align: super;
- color: green;
- padding-right: 0.4em;
-}
-
-/* Confluence contents to hide */
-#labels-section {
- display: none;
-}
-#comments-section {
- display: none;
-}
-#footer {
- display: none;
-}
-.hidden {
- display: none;
-}
-
-/*
- A book consists of different types of sections. We propose to use
- DIV elements with these class names:
-
- frontcover
- halftitlepage: contains the title of the book
- titlepage: contains the title of the book, name of author(s) and publisher
- imprint: left page with copyright, publisher, library printing information
- dedication: right page with short dedication
- foreword: written by someone other than the author(s)
- toc: table of contents
- preface: preface, including acknowledgements
- chapter: each chapter is given its own DIV element
- references: contains list of references
- appendix: each appendix is given its own
- bibliography
- glossary
- index
- colophon: describes how the book was produced
- backcover
-
- A book will use several of the types listed above, but few books
- will use all of them.
-*/
-
-/* which section uses which named page */
-
-div.halftitlepage, div.titlepage, div.imprint, div.dedication { page: blank }
-div.foreword, div.toc, div.preface { page: frontmatter }
-
-
-/* page breaks */
-div.frontcover, div.halftitlepage, div.titlepage { page-break-before: right }
-div.imprint { page-break-before: always; }
-div.chapter { page-break-before: always; }
-div.dedication, div.foreword, div.toc, div.preface, div.reference,
-div.appendix, div.bibliography, div.glossary, div.index, div.colophon {
- page-break-before: always
-}
-div.backcover { page-break-before: left }
-
-/* titlepage, halftitlepage */
-
-div.titlepage h1, div.halftitlepage h1 { margin-bottom: 2em; }
-div.titlepage h2, div.halftitlepage h2 { font-size: 1.2em; margin-bottom: 3em; }
-div.titlepage h3, div.halftitlepage h3 { font-size: 1em; margin-bottom: 3em; }
-div.titlepage p, div.halftitlepage p {
- font-size: 1.4em;
- font-weight: bold;
- margin: 0; padding: 0;
-}
-
-
-/* TOC */
-
-ul.toc, ul.toc ul {
- list-style-type: none;
- margin: 0; padding: 0;
- margin-left: 3cm;
-}
-ul.toc ul {
- margin-left: 1em;
- font-weight: normal;
-}
-ul.toc > li {
- font-weight: bold;
- margin-bottom: 0.5em;
-}
-ul.toc a::after {
- content: leader('.') target-counter(attr(href), page);
- font-style: normal;
-}
-ul.toc > li.frontmatter a::after {
- content: leader('.') target-counter(attr(href), page, lower-roman);
- font-style: normal;
-}
-ul.toc > li.endmatter a::after {
- content: leader('.') target-counter(attr(href), page);
- font-style: normal;
-}
-ul.toc > li.chapter::before {
- content: "Chapter " counter(toc-chapter, decimal);
- display: block;
- margin: 1em 0 0.1em -2.5cm;
- font-weight: normal;
- counter-increment: toc-chapter;
- page-break-after: avoid;
-}
-
-/* chapter numbers */
-
-div.chapter { counter-increment: chapter; }
-div.chapter h1::before {
- text-transform: uppercase;
- letter-spacing: 0.15em;
- content: "Chapter " counter(chapter) " \A\B0 \B0 \B0 \B0\A";
- white-space: pre;
- font-size: 50%;
-}
-
-div.frontcover h1::before, div.titlepage h1::before, div.halftitlepage h1::before {
- content: normal; /* that is, none */
-}
-
-h1 { string-set: header content();}
-div.chapter h1 { string-set: header "Chapter " counter(chapter) " - " content(); }
-
-/* index */
-
-ul.index {
- list-style-type: none;
- margin: 0; padding: 0;
- column-count: 2;
- column-gap: 1em;
-}
-
-ul.index a::after { content: ", " target-counter(attr(href), page); }
-
-
-span.element, span.attribute {
- text-transform: uppercase;
- font-weight: bold;
- font-size: 80%;
-}
-span.property { font-weight: bold }
-code, span.css, span.value, span.declaration {
- font: 90% "Lucida Console", "Lucida Sans Typewriter", monospace;
-}
-
-
-@media screen, handheld {
- html {font: 14px "Gill Sans", sans-serif; }
- h1 { margin-bottom: 0.5em }
- div.frontcover, div.halftitlepage, div.titlepage, div.imprint,
- div.dedication, div.foreword, div.toc, div.index { display: none }
- body {
- margin: 0cm;
- margin-left: 2cm;
- margin-right: 2cm;
- }
-}
-
-/*
- * Enhancements to the take advantage of some of the style markup that
- * Confluence generates
- */
-a sup img { visibility: hidden; position: absolute;}
-
-img {
- prince-image-resolution:150dpi;
-}
-
-table {
- font: "Lucida Console", "Lucida Sans Typewriter", monospace;
-}
-
-table td {
- font-size: 10pt;
-}
-
-pre {
- white-space: pre-wrap;
-}
-
-.codeContent {
- font-size: 80%;
-}
-.code {
-}
-.code-keyword {
- color: #000091;
- background-color: inherit;
-}
-
-.code-object {
- color: #910091;
- background-color: inherit;
-}
-
-.code-quote {
- color: #009100;
- background-color: inherit;
-}
-
-.code-comment {
- color: #808080;
- background-color: inherit;
-}
-
-
-.code-xml .code-keyword {
- color: inherit;
- font-weight: bold;
-}
-
-.code-tag {
- color: #000091;
- background-color: inherit;
-}
-
-.noteMacro { border-color: #F0C000; background-color: #FFFFCE;}
-.warningMacro { border-color: #CC0000; background-color: #FFCCCC }
-.infoMacro { border-color: #3c78b5; background-color: #D8E4F1; }
-.tipMacro { border-color: #090; background-color: #dfd;}
-.noteMacro, .warningMacro, .infoMacro, .tipMacro, .informationMacroPadding {
- border: thin solid;
- float: top-next;
- margin: 1em 0 1.2em 0;
- padding: 0.5em;
- column-count: 2;
- column-gap: 1.5em;
- width: 100%;
-}
-table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
- border: none;
-}
-table.infoMacro p, table.warningMacro p, table.tipMacro p, table.noteMacro p, table.sectionMacro p {
- font-size:x-small;
- margin-top: 1em;
-}
- </style>
- <style type="text/css">
-.syntax .hll { background-color: #ffffcc }
-.syntax { background: #f0f0f0; }
-.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
-.syntax .err { border: 1px solid #FF0000 } /* Error */
-.syntax .k { color: #007020; font-weight: bold } /* Keyword */
-.syntax .o { color: #666666 } /* Operator */
-.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
-.syntax .cp { color: #007020 } /* Comment.Preproc */
-.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
-.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
-.syntax .gd { color: #A00000 } /* Generic.Deleted */
-.syntax .ge { font-style: italic } /* Generic.Emph */
-.syntax .gr { color: #FF0000 } /* Generic.Error */
-.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.syntax .gi { color: #00A000 } /* Generic.Inserted */
-.syntax .go { color: #808080 } /* Generic.Output */
-.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.syntax .gs { font-weight: bold } /* Generic.Strong */
-.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.syntax .gt { color: #0040D0 } /* Generic.Traceback */
-.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.syntax .kp { color: #007020 } /* Keyword.Pseudo */
-.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.syntax .kt { color: #902000 } /* Keyword.Type */
-.syntax .m { color: #40a070 } /* Literal.Number */
-.syntax .s { color: #4070a0 } /* Literal.String */
-.syntax .na { color: #4070a0 } /* Name.Attribute */
-.syntax .nb { color: #007020 } /* Name.Builtin */
-.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.syntax .no { color: #60add5 } /* Name.Constant */
-.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.syntax .ne { color: #007020 } /* Name.Exception */
-.syntax .nf { color: #06287e } /* Name.Function */
-.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
-.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.syntax .nv { color: #bb60d5 } /* Name.Variable */
-.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.syntax .w { color: #bbbbbb } /* Text.Whitespace */
-.syntax .mf { color: #40a070 } /* Literal.Number.Float */
-.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
-.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
-.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
-.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
-.syntax .sc { color: #4070a0 } /* Literal.String.Char */
-.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
-.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.syntax .sx { color: #c65d09 } /* Literal.String.Other */
-.syntax .sr { color: #235388 } /* Literal.String.Regex */
-.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
-.syntax .ss { color: #517918 } /* Literal.String.Symbol */
-.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
-.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
-.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
-
-
-/* don't highlight errors */
-.syntax .err {
- border: none;
-}
-
-.syntax {
- font-size: .9em;
- font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
- background-color: #F8F8FF;
-
- overflow:auto;
- -moz-background-clip:border;
- -moz-background-inline-policy:continuous;
- -moz-background-origin:padding;
- margin: 1em 0 1em 0;
- border:1px solid #DDDDDD;
-
- border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;
- border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
- border-style: solid; border-width: 1px; border-color: #dedede !important;
- padding: 1em;
-}
-.syntax .linenodiv {
- background-color:#ECECEC;
- border-right:1px solid #DDDDDD;
- color:#AAAAAA;
- padding: .5em;
- text-align:right;
-}
-.syntax .highlight {
-}
-.syntax pre {
- margin:0;
-}
-
-pre.syntax {
- padding: .5em;
- background-color: #F8F8FF; overflow:auto;
-}
-
-.syntax code {
- font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
- font-size: 10pt;
-}
-
-div.compare { width: 700px; }
-div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
-div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
-div.compare div h3 {
- margin-left: 15px;
- padding: 5px 15px;
- display: inline;
- font-size: .8em;
- color: #666;
-
- border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
- border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
- border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
- border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;
- border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
-}
-div.compare div div {
- margin: 5px 0px 0px 0px;
-}
-.clear {
- clear:both;
-}
-.wide div.compare div.compare-left { float:none; width:700px; }
-.wide div.compare div.compare-right { float:none; width:700px; }
-
- </style>
-
- <title>${title}</title>
-</head>
-<body>
- <div id="titlepage">
- <div id="title">Apache Karaf Cave</div>
- <div id="subtitle">Version ${cave.version}</div>
- </div>
- <div id="main">
- <%= body %>
- </div>
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/WEB-INF/web.xml b/manual/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 50a7f28..0000000
--- a/manual/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Copyright (C) 2009-2010 the original author or authors.
- See the notice.md file distributed with this work for additional
- information regarding copyright ownership.
-
- 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.
-
--->
-
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
-
- <display-name>Apache Karaf Cave Documentation</display-name>
-
- <description>
- Apache Karaf Cave Documentation
- </description>
-
- <filter>
- <filter-name>TemplateEngineFilter</filter-name>
- <filter-class>org.fusesource.scalate.servlet.TemplateEngineFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>TemplateEngineFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- <welcome-file-list>
- <welcome-file>index.conf</welcome-file>
- </welcome-file-list>
-
- <error-page>
- <error-code>500</error-code>
- <location>/WEB-INF/scalate/errors/500.scaml</location>
- </error-page>
-</web-app>
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/index.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/index.conf b/manual/src/main/webapp/index.conf
deleted file mode 100644
index 80a0d2d..0000000
--- a/manual/src/main/webapp/index.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-h1. Apache Karaf Cave
-
-This project contains documentation about Apache Karaf Cave.
-
-* [Overview|overview]
-* [User Guide|user-guide/index]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/manual.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/manual.conf b/manual/src/main/webapp/manual.conf
deleted file mode 100644
index 656bc29..0000000
--- a/manual/src/main/webapp/manual.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-{attributes:layout=/WEB-INF/scalate/layouts/print.ssp}
-
-{div:class=title}
-\\
-\\
-\\
-\\
-Apache Karaf Cave
-User Guide
-\\
-\\
-\\
-\\
-{div}
-
-{div:class=copyright-section}
-Copyright 2013 The Apache Software Foundation
-
-The PDF format of the Karaf Manual has been generated by Prince XML (http://www.princexml.com).
-{div}
-
-{div:class=toc-title}
-Table of contents
-{div}
-
-{toc:maxLevel=2}
-
-h1. Overview
-{include:overview.conf}
-
-h1. User Guide
-{include:/user-guide/installation}
-{include:/user-guide/cave-repository}
-{include:/user-guide/populate-repository}
-{include:/user-guide/proxy-repository}
-{include:/user-guide/obr-commands}
-{include:/user-guide/http-wrapper}
-{include:/user-guide/administrate-cave}
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/overview.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/overview.conf b/manual/src/main/webapp/overview.conf
deleted file mode 100644
index a1bd6fc..0000000
--- a/manual/src/main/webapp/overview.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-h1. Apache Karaf Cave overview
-
-Apache Karaf Cave is an Apache Karaf sub-project.
-
-It provides an OSGi Bundle Repository (OBR) and Karaf Features Repository (KFR).
-
-OBR provides a service that can automatically install a bundle, with its deployment dependencies, from a bundle
-repository.
-
-Apache Karaf Cave provides the following features:
-
-* *Storage*: Karaf Cave includes a storage backend. The default one is a simple filesystem backend. As the Cave backend
-is designed in a plugin way, you can implement your own backend (for instance, JDBC or LDAP backend).
-* *OBR Metadata Generation*: Karaf Cave automatically creates the OBR metadata for you, using the artifacts presents
-in the Cave repository storage.
-* *OBR Registration*: Karaf Cave allows you to directly register a Cave repository into an OBR RepositoryAdmin OSGi
-service.
-* *Artifact Upload*: Users can upload OSGi bundle in a Cave repository. It supports URLs like mvn:groupId/artifactId/version,
-file:, http:, etc.
-* *Repository proxy*: Karaf Cave is able to proxy an existing repository, for instance an existing Maven repository.
-The artifacts are located on the "external" repository, Cave handles the OBR metadata. Cave supports file: and http:
-URLs, it means that Cave is able to browse a remote HTTP Maven repository for instance.
-* *Repository population*: Karaf Cave is able to get artifacts present on an "external" repository (local file: or
-remote http:), looking for OSGi bundles, and copy the artifacts in the Cave repository storage.
-
-The {{cave-server}} feature provides the OBR and KFR server, including the storage backend, management layer and shell commands.
http://git-wip-us.apache.org/repos/asf/karaf-cave/blob/12250688/manual/src/main/webapp/user-guide/administrate-cave.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/administrate-cave.conf b/manual/src/main/webapp/user-guide/administrate-cave.conf
deleted file mode 100644
index 6c3b30b..0000000
--- a/manual/src/main/webapp/user-guide/administrate-cave.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-h1. Administration
-
-When you install Apache Karaf Cave server, it provides a new CaveServerMBean.
-
-This MBean use the following object name:
-
-{code}
-org.apache.karaf.cave:type=repository,name=*
-{code}
-
-Thanks to this MBean, using any JMX client (like jconsole for instance), you can do all actions as you can using the
-{{cave:*}} commands:
-
-* void createRepository(String name, String location, boolean generateObr, boolean install) throws Exception;
-* void destroyRepository(String name) throws Exception;
-* void installRepository(String name) throws Exception;
-* void uninstallRepository(String name) throws Exception;
-* void populateRepository(String name, String url, boolean generateObr, String filter) throws Exception;
-* void proxyRepository(String name, String url, boolean generateObr, String filter) throws Exception;
-* void updateRepository(String name) throws Exception;
-* void uploadArtifact(String repository, String artifactUrl, boolean generateObr) throws Exception;
\ No newline at end of file