diff --git a/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/Chaining.java b/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/Chaining.java index a1fc27963..05b52137d 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/Chaining.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/Chaining.java @@ -57,7 +57,8 @@ public class Chaining implements ChainingInterface { public boolean usedInit() { return used; } - + + @Override public void initUsed(boolean used) { this.used = used; } @@ -67,10 +68,11 @@ public class Chaining implements ChainingInterface { } @Override - public T getContext( + public T getContext( Class contextClass, Function createChaining) { for (ChainingInterface context : contextChain) { if (context.getClass() == contextClass && !context.usedInit()) { + context.initUsed(true); //noinspection unchecked return (T) context; } @@ -85,6 +87,8 @@ public class Chaining implements ChainingInterface { "stack trace on https://github.com/OpenHFT/Chronicle-Map/issues"); } //noinspection unchecked - return (T) createChaining.apply(this); + T context = createChaining.apply(this); + context.initUsed(true); + return context; } } diff --git a/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/ChainingInterface.java b/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/ChainingInterface.java index 9219c53e5..b94068db5 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/ChainingInterface.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/stage/hash/ChainingInterface.java @@ -23,8 +23,10 @@ public interface ChainingInterface { List getContextChain(); + void initUsed(boolean used); + boolean usedInit(); - T getContext( + T getContext( Class contextClass, Function createChaining); } diff --git a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java index b750ccf8e..1d42d1dd0 100644 --- a/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/ReplicatedChronicleMap.java @@ -459,12 +459,8 @@ public class ReplicatedChronicleMap mapContext() { - CompiledReplicatedMapQueryContext q = - q().getContext(CompiledReplicatedMapQueryContext.class, - ci -> new CompiledReplicatedMapQueryContext<>(ci, - ReplicatedChronicleMap.this)); - q.initUsed(true); - return q; + return q().getContext(CompiledReplicatedMapQueryContext.class, + ci -> new CompiledReplicatedMapQueryContext<>(ci, this)); } /** @@ -514,12 +510,8 @@ public class ReplicatedChronicleMap iterationContext() { - CompiledReplicatedMapIterationContext c = - i().getContext(CompiledReplicatedMapIterationContext.class, - ci -> new CompiledReplicatedMapIterationContext<>(ci, - ReplicatedChronicleMap.this)); - c.initUsed(true); - return c; + return i().getContext(CompiledReplicatedMapIterationContext.class, + ci -> new CompiledReplicatedMapIterationContext<>(ci, this)); } /** diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 7245d3150..9e02bc70f 100755 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -303,11 +303,8 @@ public class VanillaChronicleMap mapContext() { - CompiledMapQueryContext q = - q().getContext(CompiledMapQueryContext.class, - ci -> new CompiledMapQueryContext<>(ci, VanillaChronicleMap.this)); - q.initUsed(true); - return q; + return q().getContext(CompiledMapQueryContext.class, + ci -> new CompiledMapQueryContext<>(ci, this)); } private ChainingInterface i() { @@ -321,11 +318,8 @@ public class VanillaChronicleMap iterationContext() { - CompiledMapIterationContext c = - i().getContext(CompiledMapIterationContext.class, - ci -> new CompiledMapIterationContext<>(ci, VanillaChronicleMap.this)); - c.initUsed(true); - return c; + return i().getContext(CompiledMapIterationContext.class, + ci -> new CompiledMapIterationContext<>(ci, this)); } @Override