felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fmesc...@apache.org
Subject svn commit: r1421893 [2/24] - in /felix/site/trunk/content: ./ documentation/ documentation/community/ documentation/development/ documentation/faqs/ documentation/subprojects/ documentation/subprojects/apache-felix-commons/ documentation/subprojects/a...
Date Fri, 14 Dec 2012 14:30:22 GMT
Added: felix/site/trunk/content/documentation/development/dependencies-file-template.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/dependencies-file-template.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/dependencies-file-template.mdtext (added)
+++ felix/site/trunk/content/documentation/development/dependencies-file-template.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,43 @@
+Title: DEPENDENCIES file template
+
+Each released software archive must contain a DEPENDENCIES file in it to declare third-party dependencies and their licenses. The following template should be used:
+
+
+    Apache Felix AAA
+    Copyright BBB The Apache Software Foundation
+    
+    This software was developed at the Apache Software Foundation
+    (http://www.apache.org) and may have dependencies on other
+    Apache software licensed under Apache License 2.0.
+    
+    I. Included Third-Party Software
+    
+    CCC
+    
+    II. Used Third-Party Software
+    
+    DDD
+    
+    III. Overall License Summary
+    - Apache License 2.0
+    - EEE
+
+
+Where the placeholders have the following meaning:
+
+* AAA - Name of the Felix subproject.
+* BBB - Copyright year or range of years.
+* CCC - List of third-party software included in the archive.
+* DDD - List of third-party software used (but not included) by the archive.
+* EEE - List of additional third-party licenses as a result of the dependencies.
+
+The format for an individual third-party dependency is flexible, but should try to include the name of the developing organization or individual, a URL, a copyright, and the license. For example, a dependency on OSGi software would look like this:
+
+
+    This product includes software developed at
+    The OSGi Alliance (http://www.osgi.org/).
+    Copyright (c) OSGi Alliance (2000, 2009).
+    Licensed under the Apache License 2.0.
+
+
+If you need additional examples on how to fill out a DEPENDENCIES file, look at other examples in the SVN repo or ask on the dev@felix mailing list.

Added: felix/site/trunk/content/documentation/development/dependencies.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/dependencies.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/dependencies.mdtext (added)
+++ felix/site/trunk/content/documentation/development/dependencies.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,5 @@
+Title: Dependencies
+
+# Dependencies
+
+TODO determine how we want to list our dependencies

Added: felix/site/trunk/content/documentation/development/integrating-felix-with-eclipse.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/integrating-felix-with-eclipse.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/integrating-felix-with-eclipse.mdtext (added)
+++ felix/site/trunk/content/documentation/development/integrating-felix-with-eclipse.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,184 @@
+Title: Integrating Felix with Eclipse
+
+# Integrating Felix with Eclipse
+
+This document explains how to launch Felix inside the Eclipse IDE. Then, it is possible to use Eclipse debugging facilities to debug bundles.
+
+
+## Preliminaries
+
+To integrate Felix inside Eclipse, you need Felix, Eclipse and nothing else.
+
+### Installing Eclipse
+
+First, you need Eclipse. To download the Eclipse IDE, go to:[http://www.eclipse.org/downloads/](http://www.eclipse.org/downloads/). This tutorial works for Eclipse 3.X.X, but may works on older version.
+
+### Creation of the Felix binaries
+
+To integrate Felix inside Eclipse, you have three possibilities
+* Using Pax Cursor to launch easily any supported OSGi framework inside Eclipse.
+* Integrating the Felix release as a Java project
+* Integrating the Felix trunk (latest version) as a Java project
+
+#### Using Pax Cursor
+
+[Pax Cursor](http://wiki.ops4j.org/confluence/display/ops4j/Pax+Cursor) is an Eclipse Plugin that adds Eclipse launch configurations for all platforms / versions supported by Pax Runner.
+
+#### Usign the Felix release as a Java Project
+
+Once, Eclipse is installed, you need to download Felix. You will find this Felix release on [http://felix.apache.org/site/downloads.cgi](http://felix.apache.org/site/downloads.cgi). Choose a binary release in your preferred archive format. Then, unzip the release in a temporary folder. We will copy the files elsewhere later.
+
+#### Building and Using the Felix Trunk
+
+If you want to use the Felix trunk, follows the [instructions](http://felix.apache.org/site/building-felix.html) to checkout and build it. The Felix binaries are created in the *main* project.  We will copy the files elsewhere later.
+
+## Installing Felix
+
+The integration uses a Java project. This project will contain Felix. This section explains how-to create the new project, how-to copy the Felix release inside the project and finally, how-to configure it.
+
+### Creation of the Felix Java project
+
+First, launch Eclipse, and select your preferred workspace. The integration will be attached to this workspace.
+
+Then, click on File \-> New \-> Project... as depicts on the Figure 1.
+
+!new*project*1.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}1{*}{color}{color:#4f81bd}*: Creation of a new project{*}{color}
+
+This action will launch the project creation wizard. Select Java project (Figure 2), and click on "Next".
+
+!new*project*2.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}2{*}{color}{color:#4f81bd}*: Selection of the project type{*}{color}
+
+Enter the project name (Felix for example). Select the "create separate source and output folders" option (if not already selected). These actions are depicted on the Figure 3. Then click on "Next".
+
+!new*project*3.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}3{*}{color}{color:#4f81bd}*: Configuration of the Felix project{*}{color}
+
+On this new wizard page, you need only to change the default output folder (Felix/bin) to another (classes for example, as presented on Figure 4).
+
+!new*project*4.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}4{*}{color}{color:#4f81bd}*: Change the "Default output folder"*{color}
+
+After that, click on the "Finish" button. You need to see the following structure (Figure 5). Check that the *bin* folder appears.
+
+!new*project*5.png!
+{color:#4f81bd}{*}Figure 5: Our new Java Project{*}{color}
+
+### Copying Felix inside the created project
+
+Now, remember where you uncompress the Felix release, or where is the Felix main project. Move these files inside the created project. Override the *bin* folder when asked.
+
+!copy_1.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}6{*}{color}{color:#4f81bd}*: Overwrite the "bin" folder{*}{color}
+
+Once copied, refresh the project. You should see something as presented on the Figure 7.
+
+!copy_2.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}7{*}{color}{color:#4f81bd}*: The Felix project after the copy{*}{color}
+
+### Preparing the Felix project
+
+The Felix main jar is bin/Felix.jar. So, we need to add this jar in the project build path as presented on Figure 8. Right-click on the felix.jar file and then choose Build Path \-> Add to Build Path.
+
+
+!build*path*1.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}8{*}{color}{color:#4f81bd}*: Add the felix.jar file to the project build path{*}{color}
+
+## Run Felix
+
+
+### Create a Run configuration
+
+Now, the Felix project is ready. But, we need to configure a *Run{*}configuration to launch Felix. To achieve this, right-click on the Felix project and select Run As \-> Run... (Figure 9)
+
+!run_1.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}9{*}{color}{color:#4f81bd}*: Create a Run configuration to launch Felix{*}{color}
+
+This action launch the Run configuration windows. Create a new Java Application (Right-click on Java Application and select *new*) (Figure 10)
+
+!run_2.png!
+{color:#4f81bd}{*}Figure 10:*{color} {color:#4f81bd}{*}Create{*}{color} {color:#4f81bd}{*}a new Java Application{*}{color}
+
+On the configuration wizard, enter a configuration name. Afterward, check the project name (it should be Felix if you choose Felix as project name). Then, Tick the "Include libraries when searching for a main class" option. You should obtain something as presented on the Figure 11.
+
+!run_3.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}11{*}{color}{color:#4f81bd}*: Felix run configuration{*}{color}
+
+Next, click on the "Search" button. Enter "Main" in the text area. In the resulting list, select "Main -- org.apache.felix.main". Below the list, you should see: "org.apache.felix.main /Felix/bin/felix.jar". The resulting windows must be similar as the Figure 11.
+
+!run_4.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}12{*}{color}{color:#4f81bd}*: Choose to "good" main class{*}{color}
+
+At that moment, clicks on the "Ok" button. You come back to the Run configuration windows. Apply the configuration ("Apply" button). And click on the "Run" button (Figure 13).
+
+!run_5.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}13{*}{color}{color:#4f81bd}*: The Felix run configuration can be launched{*}{color}
+
+*Note:* Newest Felix versions require to set the `felix.config.properties` property. To achieve this, go in the 'arguments' tab and add the following VM arguments:
+
+    -Dfelix.config.properties=file:conf/config.properties
+
+
+### First Execution
+
+Once launched, you should see in the Eclipse console view:
+
+!run_6.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}14{*}{color}{color:#4f81bd}*: Endly Felix inside Eclipse\!*{color}
+
+You can use the console as the "normal" Felix console. In fact it is the normal Felix console in color. Enter a profile name as "integration_test" and then use the console normally (Figure 15).
+
+To stop Felix, either type *shutdown* in the console, either clicks on the red square ("terminate") in the console toolbar.
+
+!run_7.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}15{*}{color}{color:#4f81bd}*: Use the Felix console normally{*}{color}
+
+### Re-launching Felix
+
+Once the run configuration for Felix is created (and launched a first time), you can launch Felix directly by clicking on the Run icon and by choosing Felix (Figure 16). Moreover, you can use Eclipse debugging features by launching Felix in debug mode. To achieve this, click on the debug icon and then choose Felix (Figure 17).
+
+*Note:* You can launch Felix in profiling mode too, if you have installed TPTP.
+
+!run_8.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}16{*}{color}{color:#4f81bd}*: Launching directly Felix from the icon bar{*}{color}
+
+!run_9.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}17{*}{color}{color:#4f81bd}*: Launch Felix in debug mode{*}{color}
+
+## Felix Configuration
+
+Obviously, you can modify the Felix configuration. The Felix configuration file is in the *conf* folder (config.properties). This section presents briefly two modifications. To go further, look at the Felix documentation.
+
+### Configure the Felix cache location
+
+Felix store profiles and deployed bundle inside a cache. Normally this cache is located at*$user*home/.felix.\_ It is possible to change this location in order to clean it quickly.
+
+Open the configuration file. Then, add a new line with felix.cache.dir=cache (Figure 18). Now, when you will start Felix, it will create a new{*}cache* folder (in your project)(Figure 19). All profiles will be stored in. To clean your cache, just delete the cache directory.
+
+*Note: refresh your project; else the folder does not appear.*
+
+!conf_1.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}18{*}{color}{color:#4f81bd}*: Customize the Felix cache location{*}{color}
+
+!conf_2.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}19{*}{color}{color:#4f81bd}*: The Felix cache inside your project{*}{color}
+
+### Add auto-started bundles
+
+Often, you want that Felix deploy automatically some bundles. By modifying the felix.auto.start.1 (or 2), it is possible to configure which bundle will be deployed at startup.
+
+To achieve this, open the configuration file and add your needed bundle path to the felix.auto.start.1 property (Figure 20). Be careful to the / in your path, to the \ at the end of the line, and to leave a space to the beginning of a new line.
+
+!conf_3.png!
+{color:#4f81bd}{*}Figure{*}{color}{color:#4f81bd} {*}20{*}{color}{color:#4f81bd}*: Add auto-started bundles{*}{color}
+
+## Debugging bundles
+
+Now that we are able to launch Felix as a Java Application, we can use the debugging and profiling features of Eclipse. To debug bundles, create a new project for your bundle. Then develop your bundle normally. Afterward, compile / package your bundle to obtain the bundle Jar file. You can use Eclipse PDE, Maven, BND, iPOJO, etc... to package your bundle.
+
+To debug, your code, first place a breakpoint inside your code. Launch Felix in debug mode. Then deploy your bundle Jar file. When the execution reaches the breakpoint, Eclipse opens the debug perspective. You can use all debugging features normally.
+
+## Conclusion
+
+This document has presented how-to integrate Felix inside Eclipse. For any questions or feedback, subscribe to the Felix users mailing list by sending a message to [users-subscribe@felix.apache.org]({{ refs.mailto-users-subscribe-felix-apache-org.path }}); after subscribing, email questions or feedback to [users@felix.apache.org|mailto:users@felix.apache.org].
\ No newline at end of file

Added: felix/site/trunk/content/documentation/development/integrating-felix-with-netbeans.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/integrating-felix-with-netbeans.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/integrating-felix-with-netbeans.mdtext (added)
+++ felix/site/trunk/content/documentation/development/integrating-felix-with-netbeans.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,127 @@
+Title: Integrating Felix with NetBeans
+
+# Integrating Felix with NetBeans
+
+This document explains how to launch Felix inside of the NetBeans IDE, which makes it possible to use NetBeans debugging and profiling facilities on bundles. 
+
+## Preliminaries
+
+To integrate Felix inside of NetBeans you need Felix and NetBeans and nothing else. 
+
+### Installing NetBeans
+
+First, you need to [download the NetBeans IDE](http://download.netbeans.org/netbeans/6.1/final/). This tutorial was done using NetBeans 6.1, but it should work on NetBeans 6.0. 
+
+### Creation of the Felix binaries
+
+To integrate Felix with NetBeans, you have two options:
+
+1. Integrate the Felix release as a Java project. This is what we are going to cover in this tutorial.
+1. Integrateg the Felix release using the Maven plugin. This option is slightly more complex and will be covered in another tutorial. 
+
+### Using the Felix release as a Java Project
+
+Once, NetBeans is installed, you need to [download Felix](http://felix.apache.org/site/downloads.cgi). Choose the binary Felix release in your preferred archive format. Extract the release into a temporary directory. We will copy the files into our project later. 
+
+### Building and using the Felix trunk
+
+If you want to use the Felix trunk, follow the [instructions](http://felix.apache.org/site/building-felix.html) on the Felix web site to checkout and build the trunk. The Felix binaries are created in the "`main`" project directory. We will copy these files into our project later.
+
+## Using Felix with NetBeans
+
+This integration tutorial uses a Java project for the integration. This new project will contain Felix. In the following sections it will be explained how to do this. 
+
+### Creation of a Felix Java project
+
+First launch NetBeans. Then click on "`File->New->Project...`" menu entry as shown in Figure 1.
+
+!new-project-menu.png!
+
+This action will launch the project creation wizard. From the "`Categories`" list choose "`Java`" and from the "`Projects`" list choose "`Java Application`" as shown in Figure 2, then press the "`Next >`" button.
+
+!new-project-type.png!
+
+Enter the project name ("`Felix`" for example), select your project directory, and uncheck the "`Create Main Class`" check box then press the finished button. See Figure 3.
+
+!new-project-properties.png!
+
+### Copying Felix to the newly created project
+
+Now, remember where you extracted the Felix release or, if you built from source, where the Felix `main` subproject directory is. Go into the release directory or the `main` subproject directory and copy its entire contents into your project directory. You can do this any way that is easiest for you. On a Linux box you would do something like this from inside the appropriate release or `main` directory:
+
+
+    cp -r ./* /project-path/
+
+
+Where "`/project-path/`" is the path to your project directory.
+
+Once you have copied the files, collapse and expand the project. This will make NetBeans refresh the project. If that does not work for you (on NetBeans 6.0 it may not) just close and open it.
+
+### Preparing the Felix project
+
+The first thing you will notice is that our new project has a red exclamation point on it. What this means is that when NetBeans parsed the Java files it could not find all the library dependencies, so let's fix that.
+Right-click on the newly created project and select the properties as shown in Figure 4.
+
+!project-properties-menu.png!
+
+This will bring up the project properties dialog. Select Libraries as shown in Figure 5.
+
+!project-libraries.png!
+
+Now we want to press the "`Add JAR/Folder`" button and navigate to your project directory/bin and select the "`felix.jar`" as shown in Figure 6. NOTE: Make sure the "`Use Relative Path`" radio button is selected. Then press the "`Open`" button.
+
+!add-jar-dialog.png!
+
+Your libraries panel should now look like what is shown in Figure 7. You can now press the "`OK`" button.
+
+!updated-project-libraries.png!
+
+At this point the red exclamation point should should disappear and now we can run Felix. Right click on the project node and select the "`Run`" menu item as shown in Figure 8.
+
+!project-run-menu.png!
+
+When you do this the "`Run Project`" dialog will pop-up with a list of all class files with a main method. In our case this will only show the "`org.apache.felix.main.Main`" class so we select that and press the "`OK`" button. The "`Run Project`" dialog is shown in Figure 9.
+
+!run-dialog.png!
+
+After you press the "`OK`" button in the "`Run Project`" dialog, Felix will be launched and the output window will open with the Felix command line tool running as shown in Figure 10.
+
+!output-window.png!
+
+At this point you can enter your preferred profile and interact with Felix as if you had launched Felix from a command line shell.
+
+### Re-launching Felix
+
+Now that our project is all set up, you only have to select the Run menu item from the project context menu to re-launch Felix. Or if you prefer, if you set Felix as the main project, then you can use "`Run`" menu on the main menubar. 
+
+### Felix Configuration
+
+At this point, you may want to make some changes to the way Felix is configured. In NetBeans you will have to open the "`Files`" view. Expand the Felix folder and then the "`conf`" folder as shown in Figure 11. NOTE: When you do this the first time the cache folder will not be there. If you decide to make the configuration changes shown in the next section then it will be created the next time you run Felix.
+
+!conf-folder.png!
+
+### Configure the Felix cache location
+
+Felix stores profiles and deployed bundles inside a cache. Normally this cache is located at "`$userhome/.felix`". It is possible to change this location in order to clean it quickly and also to keep your development cache separated from other Felix-based applications you may be running on your computer. You may also want to set a default profile so you don't have to enter it every time you launch Felix. 
+
+Open the configuration file, called "`config.properties`". Then, add a new line with "`felix.cache.dir=cache`" (see Figure 12). And if you want to set a default profile, uncomment the "`felix.cache.profile=foo`" line and change it to what you want (Figure 12). To clean your cache, just delete the cache directory.
+
+!config-properties-file.png!
+
+The next time you run Felix, the cache directory will be created with in your project. To verify that it did or if you want to clean it use the "`Files`" view to expand the Felix folder; you should now see a cache folder that was not there before. You can refer to Figure 11 which displays the cache directory from a previous execution of Felix. 
+
+### Add auto-started bundles
+
+Often you will want Felix to automatically deploy some bundles that you need for your development. You can do this by modifying the "`felix.auto.start.1`" (or 2) property in the "`config.properties`" file. For more information on configuring Felix, refer to Felix' [usage document]({{ refs.apache-felix-framework-usage-documentation.path }}).
+
+When editing this property, the bundles can be relative or absolute file paths to the bundles you want to auto load. Also don't forget to put the line continuation marker "\" and the end of each line except the last one. In figure 13 you can see the default configuration that is shipped with Felix.
+
+!default-config-properties-file.png!
+
+### Debugging bundles
+
+Now that we are able to launch Felix as a Java Application we can use the debugging and profiling features of NetBeans. Future tutorials will go into more detail on how to do this. 
+
+## Conclusion
+
+This document has presented one way in which you can integrate Felix with NetBeans. For any questions or feedback, subscribe to the Felix users mailing list by sending a message to [users-subscribe@felix.apache.org]({{ refs.mailto-users-subscribe-felix-apache-org.path }}); after subscribing, email questions or feedback to [users@felix.apache.org|mailto:users@felix.apache.org].

Added: felix/site/trunk/content/documentation/development/issue-tracking.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/issue-tracking.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/issue-tracking.mdtext (added)
+++ felix/site/trunk/content/documentation/development/issue-tracking.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,9 @@
+Title: Issue Tracking
+
+# Issue tracking
+
+This project uses [JIRA](http://www.atlassian.com/software/jira), a J2EE-based, issue tracking and project management application. We use it for bugs, tasks and code contributions.
+
+Before creating a new issue, please make sure nobody has already added the issue you're reporting. When you do add an issue, please try to make it as informative as possible.
+
+The issue tracker can be found at [http://issues.apache.org/jira/browse/FELIX](http://issues.apache.org/jira/browse/FELIX)

Added: felix/site/trunk/content/documentation/development/osgi-specification-implementations.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/osgi-specification-implementations.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/osgi-specification-implementations.mdtext (added)
+++ felix/site/trunk/content/documentation/development/osgi-specification-implementations.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,66 @@
+Title: OSGi Specification Implementations
+
+This page lists the implementations of OSGi specifications provided by the Apache Felix project.
+
+Please help keep it updated...
+
+Current: 16. Dec 2010
+
+## Core Specification
+
+| Specification | Release or Version | Project | Version | Notes |
+|--|--|--|--|--|
+| Framework | R4.2 | Framework | 3.0.6 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| Package Admin | 1.2 (R4.2) | Framework | 3.0.6 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| Start Level | 1.1 (R4.2) | Framework | 3.0.6 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| Permission Admin | R4.2 | Framework Security | 1.4.0 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| Conditional Permission Admin | R4.2 | Framework Security | 1.4.0 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| URL Handlers | 1.0 (R4.2) | Framework | 3.0.6 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| Service Hooks | 1.0 (R4.2) | Framework | 3.0.6 | [Certified](http://www.osgi.org/Specifications/Certified) |
+
+## Compendium Specification
+
+| Specification | Release or Version | Project | Version | Notes |
+|--|--|--|--|--|
+| Log Service | 1.3 (R4.2) | Log | 1.0.0 | |
+| Http Service | 1.2 (R4.2) | Http Service Projects | 2.0.4 | |
+| Device Access | 1.1 (R4.2) | ?? | ?? | --- |
+| Configuration Admin | 1.3 (R4.2) | Configuration Admin | 1.2.8 | Reference Implementation |
+| Metatype | 1.1 (R4.2) | Metatype | 1.0.4 | --- |
+| Preferences | 1.1 (R4.2) | Preferences | 1.0.4 | --- |
+| User Admin | 1.1 (R4.2) | --- | --- | --- |
+| Wire Admin | 1.0 (R4.2) | ?? | ?? | --- |
+| IO Connector | 1.0 (R4.2) | ?? | ?? | --- |
+| Initial Provisioning | 1.2 (R4.2) | ?? | ?? | --- |
+| UPnP Device | 1.1 (R4.2) | UPnP Base Driver | 0.8.0 | --- |
+| Declarative Services | 1.1 (R4.2) | SCR | 1.6.0 | Passes the R4.2 Compendium CT |
+| Event Admin | 1.2 (R4.2) | Event Admin | 1.2.8 | Passes the R4.2 Compendium CT |
+| Deployment Admin | 1.1 (R4.2) | Deployment Admin | unreleased | --- |
+| Auto Configuration | 1.0 (R4.2) | Deployment Admin Auto Conf | unreleased | --- |
+| Application Admin | 1.1 (R4.2) | --- | --- | --- |
+| DMT Admin | 1.0 (R4.2) | --- | --- | --- |
+| Monitor Admin | 1.0 (R4.2) | --- | --- | --- |
+| Foreign Application Access | 1.0 (R4.2) | --- | --- | --- |
+| Blueprint | 1.0 (R4.2) | --- | --- | Implementation provided by [Apache Aries](http://incubator.apache.org/aries) |
+| Tracker | 1.4 (R4.2) | Framework | 3.0.6 | [Certified](http://www.osgi.org/Specifications/Certified) |
+| XML Parser | 1.0 (R4.2) | --- | --- | --- |
+| Position | 1.0 (R4.2) | --- | --- | --- |
+| Measurement and State | 1.0 (R4.2) | --- | --- | --- |
+| Execution Environment | 1.3 (R4.2) | --- | --- | --- |
+
+
+## R4.3 Draft Work in Progress
+
+Drafts of the upcoming R4.3 are being published on the [OSGi Site](http://www.osgi.org/Specifications/Drafts). This section documents work in progress on implementation of these drafts.
+
+Current Draft: [Early Draft 2, 31. Aug 2010](http://www.osgi.org/Download/File?url=/download/osgi-4.3-early-draft2.pdf)
+
+| RFC | Project | Notes |
+|--|--|--|
+| 137 | | |
+| 151 | | |
+| 154 | | |
+| 147 | | |
+| 157 | | |
+| 160 | Coordinator | untested but mostly complete |
+| 165 | Configuration Admin | work in progress |

Added: felix/site/trunk/content/documentation/development/project-management-committee-pmc.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/project-management-committee-pmc.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/project-management-committee-pmc.mdtext (added)
+++ felix/site/trunk/content/documentation/development/project-management-committee-pmc.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,29 @@
+Title: Project Management Committee (PMC)
+
+# Apache Felix PMC
+
+Present members:
+* Alex Karasulu
+* Berin Loritsch
+* Carsten Ziegeler
+* Chris Custine
+* Clement Escoffier
+* Felix Meschberger (Chair)
+* Francesco Furfari
+* Guillaume Nodet
+* Karl Pauls
+* Marcel Offermans
+* Matteo Demuru
+* Noel Bergman
+* Pierre De Rop
+* Richard S. Hall
+* Rob Walker
+* Stefano Lenzi
+* Stuart McCulloch
+* Sylvain Wallez
+* Timothy Bennett
+
+Past members:
+* Niclas Hedhman (stepped down 1/26/2009)
+* Trustin Lee (stepped down 2/9/2008)
+* Upayavira (stepped down 9/11/2007)

Added: felix/site/trunk/content/documentation/development/provisional-osgi-api-policy.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/provisional-osgi-api-policy.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/provisional-osgi-api-policy.mdtext (added)
+++ felix/site/trunk/content/documentation/development/provisional-osgi-api-policy.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,29 @@
+Title: Provisional OSGi API Policy
+
+# Provisional OSGi API policy
+
+## Overview
+
+The OSGi Alliance exposes provisional API through draft specification releases. Additionally, some Felix contributors work for OSGi Alliance member companies and have access to provisional OSGi API. Often, Felix subprojects want to experiment with and/or implement provisional OSGi API. In some cases, Felix subprojects may actually be the reference implementation for the specification in question. This creates potentially confusing or questionable situations.
+
+For example, if a Felix subproject is released with provisional OSGi API, downstream users may not be aware that the contained API is not final OSGi API. They may mistakenly confer "official" status on it, since it is contained in an "official" Apache release. Further, the ability to implement OSGi specifications is based on creating compliant implementations. Since it is not really possible to be compliant with a provisional specification, the status of such implementations is sort of a gray area.
+
+To deal with these situations, this document describes the policy for handling provisional OSGi API in Felix subprojects.
+
+## Policy summary
+
+To make the policy as simple and consistent as possible, Felix subprojects must not contain nor depend on provisional OSGi API. Provisional OSGi API refers to anything in the `org.osgi.*` package namespace that is not part of a final released specification.
+
+## Policy in practice
+
+Since subprojects will still want to implement and experiment with provisional OSGi specifications, this must still be possible. The following steps should be taken when working on or with provisional OSGi specifications:
+
+1. Any provisional OSGi API must be recreated in the `org.apache.felix.*` package name space; this effectively makes it provisional Felix API.
+1. All Felix provisional API must be marked as deprecated.
+1. All Felix provisional API exported from bundles should be exported with a mandatory attribute of `status="provisional"`.
+
+When working with new specifications, this will likely result in parallel package structures between the provisional OSGi and Felix APIs. When working with existing specifications, it may be necessary to create extensions to existing OSGi interfaces in the Felix package namespace.
+
+## Policy rationale
+
+The first goal of this policy is to completely avoid using provisional OSGi API given the potential confusion and questions by doing so. The second goal is to make the existence of any Felix provisional API completely obvious to downstream users and make it difficult for them to use it unknowingly. This latter goal gives us the ability to still "release early and often", but without being required to maintain backward compatibility on provisional APIs.
\ No newline at end of file

Added: felix/site/trunk/content/documentation/development/release-management-nexus.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/release-management-nexus.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/release-management-nexus.mdtext (added)
+++ felix/site/trunk/content/documentation/development/release-management-nexus.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,264 @@
+Title: Release Management (Nexus)
+
+*This is the new release process for Apache Felix, based on the updated Maven [process](http://maven.apache.org/developers/release/releasing.html)*
+
+## Prerequisites
+
+To prepare or perform a release you *MUST BE* at least an Apache Felix Committer.
+
+* each and every release must be [SIGNED](http://www.apache.org/dev/release-signing.html); your public key should be added to [http://www.apache.org/dist/felix/KEYS] (see *Appendix A*)
+* your public key should also be cross-signed by other Apache committers (not required, but suggested)
+* when preparing the release on Mac OS X, make sure you read *Appendix B* before continuing
+* make sure you have all Apache servers defined in your [settings.xml](http://maven.apache.org/developers/committer-settings.html)
+* use Maven 2.0.x (or 2.2.x), as Maven 2.1.x is known to produce wrong gpg pom signatures ([MGPG-14](http://jira.codehaus.org/browse/MGPG-14))
+
+*Note*: Listing the Apache servers in the `settings.xml` file also requires adding the password to that file. Starting with Maven 2.1 this password may be encrypted and needs not be give in plaintext. Please refer to [Password Encryption](http://maven.apache.org/guides/mini/guide-encryption.html) for more information.
+
+In the past we staged release candidates on our local machines using a semi-manual process. Now that we inherit from the Apache parent POM version 5, a repository manager will automatically handle staging for you. This means you now only need to specify your GPG passphrase in the release profile of your `$\{user.home\}/.m2/settings.xml`:
+
+
+    <settings>
+      ...
+      <profiles>
+        <profile>
+          <id>release</id>
+          <properties>
+            <gpg.passphrase> <!-- YOUR KEY PASSPHRASE --> </gpg.passphrase>
+          </properties>
+        </profile>
+      </profiles>
+      ...
+    </settings>
+
+
+Everything else has been configured in the latest Felix parent POM:
+
+
+    <parent>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>felix-parent</artifactId>
+      <version>1.2.0</version>
+      <relativePath>../pom/pom.xml</relativePath>
+    </parent>
+
+
+## Staging the Release Candidates
+
+First prepare your POMs for release:
+
+1. Make sure you have correct NOTICE, [DEPENDENCIES]({{ refs.dependencies-file-template.path }}), and LICENSE files. Remember to update the copyright year.
+1. Make sure you have an updated change log file, typically in `doc/changelog.txt` but in the project root is also acceptable.
+1. make sure there are no snapshots in the POMs to be released
+1. check that your POMs will not lose content when they are rewritten during the release process
+1. * `mvn release:prepare -DdryRun=true`
+1. * diff the original `pom.xml` with the one called `pom.xml.tag` to see if the license or any other info has been removed. This has been known to happen if the starting `<project>` tag is not on a single line. The only things that should be different between these files are the `<version>` and `<scm>` elements. If there are any other changes, you must fix the original `pom.xml` file and commit before proceeding with the release
+1. publish a snapshot
+
+    $ mvn deploy
+    ...
+    [INFO] [deploy:deploy]
+    [INFO] Retrieving previous build number from apache.snapshots.https
+    ...
+
+1. * if you experience an error during deployment like a HTTP 401 check your settings for the required server entries as outlined in the *Prerequisites*
+1. * be sure that the generated artifacts respect the Apache release [rules](http://www.apache.org/dev/release.html): NOTICE and LICENSE files should be present in the META-INF directory within the jar. For -sources artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 which is broken. The recommended version at this time is 2.0.4
+1. * you should verify the deployment under the [snapshot](https://repository.apache.org/content/groups/snapshots/org/apache/felix) repository on Apache
+1. prepare the release
+
+    mvn release:clean
+    mvn release:prepare
+
+1. * preparing the release will create the new tag in SVN, automatically checking in on your behalf
+1. stage the release for a vote
+
+    mvn release:perform
+
+1. * the release will automatically be inserted into a temporary staging repository for you, see the Nexus [staging documentation](http://www.sonatype.com/books/nexus-book/reference/staging.html) for full details
+1. * you can continue to use `mvn release:prepare` and `mvn release:perform` on other sub-projects as necessary on the same machine and they will be combined in the same staging repository - this is useful when making a release of the Felix framework and its associated bundles.
+1. close the staging repository
+1. * login to [https://repository.apache.org](https://repository.apache.org) using your Apache SVN credentials. Click on *Staging* on the left. Then click on *org.apache.felix* in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Right click on this repository and select *Close*. This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything
+1. verify the staged artifacts
+1. * if you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of \*.asc (signature) files. If you don't like the content of the repository, right click your repository and choose *Drop*. You can then rollback your release (see *Canceling the Release*) and repeat the process
+1. * note the staging repository URL (especially the number at the end of the URL) you will need this in your vote email
+
+## Starting the Vote
+
+Propose a vote on the dev list with the closed issues, the issues left, and the staging repository - for example:
+
+    To: "Felix Developers List" <dev@felix.apache.org>
+    Subject: [VOTE] Release Felix XXX version Y.Z
+    
+    Hi,
+    
+    We solved N issues in this release:
+    http://issues.apache.org/jira/...
+    
+    There are still some outstanding issues:
+    http://issues.apache.org/jira/...
+    
+    Staging repository:
+    https://repository.apache.org/content/repositories/orgapachefelix-[YOUR REPOSITORY ID]/
+    
+    You can use this UNIX script to download the release and verify the signatures:
+    http://svn.apache.org/repos/asf/felix/trunk/check_staged_release.sh
+    
+    Usage:
+    sh check_staged_release.sh [YOUR REPOSITORY ID] /tmp/felix-staging
+    
+    Please vote to approve this release:
+    
+    [ ] +1 Approve the release
+    [ ] -1 Veto the release (please provide specific comments)
+    
+    This vote will be open for 72 hours.
+
+* to get the JIRA release notes link, browse to the FELIX [JIRA](http://issues.apache.org/jira/browse/FELIX) page, select [Release Notes|http://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12310100] and choose the relevant sub-project release and format (HTML)
+* to get the list of issues left in JIRA, select the [Open Issues](http://issues.apache.org/jira/browse/FELIX?report=com.atlassian.jira.plugin.system.project:openissues-panel) tab on the main FELIX page, and select the relevant sub-project.
+
+## Wait for the Results
+
+From [Votes on Package Releases](http://www.apache.org/foundation/voting.html):
+
+{quote}Votes on whether a package is ready to be released follow a format similar to majority approval  -- except that the decision is officially determined solely by whether at least three +1 votes were registered. Releases may not be vetoed. Generally the community will table the vote to release if anyone identifies serious problems, but in most cases the ultimate decision, once three or more positive votes have been garnered, lies with the individual serving as release manager. The specifics of the process may vary from project to project, but the 'minimum of three +1 votes' rule is universal.{quote}
+
+The list of binding voters is available at [http://felix.apache.org/site/project-management-committee-pmc.html](http://felix.apache.org/site/project-management-committee-pmc.html)
+
+If the vote is successful, post the result to the dev list - for example:
+
+    To: "Felix Developers List" <dev@felix.apache.org>
+    Subject: [RESULT] [VOTE] Release Felix XXX version Y.Z
+    
+    Hi,
+    
+    The vote has passed with the following result :
+    
+      +1 (binding): <<list of names>>
+      +1 (non binding): <<list of names>>
+    
+    I will copy this release to the Felix dist directory and
+    promote the artifacts to the central Maven repository.
+
+If the vote is unsuccessful, you need to fix the issues and restart the process - see *Canceling the Release*.
+If the vote is successful, you need to promote and distribute the release - see *Promoting the Release*.
+
+## Canceling the Release
+
+If the vote fails, or you decide to redo the release:
+1. remove the release tag from Subversion (`svn del ...`)
+1. login to [https://repository.apache.org](https://repository.apache.org) using your Apache SVN credentials. Click on *Staging* on the left. Then click on *org.apache.felix* in the list of repositories. In the panel below you should see a closed repository that is linked to your username and IP (if it's not yet closed you need to right click and select *Close*). Right click on this repository and select *Drop*.
+1. rollback the version in the `pom.xml` and commit any fixes you need to make
+
+<div class="info" markdown="1">
+The release manager is free to either reuse the same version when proposing a new release for vote (for example 2.1.2 after a failed 2.1.2 release attempt), or choose a different number (for example 2.1.4 after a failed 2.1.2 attempt).  (cf. vote on 02/14/11).
+</div>
+
+## Promoting the Release
+
+If the vote passes:
+1. copy the released artifacts to the Felix dist directory (`/x1/www/www.apache.org/dist/felix`) on `people.apache.org`
+1. delete the old release from the Felix dist directory (it's archived)
+1. login to [https://repository.apache.org](https://repository.apache.org) with your Apache SVN credentials. Click on *Staging*. Find your closed staging repository, select it, and click the *Release* button.
+1. next click on *Repositories*, select the *Releases* repository and validate that your artifacts are all there
+1. if you're releasing bundles, you can also add them to the Felix Release OBR (see *Appendix C*).
+1. update the news section on the website at [news](http://cwiki.apache.org/confluence/display/FELIX/news)
+1. update the download page on the website at [downloads](http://cwiki.apache.org/confluence/display/FELIX/downloads) to point to the new release.
+
+For the last two tasks, it's better to give the mirrors some time to distribute the uploaded artifacts (one day should be fine). This ensures that once the website (news and download page) is updated, people can actually download the artifacts.
+
+## Update JIRA
+
+Go to [Admin](https://issues.apache.org/jira/secure/project/ViewProject.jspa?pid=12310100) section on the FELIX JIRA and mark the Y.Z version as released - create version Y.Z+1, if that hasn't already been done.
+
+## Create an Announcement
+
+
+    To: "Felix Users List" <users@felix.apache.org>
+    Subject: [ANN] Felix XXX version Y.Z Released
+    
+    The Felix team is pleased to announce the release of Felix XXX version Y.Z
+    
+    <<insert short description of the sub-project>>
+    
+      http://felix.apache.org/site/apache-felix-XXX.html
+    
+    This release is available from http://felix.apache.org/site/downloads.cgi and Maven:
+    
+      <dependency>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.XXX</artifactId>
+        <version>Y.Z</version>
+      </dependency>
+    
+    Release Notes:
+    
+    <<insert release notes in text format from JIRA>>
+    
+    Enjoy!
+    
+    -The Felix team
+
+
+Remember to forward this announcement to `users@felix.apache.org` - try not to cross-post (CC:\) announcements to both user and dev lists.
+
+*Remind Richard about this release when he writes the next board report ;)*
+
+## Appendix A: create and add your key to http://www.apache.org/dist/felix/KEYS
+
+If you are using a *nix system with a working OpenSSH, GnuPG, and bash you can create and add your own key with the following command:
+1. *Create a public/private pair key*:
+
+    gpg --gen-key
+
+  When gpg asks for e-mail linked the key you  *MUST USE* the <committer>@apache.org one
+  When gpg asks for comment linked the key you *SHOULD USE* "CODE SIGNING KEY"
+1. *Add the key to* http://www.apache.org/dist/felix/KEYS: type the following command replacing the word e-mail with your Apache's one (<committer>@apache.org). 
+
+    (gpg --list-sigs e-mail && gpg --export --armor e-mail) > toadd.key
+    scp toadd.key people.apache.org:
+    ssh people.apache.org "cat toadd.key >> /x1/www/www.apache.org/dist/felix/KEYS"
+
+1. You are now *DONE*, but to see the changes on http://www.apache.org/dist/felix/KEYS you must wait 2 hours
+
+## Appendix B: preparing releases on Mac OS X
+
+When running the `mvn release:prepare` command on Mac OS X, you might see the following error:
+
+
+    [INFO] Working directory: /homedir/dev/felix/dependencymanager
+    [INFO] ------------------------------------------------------------------------
+    [ERROR] BUILD FAILURE
+    [INFO] ------------------------------------------------------------------------
+    [INFO] Unable to commit files
+    Provider message:
+    The svn command failed.
+    Command output:
+    svn: Commit failed (details follow):
+    svn: MKACTIVITY of '/repos/asf/!svn/act/4f11ad5d-9161-0410-b4dd-cb727141ea8c': authorization failed (https://svn.apache.org){code}
+    
+    This is due to a bug in Subversion on the Mac, as described by Brett Porter in his [blog|http://blogs.exist.com/bporter/2008/02/25/working-around-non-interactive-problems-in-leopards-subversion/]. He proposes putting an "svn" script at the head of your path to fix the issue.
+    
+    h2. Appendix C: deploying bundles to the Felix OBR
+    
+    If you're releasing bundles, you can also add them to the Felix Release OBR. To do this, execute the following command:
+
+mvn clean install \
+    org.apache.felix:maven-bundle-plugin:deploy \
+    -DprefixUrl=http://repo1.maven.org/maven2 \
+    -DremoteOBR=releases.xml \
+    -DaltDeploymentRepository=apache.website::default::scp://people.apache.org/www/felix.apache.org/obr
+
+    The [http://felix.apache.org/obr/releases.xml] page is automatically updated during the web site synchronization.
+    *Note*: the project building the bundle must use the [maven-bundle-plugin|Apache Felix Maven Bundle Plugin (BND)] and use a version superior or equal to 1.4.2.
+    *Note*: with Maven 3, you must add an extension to your {{<build>}} providing the SCP/SSH protocol:
+
+<build>
+...
+  <extensions>
+   <extension>
+     <groupId>org.apache.maven.wagon</groupId>
+     <artifactId>wagon-ssh</artifactId>
+     <version>1.0-beta-6</version>
+   </extension>
+   </extensions>  
+</build>
+

Added: felix/site/trunk/content/documentation/development/roadmap.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/roadmap.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/roadmap.mdtext (added)
+++ felix/site/trunk/content/documentation/development/roadmap.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,15 @@
+Title: Roadmap
+
+# Roadmap
+
+## Release 0.8
+
+Release done while the project was in incubation.
+
+## Release 1.0
+
+First official release after becoming a top level project.
+
+## Release 1.x
+
+Under development.
\ No newline at end of file

Added: felix/site/trunk/content/documentation/development/source-code.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/source-code.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/source-code.mdtext (added)
+++ felix/site/trunk/content/documentation/development/source-code.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,49 @@
+Title: Source Code
+
+# Source code
+
+This project uses [Subversion](http://subversion.tigris.org/) to manage its source code. Instructions on Subversion use can be found at [http://svnbook.red-bean.com/].
+
+# Web Access
+
+The following is a link to the online source repository.
+
+[http://svn.apache.org/viewvc/felix/](http://svn.apache.org/viewvc/felix/)
+
+# Anonymous access
+
+The Felix trunk can be checked out anonymously with the following command:
+
+
+    $ svn checkout http://svn.apache.org/repos/asf/felix/trunk felix-trunk
+
+
+If you are a Felix committer, you should use `https` as the protocol in the above URL.
+
+The source for individual subprojects can be checked out by simply adding their directory name in the repository to the end of the above trunk URL. Use the "web access" link above to determine the precise portion of the repository you wish to check out.
+
+# Access from behind a firewall
+
+Refer to the documentation of the SCM used for more information about an access behind a firewall.
+
+# Access through a proxy
+
+The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The files location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)
+
+There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.
+
+Example : Edit the 'servers' file and add something like :
+
+
+    [global]
+    http-proxy-host = your.proxy.name
+    http-proxy-port = 3128
+
+
+# Migrating your repository
+
+For people with checked out copies of the original incubator repository, you will need to use the "svn switch" command to associate your workspace with the new URL. The command for doing this for the trunk is:
+
+   svn switch https://svn.apache.org/repos/asf/felix/trunk
+
+If you have other directories checked out, e.g., sandbox or releases, then you will need to do for those too, modifying the above URL accordingly.
\ No newline at end of file

Added: felix/site/trunk/content/documentation/development/svn-repository-structure.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/svn-repository-structure.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/svn-repository-structure.mdtext (added)
+++ felix/site/trunk/content/documentation/development/svn-repository-structure.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,58 @@
+Title: SVN repository structure
+
+The Felix SVN repository `trunk` contains a directory for each sub-project, where sub-projects may be further divided into modules as appropriate for the specific sub-project. Each sub-project has a single directory in the trunk whose name corresponds to the unique base name for the sub-project. Consider the following examples:
+
+    felix/
+        trunk/
+            framework/
+            shell/
+            shell.tui/
+            prefs.jndi/
+            ipojo/
+                arch/
+                core/
+                metadata/
+                plugin/
+            ...
+
+Internally, individual sub-project directories should use a Maven2-like project structure, such as:
+
+    felix/
+        trunk/
+            <subproject>/
+                src/
+                    main/
+                        java/
+                            org/apache/felix/...
+                        resources/
+                            ...
+                    test/
+                        java/
+                            org/apache/felix/...
+                        resources/
+                            ...
+
+Releases of individual sub-projects will be captured in the `releases` directory, for example:
+
+    felix/
+        trunk/
+            ...
+        releases/
+            org.apache.felix.framework-0.8.0/
+            org.apache.felix.shell-1.0.0/
+            org.apache.felix.shell-1.0.1/
+            ...
+
+There will not be a `branches` directory, but individual developers may have areas to experiment in the `sandbox` directory, such as:
+
+    felix/
+        trunk/
+            ...
+        releases/
+            ...
+        sandbox/
+            tbennett/
+            erodriquez/
+            akarasulu/
+            ...
+

Added: felix/site/trunk/content/documentation/development/using-the-osgi-compliance-tests.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/development/using-the-osgi-compliance-tests.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/development/using-the-osgi-compliance-tests.mdtext (added)
+++ felix/site/trunk/content/documentation/development/using-the-osgi-compliance-tests.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,128 @@
+Title: Using the OSGi Compliance Tests
+
+# Using the OSGi Complaince Tests
+
+The OSGi Alliance now provides Apache committers access to its Compliance Tests (CT). This page describes how to get access to the CTs and how to use them with Felix subprojects.
+
+## Gaining Access to OSGi CTs
+
+The general process is to send a request to the jcp-open@apache.org mailing requesting access. Since redistributing the OSGi CTs is not allowed, you will need to submit an [NDA](http://www.apache.org/jcp/ApacheNDA.pdf) to be granted access to the [SVN repo|https://svn.apache.org/repos/tck/osgi-cts] containing the binaries.
+
+## OSGi CT Overview
+
+The CT is delivered as two JAR files, one for the core CT and one for the compendium CT. Each JAR file is composed of several other JAR files, which are the actual compliance tests. Typically, there is one JAR per specification, except for the OSGi framework. The CT uses BND as its testing harness, which in turn uses the OSGi R4.2 framework launching and embedding API to configure, launch, and install test bundles. Each test JAR file has an associated BND file which supplies the configuration BND needs to run the associated tests.
+
+## Modifying the BND files
+
+Modifying the BND files is fairly straightforward. A typical BND file looks like this:
+
+
+    # bnd pack for project org.osgi.test.cases.startlevel
+    # Mon Aug 31 18:50:18 EDT 2009
+    build=.
+    
+    -target = \
+        jar/org.osgi.test.cases.startlevel-4.2.0.jar;version=file,
+    
+    -runpath = \
+        jar/org.eclipse.osgi-3.5.1.jar;version=file, \
+        jar/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8"
+    
+    -runbundles
+    
+    -runproperties = \
+    report="true", \
+    osgi.compatibility.bootdelegation="false", \
+    osgi.resolverMode="strict"
+
+
+The important parts are the following settings:
+
+* `-target` specifies the bundles containing the tests.
+* `-runpath` specifies the class path used to run the tests.
+* `-runbundles` specifies the bundles to install for the tests.
+* `-runproperties` specifies configuration properties to pass into the framework.
+
+The following two examples show how to edit these files for the Felix framework and Felix bundle subprojects.
+
+## Testing the Felix framework
+
+The Felix framework is tested against the core CT. The first thing to do is extract the core CT JAR file, which includes test suites for:
+
+* Framework core (mandatory)
+* Framework security (optional)
+* Framework launching (mandatory)
+* Framework launching security (optional)
+* Package Admin (optional)
+* Start Level (optional)
+* URL Handlers (optional)
+* Permission Admin (optional)
+* Conditional Permission Admin (optional)
+
+For each of the associated BND files, the `-runpath` needs to be edited to refer to the Felix framework; each one should look something like this after editing:
+
+
+    -runpath = \
+        /path/to/felix/framework/org.apache.felix.framework-2.0.2.jar;version=file, \
+        jar/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8"
+
+
+Typically, it is not necessary to change anything else in the BND files and it is normal that the `-runbundles` setting is empty, since there are no additional bundles associated with testing the framework. The exception to this is for the framework test suites for security. To test with security enabled, you will need to add the framework security provider in `-runbundles` like this:
+
+
+    -runbundles = \
+        /path/to/felix/framework.security/org.apache.felix.framework.security-1.0.0.jar.jar;version=file
+
+
+After editing the BND files, run the tests using:
+
+
+    source runtests
+
+
+This will run all test suites for all BND files. To run a specific test suite, do the following:
+
+
+    java -jar jar/bnd.jar runtests -title osgi.ct <bnd-file>
+
+
+Where `<bnd-file>` specifies one or more BND files associated with the desired test suites.
+
+<div class="note" markdown="1">
+**Be Aware**
+Tests for native code loading will fail on Java 6, so do not use this JDK for testing the framework.
+</div>
+
+Reports for the tests suites are generated in the `reports/` subdirectory and are named after the appropriate test suite.
+
+## Testing a Felix bundle
+
+The core CT tests the framework implementation and its related services. The compendium CT tests the various non-framework-related specifications, which are implemented as bundles. For the most part, testing a bundle is similar to testing the framework.
+
+Extract the compendium CT JAR file to access the individual test suites. Since most compendium service specification test suites require security, it is necessary to use a framework implementation that supports security. For the Felix framework, you will have to add the security provider to the `-runbundles` to enable security. 
+
+For example, to test Felix' Event Admin bundle, edit the `-runbundles` setting in `org.osgi.test.cases.event.bnd` to look something like this:
+
+
+    -runbundles = \
+        /path/to/felix/eventadmin/org.apache.felix.eventadmin-1.0.0.jar;version=file,\
+        /path/to/felix/framework.security/org.apache.felix.framework.security-1.0.0.jar.jar;version=file
+
+
+After editing the BND files to refer to the appropriate bundles, run the tests using:
+
+
+    source runtests
+
+
+This will run all test suites for all BND files. To run a specific test suite, do the following:
+
+
+    java -jar jar/bnd.jar runtests -title osgi.ct <bnd-file>
+
+
+Where `<bnd-file>` specifies one or more BND files associated with the desired test suites. Reports for the tests suites are generated in the `reports/` subdirectory and are named after the appropriate test suite.
+
+## Feedback
+
+For any questions or feedback, subscribe to the Felix developers mailing list by sending a message to [dev-subscribe@felix.apache.org]({{ refs.mailto-dev-subscribe-felix-apache-org.path }}); after subscribing, email questions or feedback to [dev@felix.apache.org|mailto:dev@felix.apache.org].
\ No newline at end of file

Added: felix/site/trunk/content/documentation/faqs.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/faqs.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/faqs.mdtext (added)
+++ felix/site/trunk/content/documentation/faqs.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,8 @@
+Title: FAQs
+
+# Frequently Asked Questions
+
+* [OSGi FAQ]({{ refs.apache-felix-osgi-faq.path }}) - Contains answers to general OSGi-related questions.
+* [Framework FAQ]({{ refs.apache-felix-framework-faq.path }}) - Contains answers to questions that are specifically related to Felix' OSGi framework implementation.
+* [Bundle Plugin FAQ]({{ refs.apache-felix-bundle-plugin-faq.path }}) - Contains answers to questions about the Felix maven-bundle-plugin
+* [SCR Plugin FAQ]({{ refs.apache-felix-scr-plugin-faq.path }}) - Contains answers to questions about the Felix maven-scr-plugin
\ No newline at end of file

Added: felix/site/trunk/content/documentation/faqs/apache-felix-bundle-plugin-faq.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/faqs/apache-felix-bundle-plugin-faq.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/faqs/apache-felix-bundle-plugin-faq.mdtext (added)
+++ felix/site/trunk/content/documentation/faqs/apache-felix-bundle-plugin-faq.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,108 @@
+Title: Apache Felix Bundle Plugin FAQ
+
+# Apache Felix Bundle Plugin Frequently Asked Questions
+
+[TOC]
+
+## When I embed a dependency why do I see duplicated content?
+
+Having two copies of classes, both unpacked and embedded as jars, is a sign that your Embed-Dependency and Export-Package instructions are overlapping. Export-Package tells BND to pull in classes found in the named packages from the build classpath and add them to the bundle, Embed-Dependency tells BND to embed (or inline if enabled) whole artifacts in the bundle.
+
+so say I have:
+
+
+    Export-Package: org.objectweb.asm.*
+
+
+and I have the asm artifact as a compile scope dependency, then I would see the org.objectweb.asm classes unpacked in the bundle, ie. pulled in by BND.
+
+say I now decide to embed asm as a jar, for example with:
+
+
+    Embed-Dependency: *;scope=compile|runtime
+
+
+I would now see the asm artifact embedded inside bundle - but I would also see the unpacked classes from before, because I'm still asking BND to pull them in (you will probably also see split package warnings during the build).
+
+ok - so how do I embed asm as a jar, but mark its packages as exported without pulling in the unpacked classes... well, there is another export instruction added for exactly this reason:
+
+
+    -exportcontents: org.objectweb.asm.*
+
+
+(this is <_exportcontents> in the POM because a tag can't start with '-')
+
+this instruction is merged with Export-Package, after BND has decided on the content of the bundle - that is, it works just like Export-Package except that it won't alter the content of the bundle.
+
+So by removing org.objectweb.asm.* from Export-Package and using the -exportcontents instruction instead along with Embed-Dependency, I can now embed the asm artifact in my bundle and export its packages:
+
+
+    Embed-Dependency: *;scope=compile|runtime
+    -exportcontents: org.objectweb.asm.*
+
+
+## Why do I see more classes in my bundle after upgrading to maven-bundle-plugin 2.0.0?
+
+Before 2.0.0 the maven-bundle-plugin only passed local classes and compile scope dependencies to bnd. This was because the main BundlePlugin mojo used "@requiresDependencyResolution runtime" which asks Maven to only resolve dependencies of compile or runtime scope (the maven-bundle-plugin also explicitly filtered runtime scope dependencies from the classpath passed to bnd). Because bnd only had a fraction of the original classpath used to compile the bundle classes it meant that imported packages weren't augmented with additional information (such as versions and attributes) available from the complete classpath.
+
+In 2.0.0 a conscious decision was made to pass the complete classpath to bnd so it would have the complete set of information used during compilation. To do this the @requiresDependencyResolution setting was changed to "test" so all dependencies will now be resolved. Furthermore only test scope artifacts are now filtered from the final classpath passed to bnd.
+
+For most users passing more of the original compilation classpath to bnd simply means you get more accurate and consistent results. However, if you happened to rely on the old behaviour (perhaps by setting Private-Package: * to pull in all local and compile scope classes) then you will see more classes added to your bundle as the wildcard matches against additional content in the classpath.
+
+There are two solutions when this happens:
+
+* Change your Private-Package / Export-Package instructions to more accurately describe what you want in your bundle
+* Add the following setting to remove provided and runtime scope dependencies from the classpath passed to bnd:
+
+    <plugin>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>maven-bundle-plugin</artifactId>
+      <configuration>
+        <excludeDependencies>*;scope=provided|runtime</excludeDependencies>
+      </configuration>
+    </plugin>
+
+
+This second option effectively switches the maven-bundle-plugin back to the old 1.X behaviour.
+
+Please also note that since 2.0.0 the maven-bundle-plugin also sets default Export-Package and Private-Package instructions based on your local source files, so you might well find that simply removing any Private-Package and/or Export-Package instructions from your pom.xml will actually produce the correct result.
+
+## Why do I get an exception (Unsupported major.minor version 49.0) when I build with a 1.4 or earlier JDK?
+
+The latest maven-bundle-plugin (2.0.0) uses a new release of bnd which requires Java5. This means you now have to build your bundle projects using a Java5 (or later) JDK. Note that you can still compile classes for earlier releases of the JVM by setting the appropriate source and target levels in your pom.xml:
+
+
+    <plugin>
+      <artifactId>maven-compiler-plugin</artifactId>
+      <configuration>
+        <source>1.4</source>
+        <target>1.4</target>
+      </configuration>
+    </plugin>
+
+
+## When I build a bundle, some classes are built in "target/classes" but they're not included in the final jar.
+
+The only classes that will appear in the bundle are the ones you ask it to include using Export-Package, Private-Package, Include-Resource, and Embed-Dependency - so just because a file exists under target/classes does NOT mean it will end up in the bundle. This is because this is the way the underlying [BND](http://aqute.biz/Code/Bnd) tool works (it is primarily pull-based).
+
+Now the bundleplugin will look at your Maven project and add appropriate BND instructions to pull in resource files - and version 2.0.0 will also look at your source directory to set reasonable defaults for Export-Package and Private-Package (unless you set these yourself). So when using bundleplugin 2.0.0 I'd use the default Private-Package and Export-Package to begin with - I would then move towards using an explicit list of packages in Export-Package to add versioning, directives, etc.
+
+The only time I would set Private-Package would be to have more control over what ends up in the bundle - either to remove certain packages or perhaps pull in additional packages not found by the source scanner. Also note that both Export-Package and Private-Package accept wildcards such as "org.example.\*" which can reduce the number of entries in the list, but you should be careful not to set either the export or private instruction to "\*" as this would pull in the entire classpath... dependencies and all!
+
+## How do I remove the generated Maven information from the resulting bundle JAR file?
+
+Use the following archive setting:
+
+
+    <configuration>
+      <archive>
+        <addMavenDescriptor>false</addMavenDescriptor>
+      </archive>
+    </configuration>
+
+
+Put this in either the JAR or bundle plugin configuration.
+
+## Why do some generated resources (such as Declarative Services XML files) appear in the final jar, but others don't?
+
+When you use the Service-Component instruction to specify Declarative Services the BND tool scans the project classpath for components and automatically adds its generated XML to the final bundle, therefore Include-Resource is not necessary. But if you generate files under OSGI-INF using another mechanism then they won't end up in the bundle unless you add that directory using Include-Resource (this goes back to the core design decision that BND pulls classes and resources into the bundle, rather than just taking everything under target/classes). We try to provide reasonable defaults on the Maven side in the bundleplugin so local classes and resources will end up in the bundle without additional configuration, but we do this by looking at the effective pom and src/ folder rather than the generated target/classes content.

Added: felix/site/trunk/content/documentation/faqs/apache-felix-scr-plugin-faq.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/faqs/apache-felix-scr-plugin-faq.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/faqs/apache-felix-scr-plugin-faq.mdtext (added)
+++ felix/site/trunk/content/documentation/faqs/apache-felix-scr-plugin-faq.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,50 @@
+Title: Apache Felix SCR Plugin FAQ
+
+# Apache Felix SCR Plugin Frequently Asked Questions
+
+[TOC]
+
+## Syntax Error when Enums are used?
+
+During a SCR plugin run, a syntax error might occur if enums are used in the source code. This is a know problem of the used QDox version that reads the Java source files. Usually this happens when an enum is used inline and does not end with a ";". So adding this character should solve the problem:
+
+
+    public interface MyTest {
+    
+         /** more error codes may be added */
+         enum Result {
+     	OK, UNKNOWN, ERROR, DENIED
+         };     // <!-- HERE
+     
+         /** @return the result */
+         public void getResult(); 
+      }
+
+
+## NoClassDefFoundError during build 
+
+If the javadoc tags are used (and not the annotations) then the QDox library is used to parse/introspect the java class. For this the classes have to be loaded and static fields have to be initialized. If you have have for example something like
+
+      private static final org.slf4f.Logger LOGGER = org.slf4j.LoggerFactory.getLogger("name");
+
+in your code, during the plugin run, a slf4j logger is tried to instantiated. This requires an implementation of the logger. Ususally your module only depends on the slf4j API and therefore a 
+
+    java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
+
+is thrown - this often happens with slf4j but might also happen with other libraries.
+
+In these cases you should add a dependency to the missing class to the dependency list of the plugin, like:
+
+
+         <plugin>
+             <groupId>org.apache.felix</groupId>
+             <artifactId>maven-scr-plugin</artifactId>
+             <version>1.4.2</version>
+             <dependencies>
+                 <dependency>
+                     <groupId>org.slf4j</groupId>
+                     <artifactId>slf4j-simple</artifactId>
+                     <version>1.5.2</version>
+                 </dependency>
+             </dependencies>
+

Added: felix/site/trunk/content/documentation/getting-started.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/getting-started.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/getting-started.mdtext (added)
+++ felix/site/trunk/content/documentation/getting-started.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,13 @@
+Title: Getting Started
+
+# Getting Started
+
+For first-time users, here are a few links that might get you started more quickly:
+
+* [Downloads](http://felix.apache.org/site/downloads.cgi) - Go to the download page and download and extract the Felix release.
+* [Launching Felix]({{ refs.apache-felix-framework-usage-documentation.path }}) - Go to the Felix usage page to learn how to launch the Felix framework.
+* [OSGi tutorial]({{ refs.apache-felix-osgi-tutorial.path }}) - Go to the tutorial page to learn some OSGi basics.
+* [OSGi FAQ]({{ refs.apache-felix-osgi-faq.path }}) - Check out the OSGi FAQ for answers to common questions.
+* [Documentation]({{ refs.documentation.path }}) - Search the documentation pages for additional examples and presentations or subproject documentation to learn about specific subprojects.
+
+If you are unable to find the documentation you need, please ask on the [mailing lists]({{ refs.mailinglists.path }}). Also, feedback on improving the documentation and/or organization of this site is welcome.
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,5 @@
+Title: Subprojects
+
+# Apache Felix Subproject Documentation
+
+{children}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-commons.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-commons.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-commons.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-commons.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,68 @@
+Title: Apache Felix Commons
+
+### Purpose
+
+Apache Felix Commons is a community effort to create OSGi bundle ("bundlized") versions of popular third-party open-source libraries.  Today, OSGi developers must create bundles out of third-party libraries within their own development communities.  The purpose of Felix Commons is to avoid duplicating the effort of bundle creation by sharing these bundlized artifacts.  Our hope is that over time, the original developers of the third-party libraries can use these bundlized libraries to learn how to add OSGi metadata to their project artifacts and to become comfortable with the overall non-invasive process.  Felix Commons is thus a large "project" of POMs where each bundle POM simply has a dependency on the library it wants to convert.  The Felix Maven Bundle Plugin will then convert the dependency automatically and the bundle will be available via existing Maven infrastructure.
+
+This web page will be used to document who is doing what and to provide pointers to more information.
+
+###  How Can I Help?
+
+If you have libraries you have turned into bundles, then you can offer to contribute them.  Additionally, you may request that a certain bundle be created.  If you wish to submit a POM file for a specific library, you can attach it to a [Felix JIRA issue](http://issues.apache.org/jira/browse/Felix) under the "Felix Commons" component.  For Apache purposes, contributing a bundle POM is the same as contributing code.
+
+### Getting Started
+
+In most cases, creating bundlized versions of a library is as simple as creating a POM file for the library using Felix' new [Maven Bundle Plugin]({{ refs.apache-felix-maven-bundle-plugin-bnd.path }}).  The OSGi headers are non-intrusive.  A JAR can be made in such a way that it runs on the Classpath as well as a bundle in an OSGi framework.  In short you:
+1. Set the groupId to:
+
+    <groupId>org.apache.felix.commons</groupId>
+
+1. Append "-osgi" to the name of the artifact:
+
+    <artifactId>FOO-osgi</artifactId>
+
+1. Set the "packaging" to use the Maven Bundle Plugin:
+
+    <packaging>bundle</packaging>
+
+1. Set any configuration options in the [Maven Bundle Plugin]({{ refs.apache-felix-maven-bundle-plugin-bnd.path }}).
+
+We recommend you read the longer [steps for converting a library to a bundle]({{ refs.creating-bundles-using-bnd.path }}).
+
+### Contributions
+
+| Library | Version | Description | Contributor | Grant OK | Committed |
+|--|--|--|--|--|--|
+| cglib | 2.0.2 | CGLib | Felix Meschberger | Yes | Yes |
+| commons-beanutils | 1.7.0 | BeanUtils | Felix Meschberger | Yes | Yes |
+| commons-codec | 1.2 | Codec | Felix Meschberger | Yes | Yes |
+| commons-configuration | 1.3 | Configuration | Felix Meschberger | Yes | Yes |
+| commons-digester | 1.8 | Digester | Felix Meschberger | Yes | Yes |
+| commons-el | 1.0 | EL | Felix Meschberger | Yes | Yes |
+| commons-fileupload | 1.1.1 | FileUpload | Felix Meschberger | Yes | Yes |
+| commons-httpclient | 3.0.1 | Client-side HTTP. | Felix Meschberger | Yes | Yes |
+| commons-io | 1.3 | IO | Felix Meschberger | Yes | Yes |
+| commons-lang | 2.2 | Lang | Felix Meschberger | Yes | Yes |
+| antlr | 2.7.6 | Parser generator. | John Conlon | Yes | Yes |
+| commons-collections | 3.2 | Data structures for collections. | John Conlon | Yes | Yes |
+| jzlib | 1.0.7 | Data compression library. | John Conlon | Yes | Yes |
+| commons-email | 1.0 | An API for sending email. | Felix Meschberger | Yes | Yes |
+
+### Supporting Libraries
+
+These are projects that have expressed support for the Felix Commons initiative and that are working directly within their respective projects to support OSGi.
+
+| Project | Description | Supporter(s) | More Information |
+|--|--|--|--|
+| Spring |  | Adrian Colyer, Andy Piper | [Spring-OSGi](http://www.springframework.org/osgi) |
+| SLF4J |  | Ceki Gülcü | [SLF4J](http://www.slf4j.org/) |
+| Logback |  | Ceki Gülcü | [Logback](http://logback.qos.ch/) |
+| MINA | NIO framework | Trustin Lee | [DIRMINA-27](http://issues.apache.org/jira/browse/DIRMINA-27) |
+| HTTP Client | Client-side HTTP. | Roland Weber | [HTTPCLIENT-639](https://issues.apache.org/jira/browse/HTTPCLIENT-639) |
+| Apache OFBiz | Enterprise automation. | Christopher Snow | [Mailing list archives](http://mail-archives.apache.org/mod_mbox/incubator-felix-dev/200704.mbox/%3c8A31258D-1FB4-4F42-A145-94136D750EF0@coralms.com%3e) |
+| Jetty | Servlet engine. | Jan Bartel | Jetty 6.1.5 and onwards uses the 'maven-bundle-plugin'.|
+### Similar Efforts
+Eclipse Orbit - http://www.eclipse.org/orbit/
+{quote}
+... will provide a repository of bundled versions of third party libraries that are approved for use in one or more Eclipse projects.
+{quote}

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-commons/creating-bundles-using-bnd.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-commons/creating-bundles-using-bnd.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-commons/creating-bundles-using-bnd.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-commons/creating-bundles-using-bnd.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,84 @@
+Title: Creating Bundles Using BND
+
+##### Purpose
+
+Provide the list of steps required to create a library bundle by wrapping the library jar using bnd (http://www.aqute.biz/Code/Bnd).
+
+##### Steps
+
+1. Use bnd to analyze the library jar (e.g., java -jar bnd-0.0.jar print path/to/FOO.jar) 
+1. At the bottom of the bnd output, look for "Unresolved references to ..." which identify package dependencies. If found, 
+  a. Identifiy the library jars that provide the missing packages 
+  b. Recursively use this process on each dependency 
+1. Create a directory that will be the project directory for the bundle (e.g., mkdir FOO-osgi) 
+1. Copy the template pom.xml file to the bundle's project directory 
+1. Edit the pom.xml file to tailor it for the library jar. Specifically, 
+  a. change artifactId 
+  b. verify description 
+  c. change version 
+  d. change FOO's library jar dependency (groupId, artifactId) 
+  e. add any other dependencies (from step 2b) 
+  f. change Export-Package 
+  g. change Private-Package or delete it if it's not needed
+  h. All packages listed in step 1 should be in either Export-Package or Private-Package. Use the library's javadoc to identify the exported packages. The remaining packages should be private.
+1. Run "mvn package" to in the project directory to create the bundle 
+1. Use bnd to verify the bundle's contents (e.g., java -jar bnd-0.0.jar print target/FOO-osgi-VERSION.jar) 
+1. Run "mvn install" to install the bundle in the local repository
+
+##### Example POM
+
+    <project
+      xmlns="http://maven.apache.org/POM/4.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+      <modelVersion>4.0.0</modelVersion>
+      <groupId>org.apache.felix.commons</groupId>
+      <artifactId>FOO-osgi</artifactId>
+      <name>${pom.artifactId} bundle</name>
+      <description>
+        This bundle simply wraps FOO-${pom.version}.jar.
+      </description>
+      <version>X.Y</version>
+      <packaging>bundle</packaging>
+    
+      <organization> 
+        <name>Apache Felix Project</name> 
+        <url>http://felix.apache.org/</url> 
+      </organization>
+    
+      <dependencies>
+        <dependency>
+          <groupId>FOO</groupId>
+          <artifactId>FOO</artifactId>
+          <version>${pom.version}</version>
+        </dependency>
+      </dependencies>
+    
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>maven-bundle-plugin</artifactId>
+            <extensions>true</extensions>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                <Export-Package>FOO</Export-Package>
+                <Private-Package>FOO.impl</Private-Package>
+              </instructions>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    
+    </project>
+
+
+##### Resources
+
+Bnd - Bundle Tool
+http://www.aqute.biz/Code/Bnd
+
+Bundle Plugin for Maven
+http://felix.apache.org/site/maven-bundle-plugin-bnd.html



Mime
View raw message