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 2014/02/04 10:32:24 UTC

[1/2] git commit: CAMEL-7164: Expose more information in JMX for type converter registry.

Updated Branches:
  refs/heads/camel-2.12.x b0adea066 -> a5af43c13
  refs/heads/master 6733d2120 -> d4059b2d9


CAMEL-7164: Expose more information in JMX for type converter registry.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d4059b2d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d4059b2d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d4059b2d

Branch: refs/heads/master
Commit: d4059b2d9a71b544facd9b7ef5ed5edfcbcee125
Parents: 6733d21
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Feb 4 10:32:48 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Feb 4 10:32:48 2014 +0100

----------------------------------------------------------------------
 .../management/mbean/CamelOpenMBeanTypes.java   | 42 ++++++++++++++++++++
 .../ManagedTypeConverterRegistryMBean.java      |  5 +++
 .../converter/BaseTypeConverterRegistry.java    |  8 ++++
 .../mbean/ManagedTypeConverterRegistry.java     | 24 +++++++++++
 .../apache/camel/spi/TypeConverterRegistry.java | 11 +++++
 .../ManagedTypeConverterRegistryTest.java       |  5 +++
 .../camel/core/osgi/OsgiTypeConverter.java      |  5 +++
 .../osgi/test/MockTypeConverterRegistry.java    |  4 ++
 8 files changed, 104 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
new file mode 100644
index 0000000..6cbdb30
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
@@ -0,0 +1,42 @@
+/**
+ * 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 javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularType;
+
+/**
+ * Various JMX openmbean types used by Camel.
+ */
+public final class CamelOpenMBeanTypes {
+
+    private CamelOpenMBeanTypes() {
+    }
+
+    public static TabularType listTypeConvertersTabularType() throws OpenDataException {
+        CompositeType ct = listTypeConvertersCompositeType();
+        return new TabularType("listTypeConverters", "Lists all the type converters in the registry (from -> to)", ct, new String[]{"from", "to"});
+    }
+
+    public static CompositeType listTypeConvertersCompositeType() throws OpenDataException {
+        return new CompositeType("types", "From/To types", new String[]{"from", "to"},
+                new String[]{"From type", "To type"}, new OpenType[]{SimpleType.STRING, SimpleType.STRING});
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
index 89070de..650b62c 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.api.management.mbean;
 
+import javax.management.openmbean.TabularData;
+
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
 
@@ -48,4 +50,7 @@ public interface ManagedTypeConverterRegistryMBean extends ManagedServiceMBean {
     @ManagedOperation(description = "Checks whether a type converter exists for converting (from -> to)")
     boolean hasTypeConverter(String fromType, String toType);
 
+    @ManagedOperation(description = "Lists all the type converters in the registry (from -> to)")
+    TabularData listTypeConverters();
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index 0c726d2..5443e75 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -513,6 +513,14 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement
         return null;
     }
 
+    public List<Class[]> listAllTypeConvertersFromTo() {
+        List<Class[]> answer = new ArrayList<Class[]>(typeMappings.size());
+        for (TypeMapping mapping : typeMappings.keySet()) {
+            answer.add(new Class[]{mapping.getFromType(), mapping.getToType()});
+        }
+        return answer;
+    }
+
     /**
      * Loads the core type converters which is mandatory to use Camel
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
index 1a735d8..f4e4bc3 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
@@ -16,8 +16,16 @@
  */
 package org.apache.camel.management.mbean;
 
+import java.util.List;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
 import org.apache.camel.api.management.mbean.ManagedTypeConverterRegistryMBean;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.util.ObjectHelper;
@@ -81,4 +89,20 @@ public class ManagedTypeConverterRegistry extends ManagedService implements Mana
         }
     }
 
+    public TabularData listTypeConverters() {
+        try {
+            TabularData answer = new TabularDataSupport(CamelOpenMBeanTypes.listTypeConvertersTabularType());
+            List<Class[]> converters = registry.listAllTypeConvertersFromTo();
+            for (Class[] entry : converters) {
+                CompositeType ct = CamelOpenMBeanTypes.listTypeConvertersCompositeType();
+                String from = entry[0].getCanonicalName();
+                String to = entry[1].getCanonicalName();
+                CompositeData data = new CompositeDataSupport(ct, new String[]{"from", "to"}, new Object[]{from, to});
+                answer.put(data);
+            }
+            return answer;
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
index b56d40f..3896fbc 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
@@ -16,8 +16,12 @@
  */
 package org.apache.camel.spi;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.camel.StaticService;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.util.KeyValueHolder;
 
 /**
  * Registry for type converters.
@@ -108,6 +112,13 @@ public interface TypeConverterRegistry extends StaticService {
     TypeConverter lookup(Class<?> toType, Class<?> fromType);
 
     /**
+     * Gets a read-only list of the type converter from / to classes
+     *
+     * @return a list containing fromType/toType class names
+     */
+    List<Class[]> listAllTypeConvertersFromTo();
+
+    /**
      * Sets the injector to be used for creating new instances during type conversions.
      *
      * @param injector the injector

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
index c2b6a32..e93d0d0 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
@@ -20,6 +20,7 @@ import java.util.Set;
 import javax.management.Attribute;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
 
 import org.apache.camel.builder.RouteBuilder;
 
@@ -98,6 +99,10 @@ public class ManagedTypeConverterRegistryTest extends ManagementTestSupport {
 
         has = (Boolean) mbeanServer.invoke(name, "hasTypeConverter", new Object[]{"java.math.BigInteger", "int"}, new String[]{"java.lang.String", "java.lang.String"});
         assertFalse("Should not have type converter", has.booleanValue());
+
+        // we have more than 150 converters out of the box
+        TabularData data = (TabularData) mbeanServer.invoke(name, "listTypeConverters", null, null);
+        assertTrue("Should be more than 150 converters, was: " + data.size(), data.size() >= 150);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
index a9a3810..e5452fe 100644
--- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
+++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
@@ -17,6 +17,7 @@
 package org.apache.camel.core.osgi;
 
 import java.util.Collections;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.camel.Exchange;
@@ -139,6 +140,10 @@ public class OsgiTypeConverter extends ServiceSupport implements TypeConverter,
         return getDelegate().lookup(toType, fromType);
     }
 
+    public List<Class[]> listAllTypeConvertersFromTo() {
+        return getDelegate().listAllTypeConvertersFromTo();
+    }
+
     public void setInjector(Injector injector) {
         getDelegate().setInjector(injector);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/d4059b2d/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java b/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
index d43bc9d..45ef590 100644
--- a/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
+++ b/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
@@ -52,6 +52,10 @@ public class MockTypeConverterRegistry implements TypeConverterRegistry {
         return null;
     }
 
+    public List<Class[]> listAllTypeConvertersFromTo() {
+        return null;
+    }
+
     public void setInjector(Injector injector) {
        // do nothing
     }


[2/2] git commit: CAMEL-7164: Expose more information in JMX for type converter registry.

Posted by da...@apache.org.
CAMEL-7164: Expose more information in JMX for type converter registry.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a5af43c1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a5af43c1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a5af43c1

Branch: refs/heads/camel-2.12.x
Commit: a5af43c139cea27be3d0f5acc325d2088e1d2f12
Parents: b0adea0
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Feb 4 10:32:48 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Feb 4 10:33:12 2014 +0100

----------------------------------------------------------------------
 .../management/mbean/CamelOpenMBeanTypes.java   | 42 ++++++++++++++++++++
 .../ManagedTypeConverterRegistryMBean.java      |  5 +++
 .../converter/BaseTypeConverterRegistry.java    |  8 ++++
 .../mbean/ManagedTypeConverterRegistry.java     | 24 +++++++++++
 .../apache/camel/spi/TypeConverterRegistry.java | 11 +++++
 .../ManagedTypeConverterRegistryTest.java       |  5 +++
 .../camel/core/osgi/OsgiTypeConverter.java      |  5 +++
 .../osgi/test/MockTypeConverterRegistry.java    |  4 ++
 8 files changed, 104 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
new file mode 100644
index 0000000..6cbdb30
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
@@ -0,0 +1,42 @@
+/**
+ * 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 javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularType;
+
+/**
+ * Various JMX openmbean types used by Camel.
+ */
+public final class CamelOpenMBeanTypes {
+
+    private CamelOpenMBeanTypes() {
+    }
+
+    public static TabularType listTypeConvertersTabularType() throws OpenDataException {
+        CompositeType ct = listTypeConvertersCompositeType();
+        return new TabularType("listTypeConverters", "Lists all the type converters in the registry (from -> to)", ct, new String[]{"from", "to"});
+    }
+
+    public static CompositeType listTypeConvertersCompositeType() throws OpenDataException {
+        return new CompositeType("types", "From/To types", new String[]{"from", "to"},
+                new String[]{"From type", "To type"}, new OpenType[]{SimpleType.STRING, SimpleType.STRING});
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
index 89070de..650b62c 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedTypeConverterRegistryMBean.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.api.management.mbean;
 
+import javax.management.openmbean.TabularData;
+
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedOperation;
 
@@ -48,4 +50,7 @@ public interface ManagedTypeConverterRegistryMBean extends ManagedServiceMBean {
     @ManagedOperation(description = "Checks whether a type converter exists for converting (from -> to)")
     boolean hasTypeConverter(String fromType, String toType);
 
+    @ManagedOperation(description = "Lists all the type converters in the registry (from -> to)")
+    TabularData listTypeConverters();
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index 0c726d2..5443e75 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -513,6 +513,14 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement
         return null;
     }
 
+    public List<Class[]> listAllTypeConvertersFromTo() {
+        List<Class[]> answer = new ArrayList<Class[]>(typeMappings.size());
+        for (TypeMapping mapping : typeMappings.keySet()) {
+            answer.add(new Class[]{mapping.getFromType(), mapping.getToType()});
+        }
+        return answer;
+    }
+
     /**
      * Loads the core type converters which is mandatory to use Camel
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
index 1a735d8..f4e4bc3 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
@@ -16,8 +16,16 @@
  */
 package org.apache.camel.management.mbean;
 
+import java.util.List;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
 import org.apache.camel.api.management.mbean.ManagedTypeConverterRegistryMBean;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.util.ObjectHelper;
@@ -81,4 +89,20 @@ public class ManagedTypeConverterRegistry extends ManagedService implements Mana
         }
     }
 
+    public TabularData listTypeConverters() {
+        try {
+            TabularData answer = new TabularDataSupport(CamelOpenMBeanTypes.listTypeConvertersTabularType());
+            List<Class[]> converters = registry.listAllTypeConvertersFromTo();
+            for (Class[] entry : converters) {
+                CompositeType ct = CamelOpenMBeanTypes.listTypeConvertersCompositeType();
+                String from = entry[0].getCanonicalName();
+                String to = entry[1].getCanonicalName();
+                CompositeData data = new CompositeDataSupport(ct, new String[]{"from", "to"}, new Object[]{from, to});
+                answer.put(data);
+            }
+            return answer;
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
index b56d40f..3896fbc 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
@@ -16,8 +16,12 @@
  */
 package org.apache.camel.spi;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.camel.StaticService;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.util.KeyValueHolder;
 
 /**
  * Registry for type converters.
@@ -108,6 +112,13 @@ public interface TypeConverterRegistry extends StaticService {
     TypeConverter lookup(Class<?> toType, Class<?> fromType);
 
     /**
+     * Gets a read-only list of the type converter from / to classes
+     *
+     * @return a list containing fromType/toType class names
+     */
+    List<Class[]> listAllTypeConvertersFromTo();
+
+    /**
      * Sets the injector to be used for creating new instances during type conversions.
      *
      * @param injector the injector

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
index bc9e1e4..0af9503 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedTypeConverterRegistryTest.java
@@ -20,6 +20,7 @@ import java.util.Set;
 import javax.management.Attribute;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
 
 import org.apache.camel.builder.RouteBuilder;
 
@@ -98,6 +99,10 @@ public class ManagedTypeConverterRegistryTest extends ManagementTestSupport {
 
         has = (Boolean) mbeanServer.invoke(name, "hasTypeConverter", new Object[]{"java.math.BigInteger", "int"}, new String[]{"java.lang.String", "java.lang.String"});
         assertFalse("Should not have type converter", has.booleanValue());
+
+        // we have more than 150 converters out of the box
+        TabularData data = (TabularData) mbeanServer.invoke(name, "listTypeConverters", null, null);
+        assertTrue("Should be more than 150 converters, was: " + data.size(), data.size() >= 150);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
index a9a3810..e5452fe 100644
--- a/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
+++ b/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java
@@ -17,6 +17,7 @@
 package org.apache.camel.core.osgi;
 
 import java.util.Collections;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.camel.Exchange;
@@ -139,6 +140,10 @@ public class OsgiTypeConverter extends ServiceSupport implements TypeConverter,
         return getDelegate().lookup(toType, fromType);
     }
 
+    public List<Class[]> listAllTypeConvertersFromTo() {
+        return getDelegate().listAllTypeConvertersFromTo();
+    }
+
     public void setInjector(Injector injector) {
         getDelegate().setInjector(injector);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/a5af43c1/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java b/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
index d43bc9d..45ef590 100644
--- a/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
+++ b/components/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/test/MockTypeConverterRegistry.java
@@ -52,6 +52,10 @@ public class MockTypeConverterRegistry implements TypeConverterRegistry {
         return null;
     }
 
+    public List<Class[]> listAllTypeConvertersFromTo() {
+        return null;
+    }
+
     public void setInjector(Injector injector) {
        // do nothing
     }