[jboss-cvs] JBossAS SVN: r92585 - in projects/jboss-osgi/trunk/reactor/runtime/jbossmc: src/main/java/org/jboss/osgi/jbossmc/api and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Aug 19 15:56:30 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-08-19 15:56:30 -0400 (Wed, 19 Aug 2009)
New Revision: 92585

Added:
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/api/FrameworkBootstrap.java
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkBootstrapImpl.java
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/bootstrap.xml
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/jboss-osgi-framework.xml
Removed:
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/jboss-osgi-jbossmc.properties
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/org.jboss.osgi.spi.framework.OSGiBootstrapProvider
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/tst.policy
Modified:
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/pom.xml
   projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkFactoryImpl.java
Log:
Use jboss-bootstrap in the FrameworkFactory

Modified: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/pom.xml	2009-08-19 19:11:16 UTC (rev 92584)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/pom.xml	2009-08-19 19:56:30 UTC (rev 92585)
@@ -31,6 +31,7 @@
 
   <properties>
     <version.jboss.osgi.spi>1.0.1-SNAPSHOT</version.jboss.osgi.spi>
+    <version.jboss.bootsrap>2.0.0-alpha-2</version.jboss.bootsrap>
     <version.osgi>r4v42-20090728</version.osgi>
   </properties>
 
@@ -41,6 +42,11 @@
       <artifactId>bnd</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.jboss.bootstrap</groupId>
+      <artifactId>jboss-bootstrap-impl-mc</artifactId>
+      <version>${version.jboss.bootsrap}</version>
+    </dependency>
+    <dependency>
       <groupId>org.jboss.osgi</groupId>
       <artifactId>jboss-osgi-spi</artifactId>
       <version>${version.jboss.osgi.spi}</version>

Added: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/api/FrameworkBootstrap.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/api/FrameworkBootstrap.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/api/FrameworkBootstrap.java	2009-08-19 19:56:30 UTC (rev 92585)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.osgi.jbossmc.api;
+
+//$Id$
+
+import org.osgi.framework.launch.Framework;
+
+/**
+ * An impementation of an OSGi Framework
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 29-Jul-2009
+ */
+public interface FrameworkBootstrap
+{
+   Framework getFramework();
+}
\ No newline at end of file


Property changes on: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/api/FrameworkBootstrap.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkBootstrapImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkBootstrapImpl.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkBootstrapImpl.java	2009-08-19 19:56:30 UTC (rev 92585)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.osgi.jbossmc.framework;
+
+//$Id$
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import org.jboss.logging.Logger;
+import org.jboss.osgi.jbossmc.api.FrameworkBootstrap;
+import org.osgi.framework.launch.Framework;
+
+/**
+ * An impementation of an OSGi Framework
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 29-Jul-2009
+ */
+public class FrameworkBootstrapImpl implements FrameworkBootstrap
+{
+   // Provide logging
+   final Logger log = Logger.getLogger(FrameworkBootstrapImpl.class);
+
+   private Map<String, Object> properties;
+   private List<URL> autoInstall;
+   private List<URL> autoStart;
+   private Framework framework;
+
+   public void setProperties(Map<String, Object> properties)
+   {
+      this.properties = properties;
+   }
+
+   public void setAutoInstall(List<URL> autoInstall)
+   {
+      this.autoInstall = autoInstall;
+   }
+
+   public void setAutoStart(List<URL> autoStart)
+   {
+      this.autoStart = autoStart;
+   }
+
+   public Framework getFramework()
+   {
+      if (framework == null)
+      {
+         framework = new FrameworkImpl(properties);
+      }
+      return framework;
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkBootstrapImpl.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkFactoryImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkFactoryImpl.java	2009-08-19 19:11:16 UTC (rev 92584)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/java/org/jboss/osgi/jbossmc/framework/FrameworkFactoryImpl.java	2009-08-19 19:56:30 UTC (rev 92585)
@@ -23,9 +23,16 @@
 
 //$Id$
 
+import java.net.URL;
 import java.util.Map;
 
+import org.jboss.bootstrap.impl.mc.config.BasicMCServerConfig;
+import org.jboss.bootstrap.impl.mc.server.MCServerImpl;
+import org.jboss.bootstrap.spi.mc.config.MCServerConfig;
+import org.jboss.bootstrap.spi.mc.server.MCServer;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.logging.Logger;
+import org.jboss.osgi.jbossmc.api.FrameworkBootstrap;
 import org.osgi.framework.launch.Framework;
 import org.osgi.framework.launch.FrameworkFactory;
 
@@ -37,12 +44,55 @@
  */
 public class FrameworkFactoryImpl implements FrameworkFactory
 {
+   private static final String BEAN_FRAMEWORK_BOOTSTRAP = "jboss.osgi:service=FrameworkBootstrap";
    // Provide logging
    final Logger log = Logger.getLogger(FrameworkFactoryImpl.class);
 
    @SuppressWarnings("unchecked")
    public Framework newFramework(Map configuration)
    {
-      return new FrameworkImpl(configuration);
+      // Create a configuration
+      MCServerConfig config = new BasicMCServerConfig();
+      config.bootstrapHome(getBootstrapHome());
+      
+      // Create the server
+      final MCServer server = new MCServerImpl(config);
+      try
+      {
+         server.start();
+      }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
+      catch (Exception ex)
+      {
+         throw new IllegalStateException("Cannot bootstrap MC server", ex);
+      }
+
+      ControllerContext context = server.getKernel().getController().getInstalledContext(BEAN_FRAMEWORK_BOOTSTRAP);
+      if (context == null)
+         throw new IllegalStateException("Cannot obtain: " + BEAN_FRAMEWORK_BOOTSTRAP);
+      
+      FrameworkBootstrap frameworkBootstrap =  (FrameworkBootstrap)context.getTarget();
+      return frameworkBootstrap.getFramework();
    }
+   
+   private String getBootstrapHome()
+   {
+      String bootstrapHome = null;
+      URL homeUrl = getBootstrapUrl();
+      if (homeUrl != null)
+      {
+         String path = homeUrl.toExternalForm();
+         bootstrapHome = path.substring(0, path.lastIndexOf('/'));
+      }
+      return bootstrapHome;
+   }
+   
+   private URL getBootstrapUrl()
+   {
+      ClassLoader cl = getClass().getClassLoader();
+      return cl.getResource("META-INF/bootstrap.xml");
+   }
 }
\ No newline at end of file

Added: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/bootstrap.xml
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/bootstrap.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/bootstrap.xml	2009-08-19 19:56:30 UTC (rev 92585)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bootstrap xmlns="urn:jboss:bootstrap:1.0">
+
+  <url>jboss-osgi-framework.xml</url>
+
+</bootstrap>


Property changes on: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/bootstrap.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/jboss-osgi-framework.xml
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/jboss-osgi-framework.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/jboss-osgi-framework.xml	2009-08-19 19:56:30 UTC (rev 92585)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  $Id$
+-->
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <!-- 
+  ********************************
+  *                              *  
+  *  Framework                   *
+  *                              *
+  ********************************
+  -->
+
+  <!-- The FrameworkBootstrap -->
+  <bean name="jboss.osgi:service=FrameworkBootstrap" class="org.jboss.osgi.jbossmc.framework.FrameworkBootstrapImpl">
+    <property name="properties">
+      <map keyClass="java.lang.String" valueClass="java.lang.String">
+        <entry><key>org.osgi.framework.storage</key><value>${log4j.output.dir}/osgi-store</value></entry>
+        <entry><key>org.osgi.framework.storage.clean</key><value>onFirstInit</value></entry>
+      </map>
+    </property>
+    <property name="autoInstall">
+     <list elementClass="java.net.URL">
+     </list>
+    </property>
+    <property name="autoStart">
+     <list elementClass="java.net.URL">
+     </list>
+    </property>
+  </bean>
+
+</deployment>
\ No newline at end of file


Property changes on: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/main/resources/META-INF/jboss-osgi-framework.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Deleted: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/jboss-osgi-jbossmc.properties
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/jboss-osgi-jbossmc.properties	2009-08-19 19:11:16 UTC (rev 92584)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/jboss-osgi-jbossmc.properties	2009-08-19 19:56:30 UTC (rev 92585)
@@ -1,22 +0,0 @@
-#
-# Properties read by the org.jboss.osgi.spi.framework.PropertiesBootstrapProvider
-# 
-# $Id: jboss-osgi-felix.properties 92430 2009-08-17 14:53:52Z thomas.diesler at jboss.com $
-#
-
-# Properties to configure the Framework
-org.osgi.framework.storage=${basedir}/target/osgi-store
-org.osgi.framework.storage.clean=onFirstInit
-
-# Extra System Packages
-org.osgi.framework.system.packages.extra=
-
-# Bundles that need to be installed with the Framework automatically 
-org.jboss.osgi.spi.framework.autoInstall=\
-	file://${test.archive.directory}/bundles/org.osgi.compendium.jar
-		
-
-# Bundles that need to be started automatically 
-org.jboss.osgi.spi.framework.autoStart=\
-	file://${test.archive.directory}/bundles/org.apache.felix.log.jar \
-	file://${test.archive.directory}/bundles/jboss-osgi-common.jar 

Deleted: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/org.jboss.osgi.spi.framework.OSGiBootstrapProvider
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/org.jboss.osgi.spi.framework.OSGiBootstrapProvider	2009-08-19 19:11:16 UTC (rev 92584)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/org.jboss.osgi.spi.framework.OSGiBootstrapProvider	2009-08-19 19:56:30 UTC (rev 92585)
@@ -1 +0,0 @@
-org.jboss.osgi.spi.framework.PropertiesBootstrapProvider
\ No newline at end of file

Deleted: projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/tst.policy
===================================================================
--- projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/tst.policy	2009-08-19 19:11:16 UTC (rev 92584)
+++ projects/jboss-osgi/trunk/reactor/runtime/jbossmc/src/test/resources/tst.policy	2009-08-19 19:56:30 UTC (rev 92585)
@@ -1,4 +0,0 @@
-grant {
-	permission java.security.AllPermission;
-};
-




More information about the jboss-cvs-commits mailing list