public class DefaultMandatoryDependencyManager extends java.lang.Object implements MandatoryServiceDependencyManager, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean
MandatoryServiceDependencyManager which determines the relationship between
importers and exporters and unpublishes exported service if they dependent, transitively, on imported OSGi services
that are mandatory and cannot be satisfied.
Note: aimed for singleton beans only| Modifier and Type | Class and Description |
|---|---|
private class |
DefaultMandatoryDependencyManager.ImporterDependencyListener
Importer state listener that gets associated with each exporter.
|
| Modifier and Type | Field and Description |
|---|---|
private org.springframework.beans.factory.config.ConfigurableListableBeanFactory |
beanFactory
owning bean factory
|
private java.util.Map<java.lang.Object,ImporterStateListener> |
exporterListener
exporter -> importer listener map
|
private java.util.concurrent.ConcurrentMap<java.lang.String,java.lang.Object> |
exportersSeen
cache map - useful for avoiding double registration
|
private java.util.Map<java.lang.Object,java.util.Map<java.lang.Object,java.lang.Boolean>> |
exporterToImporterDeps
Importers on which an exporter depends.
|
private java.util.Map<java.lang.Object,java.lang.String> |
exporterToName
exporter name map
|
private java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.String> |
importerToName
importer -> name map
|
private static org.apache.commons.logging.Log |
log |
private static java.lang.Object |
VALUE |
| Constructor and Description |
|---|
DefaultMandatoryDependencyManager() |
| Modifier and Type | Method and Description |
|---|---|
private void |
addListener(java.lang.Object importer,
ImporterStateListener stateListener) |
void |
addServiceExporter(java.lang.Object exporter,
java.lang.String exporterBeanName) |
private void |
callUnregisterOnStartup(java.lang.Object exporter) |
private boolean |
checkIfExporterShouldStart(java.lang.Object exporter,
java.util.Map<java.lang.Object,java.lang.Boolean> importers) |
void |
destroy() |
protected void |
discoverDependentImporterFor(java.lang.String exporterBeanName,
java.lang.Object exporter)
Discover all the importers for the given exporter.
|
private boolean |
isMandatory(java.lang.Object importer) |
private boolean |
isSatisfied(java.lang.Object importer) |
private void |
removeListener(java.lang.Object importer,
ImporterStateListener stateListener) |
void |
removeServiceExporter(java.lang.Object bean,
java.lang.String beanName) |
void |
setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) |
private void |
startExporter(java.lang.Object exporter) |
private void |
stopExporter(java.lang.Object exporter) |
private static final org.apache.commons.logging.Log log
private final java.util.concurrent.ConcurrentMap<java.lang.String,java.lang.Object> exportersSeen
private static final java.lang.Object VALUE
private final java.util.Map<java.lang.Object,java.util.Map<java.lang.Object,java.lang.Boolean>> exporterToImporterDeps
private final java.util.Map<java.lang.Object,ImporterStateListener> exporterListener
private final java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.String> importerToName
private final java.util.Map<java.lang.Object,java.lang.String> exporterToName
private org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory
public void addServiceExporter(java.lang.Object exporter,
java.lang.String exporterBeanName)
addServiceExporter in interface MandatoryServiceDependencyManagerprotected void discoverDependentImporterFor(java.lang.String exporterBeanName,
java.lang.Object exporter)
private boolean checkIfExporterShouldStart(java.lang.Object exporter,
java.util.Map<java.lang.Object,java.lang.Boolean> importers)
public void removeServiceExporter(java.lang.Object bean,
java.lang.String beanName)
removeServiceExporter in interface MandatoryServiceDependencyManagerpublic void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
throws org.springframework.beans.BeansException
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAwareorg.springframework.beans.BeansExceptionpublic void destroy()
destroy in interface org.springframework.beans.factory.DisposableBeanprivate void startExporter(java.lang.Object exporter)
private void stopExporter(java.lang.Object exporter)
private void callUnregisterOnStartup(java.lang.Object exporter)
private void addListener(java.lang.Object importer,
ImporterStateListener stateListener)
private void removeListener(java.lang.Object importer,
ImporterStateListener stateListener)
private boolean isSatisfied(java.lang.Object importer)
private boolean isMandatory(java.lang.Object importer)