Package com._1c.g5.wiring
Class ServiceRegistrator
- java.lang.Object
-
- com._1c.g5.wiring.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 andunregister
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.
-
-
Field Summary
Fields Modifier and Type Field Description protected org.osgi.framework.BundleContext
context
protected ManagedServicesSupport
managedServicesSupport
protected List<org.osgi.framework.ServiceRegistration<?>>
registeredServices
-
Constructor Summary
Constructors Constructor Description ServiceRegistrator(org.eclipse.core.runtime.Plugin bundle)
Constructor ofServiceRegistrator
.ServiceRegistrator(org.osgi.framework.BundleContext context)
Constructor ofServiceRegistrator
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activateManagedService(IManagedService service)
Activate the given managed service.void
deactivateManagedServices()
Deactivate all previously activatedIManagedService
services that clients activaed using this registrator.void
deactivateManagedServices(org.eclipse.core.runtime.Plugin plugin)
Deactivate all previously activatedIManagedService
services that clients activaed using this registrator.<T extends IManagedService>
IManagedServiceRegistrationBuilder<T>managedService(Class<T> serviceType)
Register the managed service in OSGi service registry.<T> IServiceRegistrationBuilder<T>
service(Class<T> serviceType)
Register the service in OSGi service registry.void
unregisterServices()
Unregister all previously registered services.
-
-
-
Field Detail
-
managedServicesSupport
protected final ManagedServicesSupport managedServicesSupport
-
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 ofServiceRegistrator
.- Parameters:
bundle
- the bundle to register service in, cannot benull
-
ServiceRegistrator
public ServiceRegistrator(org.osgi.framework.BundleContext context)
Constructor ofServiceRegistrator
.- Parameters:
context
- the bundle context to register service in, cannot benull
-
-
Method Detail
-
unregisterServices
public void unregisterServices()
Unregister all previously registered services.- Parameters:
context
- the bundle context, cannot benull
-
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 benull
- Returns:
- a service registration builder, never
null
-
managedService
public <T extends IManagedService> IManagedServiceRegistrationBuilder<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 benull
- 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 benull
- See Also:
IManagedService
-
deactivateManagedServices
public void deactivateManagedServices(org.eclipse.core.runtime.Plugin plugin)
Deactivate all previously activatedIManagedService
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 benull
- See Also:
IManagedService
-
deactivateManagedServices
public void deactivateManagedServices()
Deactivate all previously activatedIManagedService
services that clients activaed using this registrator.Services will be deactivated in reversed order.
-
-