This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-13870 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2a6f51a63a32f387e47e8fe94a2529155b259827 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Aug 22 11:56:42 2019 +0200 CAMEL-13870: Fast property configuration of Camel endpoints. Work in progress. --- .../mbean/ManagedBeanIntrospectionMBean.java | 2 +- .../management/mbean/ManagedBeanIntrospection.java | 2 +- .../management/ManagedBeanIntrospectionTest.java | 82 ++++++++++++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanIntrospectionMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanIntrospectionMBean.java index 487bc3b..e187ab8 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanIntrospectionMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedBeanIntrospectionMBean.java @@ -21,6 +21,6 @@ import org.apache.camel.api.management.ManagedAttribute; public interface ManagedBeanIntrospectionMBean extends ManagedServiceMBean { @ManagedAttribute(description = "Number of times bean introspection has been invoked") - long getInvokedCounter(); + Long getInvokedCounter(); } diff --git a/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanIntrospection.java b/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanIntrospection.java index 67faefb..a795e304 100644 --- a/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanIntrospection.java +++ b/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBeanIntrospection.java @@ -39,7 +39,7 @@ public class ManagedBeanIntrospection extends ManagedService implements ManagedB } @Override - public long getInvokedCounter() { + public Long getInvokedCounter() { return beanIntrospection.getInvokedCounter(); } } diff --git a/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBeanIntrospectionTest.java b/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBeanIntrospectionTest.java new file mode 100644 index 0000000..a297dcc --- /dev/null +++ b/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedBeanIntrospectionTest.java @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.management; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import javax.management.MBeanServer; +import javax.management.ObjectName; + +import org.apache.camel.ExtendedCamelContext; +import org.apache.camel.builder.RouteBuilder; +import org.junit.Test; + +public class ManagedBeanIntrospectionTest extends ManagementTestSupport { + + public String getDummy() { + return "MyDummy"; + } + + @Test + public void testManageBeanIntrospection() throws Exception { + // JMX tests dont work well on AIX CI servers (hangs them) + if (isPlatform("aix")) { + return; + } + + getMockEndpoint("mock:result").expectedMessageCount(1); + + template.sendBody("direct:start", "Hello World"); + + assertMockEndpointsSatisfied(); + + // get the bean introspection for the route + MBeanServer mbeanServer = getMBeanServer(); + Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=services,*"), null); + List<ObjectName> list = new ArrayList<>(set); + ObjectName on = null; + for (ObjectName name : list) { + if (name.getCanonicalName().contains("DefaultBeanIntrospection")) { + on = name; + break; + } + } + + assertNotNull("Should have found DefaultBeanIntrospection", on); + + Long counter = (Long) mbeanServer.getAttribute(on, "InvokedCounter"); + assertEquals("Should not have been invoked", 0, counter.intValue()); + + Object dummy = context.getExtension(ExtendedCamelContext.class).getBeanIntrospection().getProperty(this, "dummy"); + assertEquals("MyDummy", dummy); + + counter = (Long) mbeanServer.getAttribute(on, "InvokedCounter"); + assertEquals("Should have been invoked", 1, counter.intValue()); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start").to("mock:result"); + } + }; + } + +} \ No newline at end of file