Updated Branches: refs/heads/camel-2.12.x f2749a941 -> cbb4ad2a5 refs/heads/master 5f726d0b9 -> a976a730e
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/a976a730 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a976a730 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a976a730 Branch: refs/heads/master Commit: a976a730e9b48971a5eaf1737b60ed514d703652 Parents: 5f726d0 Author: Claus Ibsen <[email protected]> Authored: Tue Feb 4 08:54:01 2014 +0100 Committer: Claus Ibsen <[email protected]> Committed: Tue Feb 4 08:54:01 2014 +0100 ---------------------------------------------------------------------- .../mbean/ManagedTypeConverterRegistryMBean.java | 6 ++++++ .../impl/converter/BaseTypeConverterRegistry.java | 5 +++++ .../mbean/ManagedTypeConverterRegistry.java | 16 ++++++++++++++++ .../org/apache/camel/spi/TypeConverterRegistry.java | 7 +++++++ .../ManagedTypeConverterRegistryTest.java | 10 ++++++++++ .../apache/camel/core/osgi/OsgiTypeConverter.java | 4 ++++ .../core/osgi/test/MockTypeConverterRegistry.java | 4 ++++ 7 files changed, 52 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 208af34..89070de 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 @@ -42,4 +42,10 @@ public interface ManagedTypeConverterRegistryMBean extends ManagedServiceMBean { @ManagedAttribute(description = "Utilization statistics enabled") void setStatisticsEnabled(boolean statisticsEnabled); + @ManagedAttribute(description = "Number of type converters in the registry") + int getNumberOfTypeConverters(); + + @ManagedOperation(description = "Checks whether a type converter exists for converting (from -> to)") + boolean hasTypeConverter(String fromType, String toType); + } http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 13a78e3..0c726d2 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 @@ -551,6 +551,11 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement } @Override + public int size() { + return typeMappings.size(); + } + + @Override protected void doStart() throws Exception { // noop } http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 55af467..1a735d8 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 @@ -20,6 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.api.management.mbean.ManagedTypeConverterRegistryMBean; import org.apache.camel.spi.TypeConverterRegistry; +import org.apache.camel.util.ObjectHelper; /** * @@ -65,4 +66,19 @@ public class ManagedTypeConverterRegistry extends ManagedService implements Mana public void setStatisticsEnabled(boolean statisticsEnabled) { registry.getStatistics().setStatisticsEnabled(statisticsEnabled); } + + public int getNumberOfTypeConverters() { + return registry.size(); + } + + public boolean hasTypeConverter(String fromType, String toType) { + try { + Class<?> from = getContext().getClassResolver().resolveMandatoryClass(fromType); + Class<?> to = getContext().getClassResolver().resolveMandatoryClass(toType); + return registry.lookup(to, from) != null; + } catch (ClassNotFoundException e) { + throw ObjectHelper.wrapRuntimeCamelException(e); + } + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 9dcbb29..b56d40f 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 @@ -128,4 +128,11 @@ public interface TypeConverterRegistry extends StaticService { */ Statistics getStatistics(); + /** + * Number of type converters in the registry. + * + * @return number of type converters in the registry. + */ + int size(); + } http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 ae63228..c2b6a32 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 @@ -88,6 +88,16 @@ public class ManagedTypeConverterRegistryTest extends ManagementTestSupport { assertEquals(0, failed.intValue()); miss = (Long) mbeanServer.getAttribute(name, "MissCounter"); assertEquals(0, miss.intValue()); + + // we have more than 150 converters out of the box + Integer converters = (Integer) mbeanServer.getAttribute(name, "NumberOfTypeConverters"); + assertTrue("Should be more than 150 converters, was: " + converters, converters >= 150); + + Boolean has = (Boolean) mbeanServer.invoke(name, "hasTypeConverter", new Object[]{"String", "java.io.InputStream"}, new String[]{"java.lang.String", "java.lang.String"}); + assertTrue("Should have type converter", has.booleanValue()); + + 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()); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 ba08489..a9a3810 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 @@ -151,6 +151,10 @@ public class OsgiTypeConverter extends ServiceSupport implements TypeConverter, return getDelegate().getStatistics(); } + public int size() { + return getDelegate().size(); + } + public synchronized DefaultTypeConverter getDelegate() { if (delegate == null) { delegate = createRegistry(); http://git-wip-us.apache.org/repos/asf/camel/blob/a976a730/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 ff51566..d43bc9d 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 @@ -64,6 +64,10 @@ public class MockTypeConverterRegistry implements TypeConverterRegistry { return null; } + public int size() { + return typeConverters.size(); + } + public void start() throws Exception { // noop }
