[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