You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/09/02 11:29:53 UTC
svn commit: r991874 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/impl/DefaultDebugger.java
test/java/org/apache/camel/processor/interceptor/DebugTest.java
Author: davsclaus
Date: Thu Sep 2 09:29:53 2010
New Revision: 991874
URL: http://svn.apache.org/viewvc?rev=991874&view=rev
Log:
Fixed bug when removing breakpoint.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java?rev=991874&r1=991873&r2=991874&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultDebugger.java Thu Sep 2 09:29:53 2010
@@ -23,6 +23,7 @@ import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
@@ -51,7 +52,7 @@ import org.apache.commons.logging.LogFac
public class DefaultDebugger implements Debugger, CamelContextAware {
private static final Log LOG = LogFactory.getLog(DefaultDebugger.class);
- private final List<BreakpointConditions> breakpoints = new ArrayList<BreakpointConditions>();
+ private final List<BreakpointConditions> breakpoints = new CopyOnWriteArrayList<BreakpointConditions>();
private final int maxConcurrentSingleSteps = 1;
private final Map<String, Breakpoint> singleSteps = new HashMap<String, Breakpoint>(maxConcurrentSingleSteps);
private CamelContext camelContext;
@@ -97,7 +98,7 @@ public class DefaultDebugger implements
}
public void addBreakpoint(Breakpoint breakpoint) {
- addBreakpoint(breakpoint, (Condition) null);
+ breakpoints.add(new BreakpointConditions(breakpoint));
}
public void addBreakpoint(Breakpoint breakpoint, Condition... conditions) {
@@ -154,7 +155,11 @@ public class DefaultDebugger implements
}
public void removeBreakpoint(Breakpoint breakpoint) {
- breakpoints.remove(breakpoint);
+ for (BreakpointConditions condition : breakpoints) {
+ if (condition.getBreakpoint().equals(breakpoint)) {
+ breakpoints.remove(condition);
+ }
+ }
}
public void suspendAllBreakpoints() {
@@ -357,7 +362,7 @@ public class DefaultDebugger implements
onEvent(exchange, event);
if (event instanceof ExchangeCompletedEvent) {
- // failsafe to ensure we remote single steps when the Exchange is complete
+ // fail safe to ensure we remove single steps when the Exchange is complete
singleSteps.remove(exchange.getExchangeId());
}
}
@@ -366,14 +371,13 @@ public class DefaultDebugger implements
return event instanceof AbstractExchangeEvent;
}
- @Override
protected void doStart() throws Exception {
// noop
}
- @Override
protected void doStop() throws Exception {
// noop
}
}
+
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java?rev=991874&r1=991873&r2=991874&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugTest.java Thu Sep 2 09:29:53 2010
@@ -147,6 +147,33 @@ public class DebugTest extends ContextTe
assertEquals("Breakpoint at To[mock:result] with body: Hello Camel", logs.get(0));
}
+ public void testDebugRemoveBreakpoint() throws Exception {
+ context.getDebugger().addBreakpoint(breakpoint);
+
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+
+ assertEquals(7, logs.size());
+
+ // remove the breakpoint
+ context.getDebugger().removeBreakpoint(breakpoint);
+
+ // reset and test again now the breakpoint is removed
+ resetMocks();
+ logs.clear();
+
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello Camel");
+
+ template.sendBody("direct:start", "Hello Camel");
+
+ assertMockEndpointsSatisfied();
+
+ assertEquals(0, logs.size());
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {