- Some Formatting of Pom
- Use (released) Bundle plugin for bundling
- Use released framework and osgi-core libraries
- small fix to ConfigAdminManager to compile on Java 1.4
- Add MX4J dependencies for compiling on Java 1.4

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@577722 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jmood/pom.xml b/jmood/pom.xml
index beb80ec..feac759 100644
--- a/jmood/pom.xml
+++ b/jmood/pom.xml
@@ -1,92 +1,105 @@
-<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">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <parent>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>felix</artifactId>
-    <version>1.1.0-SNAPSHOT</version>
-    <relativePath>../pom/pom.xml</relativePath>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <packaging>osgi-bundle</packaging>
-  <name>JMood JMX Management Agent</name>
-  <version>0.9.0-SNAPSHOT</version>
-  <artifactId>${groupId}.jmood</artifactId>
-  <dependencies>
-    <dependency>
-      <groupId>${pom.groupId}</groupId>
-      <artifactId>org.apache.felix.framework</artifactId>
-      <version>0.9.0-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${pom.groupId}</groupId>
-      <artifactId>org.osgi.core</artifactId>
-      <version>1.1.0-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${pom.groupId}</groupId>
-      <artifactId>org.osgi.compendium</artifactId>
-      <version>0.9.0-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-        <filtering>true</filtering>
-      </resource>
-    </resources>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix.plugins</groupId>
-        <artifactId>maven-osgi-plugin</artifactId>
-        <version>0.9.0-SNAPSHOT</version>
-        <extensions>true</extensions>
-        <configuration>
-          <osgiManifest >
-            <bundleName>${name}</bundleName>
-            <bundleActivator>${artifactId}.Activator</bundleActivator>
-            <bundleDescription>JMood management agent</bundleDescription>
-            <bundleSymbolicName>${artifactId}</bundleSymbolicName>
-            <exportPackage>
-            <!-- TODO -->
-            </exportPackage>
-            <!--Automatic resolution includes not available, unused, mx4j stuff-->
- 			<importPackage>
-			org.osgi.framework, org.osgi.util.tracker, org.osgi.service.log, org.osgi.service.packageadmin, org.osgi.service.startlevel, org.osgi.service.permissionadmin, org.osgi.service.useradmin, org.osgi.service.cm, javax.management, javax.management.remote
-			</importPackage>
-          </osgiManifest>
-        </configuration>
-      </plugin>
-     <plugin>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-surefire-plugin</artifactId>
-      <configuration>
-      <!--
-      Current tests are (unfinished) integration tests, and need 
-      to have the bundle available, so there's a chicken-egg problem there. Temporal workaround: omit tests in pom
-      -->
-      
-        <skip>true</skip>
-      </configuration>
-    </plugin>
-      
-    </plugins>
-  </build>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </reporting>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>felix</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom/pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>bundle</packaging>
+    <name>JMood JMX Management Agent</name>
+    <version>0.9.0-SNAPSHOT</version>
+    <artifactId>${groupId}.jmood</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>1.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>1.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <version>0.9.0-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        
+        <!-- Building on Java prior to Java 5 requires these -->
+        <dependency>
+            <groupId>mx4j</groupId>
+            <artifactId>mx4j</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>mx4j</groupId>
+            <artifactId>mx4j-remote</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>1.0.0</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-Activator>
+                            org.apache.felix.jmood.Activator
+                        </Bundle-Activator>
+                        <Private-Package>
+                            org.apache.felix.jmood.*
+                        </Private-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <!--
+                        Current tests are (unfinished) integration tests, and need 
+                        to have the bundle available, so there's a chicken-egg problem there. Temporal workaround: omit tests in pom
+                    -->
+
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>
+                    maven-project-info-reports-plugin
+                </artifactId>
+            </plugin>
+        </plugins>
+    </reporting>
 </project>
diff --git a/jmood/src/main/java/org/apache/felix/jmood/compendium/ConfigAdminManager.java b/jmood/src/main/java/org/apache/felix/jmood/compendium/ConfigAdminManager.java
index 2a01db4..1d7ed55 100644
--- a/jmood/src/main/java/org/apache/felix/jmood/compendium/ConfigAdminManager.java
+++ b/jmood/src/main/java/org/apache/felix/jmood/compendium/ConfigAdminManager.java
@@ -109,7 +109,7 @@
         //FIXME this should not be invoked

         //if created, the configuration is attached to the management agent's location

 		ac.debug("ConfigAdmin, getting config for pid: "+pid);

-		if (pid.contains(":")) throw new IllegalArgumentException("pid not compliant with jmx. Please remove ':' from the pid");

+		if (pid.indexOf(':') >= 0) throw new IllegalArgumentException("pid not compliant with jmx. Please remove ':' from the pid");

 		ConfigurationAdmin cad=ac.getConfigurationAdmin();

 		if (cad != null) {

 			Configuration config = cad.getConfiguration(pid);

@@ -129,7 +129,7 @@
 	public String getConfiguration(String pid, String location)

 		throws Exception {

 		//":" is reserved in objectnames, as a work around we do not permit pids containing it

-			if (pid.contains(":")) throw new IllegalArgumentException("pid not compliant with jmx. Please remove ':' from the pid");

+			if (pid.indexOf(':') >= 0) throw new IllegalArgumentException("pid not compliant with jmx. Please remove ':' from the pid");

 			ConfigurationAdmin cad=ac.getConfigurationAdmin();

 		if (cad != null) {

 			Configuration config = cad.getConfiguration(pid, location);

diff --git a/jmood/src/test/java/org/apache/felix/jmood/FelixLauncher.java b/jmood/src/test/java/org/apache/felix/jmood/FelixLauncher.java
index e4e7720..dff7ad6 100644
--- a/jmood/src/test/java/org/apache/felix/jmood/FelixLauncher.java
+++ b/jmood/src/test/java/org/apache/felix/jmood/FelixLauncher.java
@@ -16,26 +16,20 @@
  */

 package org.apache.felix.jmood;

 

-import java.io.BufferedReader;

 import java.io.File;

 import java.io.IOException;

-import java.io.InputStreamReader;

-import java.net.URL;

 import java.util.ArrayList;

 import java.util.HashMap;

 import java.util.List;

 import java.util.Map;

-import java.util.logging.Logger;

-

-import javax.management.MBeanServerConnection;

 

 import org.apache.felix.framework.Felix;

-import org.apache.felix.framework.util.MutablePropertyResolver;

-import org.apache.felix.framework.util.MutablePropertyResolverImpl;

+import org.osgi.framework.Bundle;

+import org.osgi.framework.BundleException;

 import org.osgi.framework.Constants;

 public class FelixLauncher {

 

-    private MutablePropertyResolver props;

+    private Map props;

 	private Felix framework;

 	private List bundles;

 	private List packages;

@@ -47,12 +41,10 @@
 		clearCache(cacheDir);

     	cacheDir.mkdir();

         

-        framework = new Felix();

-		Map m=new HashMap();

 		bundles=new ArrayList();

 		packages=new ArrayList();

 

-        props = new MutablePropertyResolverImpl(m);

+        props = new HashMap();

         props.put("felix.cache.profiledir", cacheDir.getAbsolutePath());

 

     }

@@ -64,7 +56,7 @@
 		if(!packages.contains(packageName))

 		packages.add(packageName);

 	}

-	public void start(){

+	public void start() throws BundleException {

 		StringBuffer autostart=new StringBuffer();

 		for (int i=0; i<bundles.size(); i++){

 			String bundle=(String)bundles.get(i);

@@ -81,12 +73,13 @@
 		

         props.put(Constants.FRAMEWORK_SYSTEMPACKAGES, spkg.toString());

 

-        framework.start(props,null);

+        framework = new Felix(props, null);

+        framework.start();

 	}

 	public void blockingStart() throws Exception{

 		this.start();

         int to=0;

-        while(framework.getStatus()!=Felix.RUNNING_STATUS) {

+        while(framework.getState()!=Bundle.ACTIVE) {

             Thread.sleep(10);

             to++;

             if(to>100) throw new Exception("timeout");

@@ -94,7 +87,8 @@
 

 	}

 	public void shutdown(){

-		framework.shutdown();

+		framework.stopAndWait();

+		framework = null;

 		clearCache(cacheDir);

 	}