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

Reply via email to