Class ConfigurationListener
- java.lang.Object
-
- org.glassfish.hk2.configuration.internal.ConfigurationListener
-
- All Implemented Interfaces:
BeanDatabaseUpdateListener
@Singleton @Visibility(LOCAL) public class ConfigurationListener extends java.lang.Object implements BeanDatabaseUpdateListener
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classConfigurationListener.DescriptorListenerprivate static classConfigurationListener.ModificationInformation
-
Field Summary
Fields Modifier and Type Field Description private java.util.HashSet<ActiveDescriptor<?>>allProgenitorsprivate DynamicConfigurationServiceconfigurationServiceprivate ConfiguredByContextcontextprivate Hubhubprivate ConfiguredByInjectionResolverinjectionResolverprivate ServiceLocatorlocatorprivate java.lang.ObjectprogenitorLockprivate java.util.concurrent.ConcurrentHashMap<java.lang.String,ConfigurationListener.ModificationInformation>typeInformation
-
Constructor Summary
Constructors Constructor Description ConfigurationListener()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private ActiveDescriptor<?>addInstanceDescriptor(DynamicConfiguration config, ActiveDescriptor<?> parent, java.lang.String name, java.lang.String type, java.lang.Object bean, java.lang.Object metadata)private voidcalculateProgenitorAddsAndRemoves()voidcommitDatabaseChange(BeanDatabase reference, BeanDatabase newDatabase, java.lang.Object commitMessage, java.util.List<Change> changes)This method is called after the change of database has already happened.private java.lang.StringgetTypeFromConfiguredBy(ActiveDescriptor<?> descriptor)private voidinitialize(BeanDatabase database)private voidinvokePostMethod(java.lang.Object target, java.util.List<java.beans.PropertyChangeEvent> changes, java.lang.String typeName)private booleaninvokePreMethod(java.lang.Object target, java.util.List<java.beans.PropertyChangeEvent> changes, java.lang.String typeName)private static booleanisEager(ActiveDescriptor<?> descriptor)private voidmodifyInstanceDescriptor(ActiveDescriptor<?> parent, java.lang.String name, java.lang.Object bean, java.lang.Object metadata, java.lang.String typeName, java.util.List<java.beans.PropertyChangeEvent> changes)private voidpostConstruct()voidprepareDatabaseChange(BeanDatabase currentDatabase, BeanDatabase proposedDatabase, java.lang.Object commitMessage, java.util.List<Change> changes)This method will be called prior to the bean database being updated.voidrollbackDatabaseChange(BeanDatabase currentDatabase, BeanDatabase proposedDatabase, java.lang.Object commitMessage, java.util.List<Change> changes)If anyBeanDatabaseUpdateListener.prepareDatabaseChange(BeanDatabase, BeanDatabase, Object, List)throws an exception this method will be called on all listeners whoseBeanDatabaseUpdateListener.prepareDatabaseChange(BeanDatabase, BeanDatabase, Object, List)had already been succesfully called.java.lang.StringtoString()
-
-
-
Field Detail
-
hub
@Inject private Hub hub
-
locator
@Inject private ServiceLocator locator
-
configurationService
@Inject private DynamicConfigurationService configurationService
-
injectionResolver
@Inject private ConfiguredByInjectionResolver injectionResolver
-
context
@Inject private ConfiguredByContext context
-
typeInformation
private final java.util.concurrent.ConcurrentHashMap<java.lang.String,ConfigurationListener.ModificationInformation> typeInformation
-
progenitorLock
private final java.lang.Object progenitorLock
-
allProgenitors
private java.util.HashSet<ActiveDescriptor<?>> allProgenitors
-
-
Method Detail
-
postConstruct
@PostConstruct private void postConstruct()
-
addInstanceDescriptor
private ActiveDescriptor<?> addInstanceDescriptor(DynamicConfiguration config, ActiveDescriptor<?> parent, java.lang.String name, java.lang.String type, java.lang.Object bean, java.lang.Object metadata)
-
invokePreMethod
private boolean invokePreMethod(java.lang.Object target, java.util.List<java.beans.PropertyChangeEvent> changes, java.lang.String typeName)
-
invokePostMethod
private void invokePostMethod(java.lang.Object target, java.util.List<java.beans.PropertyChangeEvent> changes, java.lang.String typeName)
-
modifyInstanceDescriptor
private void modifyInstanceDescriptor(ActiveDescriptor<?> parent, java.lang.String name, java.lang.Object bean, java.lang.Object metadata, java.lang.String typeName, java.util.List<java.beans.PropertyChangeEvent> changes)
-
initialize
private void initialize(BeanDatabase database)
-
isEager
private static boolean isEager(ActiveDescriptor<?> descriptor)
-
getTypeFromConfiguredBy
private java.lang.String getTypeFromConfiguredBy(ActiveDescriptor<?> descriptor)
-
commitDatabaseChange
public void commitDatabaseChange(BeanDatabase reference, BeanDatabase newDatabase, java.lang.Object commitMessage, java.util.List<Change> changes)
Description copied from interface:BeanDatabaseUpdateListenerThis method is called after the change of database has already happened. If this method throws an exception subsequent listeners commit methods will be called, but theWriteableBeanDatabase.commit()method will throw an exception, indicating a possibly inconsistent state- Specified by:
commitDatabaseChangein interfaceBeanDatabaseUpdateListener- Parameters:
reference- The database from which the current database was derivednewDatabase- The current bean databasecommitMessage- An object passed to the commit method in a dynamic changechanges- The changes that were made to arrive at the current database
-
calculateProgenitorAddsAndRemoves
private void calculateProgenitorAddsAndRemoves()
-
prepareDatabaseChange
public void prepareDatabaseChange(BeanDatabase currentDatabase, BeanDatabase proposedDatabase, java.lang.Object commitMessage, java.util.List<Change> changes)
Description copied from interface:BeanDatabaseUpdateListenerThis method will be called prior to the bean database being updated. If this method throws an exception subsequent listeners prepare methods will not be called and the rollback method of any listeners that had run previously will be called and the proposedDatabase will not become the current database. If all the registered bean update listeners prepare methods return normally then the proposedDatabase will become the current database- Specified by:
prepareDatabaseChangein interfaceBeanDatabaseUpdateListener- Parameters:
currentDatabase- The bean database that is current in effectproposedDatabase- The bean database that will go into effectcommitMessage- An object passed to the commit method in a dynamic changechanges- The changes that were made to the current database
-
rollbackDatabaseChange
public void rollbackDatabaseChange(BeanDatabase currentDatabase, BeanDatabase proposedDatabase, java.lang.Object commitMessage, java.util.List<Change> changes)
Description copied from interface:BeanDatabaseUpdateListenerIf anyBeanDatabaseUpdateListener.prepareDatabaseChange(BeanDatabase, BeanDatabase, Object, List)throws an exception this method will be called on all listeners whoseBeanDatabaseUpdateListener.prepareDatabaseChange(BeanDatabase, BeanDatabase, Object, List)had already been succesfully called. If this method throws an exception subsequent listeners rollback methods will be called and the exception will be returned in the exception thrown to the caller ofWriteableBeanDatabase.commit()method- Specified by:
rollbackDatabaseChangein interfaceBeanDatabaseUpdateListener- Parameters:
currentDatabase- The bean database that is current in effectproposedDatabase- The bean database that was to go into effect (but which will not)commitMessage- An object passed to the commit method in a dynamic changechanges- The changes that were proposed to be made to the current database
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-