diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:02 +0100 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:02 +0100 |
commit | 5e168847c2624b767deb9da310ecfdf169e0f43c (patch) | |
tree | 56b76556a6837fff20b800d5a22218286a975581 /dicore3/core/src/main/java/io/dico/dicore/event/ChainedListenerHandle.java | |
parent | 60503351a30a91985b95ee8aa64e163ef084b34b (diff) |
Add dicore3-core, without really irrelevant packages
Diffstat (limited to 'dicore3/core/src/main/java/io/dico/dicore/event/ChainedListenerHandle.java')
-rw-r--r-- | dicore3/core/src/main/java/io/dico/dicore/event/ChainedListenerHandle.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/dicore3/core/src/main/java/io/dico/dicore/event/ChainedListenerHandle.java b/dicore3/core/src/main/java/io/dico/dicore/event/ChainedListenerHandle.java new file mode 100644 index 0000000..86b8448 --- /dev/null +++ b/dicore3/core/src/main/java/io/dico/dicore/event/ChainedListenerHandle.java @@ -0,0 +1,55 @@ +package io.dico.dicore.event; + +import io.dico.dicore.InterfaceChain; + +public interface ChainedListenerHandle extends InterfaceChain<ListenerHandle, ChainedListenerHandle>, ListenerHandle { + + @Override + default ChainedListenerHandle getEmptyInstance() { + return ChainedListenerHandles.empty(); + } + + @Override + default ChainedListenerHandle withElement(ListenerHandle element) { + if (element == null) { + return this; + } + + int count = getElementCount() + 1; + return new ChainedListenerHandle() { + @Override + public void register() { + try { + ChainedListenerHandle.this.register(); + } finally { + element.register(); + } + } + + @Override + public void unregister() { + try { + ChainedListenerHandle.this.unregister(); + } finally { + element.unregister(); + } + } + + @Override + public ChainedListenerHandle withoutLastNode() { + return ChainedListenerHandle.this; + } + + @Override + public ListenerHandle getDelegateOfLastNode() { + return element; + } + + @Override + public int getElementCount() { + return count; + } + }; + } + +} |