Package ch.kk7.confij.pipeline.reload
Class ReloadNotifierImpl<T>
- java.lang.Object
-
- ch.kk7.confij.pipeline.reload.ReloadNotifierImpl<T>
-
- Type Parameters:
T-
- All Implemented Interfaces:
ConfijReloadNotifier<T>
public class ReloadNotifierImpl<T> extends java.lang.Object implements ConfijReloadNotifier<T>
Keep track of previous configuration values and compares them to new ones (when the source value / config string changes). Will notify all listeners of the changed value. Given one nested value changes, the parent will also be notified of the change.The class is internally thread-safe, but if a config is reloaded before all handlers are registered it will crash out.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface ch.kk7.confij.pipeline.reload.ConfijReloadNotifier
ConfijReloadNotifier.AtomicReferenceReloadHandler<X>
-
-
Constructor Summary
Constructors Constructor Description ReloadNotifierImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Optional<ConfijReloadHandler.ReloadEvent<T>>configReloaded(@NonNull BindingResult<T> newBindingResult)protected <X> voidfindSameValue(BindingResult<?> current, X onConfigObject, java.util.Set<BindingResult<X>> results)protected voidmaybeNotify(ConfijReloadHandler.ReloadEvent reloadEvent)protected <X> @NonNull java.net.URImustFindUniqueConfigObject(X onConfigObject)protected <X> java.util.Optional<ConfijReloadHandler.ReloadEvent<X>>notifyAllChangedValues(java.time.Instant timestamp, BindingResult<X> oldBindingResult, BindingResult<X> newBindingResult)<X> voidregisterReloadHandler(@NonNull ConfijReloadHandler<X> childReloadHandler, @NonNull java.lang.Object parent, java.lang.String childPath, java.lang.String... childPaths)<X> voidregisterReloadHandler(@NonNull ConfijReloadHandler<X> reloadHandler, X onConfigObject)Listen for changes on a config object.protected voidregisterReloadHandlerInternal(ConfijReloadHandler<?> reloadHandler, java.lang.Object onConfigObject, java.lang.String... childPaths)protected <X> voidregisterReloadHandlerOnUri(@NonNull java.net.URI nodeURI, @NonNull ConfijReloadHandler<X> reloadHandler)voidregisterRootReloadHandler(@NonNull ConfijReloadHandler<T> reloadHandler)protected static java.util.Map<java.net.URI,BindingResult<?>>toChildMappings(BindingResult<?> bindingResult)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ch.kk7.confij.pipeline.reload.ConfijReloadNotifier
registerAtomicReference
-
-
-
-
Method Detail
-
toChildMappings
protected static java.util.Map<java.net.URI,BindingResult<?>> toChildMappings(BindingResult<?> bindingResult)
-
configReloaded
public java.util.Optional<ConfijReloadHandler.ReloadEvent<T>> configReloaded(@NonNull @NonNull BindingResult<T> newBindingResult)
-
maybeNotify
protected void maybeNotify(ConfijReloadHandler.ReloadEvent reloadEvent)
-
notifyAllChangedValues
protected <X> java.util.Optional<ConfijReloadHandler.ReloadEvent<X>> notifyAllChangedValues(java.time.Instant timestamp, BindingResult<X> oldBindingResult, BindingResult<X> newBindingResult)
-
registerRootReloadHandler
public void registerRootReloadHandler(@NonNull @NonNull ConfijReloadHandler<T> reloadHandler)- Specified by:
registerRootReloadHandlerin interfaceConfijReloadNotifier<T>
-
registerReloadHandler
public <X> void registerReloadHandler(@NonNull @NonNull ConfijReloadHandler<X> childReloadHandler, @NonNull @NonNull java.lang.Object parent, java.lang.String childPath, java.lang.String... childPaths)- Specified by:
registerReloadHandlerin interfaceConfijReloadNotifier<T>
-
registerReloadHandler
public <X> void registerReloadHandler(@NonNull @NonNull ConfijReloadHandler<X> reloadHandler, @NonNull X onConfigObject)Listen for changes on a config object. Something you got usingConfijBuilder.build().- Specified by:
registerReloadHandlerin interfaceConfijReloadNotifier<T>- Type Parameters:
X- the config type- Parameters:
reloadHandler- handler to be called when a config object or one of it's children (nested objects) changesonConfigObject- the config object on which to listen for changes. no primitives nor cached/reused types.
-
registerReloadHandlerInternal
protected void registerReloadHandlerInternal(ConfijReloadHandler<?> reloadHandler, java.lang.Object onConfigObject, java.lang.String... childPaths)
-
mustFindUniqueConfigObject
@NonNull protected <X> @NonNull java.net.URI mustFindUniqueConfigObject(X onConfigObject)
-
registerReloadHandlerOnUri
protected <X> void registerReloadHandlerOnUri(@NonNull @NonNull java.net.URI nodeURI, @NonNull @NonNull ConfijReloadHandler<X> reloadHandler)
-
findSameValue
protected <X> void findSameValue(BindingResult<?> current, @NonNull X onConfigObject, java.util.Set<BindingResult<X>> results)
-
-