[jboss-osgi-commits] JBoss-OSGI SVN: r88253 - in projects/jboss-osgi/trunk: bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB and 4 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Wed May 6 04:56:54 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-05-06 04:56:53 -0400 (Wed, 06 May 2009)
New Revision: 88253

Added:
   projects/jboss-osgi/trunk/runtime/deployer/src/main/java/org/jboss/osgi/deployer/BundleContainedBeansDeployer.java
Modified:
   projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/MicrocontainerServiceTestCase.java
   projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBean.java
   projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBeanMBean.java
   projects/jboss-osgi/trunk/bundle/blueprint/src/test/resources/mcservice/mcservice-bundleB.bnd
   projects/jboss-osgi/trunk/bundle/microcontainer/src/main/java/org/jboss/osgi/microcontainer/internal/MicrocontainerServiceImpl.java
   projects/jboss-osgi/trunk/bundle/microcontainer/src/main/resources/META-INF/base-deployers-beans.xml
Log:
Bundle contained beans deployment - ok

Modified: projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/MicrocontainerServiceTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/MicrocontainerServiceTestCase.java	2009-05-06 08:01:55 UTC (rev 88252)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/MicrocontainerServiceTestCase.java	2009-05-06 08:56:53 UTC (rev 88253)
@@ -80,7 +80,7 @@
    {
       MicrocontainerServiceMBean mcService = MBeanProxy.get(MicrocontainerServiceMBean.class, MBEAN_MICROCONTAINER_SERVICE, getMBeanServer());
       List<String> registeredBeans = mcService.getRegisteredBeans();
-      assertTrue("MicrocontainerService registered with MC", registeredBeans.contains(BEAN_SYSTEM_BUNDLE_CONTEXT));
+      assertTrue("BundleContext registered with MC", registeredBeans.contains(BEAN_SYSTEM_BUNDLE_CONTEXT));
       assertTrue("MainDeployer registered with MC", registeredBeans.contains(BEAN_MAIN_DEPLOYER));
       assertTrue("MBeanServer registered with MC", registeredBeans.contains(BEAN_MBEAN_SERVER));
       assertTrue("Kernel registered with MC", registeredBeans.contains(BEAN_KERNEL));
@@ -89,7 +89,7 @@
    /**
     * Test whether the bundle can be deployed through the MicrocontainerServiceMBean 
     */
-   public void _testBundleDeployment() throws Exception
+   public void testBundleDeployment() throws Exception
    {
       MicrocontainerServiceMBean mcService = MBeanProxy.get(MicrocontainerServiceMBean.class, MBEAN_MICROCONTAINER_SERVICE, getMBeanServer());
       mcService.deploy(getTestArchiveURL("mcservice-bundleA.jar"));
@@ -105,5 +105,19 @@
    {
       MicrocontainerServiceMBean mcService = MBeanProxy.get(MicrocontainerServiceMBean.class, MBEAN_MICROCONTAINER_SERVICE, getMBeanServer());
       mcService.deploy(getTestArchiveURL("mcservice-bundleB.jar"));
+
+      ManagedFrameworkMBean frameworkMBean = MBeanProxy.get(ManagedFrameworkMBean.class, MBEAN_MANAGED_FRAMEWORK, getMBeanServer());
+      Set<ObjectName> bundles = frameworkMBean.getBundles();
+      assertTrue("Managed bundle registered", bundles.toString().indexOf("jboss.osgi:bundle=mcservice-bundleB") > 0);
+
+      // Check whether the bean is registered
+      List<String> registeredBeans = mcService.getRegisteredBeans();
+      assertTrue("SomeBean registered", registeredBeans.contains("SomeBean"));
+      
+      mcService.undeploy(getTestArchiveURL("mcservice-bundleB.jar"));
+
+      // Check whether the bean is unregistered
+      registeredBeans = mcService.getRegisteredBeans();
+      assertFalse("SomeBean unregistered", registeredBeans.contains("SomeBean"));
    }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBean.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBean.java	2009-05-06 08:01:55 UTC (rev 88252)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBean.java	2009-05-06 08:56:53 UTC (rev 88253)
@@ -26,10 +26,6 @@
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
-import org.jboss.test.osgi.blueprint.mcservice.bundleA.SomeService;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
 /**
  * An MC bean that accesses some OSGi service
  * 
@@ -38,14 +34,8 @@
  */
 public class SomeBean implements SomeBeanMBean
 {
-   private BundleContext context;
    private MBeanServer mbeanServer;
 
-   public void setBundleContext(BundleContext context)
-   {
-      this.context = context;
-   }
-
    public void setMbeanServer(MBeanServer server)
    {
       this.mbeanServer = server;
@@ -53,21 +43,14 @@
 
    public void create() throws Exception
    {
-      mbeanServer.registerMBean(this, new ObjectName("jboss.osgi:service=SomeBean"));
+      mbeanServer.registerMBean(this, new ObjectName("jboss.osgi:bean=SomeBean"));
    }
    
    public void destroy() throws Exception
    {
-      mbeanServer.unregisterMBean(new ObjectName("jboss.osgi:service=SomeBean"));
+      mbeanServer.unregisterMBean(new ObjectName("jboss.osgi:bean=SomeBean"));
    }
    
-   public String callSomeService(String msg)
-   {
-      ServiceReference sref = context.getServiceReference(SomeService.class.getName());
-      SomeService service = (SomeService)context.getService(sref);
-      return service.echo(msg);
-   }
-   
    public String echo(String msg)
    {
       return msg;

Modified: projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBeanMBean.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBeanMBean.java	2009-05-06 08:01:55 UTC (rev 88252)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/test/java/org/jboss/test/osgi/blueprint/mcservice/bundleB/SomeBeanMBean.java	2009-05-06 08:56:53 UTC (rev 88253)
@@ -25,7 +25,5 @@
 
 public interface SomeBeanMBean
 {
-   String callSomeService(String msg);
-
    String echo(String msg);
 }

Modified: projects/jboss-osgi/trunk/bundle/blueprint/src/test/resources/mcservice/mcservice-bundleB.bnd
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/test/resources/mcservice/mcservice-bundleB.bnd	2009-05-06 08:01:55 UTC (rev 88252)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/test/resources/mcservice/mcservice-bundleB.bnd	2009-05-06 08:56:53 UTC (rev 88253)
@@ -2,5 +2,5 @@
 
 Bundle-SymbolicName: mcservice-bundleB
 Export-Package: org.jboss.test.osgi.blueprint.mcservice.bundleB 
-Import-Package: javax.management, org.osgi.framework, org.jboss.test.osgi.blueprint.mcservice.bundleA
+Import-Package: javax.management
 Include-Resource: META-INF/mcservice-jboss-beans.xml=META-INF/mcservice-jboss-beans.xml
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/bundle/microcontainer/src/main/java/org/jboss/osgi/microcontainer/internal/MicrocontainerServiceImpl.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/microcontainer/src/main/java/org/jboss/osgi/microcontainer/internal/MicrocontainerServiceImpl.java	2009-05-06 08:01:55 UTC (rev 88252)
+++ projects/jboss-osgi/trunk/bundle/microcontainer/src/main/java/org/jboss/osgi/microcontainer/internal/MicrocontainerServiceImpl.java	2009-05-06 08:56:53 UTC (rev 88253)
@@ -47,6 +47,7 @@
 import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.osgi.common.log.LogServiceTracker;
 import org.jboss.osgi.microcontainer.MicrocontainerService;
 import org.jboss.osgi.microcontainer.MicrocontainerServiceMBean;
@@ -92,7 +93,10 @@
 
       AbstractController controller = (AbstractController)getKernel().getController();
       for (ControllerContext ctx : controller.getAllContexts())
-         names.add(ctx.getName().toString());
+      {
+         if (ctx instanceof KernelControllerContext || ctx instanceof PreInstalledControllerContext)
+            names.add(ctx.getName().toString());
+      }
 
       return names;
    }
@@ -162,10 +166,10 @@
          Kernel kernel = getKernel();
          KernelController controller = kernel.getController();
          ControllerContextActions actions = new AbstractControllerContextActions(new HashMap<ControllerState, ControllerContextAction>());
-         controller.install(new AbstractControllerContext(BEAN_SYSTEM_BUNDLE_CONTEXT, actions, null, context));
-         controller.install(new AbstractControllerContext(BEAN_KERNEL_CONTROLLER, actions, null, controller));
-         controller.install(new AbstractControllerContext(BEAN_KERNEL, actions, null, kernel));
-         controller.install(new AbstractControllerContext(BEAN_MBEAN_SERVER, actions, null, mbeanServer));
+         controller.install(new PreInstalledControllerContext(BEAN_SYSTEM_BUNDLE_CONTEXT, actions, context));
+         controller.install(new PreInstalledControllerContext(BEAN_KERNEL_CONTROLLER, actions, controller));
+         controller.install(new PreInstalledControllerContext(BEAN_KERNEL, actions, kernel));
+         controller.install(new PreInstalledControllerContext(BEAN_MBEAN_SERVER, actions, mbeanServer));
 
          URL deployersURL = context.getBundle().getResource("META-INF/base-deployers-beans.xml");
          deployer.deploy(deployersURL);
@@ -231,4 +235,12 @@
          }
       }
    }
+   
+   static class PreInstalledControllerContext extends AbstractControllerContext
+   {
+      public PreInstalledControllerContext(Object name, ControllerContextActions actions, Object target)
+      {
+         super(name, actions, null, target);
+      }
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/bundle/microcontainer/src/main/resources/META-INF/base-deployers-beans.xml
===================================================================
--- projects/jboss-osgi/trunk/bundle/microcontainer/src/main/resources/META-INF/base-deployers-beans.xml	2009-05-06 08:01:55 UTC (rev 88252)
+++ projects/jboss-osgi/trunk/bundle/microcontainer/src/main/resources/META-INF/base-deployers-beans.xml	2009-05-06 08:56:53 UTC (rev 88253)
@@ -69,7 +69,7 @@
   <bean name="BeanDeployer" class="org.jboss.deployers.vfs.deployer.kernel.BeanDeployer">
     <property name="suffix">jboss-beans.xml</property>
   </bean>
-  <bean name="KernelDeploymentDeployer" class="org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer">
+  <bean name="KernelDeploymentDeployer" class="org.jboss.osgi.deployer.BundleContainedBeansDeployer">
   </bean>
   <bean name="BeanMetaDataDeployer" class="org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer">
     <constructor><parameter class="org.jboss.kernel.Kernel"><inject bean="jboss.osgi:service=Kernel"/></parameter></constructor>

Added: projects/jboss-osgi/trunk/runtime/deployer/src/main/java/org/jboss/osgi/deployer/BundleContainedBeansDeployer.java
===================================================================
--- projects/jboss-osgi/trunk/runtime/deployer/src/main/java/org/jboss/osgi/deployer/BundleContainedBeansDeployer.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/runtime/deployer/src/main/java/org/jboss/osgi/deployer/BundleContainedBeansDeployer.java	2009-05-06 08:56:53 UTC (rev 88253)
@@ -0,0 +1,91 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, 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.deployer;
+
+// $Id$
+
+import java.util.Collections;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.helpers.AbstractComponentDeployer;
+import org.jboss.deployers.structure.spi.ClassLoaderFactory;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryVisitor;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.osgi.framework.Bundle;
+
+public class BundleContainedBeansDeployer extends AbstractComponentDeployer<KernelDeployment, BeanMetaData>
+{
+   /*
+    * Create a new KernelDeploymentDeployer.
+    */
+   public BundleContainedBeansDeployer()
+   {
+      addInput(Bundle.class);
+      addInput(ClassLoaderFactory.class);
+      setDeploymentVisitor(new KernelDeploymentVisitor());
+      setComponentVisitor(new BeanMetaDataVisitor());
+   }
+
+   /*
+    * KernelDeploymentVisitor.
+    */
+   public static class KernelDeploymentVisitor extends BeanMetaDataFactoryVisitor<KernelDeployment>
+   {
+      @Override
+      public void deploy(DeploymentUnit unit, KernelDeployment deployment) throws DeploymentException
+      {
+         ClassLoaderFactory factory = unit.getAttachment(ClassLoaderFactory.class);
+         unit.createClassLoader(factory);
+         
+         super.deploy(unit, deployment);
+      }
+
+      public Class<KernelDeployment> getVisitorType()
+      {
+         return KernelDeployment.class;
+      }
+
+      protected List<BeanMetaData> getBeans(KernelDeployment deployment)
+      {
+         return deployment.getBeans();
+      }
+   }
+
+   /*
+    * BeanMetaDataVisitor.
+    */
+   public static class BeanMetaDataVisitor extends BeanMetaDataFactoryVisitor<BeanMetaData>
+   {
+      public Class<BeanMetaData> getVisitorType()
+      {
+         return BeanMetaData.class;
+      }
+
+      protected List<BeanMetaData> getBeans(BeanMetaData deployment)
+      {
+         return Collections.singletonList(deployment);
+      }
+   }
+}


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




More information about the jboss-osgi-commits mailing list