Class InjectorAwareServiceRegistrator
- java.lang.Object
-
- com._1c.g5.wiring.ServiceRegistrator
-
- com._1c.g5.wiring.InjectorAwareServiceRegistrator
-
public class InjectorAwareServiceRegistrator extends ServiceRegistrator
Injector
aware 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.Order of
InjectorAwareServiceRegistrator
creation and usage is next:- Creating registrator instance.
Activating
lifecycle-managed
services.Registering
public OSGi services.- Registered services may be used by other plug-ins.
Unregistering
public OSGi services.Dectivating
lifecycle-managed
services.
Example of usage in plug-in
Activator
:public class ServicesProducerPlugin extends Plugin { private static ServicesProducerPlugin plugin; private InjectorAwareServiceRegistrator registrator; public static ServicesProducerPlugin getDefault() { return plugin; } @Override public void start(BundleContext context) throws Exception { super.start(context); plugin = this; registrator = new InjectorAwareServiceRegistrator(context, this::getInjector); // activate all managed services registrator.activateManagedServices(ImmutableList.of(ISomeManagedService.class)); // register services from injector registrator.service(ISomeManagedService.class).registerInjected(); registrator.service(ISomeService.class).registerInjected(); // register qualified service from injector registrator.service(ISomeQualifiedService.class).withProperties(ServiceProperties.named("MdImplementation")) .registerInjected(ISomeQualifiedService.class, Names.named("MdImplementation")); // register instance registrator.service(ISomeInstanceService.class).registerInstance(new ISomeInstanceService() { @Override public void method() { // do nothing } }); } @Override public void stop(BundleContext context) throws Exception { // unregister all registered services registrator.unregisterServices(); // deactivate all managed services registrator.deactivateManagedServices(this); plugin = null; super.stop(context); } ... }
- See Also:
ServiceProperties
,IManagedService
-
-
Field Summary
-
Fields inherited from class com._1c.g5.wiring.ServiceRegistrator
context, managedServicesSupport, registeredServices
-
-
Constructor Summary
Constructors Constructor Description InjectorAwareServiceRegistrator(org.eclipse.core.runtime.Plugin bundle, com.google.inject.Injector injector)
Constructor ofInjectorAwareServiceRegistrator
.InjectorAwareServiceRegistrator(org.eclipse.core.runtime.Plugin bundle, Supplier<com.google.inject.Injector> injectorSupplier)
Constructor ofInjectorAwareServiceRegistrator
.InjectorAwareServiceRegistrator(org.osgi.framework.BundleContext context, com.google.inject.Injector injector)
Constructor ofInjectorAwareServiceRegistrator
.InjectorAwareServiceRegistrator(org.osgi.framework.BundleContext context, Supplier<com.google.inject.Injector> injectorSupplier)
Constructor ofInjectorAwareServiceRegistrator
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activateManagedService(Class<? extends IManagedService> serviceType)
Activate the given managed service.void
activateManagedServices(List<Class<? extends IManagedService>> managedServices)
Activate the given managed services.<T extends IManagedService>
IInjectorAwareManagedServiceRegistrationBuilder<T>managedService(Class<T> serviceType)
Register the managed service in OSGi service registry.<T> IInjectorAwareServiceRegistrationBuilder<T>
service(Class<T> serviceType)
Register the service in OSGi service registry.void
unregisterServices()
Unregister all previously registered services.-
Methods inherited from class com._1c.g5.wiring.ServiceRegistrator
activateManagedService, deactivateManagedServices, deactivateManagedServices
-
-
-
-
Constructor Detail
-
InjectorAwareServiceRegistrator
public InjectorAwareServiceRegistrator(org.eclipse.core.runtime.Plugin bundle, com.google.inject.Injector injector)
Constructor ofInjectorAwareServiceRegistrator
.- Parameters:
context
- the bundle context to register service in, cannot benull
injector
- the injector to use to get service instances, cannot benull
-
InjectorAwareServiceRegistrator
public InjectorAwareServiceRegistrator(org.eclipse.core.runtime.Plugin bundle, Supplier<com.google.inject.Injector> injectorSupplier)
Constructor ofInjectorAwareServiceRegistrator
.- Parameters:
context
- the bundle context to register service in, cannot benull
injectorSupplier
- the injectorSupplier
to use to get service instances in lazy-mode, cannot benull
-
InjectorAwareServiceRegistrator
public InjectorAwareServiceRegistrator(org.osgi.framework.BundleContext context, com.google.inject.Injector injector)
Constructor ofInjectorAwareServiceRegistrator
.- Parameters:
context
- the bundle context to register service in, cannot benull
injector
- the injector to use to get service instances, cannot benull
-
InjectorAwareServiceRegistrator
public InjectorAwareServiceRegistrator(org.osgi.framework.BundleContext context, Supplier<com.google.inject.Injector> injectorSupplier)
Constructor ofInjectorAwareServiceRegistrator
.- Parameters:
context
- the bundle context to register service in, cannot benull
injectorSupplier
- the injectorSupplier
to use to get service instances in lazy-mode, cannot benull
-
-
Method Detail
-
service
public <T> IInjectorAwareServiceRegistrationBuilder<T> service(Class<T> serviceType)
Register the service in OSGi service registry. Returns builder to provide implementation to register.Single instance of service will be registered regardless of injector binding scope and provider settings.
Note that service registration of managed OSGi service is intended to be performed after service
activating
to export fully active service.- Overrides:
service
in classServiceRegistrator
- 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> IInjectorAwareManagedServiceRegistrationBuilder<T> managedService(Class<T> serviceType)
Description copied from class:ServiceRegistrator
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.
- Overrides:
managedService
in classServiceRegistrator
- Parameters:
serviceType
- the managed service type to register in OSGi service registry, cannot benull
- Returns:
- a service registration builder, never
null
- See Also:
IManagedService
-
unregisterServices
public void unregisterServices()
Unregister all previously registered services.Note that service unregistration of managed OSGi services is intended to be performed before services
deactivating
to unregister services before they become inactive.- Overrides:
unregisterServices
in classServiceRegistrator
-
activateManagedService
public void activateManagedService(Class<? extends IManagedService> serviceType)
Activate the given managed service. Service instance will be supplied by the support injector.- Parameters:
service
- the of managed service, cannot benull
- See Also:
IManagedService
-
activateManagedServices
public void activateManagedServices(List<Class<? extends IManagedService>> managedServices)
Activate the given managed services. Service instances will be supplied by the support injector.- Parameters:
managedServices
- the list of managed service classes, cannot benull
- See Also:
IManagedService
-
-