[jboss-cvs] JBossAS SVN: r60946 - in projects/osgi/trunk/deployment/src/main/org/jboss/osgi: metadata/plugins and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 27 11:01:47 EST 2007


Author: alesj
Date: 2007-02-27 11:01:47 -0500 (Tue, 27 Feb 2007)
New Revision: 60946

Modified:
   projects/osgi/trunk/deployment/src/main/org/jboss/osgi/aspects/ServiceIntroduction.java
   projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/plugins/ServiceRegistryPojo.java
   projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/spi/annotations/OsgiService.java
Log:
Osgi service introduction.

Modified: projects/osgi/trunk/deployment/src/main/org/jboss/osgi/aspects/ServiceIntroduction.java
===================================================================
--- projects/osgi/trunk/deployment/src/main/org/jboss/osgi/aspects/ServiceIntroduction.java	2007-02-27 15:37:05 UTC (rev 60945)
+++ projects/osgi/trunk/deployment/src/main/org/jboss/osgi/aspects/ServiceIntroduction.java	2007-02-27 16:01:47 UTC (rev 60946)
@@ -21,36 +21,81 @@
 */
 package org.jboss.osgi.aspects;
 
-import java.lang.annotation.Annotation;
-
 import org.jboss.aop.microcontainer.aspects.AbstractIntroduction;
 import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext;
+import org.jboss.osgi.core.platform.spi.BundleContextHolder;
 import org.jboss.osgi.metadata.spi.annotations.OsgiService;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.logging.Logger;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
-public class ServiceIntroduction extends AbstractIntroduction
+public class ServiceIntroduction extends AbstractIntroduction<OsgiService>
 {
-   public ServiceIntroduction(Controller controller)
+   protected static Logger log = Logger.getLogger(ServiceIntroduction.class);
+
+   protected Class<OsgiService> getBindingAnnotation()
    {
-      this.controller = controller;
+      return OsgiService.class;
    }
 
-   protected Class<? extends Annotation> getBindingAnnotation()
+   protected String createServiceContextName(KernelControllerContext context)
    {
-      return OsgiService.class;
+      return context.getName() + "_ServiceRegistration";
    }
 
-   protected void onRegistration(KernelControllerContext context)
+   protected void onRegistration(KernelControllerContext context, OsgiService ann)
    {
-      // todo
+      try
+      {
+         Controller controller = context.getController();
+         ControllerContext bcaContext = controller.getInstalledContext("BundleContextHolder");
+         if (bcaContext == null)
+            throw new IllegalArgumentException("Missing BundleContextHolder bean.");
+         BundleContextHolder bca = (BundleContextHolder)bcaContext.getTarget();
+         BundleContext bundleContext = bca.getBundleContext();
+         ServiceRegistration service = bundleContext.registerService(ann.interfaces(), context.getTarget(), null);
+         BeanMetaData serviceMetaData = new AbstractBeanMetaData(createServiceContextName(context), service.getClass().getName());
+         controller.install(new AbstractKernelControllerContext(null, serviceMetaData, service));
+      }
+      catch (Throwable t)
+      {
+         throw new IllegalArgumentException("Exception while registring OsgiService: " + context + ", " + t);
+      }
    }
 
-   protected void onUnregistration(KernelControllerContext context)
+   protected void onUnregistration(KernelControllerContext context, OsgiService ann)
    {
-      // todo
+      Controller controller = context.getController();
+      String name = createServiceContextName(context);
+      ControllerContext serviceContext = controller.getInstalledContext(name);
+      if (serviceContext != null)
+      {
+         ServiceRegistration service = (ServiceRegistration)serviceContext.getTarget();
+         try
+         {
+            service.unregister();
+         }
+         catch (IllegalStateException e)
+         {
+            log.info("Service already unregistered: " + service);
+         }
+         finally
+         {
+            controller.uninstall(name);
+         }
+      }
+      else
+      {
+         log.warn("Expecting ServiceRegistration context: " + context);
+      }
    }
-   
+
 }

Modified: projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/plugins/ServiceRegistryPojo.java
===================================================================
--- projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/plugins/ServiceRegistryPojo.java	2007-02-27 15:37:05 UTC (rev 60945)
+++ projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/plugins/ServiceRegistryPojo.java	2007-02-27 16:01:47 UTC (rev 60946)
@@ -35,7 +35,7 @@
  */
 public class ServiceRegistryPojo
 {
-   private static Logger logger = Logger.getLogger(ServiceRegistryPojo.class);
+   private static Logger log = Logger.getLogger(ServiceRegistryPojo.class);
 
    private ServiceRegistration service;
 
@@ -60,7 +60,7 @@
          }
          catch (IllegalStateException e)
          {
-            logger.info("Service already unregistered: " + service);               
+            log.info("Service already unregistered: " + service);
          }
       }
    }

Modified: projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/spi/annotations/OsgiService.java
===================================================================
--- projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/spi/annotations/OsgiService.java	2007-02-27 15:37:05 UTC (rev 60945)
+++ projects/osgi/trunk/deployment/src/main/org/jboss/osgi/metadata/spi/annotations/OsgiService.java	2007-02-27 16:01:47 UTC (rev 60946)
@@ -38,13 +38,6 @@
    String[] interfaces();
 
    /**
-    * Get target reference.
-    *
-    * @return target reference
-    */
-   String ref();
-
-   /**
     * Is lazy init.
     *
     * @return is lazy init




More information about the jboss-cvs-commits mailing list