[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