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 2015/07/21 16:07:37 UTC
[1/6] camel git commit: CAMEL-8526: Add more EIP as specialized mbeans
Repository: camel
Updated Branches:
refs/heads/master 0092f2cb4 -> 4de78cea6
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/b7b463b9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b7b463b9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b7b463b9
Branch: refs/heads/master
Commit: b7b463b984a721b14035243280e3ea804f186e9e
Parents: 0092f2c
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 21 14:01:42 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 21 14:01:42 2015 +0200
----------------------------------------------------------------------
.../management/mbean/ManagedFilterMBean.java | 26 ++++++
.../DefaultManagementObjectStrategy.java | 4 +
.../camel/management/mbean/ManagedFilter.java | 41 +++++++++
.../camel/management/ManagedFilterTest.java | 89 ++++++++++++++++++++
4 files changed, 160 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/b7b463b9/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
new file mode 100644
index 0000000..f2451c0
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
@@ -0,0 +1,26 @@
+/**
+ * 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 ManagedFilterMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Predicate to determine if the message should be filtered or not.")
+ String getFilter();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/b7b463b9/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 705fc2b..bb2426c 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
@@ -42,6 +42,7 @@ import org.apache.camel.management.mbean.ManagedEndpoint;
import org.apache.camel.management.mbean.ManagedEnricher;
import org.apache.camel.management.mbean.ManagedErrorHandler;
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.ManagedPollEnricher;
import org.apache.camel.management.mbean.ManagedProcessor;
@@ -61,6 +62,7 @@ import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.processor.Delayer;
import org.apache.camel.processor.Enricher;
import org.apache.camel.processor.ErrorHandler;
+import org.apache.camel.processor.FilterProcessor;
import org.apache.camel.processor.PollEnricher;
import org.apache.camel.processor.SendDynamicProcessor;
import org.apache.camel.processor.SendProcessor;
@@ -189,6 +191,8 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
answer = new ManagedDelayer(context, (Delayer) target, definition);
} else if (target instanceof Throttler) {
answer = new ManagedThrottler(context, (Throttler) target, definition);
+ } else if (target instanceof FilterProcessor) {
+ answer = new ManagedFilter(context, (FilterProcessor) 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/b7b463b9/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
new file mode 100644
index 0000000..c25c36b
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.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.management.mbean;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.ManagedFilterMBean;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.FilterProcessor;
+
+/**
+ * @version
+ */
+@ManagedResource(description = "Managed Filter")
+public class ManagedFilter extends ManagedProcessor implements ManagedFilterMBean {
+ private final FilterProcessor processor;
+
+ public ManagedFilter(CamelContext context, FilterProcessor processor, ProcessorDefinition<?> definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ }
+
+ @Override
+ public String getFilter() {
+ return processor.getPredicate().toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/b7b463b9/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
new file mode 100644
index 0000000..6591c35
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
@@ -0,0 +1,89 @@
+/**
+ * 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 javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * @version
+ */
+public class ManagedFilterTest extends ManagementTestSupport {
+
+ public void testManageFilter() throws Exception {
+ // JMX tests dont work well on AIX CI servers (hangs them)
+ if (isPlatform("aix")) {
+ return;
+ }
+
+ MockEndpoint foo = getMockEndpoint("mock:foo");
+ foo.expectedMessageCount(1);
+
+ template.sendBodyAndHeader("direct:start", "Hello World", "foo", "123");
+
+ assertMockEndpointsSatisfied();
+
+ // get the stats for the route
+ MBeanServer mbeanServer = getMBeanServer();
+
+ // get the object name for the delayer
+ ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=processors,name=\"mysend\"");
+
+ // should be on route1
+ String routeId = (String) mbeanServer.getAttribute(on, "RouteId");
+ assertEquals("route1", routeId);
+
+ String camelId = (String) mbeanServer.getAttribute(on, "CamelId");
+ assertEquals("camel-1", camelId);
+
+ String state = (String) mbeanServer.getAttribute(on, "State");
+ assertEquals(ServiceStatus.Started.name(), state);
+
+ String uri = (String) mbeanServer.getAttribute(on, "Filter");
+ assertEquals("header{header(foo)}", uri);
+
+ TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{false}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(2, data.size());
+
+ data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{true}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(4, data.size());
+
+ String json = (String) mbeanServer.invoke(on, "informationJson", null, null);
+ assertNotNull(json);
+ assertTrue(json.contains("\"description\": \"Filter out messages based using a predicate"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .filter(header("foo")).id("mysend")
+ .to("mock:foo");
+ }
+ };
+ }
+
+}
[3/6] camel git commit: CAMEL-8526: Add more EIP as specialized mbeans
Posted by da...@apache.org.
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/f19c32c6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f19c32c6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f19c32c6
Branch: refs/heads/master
Commit: f19c32c645da2cd871cf701727d2eb2ad62c5010
Parents: 55b3c42
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 21 14:28:52 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 21 14:28:52 2015 +0200
----------------------------------------------------------------------
.../mbean/ManagedDynamicRouterMBean.java | 35 ++++++++
.../mbean/ManagedRoutingSlipMBean.java | 35 ++++++++
.../DefaultManagementObjectStrategy.java | 8 ++
.../management/mbean/ManagedDynamicRouter.java | 58 ++++++++++++
.../management/mbean/ManagedRoutingSlip.java | 58 ++++++++++++
.../org/apache/camel/processor/RoutingSlip.java | 8 ++
.../management/ManagedDynamicRouterTest.java | 92 ++++++++++++++++++++
.../management/ManagedRoutingSlipTest.java | 91 +++++++++++++++++++
8 files changed, 385 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
new file mode 100644
index 0000000..303b514
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
@@ -0,0 +1,35 @@
+/**
+ * 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 ManagedDynamicRouterMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Expression to call that returns the endpoint(s) to route to in the dynamic routing")
+ String getExpression();
+
+ @ManagedAttribute(description = "The uri delimiter to use")
+ String getUriDelimiter();
+
+ @ManagedAttribute(description = "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers")
+ Integer getCacheSize();
+
+ @ManagedAttribute(description = "Ignore the invalidate endpoint exception when try to create a producer with that endpoint")
+ Boolean isIgnoreInvalidEndpoints();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
new file mode 100644
index 0000000..95130bb
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
@@ -0,0 +1,35 @@
+/**
+ * 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 ManagedRoutingSlipMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Expression to define the routing slip, which defines which endpoints to route the message in a pipeline style.")
+ String getExpression();
+
+ @ManagedAttribute(description = "The uri delimiter to use")
+ String getUriDelimiter();
+
+ @ManagedAttribute(description = "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers")
+ Integer getCacheSize();
+
+ @ManagedAttribute(description = "Ignore the invalidate endpoint exception when try to create a producer with that endpoint")
+ Boolean isIgnoreInvalidEndpoints();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/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 bb2426c..0265623 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
@@ -38,6 +38,7 @@ import org.apache.camel.management.mbean.ManagedCamelContext;
import org.apache.camel.management.mbean.ManagedComponent;
import org.apache.camel.management.mbean.ManagedConsumer;
import org.apache.camel.management.mbean.ManagedDelayer;
+import org.apache.camel.management.mbean.ManagedDynamicRouter;
import org.apache.camel.management.mbean.ManagedEndpoint;
import org.apache.camel.management.mbean.ManagedEnricher;
import org.apache.camel.management.mbean.ManagedErrorHandler;
@@ -48,6 +49,7 @@ import org.apache.camel.management.mbean.ManagedPollEnricher;
import org.apache.camel.management.mbean.ManagedProcessor;
import org.apache.camel.management.mbean.ManagedProducer;
import org.apache.camel.management.mbean.ManagedRoute;
+import org.apache.camel.management.mbean.ManagedRoutingSlip;
import org.apache.camel.management.mbean.ManagedScheduledPollConsumer;
import org.apache.camel.management.mbean.ManagedSendDynamicProcessor;
import org.apache.camel.management.mbean.ManagedSendProcessor;
@@ -60,10 +62,12 @@ import org.apache.camel.management.mbean.ManagedWireTapProcessor;
import org.apache.camel.model.ModelCamelContext;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.processor.Delayer;
+import org.apache.camel.processor.DynamicRouter;
import org.apache.camel.processor.Enricher;
import org.apache.camel.processor.ErrorHandler;
import org.apache.camel.processor.FilterProcessor;
import org.apache.camel.processor.PollEnricher;
+import org.apache.camel.processor.RoutingSlip;
import org.apache.camel.processor.SendDynamicProcessor;
import org.apache.camel.processor.SendProcessor;
import org.apache.camel.processor.Throttler;
@@ -191,6 +195,10 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
answer = new ManagedDelayer(context, (Delayer) target, definition);
} else if (target instanceof Throttler) {
answer = new ManagedThrottler(context, (Throttler) target, definition);
+ } else if (target instanceof DynamicRouter) {
+ answer = new ManagedDynamicRouter(context, (DynamicRouter) target, definition);
+ } else if (target instanceof RoutingSlip) {
+ answer = new ManagedRoutingSlip(context, (RoutingSlip) target, definition);
} else if (target instanceof FilterProcessor) {
answer = new ManagedFilter(context, (FilterProcessor) target, definition);
} else if (target instanceof WireTapProcessor) {
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
new file mode 100644
index 0000000..640effa
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
@@ -0,0 +1,58 @@
+/**
+ * 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.ManagedDynamicRouterMBean;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.DynamicRouter;
+
+/**
+ * @version
+ */
+@ManagedResource(description = "Managed DynamicRouter")
+public class ManagedDynamicRouter extends ManagedProcessor implements ManagedDynamicRouterMBean {
+ private final DynamicRouter processor;
+ private final String uri;
+
+ public ManagedDynamicRouter(CamelContext context, DynamicRouter processor, ProcessorDefinition<?> definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ this.uri = processor.getExpression().toString();
+ }
+
+ @Override
+ public String getExpression() {
+ return uri;
+ }
+
+ @Override
+ public String getUriDelimiter() {
+ return processor.getUriDelimiter();
+ }
+
+ @Override
+ public Integer getCacheSize() {
+ return processor.getCacheSize();
+ }
+
+ @Override
+ public Boolean isIgnoreInvalidEndpoints() {
+ return processor.isIgnoreInvalidEndpoints();
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
new file mode 100644
index 0000000..d2a0b4e
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
@@ -0,0 +1,58 @@
+/**
+ * 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.ManagedDynamicRouterMBean;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.RoutingSlip;
+
+/**
+ * @version
+ */
+@ManagedResource(description = "Managed RoutingSlip")
+public class ManagedRoutingSlip extends ManagedProcessor implements ManagedDynamicRouterMBean {
+ private final RoutingSlip processor;
+ private final String uri;
+
+ public ManagedRoutingSlip(CamelContext context, RoutingSlip processor, ProcessorDefinition<?> definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ this.uri = processor.getExpression().toString();
+ }
+
+ @Override
+ public String getExpression() {
+ return uri;
+ }
+
+ @Override
+ public String getUriDelimiter() {
+ return processor.getUriDelimiter();
+ }
+
+ @Override
+ public Integer getCacheSize() {
+ return processor.getCacheSize();
+ }
+
+ @Override
+ public Boolean isIgnoreInvalidEndpoints() {
+ return processor.isIgnoreInvalidEndpoints();
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
index 8de6624..c41112e 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -113,6 +113,14 @@ public class RoutingSlip extends ServiceSupport implements AsyncProcessor, Trace
this.id = id;
}
+ public Expression getExpression() {
+ return expression;
+ }
+
+ public String getUriDelimiter() {
+ return uriDelimiter;
+ }
+
public void setDelimiter(String delimiter) {
this.uriDelimiter = delimiter;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
new file mode 100644
index 0000000..10432b9
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedDynamicRouterTest.java
@@ -0,0 +1,92 @@
+/**
+ * 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 javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * @version
+ */
+public class ManagedDynamicRouterTest extends ManagementTestSupport {
+
+ public void testManageDynamicRouter() throws Exception {
+ // JMX tests dont work well on AIX CI servers (hangs them)
+ if (isPlatform("aix")) {
+ return;
+ }
+
+ MockEndpoint foo = getMockEndpoint("mock:foo");
+ foo.expectedMessageCount(1);
+
+ template.sendBodyAndHeader("direct:start", "Hello World", "whereTo", "direct:foo");
+
+ assertMockEndpointsSatisfied();
+
+ // get the stats for the route
+ MBeanServer mbeanServer = getMBeanServer();
+
+ // get the object name for the delayer
+ ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=processors,name=\"mysend\"");
+
+ // should be on route1
+ String routeId = (String) mbeanServer.getAttribute(on, "RouteId");
+ assertEquals("route1", routeId);
+
+ String camelId = (String) mbeanServer.getAttribute(on, "CamelId");
+ assertEquals("camel-1", camelId);
+
+ String state = (String) mbeanServer.getAttribute(on, "State");
+ assertEquals(ServiceStatus.Started.name(), state);
+
+ String uri = (String) mbeanServer.getAttribute(on, "Expression");
+ assertEquals("header(whereTo)", uri);
+
+ TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{false}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(2, data.size());
+
+ data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{true}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(6, data.size());
+
+ String json = (String) mbeanServer.invoke(on, "informationJson", null, null);
+ assertNotNull(json);
+ assertTrue(json.contains("\"description\": \"Routes messages based on dynamic rules"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .dynamicRouter(header("whereTo")).id("mysend");
+
+ from("direct:foo")
+ .to("mock:foo")
+ .removeHeader("whereTo");
+ }
+ };
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/f19c32c6/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
new file mode 100644
index 0000000..0cb0ae4
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRoutingSlipTest.java
@@ -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;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * @version
+ */
+public class ManagedRoutingSlipTest extends ManagementTestSupport {
+
+ public void testManageRoutingSlip() throws Exception {
+ // JMX tests dont work well on AIX CI servers (hangs them)
+ if (isPlatform("aix")) {
+ return;
+ }
+
+ MockEndpoint foo = getMockEndpoint("mock:foo");
+ foo.expectedMessageCount(1);
+
+ template.sendBodyAndHeader("direct:start", "Hello World", "whereTo", "direct:foo");
+
+ assertMockEndpointsSatisfied();
+
+ // get the stats for the route
+ MBeanServer mbeanServer = getMBeanServer();
+
+ // get the object name for the delayer
+ ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=processors,name=\"mysend\"");
+
+ // should be on route1
+ String routeId = (String) mbeanServer.getAttribute(on, "RouteId");
+ assertEquals("route1", routeId);
+
+ String camelId = (String) mbeanServer.getAttribute(on, "CamelId");
+ assertEquals("camel-1", camelId);
+
+ String state = (String) mbeanServer.getAttribute(on, "State");
+ assertEquals(ServiceStatus.Started.name(), state);
+
+ String uri = (String) mbeanServer.getAttribute(on, "Expression");
+ assertEquals("header(whereTo)", uri);
+
+ TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{false}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(3, data.size());
+
+ data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{true}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(6, data.size());
+
+ String json = (String) mbeanServer.invoke(on, "informationJson", null, null);
+ assertNotNull(json);
+ assertTrue(json.contains("\"description\": \"Routes a message through a series of steps that are pre-determined (the slip)"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .routingSlip(header("whereTo")).id("mysend");
+
+ from("direct:foo")
+ .to("mock:foo");
+ }
+ };
+ }
+
+}
[4/6] camel git commit: CAMEL-8526: Add more EIP as specialized mbeans
Posted by da...@apache.org.
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/1ee9b41d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1ee9b41d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1ee9b41d
Branch: refs/heads/master
Commit: 1ee9b41dab972a73d618bba72121aa2437235a64
Parents: f19c32c
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 21 14:38:14 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 21 14:38:14 2015 +0200
----------------------------------------------------------------------
.../api/management/mbean/ManagedLoopMBean.java | 29 +++++++
.../DefaultManagementObjectStrategy.java | 4 +
.../camel/management/mbean/ManagedLoop.java | 48 +++++++++++
.../apache/camel/processor/LoopProcessor.java | 4 +
.../camel/management/ManagedLoopTest.java | 89 ++++++++++++++++++++
5 files changed, 174 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/1ee9b41d/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
new file mode 100644
index 0000000..0449bf7
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
@@ -0,0 +1,29 @@
+/**
+ * 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 ManagedLoopMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Expression to define how many times we should loop")
+ String getExpression();
+
+ @ManagedAttribute(description = "Whether a copy of the input Exchange is used for each iteration")
+ Boolean isCopy();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/1ee9b41d/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 0265623..eda6441 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
@@ -45,6 +45,7 @@ import org.apache.camel.management.mbean.ManagedErrorHandler;
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.ManagedPollEnricher;
import org.apache.camel.management.mbean.ManagedProcessor;
import org.apache.camel.management.mbean.ManagedProducer;
@@ -66,6 +67,7 @@ import org.apache.camel.processor.DynamicRouter;
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.PollEnricher;
import org.apache.camel.processor.RoutingSlip;
import org.apache.camel.processor.SendDynamicProcessor;
@@ -201,6 +203,8 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
answer = new ManagedRoutingSlip(context, (RoutingSlip) target, definition);
} else if (target instanceof FilterProcessor) {
answer = new ManagedFilter(context, (FilterProcessor) target, definition);
+ } else if (target instanceof LoopProcessor) {
+ answer = new ManagedLoop(context, (LoopProcessor) 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/1ee9b41d/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
new file mode 100644
index 0000000..8d791c7
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
@@ -0,0 +1,48 @@
+/**
+ * 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.ManagedLoopMBean;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.LoopProcessor;
+
+/**
+ * @version
+ */
+@ManagedResource(description = "Managed Loop")
+public class ManagedLoop extends ManagedProcessor implements ManagedLoopMBean {
+ private final LoopProcessor processor;
+ private final String uri;
+
+ public ManagedLoop(CamelContext context, LoopProcessor processor, ProcessorDefinition<?> definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ this.uri = processor.getExpression().toString();
+ }
+
+ @Override
+ public String getExpression() {
+ return uri;
+ }
+
+ @Override
+ public Boolean isCopy() {
+ return processor.isCopy();
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/1ee9b41d/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
index 124ba89..7b2c6d6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
@@ -183,6 +183,10 @@ public class LoopProcessor extends DelegateAsyncProcessor implements Traceable,
return expression;
}
+ public boolean isCopy() {
+ return copy;
+ }
+
public String getTraceLabel() {
return "loop[" + expression + "]";
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1ee9b41d/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
new file mode 100644
index 0000000..bbacb6d
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
@@ -0,0 +1,89 @@
+/**
+ * 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 javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * @version
+ */
+public class ManagedLoopTest extends ManagementTestSupport {
+
+ public void testManageLoop() throws Exception {
+ // JMX tests dont work well on AIX CI servers (hangs them)
+ if (isPlatform("aix")) {
+ return;
+ }
+
+ MockEndpoint foo = getMockEndpoint("mock:foo");
+ foo.expectedMessageCount(2);
+
+ template.sendBodyAndHeader("direct:start", "Hello World", "foo", "2");
+
+ assertMockEndpointsSatisfied();
+
+ // get the stats for the route
+ MBeanServer mbeanServer = getMBeanServer();
+
+ // get the object name for the delayer
+ ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=processors,name=\"mysend\"");
+
+ // should be on route1
+ String routeId = (String) mbeanServer.getAttribute(on, "RouteId");
+ assertEquals("route1", routeId);
+
+ String camelId = (String) mbeanServer.getAttribute(on, "CamelId");
+ assertEquals("camel-1", camelId);
+
+ String state = (String) mbeanServer.getAttribute(on, "State");
+ assertEquals(ServiceStatus.Started.name(), state);
+
+ String uri = (String) mbeanServer.getAttribute(on, "Expression");
+ assertEquals("header{foo}", uri);
+
+ TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{false}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(2, data.size());
+
+ data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{true}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(5, data.size());
+
+ String json = (String) mbeanServer.invoke(on, "informationJson", null, null);
+ assertNotNull(json);
+ assertTrue(json.contains("\"description\": \"Processes a message multiple times"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .loop(header("foo")).id("mysend")
+ .to("mock:foo");
+ }
+ };
+ }
+
+}
[2/6] camel git commit: CAMEL-8526: Add runtime filter count stat to
mbean
Posted by da...@apache.org.
CAMEL-8526: Add runtime filter count stat to mbean
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/55b3c424
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/55b3c424
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/55b3c424
Branch: refs/heads/master
Commit: 55b3c424a1176a51c06e4f8253c3cb7a8b1b954e
Parents: b7b463b
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 21 14:12:55 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 21 14:15:49 2015 +0200
----------------------------------------------------------------------
.../api/management/mbean/ManagedFilterMBean.java | 5 ++++-
.../camel/management/mbean/ManagedFilter.java | 11 +++++++++++
.../apache/camel/processor/FilterProcessor.java | 18 ++++++++++++++++++
.../camel/management/ManagedFilterTest.java | 3 +++
4 files changed, 36 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/55b3c424/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
index f2451c0..9dd63c3 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
@@ -20,7 +20,10 @@ import org.apache.camel.api.management.ManagedAttribute;
public interface ManagedFilterMBean extends ManagedProcessorMBean {
- @ManagedAttribute(description = "Predicate to determine if the message should be filtered or not.")
+ @ManagedAttribute(description = "Predicate to determine if the message should be filtered or not")
String getFilter();
+ @ManagedAttribute(description = "Gets the number of Exchanges that matched the filter predicate and therefore as filtered")
+ Long getFilteredCount();
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/55b3c424/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
index c25c36b..fc1afe8 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
@@ -35,7 +35,18 @@ public class ManagedFilter extends ManagedProcessor implements ManagedFilterMBea
}
@Override
+ public synchronized void reset() {
+ processor.reset();
+ super.reset();
+ }
+
+ @Override
public String getFilter() {
return processor.getPredicate().toString();
}
+
+ @Override
+ public Long getFilteredCount() {
+ return processor.getFilteredCount();
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/55b3c424/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
index 64e9324..31bdf93 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/FilterProcessor.java
@@ -36,6 +36,7 @@ public class FilterProcessor extends DelegateAsyncProcessor implements Traceable
private static final Logger LOG = LoggerFactory.getLogger(FilterProcessor.class);
private String id;
private final Predicate predicate;
+ private transient long filtered;
public FilterProcessor(Predicate predicate, Processor processor) {
super(processor);
@@ -57,6 +58,7 @@ public class FilterProcessor extends DelegateAsyncProcessor implements Traceable
exchange.setProperty(Exchange.FILTER_MATCHED, matches);
if (matches) {
+ filtered++;
return processor.process(exchange, callback);
} else {
callback.done(true);
@@ -85,9 +87,25 @@ public class FilterProcessor extends DelegateAsyncProcessor implements Traceable
return predicate;
}
+ /**
+ * Gets the number of Exchanges that matched the filter predicate and therefore as filtered.
+ */
+ public long getFilteredCount() {
+ return filtered;
+ }
+
+ /**
+ * Reset counters.
+ */
+ public void reset() {
+ filtered = 0;
+ }
+
@Override
protected void doStart() throws Exception {
super.doStart();
+ // restart counter
+ reset();
ServiceHelper.startService(predicate);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/55b3c424/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
index 6591c35..2d66095 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
@@ -58,6 +58,9 @@ public class ManagedFilterTest extends ManagementTestSupport {
String state = (String) mbeanServer.getAttribute(on, "State");
assertEquals(ServiceStatus.Started.name(), state);
+ Long count = (Long) mbeanServer.getAttribute(on, "FilteredCount");
+ assertEquals(1, count.longValue());
+
String uri = (String) mbeanServer.getAttribute(on, "Filter");
assertEquals("header{header(foo)}", uri);
[6/6] camel git commit: CAMEL-8526: Add more EIP as specialized mbeans
Posted by da...@apache.org.
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/4de78cea
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4de78cea
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4de78cea
Branch: refs/heads/master
Commit: 4de78cea6e165834e2488179886cda2e2f6d4bb4
Parents: e82fd11
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 21 15:13:20 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 21 15:13:20 2015 +0200
----------------------------------------------------------------------
.../mbean/ManagedDynamicRouterMBean.java | 2 +-
.../management/mbean/ManagedMulticastMBean.java | 12 +--
.../mbean/ManagedRecipientListMBean.java | 50 +++++++++++
.../mbean/ManagedRoutingSlipMBean.java | 2 +-
.../DefaultManagementObjectStrategy.java | 17 ++++
.../management/mbean/ManagedDynamicRouter.java | 15 +++-
.../management/mbean/ManagedRecipientList.java | 94 ++++++++++++++++++++
.../management/mbean/ManagedRoutingSlip.java | 19 +++-
.../apache/camel/processor/RecipientList.java | 8 ++
.../management/ManagedRecipientListTest.java | 91 +++++++++++++++++++
10 files changed, 296 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
index 303b514..7a6abf3 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedDynamicRouterMBean.java
@@ -20,7 +20,7 @@ import org.apache.camel.api.management.ManagedAttribute;
public interface ManagedDynamicRouterMBean extends ManagedProcessorMBean {
- @ManagedAttribute(description = "Expression to call that returns the endpoint(s) to route to in the dynamic routing")
+ @ManagedAttribute(description = "Expression to call that returns the endpoint(s) to route to in the dynamic routing", mask = true)
String getExpression();
@ManagedAttribute(description = "The uri delimiter to use")
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/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
index 98c7c6c..edd8513 100644
--- 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
@@ -20,22 +20,22 @@ import org.apache.camel.api.management.ManagedAttribute;
public interface ManagedMulticastMBean extends ManagedProcessorMBean {
- @ManagedAttribute(description = "")
+ @ManagedAttribute(description = "If enabled then the aggregate method on AggregationStrategy can be called concurrently.")
Boolean isParallelAggregate();
- @ManagedAttribute(description = "")
+ @ManagedAttribute(description = "If enabled then sending messages to the multicasts occurs concurrently.")
Boolean isParallelProcessing();
- @ManagedAttribute(description = "")
+ @ManagedAttribute(description = "If enabled then Camel will process replies out-of-order, eg in the order they come back.")
Boolean isStreaming();
- @ManagedAttribute(description = "")
+ @ManagedAttribute(description = "Will now stop further processing if an exception or failure occurred during processing.")
Boolean isStopOnException();
- @ManagedAttribute(description = "")
+ @ManagedAttribute(description = "Shares the UnitOfWork with the parent and the resource exchange")
Boolean isShareUnitOfWork();
- @ManagedAttribute(description = "")
+ @ManagedAttribute(description = "The total timeout specified in millis, when using parallel processing.")
Long getTimeout();
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
new file mode 100644
index 0000000..73d4a3e
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRecipientListMBean.java
@@ -0,0 +1,50 @@
+/**
+ * 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 ManagedRecipientListMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Expression that returns which endpoints (url) to send the message to (the recipients).", mask = true)
+ String getExpression();
+
+ @ManagedAttribute(description = "The uri delimiter to use")
+ String getUriDelimiter();
+
+ @ManagedAttribute(description = "Sets the maximum size used by the ProducerCache which is used to cache and reuse producers")
+ Integer getCacheSize();
+
+ @ManagedAttribute(description = "If enabled then the aggregate method on AggregationStrategy can be called concurrently.")
+ Boolean isParallelAggregate();
+
+ @ManagedAttribute(description = "If enabled then sending messages to the recipient lists occurs concurrently.")
+ Boolean isParallelProcessing();
+
+ @ManagedAttribute(description = "If enabled then Camel will process replies out-of-order, eg in the order they come back.")
+ Boolean isStreaming();
+
+ @ManagedAttribute(description = "Will now stop further processing if an exception or failure occurred during processing.")
+ Boolean isStopOnException();
+
+ @ManagedAttribute(description = "Shares the UnitOfWork with the parent and the resource exchange")
+ Boolean isShareUnitOfWork();
+
+ @ManagedAttribute(description = "The total timeout specified in millis, when using parallel processing.")
+ Long getTimeout();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
index 95130bb..22fb510 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRoutingSlipMBean.java
@@ -20,7 +20,7 @@ import org.apache.camel.api.management.ManagedAttribute;
public interface ManagedRoutingSlipMBean extends ManagedProcessorMBean {
- @ManagedAttribute(description = "Expression to define the routing slip, which defines which endpoints to route the message in a pipeline style.")
+ @ManagedAttribute(description = "Expression to define the routing slip, which defines which endpoints to route the message in a pipeline style.", mask = true)
String getExpression();
@ManagedAttribute(description = "The uri delimiter to use")
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/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 be00fce..b00f746 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
@@ -16,6 +16,7 @@
*/
package org.apache.camel.management;
+import java.util.Iterator;
import java.util.concurrent.ThreadPoolExecutor;
import org.apache.camel.CamelContext;
@@ -50,6 +51,7 @@ 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;
+import org.apache.camel.management.mbean.ManagedRecipientList;
import org.apache.camel.management.mbean.ManagedRoute;
import org.apache.camel.management.mbean.ManagedRoutingSlip;
import org.apache.camel.management.mbean.ManagedScheduledPollConsumer;
@@ -63,6 +65,8 @@ import org.apache.camel.management.mbean.ManagedThroughputLogger;
import org.apache.camel.management.mbean.ManagedWireTapProcessor;
import org.apache.camel.model.ModelCamelContext;
import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RecipientListDefinition;
+import org.apache.camel.model.ThreadsDefinition;
import org.apache.camel.processor.Delayer;
import org.apache.camel.processor.DynamicRouter;
import org.apache.camel.processor.Enricher;
@@ -70,7 +74,9 @@ 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.Pipeline;
import org.apache.camel.processor.PollEnricher;
+import org.apache.camel.processor.RecipientList;
import org.apache.camel.processor.RoutingSlip;
import org.apache.camel.processor.SendDynamicProcessor;
import org.apache.camel.processor.SendProcessor;
@@ -185,6 +191,15 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
ProcessorDefinition<?> definition, Route route) {
ManagedProcessor answer = null;
+ if (definition instanceof RecipientListDefinition || definition instanceof ThreadsDefinition) {
+ // special for RecipientListDefinition/ThreadsDefinition, as the processor is wrapped in a pipeline as last
+ Pipeline pipeline = (Pipeline) processor;
+ Iterator<Processor> it = pipeline.getProcessors().iterator();
+ while (it.hasNext()) {
+ processor = it.next();
+ }
+ }
+
// unwrap delegates as we want the real target processor
Processor target = processor;
while (target != null) {
@@ -207,6 +222,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 RecipientList) {
+ answer = new ManagedRecipientList(context, (RecipientList) target, definition);
} else if (target instanceof MulticastProcessor) {
answer = new ManagedMulticast(context, (MulticastProcessor) target, definition);
} else if (target instanceof WireTapProcessor) {
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
index 640effa..9da30d6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedDynamicRouter.java
@@ -21,6 +21,8 @@ import org.apache.camel.api.management.ManagedResource;
import org.apache.camel.api.management.mbean.ManagedDynamicRouterMBean;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.processor.DynamicRouter;
+import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.util.URISupport;
/**
* @version
@@ -28,12 +30,21 @@ import org.apache.camel.processor.DynamicRouter;
@ManagedResource(description = "Managed DynamicRouter")
public class ManagedDynamicRouter extends ManagedProcessor implements ManagedDynamicRouterMBean {
private final DynamicRouter processor;
- private final String uri;
+ private String uri;
public ManagedDynamicRouter(CamelContext context, DynamicRouter processor, ProcessorDefinition<?> definition) {
super(context, processor, definition);
this.processor = processor;
- this.uri = processor.getExpression().toString();
+ }
+
+ @Override
+ public void init(ManagementStrategy strategy) {
+ super.init(strategy);
+ boolean sanitize = strategy.getManagementAgent().getMask() != null ? strategy.getManagementAgent().getMask() : false;
+ uri = processor.getExpression().toString();
+ if (sanitize) {
+ uri = URISupport.sanitizeUri(uri);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
new file mode 100644
index 0000000..91046d0
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRecipientList.java
@@ -0,0 +1,94 @@
+/**
+ * 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.ManagedRecipientListMBean;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.RecipientList;
+import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.util.URISupport;
+
+/**
+ * @version
+ */
+@ManagedResource(description = "Managed RecipientList")
+public class ManagedRecipientList extends ManagedProcessor implements ManagedRecipientListMBean {
+ private final RecipientList processor;
+ private String uri;
+
+ public ManagedRecipientList(CamelContext context, RecipientList processor, ProcessorDefinition<?> definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ }
+
+ @Override
+ public void init(ManagementStrategy strategy) {
+ super.init(strategy);
+ boolean sanitize = strategy.getManagementAgent().getMask() != null ? strategy.getManagementAgent().getMask() : false;
+ uri = processor.getExpression().toString();
+ if (sanitize) {
+ uri = URISupport.sanitizeUri(uri);
+ }
+ }
+
+ @Override
+ public String getExpression() {
+ return uri;
+ }
+
+ @Override
+ public String getUriDelimiter() {
+ return processor.getDelimiter();
+ }
+
+ @Override
+ public Integer getCacheSize() {
+ return processor.getCacheSize();
+ }
+
+ @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/4de78cea/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
index d2a0b4e..1ea0da9 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoutingSlip.java
@@ -18,22 +18,33 @@ 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.ManagedDynamicRouterMBean;
+import org.apache.camel.api.management.mbean.ManagedRoutingSlipMBean;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.processor.RoutingSlip;
+import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.util.URISupport;
/**
* @version
*/
@ManagedResource(description = "Managed RoutingSlip")
-public class ManagedRoutingSlip extends ManagedProcessor implements ManagedDynamicRouterMBean {
+public class ManagedRoutingSlip extends ManagedProcessor implements ManagedRoutingSlipMBean {
private final RoutingSlip processor;
- private final String uri;
+ private String uri;
public ManagedRoutingSlip(CamelContext context, RoutingSlip processor, ProcessorDefinition<?> definition) {
super(context, processor, definition);
this.processor = processor;
- this.uri = processor.getExpression().toString();
+ }
+
+ @Override
+ public void init(ManagementStrategy strategy) {
+ super.init(strategy);
+ boolean sanitize = strategy.getManagementAgent().getMask() != null ? strategy.getManagementAgent().getMask() : false;
+ uri = processor.getExpression().toString();
+ if (sanitize) {
+ uri = URISupport.sanitizeUri(uri);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
index a5a0c0d..3d14b69 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
@@ -213,6 +213,14 @@ public class RecipientList extends ServiceSupport implements AsyncProcessor, IdA
}
}
+ public Expression getExpression() {
+ return expression;
+ }
+
+ public String getDelimiter() {
+ return delimiter;
+ }
+
public boolean isStreaming() {
return streaming;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/4de78cea/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
new file mode 100644
index 0000000..3b2661f3
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRecipientListTest.java
@@ -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;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * @version
+ */
+public class ManagedRecipientListTest extends ManagementTestSupport {
+
+ public void testManageRecipientList() throws Exception {
+ // JMX tests dont work well on AIX CI servers (hangs them)
+ if (isPlatform("aix")) {
+ return;
+ }
+
+ MockEndpoint foo = getMockEndpoint("mock:foo");
+ foo.expectedMessageCount(1);
+
+ template.sendBodyAndHeader("direct:start", "Hello World", "foo", "mock:foo");
+
+ assertMockEndpointsSatisfied();
+
+ // get the stats for the route
+ MBeanServer mbeanServer = getMBeanServer();
+
+ // get the object name for the delayer
+ ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=processors,name=\"mysend\"");
+
+ // should be on route1
+ String routeId = (String) mbeanServer.getAttribute(on, "RouteId");
+ assertEquals("route1", routeId);
+
+ String camelId = (String) mbeanServer.getAttribute(on, "CamelId");
+ assertEquals("camel-1", camelId);
+
+ String state = (String) mbeanServer.getAttribute(on, "State");
+ assertEquals(ServiceStatus.Started.name(), state);
+
+ Boolean parallel = (Boolean) mbeanServer.getAttribute(on, "ParallelProcessing");
+ assertEquals(false, parallel.booleanValue());
+
+ String uri = (String) mbeanServer.getAttribute(on, "Expression");
+ assertEquals("header(foo)", uri);
+
+ TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{false}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(2, data.size());
+
+ data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{true}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(17, data.size());
+
+ String json = (String) mbeanServer.invoke(on, "informationJson", null, null);
+ assertNotNull(json);
+ assertTrue(json.contains("\"description\": \"Routes messages to a number of dynamically specified recipients (dynamic to)"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .recipientList(header("foo")).id("mysend");
+ }
+ };
+ }
+
+}
[5/6] camel git commit: CAMEL-8526: Add more EIP as specialized mbeans
Posted by da...@apache.org.
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 <da...@apache.org>
Authored: Tue Jul 21 14:50:26 2015 +0200
Committer: Claus Ibsen <da...@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