[jboss-osgi-commits] JBoss-OSGI SVN: r90422 - in projects/jboss-osgi/trunk: blueprint/impl and 9 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Thu Jun 18 08:53:44 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-06-18 08:53:44 -0400 (Thu, 18 Jun 2009)
New Revision: 90422

Added:
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentFactory.java
Modified:
   projects/jboss-osgi/trunk/blueprint/impl/pom.xml
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/AbstractManager.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BeanManager.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BlueprintContainerImpl.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceManager.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceReferenceManager.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/parser/xb/TComponent.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BeanMetadataImpl.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BlueprintMetadata.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentMetadataImpl.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceMetadataImpl.java
   projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceReferenceMetadataImpl.java
   projects/jboss-osgi/trunk/distribution/pom.xml
   projects/jboss-osgi/trunk/husky/harness/pom.xml
   projects/jboss-osgi/trunk/husky/pom.xml
   projects/jboss-osgi/trunk/husky/testsuite/pom.xml
   projects/jboss-osgi/trunk/pom.xml
   projects/jboss-osgi/trunk/spi/pom.xml
   projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/MicrocontainerService.java
Log:
Install top-level beans in MC

Modified: projects/jboss-osgi/trunk/blueprint/impl/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -19,7 +19,6 @@
     <dependency>
       <groupId>org.jboss.osgi</groupId>
       <artifactId>jboss-osgi-spi</artifactId>
-      <version>${version}</version>
     </dependency>
 
     <!-- Provided Dependencies -->
@@ -66,6 +65,9 @@
             </Export-Package>
             <Import-Package>
               org.apache.xerces.dom,
+              org.jboss.beans.metadata.*,
+              org.jboss.dependency.spi*,
+              org.jboss.kernel.spi*,
               org.jboss.osgi.common.log;version=1.0,
               org.jboss.osgi.spi;version=1.0,
               org.jboss.osgi.spi.service;version=1.0,

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/AbstractManager.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/AbstractManager.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/AbstractManager.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -23,11 +23,19 @@
 
 //$Id$
 
+import static org.jboss.osgi.spi.service.MicrocontainerService.BEAN_KERNEL_CONTROLLER;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.osgi.common.log.LogServiceTracker;
+import org.jboss.osgi.spi.service.MicrocontainerService;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.ServiceMetadata;
 import org.osgi.service.blueprint.reflect.ServiceReferenceMetadata;
+import org.osgi.service.log.LogService;
 
 /**
  * For each of the ComponentMetadata objects, the Blueprint Container has a
@@ -44,11 +52,14 @@
  */
 public abstract class AbstractManager
 {
+   protected LogService log;
    protected BundleContext context;
+   
    private ComponentMetadata component;
 
    public AbstractManager(BundleContext context, ComponentMetadata component)
    {
+      this.log = new LogServiceTracker(context);
       this.context = context;
       this.component = component;
    }
@@ -63,16 +74,55 @@
       return component;
    }
    
+   public int getInitialization()
+   {
+      return component.getInitialization();
+   }
+   
    public void activate()
    {
-      // do nothing
+      log.log(LogService.LOG_DEBUG, "activate: " + component);
    }
    
    public void shutdown()
    {
-      // do nothing
+      log.log(LogService.LOG_DEBUG, "shutdown: " + component);
    }
    
+   protected void installKernelBean(BeanMetaData kernelBean)
+   {
+      KernelController controller = getKernelController();
+      try
+      {
+         controller.install(kernelBean);
+      }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
+      catch (Throwable th)
+      {
+         throw new IllegalStateException("Cannot install kernel bean", th);
+      }
+   }
+
+   protected void uninstallKernelBean(BeanMetaData kernelBean)
+   {
+      KernelController controller = getKernelController();
+      controller.uninstall(kernelBean);
+   }
+
+   protected KernelController getKernelController()
+   {
+      ServiceReference sref = context.getServiceReference(MicrocontainerService.class.getName());
+      if (sref == null)
+         throw new IllegalStateException("Cannot obtain MicrocontainerService");
+      
+      MicrocontainerService service = (MicrocontainerService)context.getService(sref);
+      KernelController controller = service.getRegisteredBean(KernelController.class, BEAN_KERNEL_CONTROLLER);
+      return controller;
+   }
+
    static AbstractManager createManager(BundleContext context, ComponentMetadata comp)
    {
       AbstractManager manager = null;

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BeanManager.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BeanManager.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BeanManager.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -23,6 +23,11 @@
 
 //$Id$
 
+
+import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.osgi.blueprint.reflect.BeanMetadataImpl;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 
@@ -48,11 +53,39 @@
  */
 public class BeanManager extends AbstractManager
 {
-   private BeanMetadata beanMetadata;
+   private BeanMetadataImpl beanMetadata;
+   private BeanMetaData kernelBean;
 
-   public BeanManager(BundleContext context, BeanMetadata beanMetadata)
+   public BeanManager(BundleContext context, BeanMetadata compMetadata)
    {
-      super(context, beanMetadata);
-      this.beanMetadata = beanMetadata;
+      super(context, compMetadata);
+      this.beanMetadata = (BeanMetadataImpl)compMetadata;
    }
+
+   @Override
+   public void activate()
+   {
+      super.activate();
+
+      kernelBean = getKernelBean(beanMetadata);
+      installKernelBean(kernelBean);
+   }
+
+   @Override
+   public void shutdown()
+   {
+      if (kernelBean != null)
+         uninstallKernelBean(kernelBean);
+         
+      super.shutdown();
+   }
+
+   private BeanMetaData getKernelBean(BeanMetadataImpl compMetadata)
+   {
+      String name = compMetadata.getKey();
+      String clazz = compMetadata.getClassName();
+      
+      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, clazz);
+      return builder.getBeanMetaData();
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BlueprintContainerImpl.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BlueprintContainerImpl.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/BlueprintContainerImpl.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -23,6 +23,8 @@
 
 //$Id: BlueprintContextImpl.java 90313 2009-06-17 10:37:51Z thomas.diesler at jboss.com $
 
+import static org.osgi.service.blueprint.reflect.ComponentMetadata.INITIALIZATION_EAGER;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -107,10 +109,11 @@
     */
    public void shutdown()
    {
-      for (AbstractManager manager : managers.values())
-      {
+      List<AbstractManager> list = new ArrayList<AbstractManager>(managers.values());
+      Collections.reverse(list);
+      
+      for (AbstractManager manager : list)
          manager.shutdown();
-      }
    }
    
    public BundleContext getBundleContext()
@@ -171,8 +174,25 @@
       for (ComponentMetadata comp : bpMetadata.getComponents())
       {
          AbstractManager manager = AbstractManager.createManager(context, comp);
-         managers.put(manager.getId(), manager);
+         
+         String key = manager.getId();
+         if (key == null)
+            throw new IllegalStateException("Component id cannot be null for: " + comp);
+
+         // All top level components share a single namespace.
+         // That is, it is an error if the same id is used multiple times.
+         if (managers.get(key) != null)
+            throw new IllegalStateException("Duplicate top-level component: " + key);
+         
+         managers.put(key, manager);
       }
+      
+      // Activated the eager managers
+      for (AbstractManager manager : managers.values())
+      {
+         if (manager.getInitialization() == INITIALIZATION_EAGER)
+            manager.activate();
+      }
    }
 
    private BlueprintMetadata getBlueprintMetadata()

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceManager.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceManager.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceManager.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -23,7 +23,9 @@
 
 //$Id$
 
+import org.jboss.osgi.blueprint.reflect.ServiceMetadataImpl;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.ServiceMetadata;
 
 /**
@@ -38,11 +40,35 @@
  */
 public class ServiceManager extends AbstractManager
 {
-   private ServiceMetadata serviceMetadata;
+   private ServiceMetadataImpl serviceMetadata;
+   private AbstractManager beanManager;
 
-   public ServiceManager(BundleContext context, ServiceMetadata serviceMetadata)
+   public ServiceManager(BundleContext context, ServiceMetadata compMetadata)
    {
-      super(context, serviceMetadata);
-      this.serviceMetadata = serviceMetadata;
+      super(context, compMetadata);
+      this.serviceMetadata = (ServiceMetadataImpl)compMetadata;
+
+      // Create the anonymous bean manager
+      BeanMetadata beanMetadata = serviceMetadata.getBeanMetadata();
+      if (beanMetadata != null)
+         beanManager = (AbstractManager)AbstractManager.createManager(context, beanMetadata);         
    }
+
+   @Override
+   public void activate()
+   {
+      super.activate();
+      
+      if (beanManager != null)
+         beanManager.activate();
+   }
+
+   @Override
+   public void shutdown()
+   {
+      if (beanManager != null)
+         beanManager.shutdown();
+      
+      super.shutdown();
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceReferenceManager.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceReferenceManager.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/container/ServiceReferenceManager.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -23,6 +23,7 @@
 
 //$Id$
 
+import org.jboss.osgi.blueprint.reflect.ServiceReferenceMetadataImpl;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.blueprint.reflect.ServiceReferenceMetadata;
 
@@ -39,11 +40,11 @@
  */
 public class ServiceReferenceManager extends AbstractManager
 {
-   private ServiceReferenceMetadata srefMetadata;
+   private ServiceReferenceMetadataImpl srefMetadata;
 
-   public ServiceReferenceManager(BundleContext context, ServiceReferenceMetadata srefMetadata)
+   public ServiceReferenceManager(BundleContext context, ServiceReferenceMetadata compMetadata)
    {
-      super(context, srefMetadata);
-      this.srefMetadata = srefMetadata;
+      super(context, compMetadata);
+      this.srefMetadata = (ServiceReferenceMetadataImpl)compMetadata;
    }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/parser/xb/TComponent.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/parser/xb/TComponent.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/parser/xb/TComponent.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -26,6 +26,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+
 /**
  * The Component type is the base type for top-level
  * Blueprint components.  The <bean> <reference>, <service>, <ref-set>, and <ref-list> 
@@ -76,6 +78,9 @@
 
    public int getInitialization()
    {
+      if (initialization == 0)
+         initialization = ComponentMetadata.INITIALIZATION_EAGER;
+      
       return initialization;
    }
 

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BeanMetadataImpl.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BeanMetadataImpl.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BeanMetadataImpl.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -31,6 +31,7 @@
 import org.osgi.service.blueprint.reflect.BeanArgument;
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.BeanProperty;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Target;
 
 /**
@@ -41,14 +42,30 @@
  */
 public class BeanMetadataImpl extends ComponentMetadataImpl implements BeanMetadata
 {
+   private ComponentMetadata parent;
    private TBean tBean;
    
    public BeanMetadataImpl(BundleContext context, TBean tBean)
    {
+      this(context, null, tBean);
+   }
+
+   public BeanMetadataImpl(BundleContext context, ComponentMetadata parent, TBean tBean)
+   {
       super(context, tBean);
+      this.parent = parent;
       this.tBean = tBean;
    }
 
+   public String getKey()
+   {
+      String key = super.getId();
+      if (key == null && parent != null)
+         key = parent.getId() + "#anonymousBean";
+      
+      return key;
+   }
+
    public List<BeanArgument> getArguments()
    {
       throw new NotImplementedException();
@@ -93,4 +110,9 @@
    {
       return tBean.getScope();
    }
+
+   public String toString()
+   {
+      return "Bean[key=" + getKey() + "]";
+   }
 }

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BlueprintMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BlueprintMetadata.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/BlueprintMetadata.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -29,11 +29,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.jboss.osgi.blueprint.parser.xb.TBean;
 import org.jboss.osgi.blueprint.parser.xb.TBlueprint;
 import org.jboss.osgi.blueprint.parser.xb.TComponent;
-import org.jboss.osgi.blueprint.parser.xb.TService;
-import org.jboss.osgi.blueprint.parser.xb.TServiceReference;
 import org.jboss.osgi.spi.NotImplementedException;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
@@ -66,10 +63,18 @@
 
    public void initialize()
    {
+      ComponentFactory factory = new ComponentFactory(context);
       for (TComponent tComp : tBlueprint.getComponents())
       {
-         ComponentMetadata comp = createComponent(tComp);
-         components.put(comp.getId(), comp);
+         ComponentMetadata comp = factory.createComponent(tComp);
+         String key = comp.getId();
+         
+         // All top level components share a single namespace.
+         // That is, it is an error if the same id is used multiple times.
+         if (components.get(key) != null)
+            throw new IllegalStateException("Duplicate top-level component: " + key);
+         
+         components.put(key, comp);
       }
    }
 
@@ -87,26 +92,4 @@
 
       throw new NotImplementedException("Blueprint metadata merge not yet implemented");
    }
-
-   private ComponentMetadata createComponent(TComponent tComp)
-   {
-      ComponentMetadata comp = null;
-      
-      if (tComp.getId() == null)
-         tComp.setId(".anonymousId#" + (components.size() + 1));
-      
-      if (tComp instanceof TBean)
-         comp = new BeanMetadataImpl(context, (TBean)tComp);
-      
-      else if (tComp instanceof TService)
-         comp = new ServiceMetadataImpl(context, (TService)tComp);
-      
-      else if (tComp instanceof TServiceReference)
-         comp = new ServiceReferenceMetadataImpl(context, (TServiceReference)tComp);
-      
-      if (comp == null)
-         throw new IllegalArgumentException("Unsupported component type: " + tComp);
-      
-      return comp;
-   }
 }

Added: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentFactory.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentFactory.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentFactory.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -0,0 +1,75 @@
+/*
+ * 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.blueprint.reflect;
+
+// $Id$
+
+import org.jboss.osgi.blueprint.parser.xb.TBean;
+import org.jboss.osgi.blueprint.parser.xb.TComponent;
+import org.jboss.osgi.blueprint.parser.xb.TService;
+import org.jboss.osgi.blueprint.parser.xb.TServiceReference;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+
+/**
+ * A factory for component metadata.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 13-May-2009
+ */
+public class ComponentFactory
+{
+   private BundleContext context;
+   private int anonymousId;
+
+   public ComponentFactory(BundleContext context)
+   {
+      this.context = context;
+   }
+
+   public ComponentMetadata createComponent(TComponent tComp)
+   {
+      return createComponent(null, tComp, false);
+   }
+   
+   public ComponentMetadata createComponent(ComponentMetadata parent, TComponent tComp, boolean anonymous)
+   {
+      ComponentMetadata comp = null;
+      
+      if (anonymous == false && tComp.getId() == null)
+         tComp.setId(".anonymousId#" + (++anonymousId));
+      
+      if (tComp instanceof TBean)
+         comp = new BeanMetadataImpl(context, parent, (TBean)tComp);
+      
+      else if (tComp instanceof TService)
+         comp = new ServiceMetadataImpl(context, (TService)tComp);
+      
+      else if (tComp instanceof TServiceReference)
+         comp = new ServiceReferenceMetadataImpl(context, (TServiceReference)tComp);
+      
+      if (comp == null)
+         throw new IllegalArgumentException("Unsupported component type: " + tComp);
+      
+      return comp;
+   }
+}


Property changes on: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentMetadataImpl.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentMetadataImpl.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ComponentMetadataImpl.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -37,10 +37,12 @@
  */
 public class ComponentMetadataImpl implements ComponentMetadata
 {
+   protected BundleContext context;
    protected TComponent tComp;
 
    public ComponentMetadataImpl(BundleContext context, TComponent tComp)
    {
+      this.context = context;
       this.tComp = tComp;
    }
 

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceMetadataImpl.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceMetadataImpl.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceMetadataImpl.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -30,6 +30,7 @@
 import org.jboss.osgi.blueprint.parser.xb.TService;
 import org.jboss.osgi.spi.NotImplementedException;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.MapEntry;
 import org.osgi.service.blueprint.reflect.RegistrationListener;
 import org.osgi.service.blueprint.reflect.ServiceMetadata;
@@ -44,6 +45,7 @@
 public class ServiceMetadataImpl extends ComponentMetadataImpl implements ServiceMetadata
 {
    private TService tService;
+   private BeanMetadata beanMetadata;
    
    public ServiceMetadataImpl(BundleContext context, TService tService)
    {
@@ -90,4 +92,19 @@
    {
       throw new NotImplementedException();
    }
+
+   public BeanMetadata getBeanMetadata()
+   {
+      if (beanMetadata == null && tService.getBean() != null)
+      {
+         ComponentFactory factory = new ComponentFactory(context);
+         beanMetadata = (BeanMetadata)factory.createComponent(this, tService.getBean(), true);
+      }
+      return beanMetadata;
+   }
+
+   public String toString()
+   {
+      return "Service[id=" + getId() + "]";
+   }
 }

Modified: projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceReferenceMetadataImpl.java
===================================================================
--- projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceReferenceMetadataImpl.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/blueprint/impl/src/main/java/org/jboss/osgi/blueprint/reflect/ServiceReferenceMetadataImpl.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -82,4 +82,9 @@
    {
       throw new NotImplementedException();
    }
+
+   public String toString()
+   {
+      return "Reference[id=" + getId() + "]";
+   }
 }

Modified: projects/jboss-osgi/trunk/distribution/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/distribution/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/distribution/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -55,18 +55,18 @@
     <dependency>
       <groupId>org.jboss.osgi</groupId>
       <artifactId>jboss-osgi-spi</artifactId>
-      <version>${version}</version>
+      <version>${version.jboss.osgi.spi}</version>
     </dependency>
     <dependency>
       <groupId>org.jboss.osgi</groupId>
       <artifactId>jboss-osgi-spi</artifactId>
-      <version>${version}</version>
+      <version>${version.jboss.osgi.spi}</version>
       <classifier>sources</classifier>
     </dependency>
     <dependency>
       <groupId>org.jboss.osgi</groupId>
       <artifactId>jboss-osgi-spi</artifactId>
-      <version>${version}</version>
+      <version>${version.jboss.osgi.spi}</version>
       <classifier>javadoc</classifier>
     </dependency>
     <dependency>

Modified: projects/jboss-osgi/trunk/husky/harness/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/husky/harness/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/husky/harness/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.jboss.osgi</groupId>
     <artifactId>jboss-osgi-husky</artifactId>
-    <version>1.0.0.Beta3</version>
+    <version>1.0.0-SNAPSHOT</version>
   </parent>
 
   <!-- Dependencies -->

Modified: projects/jboss-osgi/trunk/husky/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/husky/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/husky/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -22,6 +22,8 @@
   <artifactId>jboss-osgi-husky</artifactId>
   <packaging>pom</packaging>
 
+  <version>1.0.0-SNAPSHOT</version>
+  
   <parent>
     <groupId>org.jboss.osgi</groupId>
     <artifactId>jboss-osgi</artifactId>

Modified: projects/jboss-osgi/trunk/husky/testsuite/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/husky/testsuite/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/husky/testsuite/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.jboss.osgi</groupId>
     <artifactId>jboss-osgi-husky</artifactId>
-    <version>1.0.0.Beta3</version>
+    <version>1.0.0-SNAPSHOT</version>
   </parent>
 
   <!-- Dependencies -->

Modified: projects/jboss-osgi/trunk/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -46,15 +46,17 @@
     <version.jboss.osgi.common.core>2.2.11</version.jboss.osgi.common.core>
     <version.jboss.osgi.deployers>1.0.0.Beta2</version.jboss.osgi.deployers>
     <version.jboss.osgi.hotdeploy>1.0.0-SNAPSHOT</version.jboss.osgi.hotdeploy>
-    <version.jboss.osgi.integration.jbossas>1.0.0.Beta2</version.jboss.osgi.integration.jbossas>
+    <version.jboss.osgi.husky>1.0.0-SNAPSHOT</version.jboss.osgi.husky>
+    <version.jboss.osgi.integration.jbossas>1.0.0-SNAPSHOT</version.jboss.osgi.integration.jbossas>
     <version.jboss.osgi.jaxb>2.1.10</version.jboss.osgi.jaxb>
     <version.jboss.osgi.jmx>1.0.0.Beta2</version.jboss.osgi.jmx>
     <version.jboss.osgi.jndi>1.0.0.Beta2</version.jboss.osgi.jndi>
-    <version.jboss.osgi.microcontainer>1.0.0.Beta2</version.jboss.osgi.microcontainer>
+    <version.jboss.osgi.microcontainer>1.0.0-SNAPSHOT</version.jboss.osgi.microcontainer>
     <version.jboss.osgi.remotelog>1.0.0.Beta2</version.jboss.osgi.remotelog>
     <version.jboss.osgi.runtime.equinox>1.0.0.Beta2</version.jboss.osgi.runtime.equinox>
     <version.jboss.osgi.runtime.felix>1.0.0.Beta2</version.jboss.osgi.runtime.felix>
     <version.jboss.osgi.runtime.knopflerfish>1.0.0.Beta2</version.jboss.osgi.runtime.knopflerfish>
+    <version.jboss.osgi.spi>1.0.0-SNAPSHOT</version.jboss.osgi.spi>
     <version.jboss.osgi.webconsole>1.0.0.Beta2</version.jboss.osgi.webconsole>
     <version.jboss.osgi.xml.binding>2.0.0</version.jboss.osgi.xml.binding>
     <version.junit>4.6</version.junit>
@@ -163,7 +165,7 @@
       <dependency>
         <groupId>org.jboss.osgi</groupId>
         <artifactId>jboss-osgi-husky-harness</artifactId>
-        <version>${version}</version>
+        <version>${version.jboss.osgi.husky}</version>
       </dependency>
       <dependency>
         <groupId>org.jboss.osgi</groupId>
@@ -183,7 +185,7 @@
       <dependency>
         <groupId>org.jboss.osgi</groupId>
         <artifactId>jboss-osgi-spi</artifactId>
-        <version>${version}</version>
+        <version>${version.jboss.osgi.spi}</version>
       </dependency>
       <dependency>
         <groupId>org.jboss.osgi.bundles</groupId>

Modified: projects/jboss-osgi/trunk/spi/pom.xml
===================================================================
--- projects/jboss-osgi/trunk/spi/pom.xml	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/spi/pom.xml	2009-06-18 12:53:44 UTC (rev 90422)
@@ -8,6 +8,8 @@
   <artifactId>jboss-osgi-spi</artifactId>
   <packaging>jar</packaging>
 
+  <version>1.0.0-SNAPSHOT</version>
+  
   <!-- Parent -->
   <parent>
     <groupId>org.jboss.osgi</groupId>

Modified: projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/MicrocontainerService.java
===================================================================
--- projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/MicrocontainerService.java	2009-06-18 12:37:06 UTC (rev 90421)
+++ projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/MicrocontainerService.java	2009-06-18 12:53:44 UTC (rev 90422)
@@ -54,13 +54,19 @@
    String BEAN_KERNEL = "jboss.kernel:service=Kernel";
 
    /*
-    * * Get the list of registered beans.
+    * Get the list of registered beans.
     */
    List<String> getRegisteredBeans();
 
    /*
-    * * Get a registered bean from the Kernel.
+    * Get a registered bean from the Kernel.
     * @return null if there is no bean registered under this name
     */
    Object getRegisteredBean(String beanName);
+
+   /*
+    * Get a registered bean from the Kernel.
+    * @return null if there is no bean registered under this name
+    */
+   <T> T getRegisteredBean(Class<T> clazz, String beanName);
 }
\ No newline at end of file




More information about the jboss-osgi-commits mailing list