Class ServiceRegistrator

  • Direct Known Subclasses:
    InjectorAwareServiceRegistrator

    public class ServiceRegistrator
    extends Object
    OSGi services registration support.

    Typical usage is to create registrator instance in plug-in Activator, register some internal services or instances as OSGi services and unregister with plug-in stop.

    Also supports IManagedService activation and de-activation.

    Example of usage in plug-in Activator:

     public class ServicesProducerPlugin
         extends Plugin
     {
         private static ServicesProducerPlugin plugin;
         private ServiceRegistrator registrator;
    
         public static ServicesProducerPlugin getDefault()
         {
             return plugin;
         }
    
         @Override
         public void start(BundleContext context) throws Exception
         {
             super.start(context);
             plugin = this;
    
             registrator = new ServiceRegistrator(context);
    
             // register instance
             registrator.service(ISomeInstanceService.class).registerInstance(new ISomeInstanceService()
             {
                 @Override
                 public void method()
                 {
                     // do nothing
                 }
             });
    
             // register other instance
             registrator.service(ISomeOtherInstanceService.class).registerInstance(new SomeOtherInstanceServiceImpl());
         }
    
         @Override
         public void stop(BundleContext context) throws Exception
         {
             // unregister all registered services
             registrator.unconfigureServices();
    
             plugin = null;
             super.stop(context);
         }
    
         ...
    
     }
     

    Clients may use InjectorAwareServiceRegistrator to provide instances from Guice IoC container as services.

    See Also:
    ServiceProperties, IManagedService, InjectorAwareServiceRegistrator
    • Field Detail

      • registeredServices

        protected final List<org.osgi.framework.ServiceRegistration<?>> registeredServices
      • context

        protected final org.osgi.framework.BundleContext context
    • Constructor Detail

      • ServiceRegistrator

        public ServiceRegistrator​(org.eclipse.core.runtime.Plugin bundle)
        Constructor of ServiceRegistrator.
        Parameters:
        bundle - the bundle to register service in, cannot be null
      • ServiceRegistrator

        public ServiceRegistrator​(org.osgi.framework.BundleContext context)
        Constructor of ServiceRegistrator.
        Parameters:
        context - the bundle context to register service in, cannot be null
    • Method Detail

      • unregisterServices

        public void unregisterServices()
        Unregister all previously registered services.
        Parameters:
        context - the bundle context, cannot be null
      • service

        public <T> IServiceRegistrationBuilder<T> service​(Class<T> serviceType)
        Register the service in OSGi service registry. Returns builder to provide implementation to register.
        Parameters:
        serviceType - the service type to register in OSGi service registry, cannot be null
        Returns:
        a service registration builder, never null
      • managedService

        public <T extends IManagedServiceIManagedServiceRegistrationBuilder<T> managedService​(Class<T> serviceType)
        Register the managed service in OSGi service registry. Returns builder to provide implementation to register.

        Managed service builder provides ability to activate it before registration as OSGi service.

        Parameters:
        serviceType - the managed service type to register in OSGi service registry, cannot be null
        Returns:
        a service registration builder, never null
        See Also:
        IManagedService
      • activateManagedService

        public void activateManagedService​(IManagedService service)
        Activate the given managed service.
        Parameters:
        service - the of managed service, cannot be null
        See Also:
        IManagedService
      • deactivateManagedServices

        public void deactivateManagedServices​(org.eclipse.core.runtime.Plugin plugin)
        Deactivate all previously activated IManagedService services that clients activaed using this registrator.

        Services will be deactivated in reversed order.

        Parameters:
        plugin - the plug-in instance to log errors to, cannot be null
        See Also:
        IManagedService
      • deactivateManagedServices

        public void deactivateManagedServices()
        Deactivate all previously activated IManagedService services that clients activaed using this registrator.

        Services will be deactivated in reversed order.