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
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, waitMethods inherited from interface ch.kk7.confij.pipeline.reload.ConfijReloadNotifier
registerAtomicReference
-
Constructor Details
-
ReloadNotifierImpl
public ReloadNotifierImpl()
-
-
Method Details
-
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
-
notifyAllChangedValues
protected <X> java.util.Optional<ConfijReloadHandler.ReloadEvent<X>> notifyAllChangedValues(java.time.Instant timestamp, BindingResult<X> oldBindingResult, BindingResult<X> newBindingResult) -
registerRootReloadHandler
- 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)
-