CAMEL-8526: Add more EIP as specialized mbeans
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e82fd113 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e82fd113 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e82fd113 Branch: refs/heads/master Commit: e82fd1138aae7c790794426830eb1bf56927e823 Parents: 1ee9b41 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Jul 21 14:50:26 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Jul 21 14:50:26 2015 +0200 ---------------------------------------------------------------------- .../management/mbean/ManagedMulticastMBean.java | 41 ++++++++++++ .../DefaultManagementObjectStrategy.java | 4 ++ .../management/mbean/ManagedMulticast.java | 66 ++++++++++++++++++++ .../camel/processor/MulticastProcessor.java | 4 ++ .../camel/management/ManagedMulticastTest.java | 16 +++++ 5 files changed, 131 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/e82fd113/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java new file mode 100644 index 0000000..98c7c6c --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedMulticastMBean.java @@ -0,0 +1,41 @@ +/** + * 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.api.management.mbean; + +import org.apache.camel.api.management.ManagedAttribute; + +public interface ManagedMulticastMBean extends ManagedProcessorMBean { + + @ManagedAttribute(description = "") + Boolean isParallelAggregate(); + + @ManagedAttribute(description = "") + Boolean isParallelProcessing(); + + @ManagedAttribute(description = "") + Boolean isStreaming(); + + @ManagedAttribute(description = "") + Boolean isStopOnException(); + + @ManagedAttribute(description = "") + Boolean isShareUnitOfWork(); + + @ManagedAttribute(description = "") + Long getTimeout(); + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/e82fd113/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java index eda6441..be00fce 100644 --- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java +++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java @@ -46,6 +46,7 @@ import org.apache.camel.management.mbean.ManagedEventNotifier; import org.apache.camel.management.mbean.ManagedFilter; import org.apache.camel.management.mbean.ManagedIdempotentConsumer; import org.apache.camel.management.mbean.ManagedLoop; +import org.apache.camel.management.mbean.ManagedMulticast; import org.apache.camel.management.mbean.ManagedPollEnricher; import org.apache.camel.management.mbean.ManagedProcessor; import org.apache.camel.management.mbean.ManagedProducer; @@ -68,6 +69,7 @@ import org.apache.camel.processor.Enricher; import org.apache.camel.processor.ErrorHandler; import org.apache.camel.processor.FilterProcessor; import org.apache.camel.processor.LoopProcessor; +import org.apache.camel.processor.MulticastProcessor; import org.apache.camel.processor.PollEnricher; import org.apache.camel.processor.RoutingSlip; import org.apache.camel.processor.SendDynamicProcessor; @@ -205,6 +207,8 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy answer = new ManagedFilter(context, (FilterProcessor) target, definition); } else if (target instanceof LoopProcessor) { answer = new ManagedLoop(context, (LoopProcessor) target, definition); + } else if (target instanceof MulticastProcessor) { + answer = new ManagedMulticast(context, (MulticastProcessor) target, definition); } else if (target instanceof WireTapProcessor) { answer = new ManagedWireTapProcessor(context, (WireTapProcessor) target, definition); } else if (target instanceof SendDynamicProcessor) { http://git-wip-us.apache.org/repos/asf/camel/blob/e82fd113/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java new file mode 100644 index 0000000..ea72a46 --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedMulticast.java @@ -0,0 +1,66 @@ +/** + * 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.CamelContext; +import org.apache.camel.api.management.ManagedResource; +import org.apache.camel.api.management.mbean.ManagedMulticastMBean; +import org.apache.camel.model.ProcessorDefinition; +import org.apache.camel.processor.MulticastProcessor; + +/** + * @version + */ +@ManagedResource(description = "Managed Multicast") +public class ManagedMulticast extends ManagedProcessor implements ManagedMulticastMBean { + private final MulticastProcessor processor; + + public ManagedMulticast(CamelContext context, MulticastProcessor processor, ProcessorDefinition<?> definition) { + super(context, processor, definition); + this.processor = processor; + } + + @Override + public Boolean isParallelAggregate() { + return processor.isParallelAggregate(); + } + + @Override + public Boolean isParallelProcessing() { + return processor.isParallelProcessing(); + } + + @Override + public Boolean isStreaming() { + return processor.isStreaming(); + } + + @Override + public Boolean isStopOnException() { + return processor.isStopOnException(); + } + + @Override + public Boolean isShareUnitOfWork() { + return processor.isShareUnitOfWork(); + } + + @Override + public Long getTimeout() { + return processor.getTimeout(); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/e82fd113/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java index 0370305..2358f91 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java @@ -1267,6 +1267,10 @@ public class MulticastProcessor extends ServiceSupport implements AsyncProcessor return parallelProcessing; } + public boolean isParallelAggregate() { + return parallelAggregate; + } + public boolean isShareUnitOfWork() { return shareUnitOfWork; } http://git-wip-us.apache.org/repos/asf/camel/blob/e82fd113/camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java index cd6d174..8adac73 100644 --- a/camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/ManagedMulticastTest.java @@ -18,6 +18,7 @@ package org.apache.camel.management; import javax.management.MBeanServer; import javax.management.ObjectName; +import javax.management.openmbean.TabularData; import org.apache.camel.builder.RouteBuilder; @@ -56,6 +57,21 @@ public class ManagedMulticastTest extends ManagementTestSupport { Long total = (Long) mbeanServer.getAttribute(name, "ExchangesTotal"); assertEquals(3, total.intValue()); + + Boolean parallel = (Boolean) mbeanServer.getAttribute(name, "ParallelProcessing"); + assertEquals(false, parallel.booleanValue()); + + TabularData data = (TabularData) mbeanServer.invoke(name, "explain", new Object[]{false}, new String[]{"boolean"}); + assertNotNull(data); + assertEquals(1, data.size()); + + data = (TabularData) mbeanServer.invoke(name, "explain", new Object[]{true}, new String[]{"boolean"}); + assertNotNull(data); + assertEquals(14, data.size()); + + String json = (String) mbeanServer.invoke(name, "informationJson", null, null); + assertNotNull(json); + assertTrue(json.contains("\"description\": \"Routes the same message to multiple paths either sequentially or in parallel.")); } @Override