You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by bo...@apache.org on 2015/09/10 21:57:35 UTC
[3/5] qpid-proton git commit: NO-JIRA: Handlers in a HashedSet seems
fragile
NO-JIRA: Handlers in a HashedSet seems fragile
Add a test for dispatching of event through child handlers
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/8f3a8f0c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/8f3a8f0c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/8f3a8f0c
Branch: refs/heads/master
Commit: 8f3a8f0c1575aa28e4dc70e5a9a0f9a008373f2f
Parents: 21e6fa6
Author: Bozo Dragojevic <bo...@digiverse.si>
Authored: Tue Jul 28 15:50:02 2015 +0200
Committer: Bozo Dragojevic <bo...@digiverse.si>
Committed: Thu Sep 10 21:57:12 2015 +0200
----------------------------------------------------------------------
.../apache/qpid/proton/engine/BaseHandler.java | 4 +-
.../qpid/proton/engine/EventDelegationTest.java | 55 ++++++++++++++++++++
2 files changed, 57 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/8f3a8f0c/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java
index 7c518a0..2490052 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/BaseHandler.java
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.proton.engine;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashSet;
/**
@@ -48,7 +48,7 @@ public class BaseHandler implements CoreHandler
ext.attachments().set(Handler.class, Handler.class, handler);
}
- private HashSet<Handler> children = new HashSet<Handler>();
+ private LinkedHashSet<Handler> children = new LinkedHashSet<Handler>();
@Override public void onConnectionInit(Event e) { onUnhandled(e); }
@Override public void onConnectionLocalOpen(Event e) { onUnhandled(e); }
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/8f3a8f0c/proton-j/src/test/java/org/apache/qpid/proton/engine/EventDelegationTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/EventDelegationTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/EventDelegationTest.java
new file mode 100644
index 0000000..d8cce0a
--- /dev/null
+++ b/proton-j/src/test/java/org/apache/qpid/proton/engine/EventDelegationTest.java
@@ -0,0 +1,55 @@
+package org.apache.qpid.proton.engine;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.apache.qpid.proton.reactor.Reactor;
+import org.junit.Test;
+
+public class EventDelegationTest {
+
+ private ArrayList<String> trace = new ArrayList<String>();
+
+ class ExecutionFlowTracer extends BaseHandler {
+ protected String name;
+
+ ExecutionFlowTracer(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public void onReactorInit(Event e) {
+ trace.add(name);
+ }
+ }
+
+ Handler assemble(Handler outer, Handler...inner) {
+ for(Handler h : inner) {
+ outer.add(h);
+ }
+ return outer;
+ }
+
+ @Test
+ public void testImplicitDelegate() throws IOException {
+ Handler h =
+ assemble(
+ new ExecutionFlowTracer("A"),
+ assemble(
+ new ExecutionFlowTracer("A.A"),
+ new ExecutionFlowTracer("A.A.A"),
+ new ExecutionFlowTracer("A.A.B")
+ ),
+ assemble(
+ new ExecutionFlowTracer("A.B")
+ )
+ );
+ Reactor r = Reactor.Factory.create();
+ r.getHandler().add(h);
+ r.run();
+ assertArrayEquals(new String[]{"A", "A.A", "A.A.A", "A.A.B", "A.B"}, trace.toArray());
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org