Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2CED6D562 for ; Sat, 22 Sep 2012 16:53:35 +0000 (UTC) Received: (qmail 23918 invoked by uid 500); 22 Sep 2012 16:53:35 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 23845 invoked by uid 500); 22 Sep 2012 16:53:35 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 23837 invoked by uid 99); 22 Sep 2012 16:53:35 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2012 16:53:35 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2012 16:53:32 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 006D323888EA; Sat, 22 Sep 2012 16:52:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1388842 - in /camel/branches/camel-2.9.x/camel-core/src: main/java/org/apache/camel/util/EventHelper.java test/java/org/apache/camel/util/EventHelperTest.java Date: Sat, 22 Sep 2012 16:52:47 -0000 To: commits@camel.apache.org From: cmueller@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120922165248.006D323888EA@eris.apache.org> Author: cmueller Date: Sat Sep 22 16:52:47 2012 New Revision: 1388842 URL: http://svn.apache.org/viewvc?rev=1388842&view=rev Log: CAMEL-5631: EventHelper.notifyRouteStarted skips all remaining notifiers if one if the notifiers ignores route events Added: camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/EventHelper.java Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/EventHelper.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/EventHelper.java?rev=1388842&r1=1388841&r2=1388842&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/EventHelper.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/EventHelper.java Sat Sep 22 16:52:47 2012 @@ -119,7 +119,7 @@ public final class EventHelper { for (EventNotifier notifier : notifiers) { if (notifier.isIgnoreCamelContextEvents()) { - return; + continue; } EventFactory factory = context.getManagementStrategy().getEventFactory(); @@ -234,7 +234,7 @@ public final class EventHelper { for (EventNotifier notifier : notifiers) { if (notifier.isIgnoreRouteEvents()) { - return; + continue; } EventFactory factory = context.getManagementStrategy().getEventFactory(); Added: camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java?rev=1388842&view=auto ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java (added) +++ camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/EventHelperTest.java Sat Sep 22 16:52:47 2012 @@ -0,0 +1,161 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.util; + +import java.util.EventObject; +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.camel.CamelContext; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.management.DefaultManagementStrategy; +import org.apache.camel.management.event.CamelContextStoppingEvent; +import org.apache.camel.management.event.RouteStartedEvent; +import org.apache.camel.management.event.RouteStoppedEvent; +import org.apache.camel.spi.ManagementStrategy; +import org.apache.camel.support.EventNotifierSupport; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class EventHelperTest { + + @Test + public void testStartStopEventsReceived() throws Exception { + MyEventNotifier en1 = new MyEventNotifier(); + MyEventNotifier en2 = new MyEventNotifier(); + + CamelContext camelContext = new DefaultCamelContext(); + camelContext.addRoutes(new RouteBuilder() { + public void configure() throws Exception { + from("direct:start").routeId("route-1") + .to("mock:end"); + } + + }); + ManagementStrategy managementStrategy = new DefaultManagementStrategy(); + managementStrategy.addEventNotifier(en1); + managementStrategy.addEventNotifier(en2); + camelContext.setManagementStrategy(managementStrategy); + + camelContext.start(); + camelContext.stop(); + + assertEquals(1, en1.routeStartedEvent.get()); + assertEquals(1, en1.routeStoppedEvent.get()); + assertEquals(1, en1.camelContextStoppingEvent.get()); + + assertEquals(1, en2.routeStartedEvent.get()); + assertEquals(1, en2.routeStoppedEvent.get()); + assertEquals(1, en2.camelContextStoppingEvent.get()); + } + + @Test + public void testStartStopEventsReceivedWhenTheFirstOneIgnoreTheseEvents() throws Exception { + MyEventNotifier en1 = new MyEventNotifier(); + en1.setIgnoreRouteEvents(true); + en1.setIgnoreCamelContextEvents(true); + MyEventNotifier en2 = new MyEventNotifier(); + + CamelContext camelContext = new DefaultCamelContext(); + camelContext.addRoutes(new RouteBuilder() { + public void configure() throws Exception { + from("direct:start").routeId("route-1") + .to("mock:end"); + } + + }); + ManagementStrategy managementStrategy = new DefaultManagementStrategy(); + managementStrategy.addEventNotifier(en1); + managementStrategy.addEventNotifier(en2); + camelContext.setManagementStrategy(managementStrategy); + + camelContext.start(); + camelContext.stop(); + + assertEquals(0, en1.routeStartedEvent.get()); + assertEquals(0, en1.routeStoppedEvent.get()); + assertEquals(0, en1.camelContextStoppingEvent.get()); + + assertEquals(1, en2.routeStartedEvent.get()); + assertEquals(1, en2.routeStoppedEvent.get()); + assertEquals(1, en2.camelContextStoppingEvent.get()); + } + + @Test + public void testStartStopEventsReceivedWhenTheSecondOneIgnoreTheseEvents() throws Exception { + MyEventNotifier en1 = new MyEventNotifier(); + MyEventNotifier en2 = new MyEventNotifier(); + en2.setIgnoreRouteEvents(true); + en2.setIgnoreCamelContextEvents(true); + + CamelContext camelContext = new DefaultCamelContext(); + camelContext.addRoutes(new RouteBuilder() { + public void configure() throws Exception { + from("direct:start").routeId("route-1") + .to("mock:end"); + } + + }); + ManagementStrategy managementStrategy = new DefaultManagementStrategy(); + managementStrategy.addEventNotifier(en1); + managementStrategy.addEventNotifier(en2); + camelContext.setManagementStrategy(managementStrategy); + + camelContext.start(); + camelContext.stop(); + + assertEquals(1, en1.routeStartedEvent.get()); + assertEquals(1, en1.routeStoppedEvent.get()); + assertEquals(1, en1.camelContextStoppingEvent.get()); + + assertEquals(0, en2.routeStartedEvent.get()); + assertEquals(0, en2.routeStoppedEvent.get()); + assertEquals(0, en2.camelContextStoppingEvent.get()); + } + + static class MyEventNotifier extends EventNotifierSupport { + + AtomicInteger routeStartedEvent = new AtomicInteger(); + AtomicInteger routeStoppedEvent = new AtomicInteger(); + AtomicInteger camelContextStoppingEvent = new AtomicInteger(); + + @Override + public void notify(EventObject event) throws Exception { + if (event instanceof RouteStartedEvent) { + routeStartedEvent.incrementAndGet(); + } else if (event instanceof RouteStoppedEvent) { + routeStoppedEvent.incrementAndGet(); + } else if (event instanceof CamelContextStoppingEvent) { + camelContextStoppingEvent.incrementAndGet(); + } + } + + @Override + public boolean isEnabled(EventObject event) { + return true; + } + + @Override + protected void doStart() throws Exception { + } + + @Override + protected void doStop() throws Exception { + } + } +}