Class ReloadableSpringService<T>
java.lang.Object
net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
net.shibboleth.utilities.java.support.service.AbstractReloadableService<T>
net.shibboleth.ext.spring.service.ReloadableSpringService<T>
- Type Parameters:
T- The precise service being implemented.
- All Implemented Interfaces:
Component,DestructableComponent,IdentifiableComponent,IdentifiedComponent,InitializableComponent,UnmodifiableComponent,ReloadableService<T>,Aware,BeanNameAware,ApplicationContextAware,Lifecycle
@ThreadSafe
public class ReloadableSpringService<T>
extends AbstractReloadableService<T>
implements ApplicationContextAware, BeanNameAware, Lifecycle
This class provides a reloading interface to a
ServiceableComponent via Spring.
This class extends Lifecycle. and thus
it acts as the bridge between this interface and
InitializableComponent and
DestructableComponent-
Nested Class Summary
Nested classes/interfaces inherited from class net.shibboleth.utilities.java.support.service.AbstractReloadableService
AbstractReloadableService.ServiceReloadTask -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate StringThe bean name.private Collection<String>Bean profiles to enable.private ServiceableComponent<T>The last known good component.private ConversionServiceConversion service to use.private List<BeanFactoryPostProcessor>List of bean factory post processors for this service's content.private booleanDid the last load fail? An optimization only.private final org.slf4j.LoggerClass logger.private ApplicationContextApplication context owning this engine.private List<BeanPostProcessor>List of bean post processors for this service's content.private Instant[]Time when the service configuration for the given index was last observed to have changed.List of configuration resources for this service.private final Function<ApplicationContext,ServiceableComponent<T>> How to summon up theServiceableComponentfrom theApplicationContext.The class we are looking for. -
Constructor Summary
ConstructorsConstructorDescriptionReloadableSpringService(Class<T> claz) Constructor.ReloadableSpringService(Class<T> claz, Function<ApplicationContext, ServiceableComponent<T>> strategy) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected voidprotected voiddoReload()Gets the application context that is the parent to this service's context.Get the serviceable component.Gets an unmodifiable list of configurations for this service.boolean.voidsetApplicationContext(ApplicationContext applicationContext) voidsetBeanFactoryPostProcessors(List<BeanFactoryPostProcessor> processors) Set the list of bean factory post processors for this service.voidsetBeanName(String name) voidsetBeanPostProcessors(List<BeanPostProcessor> processors) Set the list of bean post processors for this service.voidsetBeanProfiles(Collection<String> profiles) Set the bean profiles for this service.voidsetConversionService(ConversionService service) Set a conversion service to use.voidsetParentContext(ApplicationContext context) Sets the application context that is the parent to this service's context.voidsetServiceConfigurations(List<Resource> configs) Set the list of configurations for this service.voidsetServiceConfigurationStrategy(Function<?, List<Resource>> strategy) Set the strategy by which the Service can locate the resources it needs to know about.protected booleanfinal voidstart()final voidstop()Methods inherited from class net.shibboleth.utilities.java.support.service.AbstractReloadableService
getLastReloadAttemptInstant, getLastSuccessfulReloadInstant, getLogPrefix, getReloadCheckDelay, getReloadFailureCause, getReloadTaskTimer, isFailFast, reload, setFailFast, setReloadCheckDelay, setReloadTaskTimerMethods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
setIdMethods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
getIdMethods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.utilities.java.support.component.IdentifiedComponent
getIdMethods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent
initialize, isInitialized
-
Field Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
serviceConfigurations
List of configuration resources for this service. -
factoryPostProcessors
List of bean factory post processors for this service's content. -
postProcessors
List of bean post processors for this service's content. -
beanProfiles
Bean profiles to enable. -
conversionService
Conversion service to use. -
theClaz
The class we are looking for. -
serviceStrategy
How to summon up theServiceableComponentfrom theApplicationContext. -
parentContext
Application context owning this engine. -
beanName
The bean name. -
cachedComponent
The last known good component. -
lastLoadFailed
private boolean lastLoadFailedDid the last load fail? An optimization only. -
resourceLastModifiedTimes
Time when the service configuration for the given index was last observed to have changed. A null indicates the configuration resource did not exist.
-
-
Constructor Details
-
ReloadableSpringService
Constructor.- Parameters:
claz- The interface being implemented.
-
ReloadableSpringService
public ReloadableSpringService(@Nonnull @ParameterName(name="claz") Class<T> claz, @Nonnull @ParameterName(name="strategy") Function<ApplicationContext, ServiceableComponent<T>> strategy) Constructor.- Parameters:
claz- The interface being implemented.strategy- the strategy to use to look up servicable component to look for.
-
-
Method Details
-
getParentContext
Gets the application context that is the parent to this service's context.- Returns:
- application context that is the parent to this service's context
-
setParentContext
Sets the application context that is the parent to this service's context. This setting can not be changed after the service has been initialized.- Parameters:
context- context that is the parent to this service's context, may be null
-
getServiceConfigurations
Gets an unmodifiable list of configurations for this service.- Returns:
- unmodifiable list of configurations for this service
-
setServiceConfigurations
Set the list of configurations for this service. This setting can not be changed after the service has been initialized.- Parameters:
configs- list of configurations for this service
-
setServiceConfigurationStrategy
Set the strategy by which the Service can locate the resources it needs to know about.Not implemented.
- Parameters:
strategy- the way to get the resources. Precise details are tbd.
-
setBeanFactoryPostProcessors
public void setBeanFactoryPostProcessors(@Nonnull @NonnullElements List<BeanFactoryPostProcessor> processors) Set the list of bean factory post processors for this service.- Parameters:
processors- bean factory post processors to apply
-
setBeanPostProcessors
Set the list of bean post processors for this service.- Parameters:
processors- bean post processors to apply
-
setBeanProfiles
Set the bean profiles for this service.- Parameters:
profiles- bean profiles to apply- Since:
- 5.4.0
-
setConversionService
Set a conversion service to use.- Parameters:
service- conversion service- Since:
- 5.4.0
-
start
public final void start() -
stop
public final void stop() -
isRunning
public boolean isRunning(). -
shouldReload
protected boolean shouldReload()- Specified by:
shouldReloadin classAbstractReloadableService<T>
-
doReload
protected void doReload()- Overrides:
doReloadin classAbstractReloadableService<T>
-
doDestroy
protected void doDestroy()- Overrides:
doDestroyin classAbstractReloadableService<T>
-
getServiceableComponent
Get the serviceable component. We do this under interlock and grab the lock on the component.- Specified by:
getServiceableComponentin interfaceReloadableService<T>- Returns:
- the pinned component.
-
setApplicationContext
- Specified by:
setApplicationContextin interfaceApplicationContextAware
-
setBeanName
- Specified by:
setBeanNamein interfaceBeanNameAware
-
doInitialize
- Overrides:
doInitializein classAbstractReloadableService<T>- Throws:
ComponentInitializationException
-