Interface BaseDelegate<T extends BaseDelegate<? extends T>>
-
- All Known Subinterfaces:
ConcurrentBaseDelegate<T>
- All Known Implementing Classes:
ExecutorFactory
,FrameStack
,RuleExecutorFactory
public interface BaseDelegate<T extends BaseDelegate<? extends T>>
Convenience interface for classes which may have a parent ("base") in order to delegate failed operations to (for example, variable lookups). Please note that such a strategy requires synchronisation or immutability in concurrent use cases. For example, if a collection in the parent is modified when a lookup is being delegated by a child, this can lead toConcurrentModificationException
. To mitigate this, a synchronized version of delegate methods are provided.- Since:
- 1.6
- Author:
- Sina Madani
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
BaseDelegate.MergeMode
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default <R> R
delegateLookup(Function<T,R> method)
default <R> R
delegateLookup(Function<T,R> method, boolean syncOnBase)
default <R> R
delegateLookup(Function<T,R> method, Function<T,? extends Object> lockProperty)
static <T,R>
RdelegateLookup(Function<T,R> method, T... instances)
static <T,R>
RdelegateLookup(Function<T,R> method, T thisObj, T baseObj, Object lock)
T
getBase()
default T
getFrom(BaseDelegate.MergeMode mode)
default T
getTo(BaseDelegate.MergeMode mode)
void
merge(BaseDelegate.MergeMode mode)
default <C> void
mergeCollectionsUnique(Function<T,Collection<C>> colPropertyGetter, Supplier<? extends Collection<C>> targetColSup, BaseDelegate.MergeMode mode)
-
-
-
Method Detail
-
getBase
T getBase()
-
merge
void merge(BaseDelegate.MergeMode mode)
-
getFrom
default T getFrom(BaseDelegate.MergeMode mode)
-
getTo
default T getTo(BaseDelegate.MergeMode mode)
-
mergeCollectionsUnique
default <C> void mergeCollectionsUnique(Function<T,Collection<C>> colPropertyGetter, Supplier<? extends Collection<C>> targetColSup, BaseDelegate.MergeMode mode)
-
delegateLookup
@SafeVarargs static <T,R> R delegateLookup(Function<T,R> method, T... instances)
-
delegateLookup
default <R> R delegateLookup(Function<T,R> method, Function<T,? extends Object> lockProperty)
-
-