Author: davsclaus Date: Mon Aug 31 12:58:27 2009 New Revision: 809568 URL: http://svn.apache.org/viewvc?rev=809568&view=rev Log: CAMEL-1933: Overhaul of JMX. Added management of timer endpoint. Fixed CS.
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java (with props) camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java (with props) Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java camel/trunk/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java?rev=809568&r1=809567&r2=809568&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java Mon Aug 31 12:58:27 2009 @@ -32,6 +32,7 @@ import org.apache.camel.Producer; import org.apache.camel.Route; import org.apache.camel.Service; +import org.apache.camel.component.timer.TimerEndpoint; import org.apache.camel.impl.EventDrivenConsumerRoute; import org.apache.camel.impl.ScheduledPollConsumer; import org.apache.camel.management.mbean.ManagedBrowsableEndpoint; @@ -47,6 +48,7 @@ import org.apache.camel.management.mbean.ManagedScheduledPollConsumer; import org.apache.camel.management.mbean.ManagedSendProcessor; import org.apache.camel.management.mbean.ManagedThrottler; +import org.apache.camel.management.mbean.ManagedTimerEndpoint; import org.apache.camel.management.mbean.ManagedTracer; import org.apache.camel.model.AOPDefinition; import org.apache.camel.model.InterceptDefinition; @@ -190,6 +192,8 @@ ManagedEndpoint me; if (endpoint instanceof BrowsableEndpoint) { me = new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint); + } else if (endpoint instanceof TimerEndpoint) { + me = new ManagedTimerEndpoint((TimerEndpoint) endpoint); } else { me = new ManagedEndpoint(endpoint); } @@ -225,6 +229,8 @@ ManagedEndpoint me; if (endpoint instanceof BrowsableEndpoint) { me = new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint); + } else if (endpoint instanceof TimerEndpoint) { + me = new ManagedTimerEndpoint((TimerEndpoint) endpoint); } else { me = new ManagedEndpoint(endpoint); } Added: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java?rev=809568&view=auto ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java (added) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java Mon Aug 31 12:58:27 2009 @@ -0,0 +1,91 @@ +/** + * 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.management.mbean; + +import org.apache.camel.component.timer.TimerEndpoint; +import org.springframework.jmx.export.annotation.ManagedAttribute; +import org.springframework.jmx.export.annotation.ManagedResource; + +/** + * @version $Revision$ + */ + +...@managedresource(description = "Managed Timer Endpoint") +public class ManagedTimerEndpoint extends ManagedEndpoint { + + private TimerEndpoint endpoint; + + public ManagedTimerEndpoint(TimerEndpoint endpoint) { + super(endpoint); + this.endpoint = endpoint; + } + + public TimerEndpoint getEndpoint() { + return endpoint; + } + + @ManagedAttribute(description = "Timer Name") + public String getTimerName() { + return getEndpoint().getTimerName(); + } + + @ManagedAttribute(description = "Timer Name") + public void setTimerName(String timerName) { + getEndpoint().setTimerName(timerName); + } + + @ManagedAttribute(description = "Timer Daemon") + public boolean getDaemon() { + return getEndpoint().isDaemon(); + } + + @ManagedAttribute(description = "Timer Daemon") + public void setDaemon(boolean daemon) { + getEndpoint().setDaemon(daemon); + } + + @ManagedAttribute(description = "Timer Delay") + public long getDelay() { + return getEndpoint().getDelay(); + } + + @ManagedAttribute(description = "Timer Delay") + public void setDelay(long delay) { + getEndpoint().setDelay(delay); + } + + @ManagedAttribute(description = "Timer FixedRate") + public boolean getFixedRate() { + return getEndpoint().isFixedRate(); + } + + @ManagedAttribute(description = "Timer FixedRate") + public void setFixedRate(boolean fixedRate) { + getEndpoint().setFixedRate(fixedRate); + } + + @ManagedAttribute(description = "Timer Period") + public long getPeriod() { + return getEndpoint().getPeriod(); + } + + @ManagedAttribute(description = "Timer Period") + public void setPeriod(long period) { + getEndpoint().setPeriod(period); + } + +} Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTimerEndpoint.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java?rev=809568&r1=809567&r2=809568&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java Mon Aug 31 12:58:27 2009 @@ -24,9 +24,9 @@ import org.apache.camel.impl.ServiceSupport; import org.apache.camel.processor.aggregate.AggregationStrategy; import org.apache.camel.util.ExchangeHelper; -import static org.apache.camel.util.ExchangeHelper.copyResultsPreservePattern; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import static org.apache.camel.util.ExchangeHelper.copyResultsPreservePattern; /** * A content enricher that enriches input data by first obtaining additional Added: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java?rev=809568&view=auto ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java Mon Aug 31 12:58:27 2009 @@ -0,0 +1,84 @@ +/** + * 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.management; + +import java.util.Set; +import javax.management.Attribute; +import javax.management.MBeanServer; +import javax.management.ObjectName; + +import org.apache.camel.CamelContext; +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.impl.DefaultCamelContext; + +/** + * @version $Revision$ + */ +public class ManagedTimerTest extends ContextTestSupport { + + protected CamelContext createCamelContext() throws Exception { + CamelContext context = new DefaultCamelContext(); + DefaultManagementNamingStrategy naming = (DefaultManagementNamingStrategy) context.getManagementStrategy().getManagementNamingStrategy(); + naming.setHostName("localhost"); + naming.setDomainName("org.apache.camel"); + return context; + } + + @SuppressWarnings("unchecked") + public void testTimer() throws Exception { + MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer(); + + ObjectName name = ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=endpoints,name=\"timer://foo\\?delay=5000&period=8000\""); + assertEquals("Should be registered", true, mbeanServer.isRegistered(name)); + + Long period = (Long) mbeanServer.getAttribute(name, "Period"); + assertEquals(8000, period.longValue()); + + // change period + mbeanServer.setAttribute(name, new Attribute("Period", 1000)); + mbeanServer.setAttribute(name, new Attribute("Delay", 0)); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.reset(); + + // restart consumer + Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=consumers,*"), null); + assertEquals(1, set.size()); + ObjectName on = set.iterator().next(); + mbeanServer.invoke(on, "stop", null, null); + mbeanServer.invoke(on, "start", null, null); + + // start and we should be done in at most 3 second + mock.expectedMinimumMessageCount(3); + mock.setResultWaitTime(3900); + + assertMockEndpointsSatisfied(); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("timer://foo?delay=5000&period=8000").to("mock:result"); + } + }; + } + +} Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedTimerTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date