Class AbstractPropertyBackedBean
java.lang.Object
org.alfresco.repo.management.subsystems.AbstractPropertyBackedBean
- All Implemented Interfaces:
EventListener,PropertyBackedBean,PropertyBackedBeanState,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanNameAware,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.context.ApplicationContextAware,org.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>
- Direct Known Subclasses:
AuditModelRegistryImpl,ChildApplicationContextFactory,CompositeDataBean,DefaultChildApplicationContextManager,SwitchableApplicationContextFactory
public abstract class AbstractPropertyBackedBean
extends Object
implements PropertyBackedBean, org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.BeanNameAware
A base class for
PropertyBackedBeans. Gets its category from its Spring bean name and automatically
propagates and resolves property defaults on initialization. Automatically destroys itself on server shutdown.
Communicates its creation and destruction and start and stop events to a PropertyBackedBeanRegistry. Listens
for start and stop events from remote nodes in order to keep the bean in sync with edits made on a remote node. On
receiving a start event from a remote node, the bean is completely reinitialized, allowing it to be resynchronized
with any persisted changes.- Author:
- dward
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassUses a SpringPropertyPlaceholderHelperto resolve placeholders in the property defaults.protected static enumThe lifecycle states. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final StringThe default final part of an ID.protected ReentrantReadWriteLockLock for concurrent access.protected AbstractPropertyBackedBean.RuntimeState -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected voidApplies default overrides to the initial state.protected abstract PropertyBackedBeanStateCreates the initial state.final voiddestroy()protected voiddestroy(boolean isPermanent) Releases any resources held by this component.protected voiddoInit()Initializes or resets the bean and its state.protected StringGets the category.getDescription(String name) Gets a Human readable description of the property, e.g.protected PropertiesgetId()Gets a unique identifier for the bean.Gets the hierarchical instance path within the category (second part of the ID).protected org.springframework.context.ApplicationContextGets the parent application context.getProperty(String name) Gets a property value.protected PropertiesGets the property defaults provided by the installer or System properties.Gets the names of all properties.protected PropertyBackedBeanRegistryGets the registry of all property backed beans.protected PropertyBackedBeanStategetState(boolean start) Gets the state.final voidinit()Initializes or resets the bean and its state.booleanisUpdateable(String name) Checks if a property is updateable.voidonApplicationEvent(org.springframework.context.ApplicationEvent event) performEarlyPropertyChecks(Map<String, String> properties) Check properties for invalid values usingSubsystemEarlyPropertyCheckersvoidremoveProperties(Collection<String> properties) Removes properties added by code within the local node.voidremoveProperty(String name) Removes a property added by code within the local node.protected StringresolveDefault(String name) Resolves the default value of a property, if there is one, expanding placholders as necessary.final voidrevert()Reverts this component to its original default start state, removing any previously persisted state changes.voidsetApplicationContext(org.springframework.context.ApplicationContext applicationContext) voidsetAutoStart(boolean autoStart) Indicates whether the bean should be started on startup of the parent application context.voidsetBeanName(String name) voidsetCategory(String category) Sets the category (first part of the ID).voidsetEarlyPropertyCheckers(Map<String, SubsystemEarlyPropertyChecker> earlyPropertyCheckers) voidsetEncryptedPropertyDefaults(Properties propertyDefaults) voidsetInstancePath(List<String> instancePath) Sets the hierarchical instance path within the category (second part of the ID)..voidsetProperties(Map<String, String> properties) Tries setting the given properties on this component.voidsetProperty(String name, String value) Sets the value of a property.voidsetPropertyDefaults(Properties propertyDefaults) Sets the property defaults provided by the installer or System properties.voidsetRegistry(PropertyBackedBeanRegistry registry) Sets the registry of all property backed beans.voidsetSaveSetProperty(boolean saveSetProperty) When set to true, calls to setProperties / setProperty are persisted to the MBean if it exists.final voidstart()Starts up the component, using its new property values.protected voidstart(boolean broadcastNow, boolean broadcastLater) Starts the bean, optionally broadcasting the event to remote nodes.final voidstop()Stops the component, so that its property values can be changed.protected voidstop(boolean broadcast) Stops the bean, optionally broadcasting the event to remote nodes.
-
Field Details
-
DEFAULT_INSTANCE_NAME
The default final part of an ID.- See Also:
-
runtimeState
-
lock
Lock for concurrent access.
-
-
Constructor Details
-
AbstractPropertyBackedBean
public AbstractPropertyBackedBean()
-
-
Method Details
-
setEarlyPropertyCheckers
public void setEarlyPropertyCheckers(Map<String, SubsystemEarlyPropertyChecker> earlyPropertyCheckers) -
setApplicationContext
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws org.springframework.beans.BeansException - Specified by:
setApplicationContextin interfaceorg.springframework.context.ApplicationContextAware- Throws:
org.springframework.beans.BeansException
-
setRegistry
Sets the registry of all property backed beans.- Parameters:
registry- the registry of all property backed beans
-
getRegistry
Gets the registry of all property backed beans.- Returns:
- the registry of all property backed beans
-
setBeanName
- Specified by:
setBeanNamein interfaceorg.springframework.beans.factory.BeanNameAware
-
setCategory
Sets the category (first part of the ID).- Parameters:
category- the category
-
setInstancePath
Sets the hierarchical instance path within the category (second part of the ID)..- Parameters:
instancePath- the instance path
-
setAutoStart
public void setAutoStart(boolean autoStart) Indicates whether the bean should be started on startup of the parent application context.- Parameters:
autoStart-trueif the bean should be started on startup of the parent application context
-
setPropertyDefaults
Sets the property defaults provided by the installer or System properties.- Parameters:
propertyDefaults- the property defaults
-
setEncryptedPropertyDefaults
-
getPropertyDefaults
Gets the property defaults provided by the installer or System properties.- Returns:
- the property defaults
-
getEncryptedPropertyDefaults
-
resolveDefault
Resolves the default value of a property, if there is one, expanding placholders as necessary.- Parameters:
name- the property name- Returns:
- the resolved default value or
nullif there isn't one
-
getParent
protected org.springframework.context.ApplicationContext getParent()Gets the parent application context.- Returns:
- the parent application context
-
getState
Gets the state.- Parameters:
start- are we making use of the state? I.e. should we start it if it has not been already?- Returns:
- the state
-
setSaveSetProperty
public void setSaveSetProperty(boolean saveSetProperty) When set to true, calls to setProperties / setProperty are persisted to the MBean if it exists. -
performEarlyPropertyChecks
Check properties for invalid values usingSubsystemEarlyPropertyCheckers- Parameters:
properties-- Returns:
- The complete error message in case of exceptions or empty string otherwise
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
init
public final void init()Initializes or resets the bean and its state. -
doInit
protected void doInit()Initializes or resets the bean and its state. -
revert
public final void revert()Reverts this component to its original default start state, removing any previously persisted state changes.- Specified by:
revertin interfacePropertyBackedBean
-
createInitialState
Creates the initial state.- Returns:
- the property backed bean state
- Throws:
IOException- Signals that an I/O exception has occurred.
-
applyDefaultOverrides
Applies default overrides to the initial state.- Parameters:
state- the state- Throws:
IOException- Signals that an I/O exception has occurred.
-
getId
Gets a unique identifier for the bean. The ID is a List to encourage hierarchical structuring of IDs, e.g. to aid construction of JMX Object names and presentation in JConsole.- Specified by:
getIdin interfacePropertyBackedBean- Returns:
- the id
-
getCategory
Gets the category.- Returns:
- the category
-
getInstancePath
Gets the hierarchical instance path within the category (second part of the ID).- Returns:
- the instance path
-
destroy
public final void destroy()- Specified by:
destroyin interfaceorg.springframework.beans.factory.DisposableBean
-
destroy
protected void destroy(boolean isPermanent) Releases any resources held by this component.- Parameters:
isPermanent- is the component being destroyed forever, i.e. should persisted values be removed? On server shutdown, this value would befalse, whereas on the removal of a dynamically created instance, this value would betrue.
-
isUpdateable
Checks if a property is updateable.- Specified by:
isUpdateablein interfacePropertyBackedBean- Parameters:
name- the property name- Returns:
trueif the property is updateable
-
getDescription
Gets a Human readable description of the property, e.g. to provide via JMX.- Specified by:
getDescriptionin interfacePropertyBackedBean- Parameters:
name- the name- Returns:
- the description
-
onApplicationEvent
public void onApplicationEvent(org.springframework.context.ApplicationEvent event) - Specified by:
onApplicationEventin interfaceorg.springframework.context.ApplicationListener<org.springframework.context.ApplicationEvent>
-
getProperty
Gets a property value.- Specified by:
getPropertyin interfacePropertyBackedBeanState- Parameters:
name- the name- Returns:
- the property value
-
getPropertyNames
Gets the names of all properties.- Specified by:
getPropertyNamesin interfacePropertyBackedBeanState- Returns:
- the property names
-
setProperty
Sets the value of a property. This may only be called afterPropertyBackedBeanState.stop().When called from code within the local node the values are saved to the database in the Enterprise edition and will be visible in a JMX client.
- Specified by:
setPropertyin interfacePropertyBackedBeanState- Parameters:
name-value-
-
setProperties
Tries setting the given properties on this component. Will leave the component in a started state consisting of the new properties if they are valid, or the previous state otherwise. Note that the new state still has to be confirmed to the entire cluster withPropertyBackedBeanState.start(), presumably after persistence of the new state has been completed.When called from code within the local node the values are saved to the database in the Enterprise edition and will be visible in a JMX client.
- Specified by:
setPropertiesin interfacePropertyBackedBean- Parameters:
properties- to be saved.
-
removeProperty
Removes a property added by code within the local node.- Specified by:
removePropertyin interfacePropertyBackedBeanState- Parameters:
name- to be removed.
-
removeProperties
Removes properties added by code within the local node.- Specified by:
removePropertiesin interfacePropertyBackedBean- Parameters:
properties- to be removed.
-
start
public final void start()Starts up the component, using its new property values.- Specified by:
startin interfacePropertyBackedBeanState
-
start
protected void start(boolean broadcastNow, boolean broadcastLater) Starts the bean, optionally broadcasting the event to remote nodes.- Parameters:
broadcastNow- Should the event be broadcast immediately?broadcastLater- Should the event be broadcast ever?
-
stop
public final void stop()Stops the component, so that its property values can be changed.- Specified by:
stopin interfacePropertyBackedBeanState
-
stop
protected void stop(boolean broadcast) Stops the bean, optionally broadcasting the event to remote nodes.- Parameters:
broadcast- Should the event be broadcast?
-