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 class
ConfigurationListener.DescriptorListener
private static class
ConfigurationListener.ModificationInformation
-
Field Summary
Fields Modifier and Type Field Description private java.util.HashSet<ActiveDescriptor<?>>
allProgenitors
private DynamicConfigurationService
configurationService
private ConfiguredByContext
context
private Hub
hub
private ConfiguredByInjectionResolver
injectionResolver
private ServiceLocator
locator
private java.lang.Object
progenitorLock
private 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 void
calculateProgenitorAddsAndRemoves()
void
commitDatabaseChange(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.String
getTypeFromConfiguredBy(ActiveDescriptor<?> descriptor)
private void
initialize(BeanDatabase database)
private void
invokePostMethod(java.lang.Object target, java.util.List<java.beans.PropertyChangeEvent> changes, java.lang.String typeName)
private boolean
invokePreMethod(java.lang.Object target, java.util.List<java.beans.PropertyChangeEvent> changes, java.lang.String typeName)
private static boolean
isEager(ActiveDescriptor<?> descriptor)
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)
private void
postConstruct()
void
prepareDatabaseChange(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.void
rollbackDatabaseChange(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.String
toString()
-
-
-
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:BeanDatabaseUpdateListener
This 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:
commitDatabaseChange
in 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:BeanDatabaseUpdateListener
This 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:
prepareDatabaseChange
in 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:BeanDatabaseUpdateListener
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. 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:
rollbackDatabaseChange
in 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:
toString
in classjava.lang.Object
-
-