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 2017/01/06 13:20:58 UTC
camel git commit: CAMEL-10678 Use individual fields for the
Transformer properties in ManagedTransformerRegistry#listTransformers()
Repository: camel
Updated Branches:
refs/heads/master 6f0c9e6bd -> 2bca93918
CAMEL-10678 Use individual fields for the Transformer properties in ManagedTransformerRegistry#listTransformers()
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2bca9391
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2bca9391
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2bca9391
Branch: refs/heads/master
Commit: 2bca939186660f1b0abdb98d7be17a6ec8e066e4
Parents: 6f0c9e6
Author: Tomohisa Igarashi <tm...@gmail.com>
Authored: Fri Jan 6 20:50:21 2017 +0900
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jan 6 14:20:45 2017 +0100
----------------------------------------------------------------------
.../management/mbean/CamelOpenMBeanTypes.java | 9 +--
.../camel/impl/DefaultTransformerRegistry.java | 19 ++++--
.../mbean/ManagedTransformerRegistry.java | 13 ++--
.../apache/camel/spi/TransformerRegistry.java | 26 ++++++--
.../ManagedTransformerRegistryTest.java | 68 +++++++++++++++++++-
.../jolokia/DefaultJolokiaCamelController.java | 26 ++++++--
6 files changed, 138 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/2bca9391/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
index 40c5b13..b03cda1 100644
--- 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
@@ -218,13 +218,14 @@ public final class CamelOpenMBeanTypes {
public static TabularType listTransformersTabularType() throws OpenDataException {
CompositeType ct = listTransformersCompositeType();
- return new TabularType("listTransformers", "Lists all the transformers in the registry", ct, new String[]{"string"});
+ return new TabularType("listTransformers", "Lists all the transformers in the registry", ct, new String[]{"scheme", "from", "to"});
}
public static CompositeType listTransformersCompositeType() throws OpenDataException {
return new CompositeType("transformers", "Transformers",
- new String[]{"string", "static", "dynamic"},
- new String[]{"string", "Static", "Dynamic"},
- new OpenType[]{SimpleType.STRING, SimpleType.BOOLEAN, SimpleType.BOOLEAN});
+ new String[]{"scheme", "from", "to", "static", "dynamic", "description"},
+ new String[]{"Scheme", "From", "To", "Static", "Dynamic", "Description"},
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING,
+ SimpleType.BOOLEAN, SimpleType.BOOLEAN, SimpleType.STRING});
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/2bca9391/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
index f371267..6969233 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultTransformerRegistry.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentMap;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.impl.transformer.TransformerKey;
+import org.apache.camel.spi.DataType;
import org.apache.camel.spi.EndpointRegistry;
import org.apache.camel.spi.Transformer;
import org.apache.camel.spi.TransformerRegistry;
@@ -190,13 +191,23 @@ public class DefaultTransformerRegistry extends LRUCache<TransformerKey, Transfo
}
@Override
- public boolean isStatic(String key) {
- return staticMap.containsKey(new EndpointKey(key));
+ public boolean isStatic(String scheme) {
+ return staticMap.containsKey(new TransformerKey(scheme));
}
@Override
- public boolean isDynamic(String key) {
- return super.containsKey(new EndpointKey(key));
+ public boolean isStatic(DataType from, DataType to) {
+ return staticMap.containsKey(new TransformerKey(from, to));
+ }
+
+ @Override
+ public boolean isDynamic(String scheme) {
+ return super.containsKey(new TransformerKey(scheme));
+ }
+
+ @Override
+ public boolean isDynamic(DataType from, DataType to) {
+ return super.containsKey(new TransformerKey(from, to));
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/2bca9391/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
index a2611dd..ec58eef 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTransformerRegistry.java
@@ -27,6 +27,7 @@ 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.ManagedTransformerRegistryMBean;
+import org.apache.camel.spi.DataType;
import org.apache.camel.spi.ManagementStrategy;
import org.apache.camel.spi.Transformer;
import org.apache.camel.spi.TransformerRegistry;
@@ -83,11 +84,15 @@ public class ManagedTransformerRegistry extends ManagedService implements Manage
Collection<Transformer> transformers = transformerRegistry.values();
for (Transformer transformer : transformers) {
CompositeType ct = CamelOpenMBeanTypes.listTransformersCompositeType();
- String transformerString = transformer.toString();
- boolean fromStatic = transformerRegistry.isStatic(transformerString);
- boolean fromDynamic = transformerRegistry.isDynamic(transformerString);
+ String scheme = transformer.getModel();
+ DataType from = transformer.getFrom();
+ DataType to = transformer.getTo();
+ String desc = transformer.toString();
+ boolean fromStatic = scheme != null ? transformerRegistry.isStatic(scheme) : transformerRegistry.isStatic(from, to);
+ boolean fromDynamic = scheme != null ? transformerRegistry.isDynamic(scheme) : transformerRegistry.isDynamic(from, to);
- CompositeData data = new CompositeDataSupport(ct, new String[]{"string", "static", "dynamic"}, new Object[]{transformerString, fromStatic, fromDynamic});
+ CompositeData data = new CompositeDataSupport(ct, new String[]{"scheme", "from", "to", "static", "dynamic", "description"},
+ new Object[]{scheme, from.toString(), to.toString(), fromStatic, fromDynamic, desc});
answer.put(data);
}
return answer;
http://git-wip-us.apache.org/repos/asf/camel/blob/2bca9391/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java b/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
index 2ec1be6..85acd1c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
@@ -62,18 +62,36 @@ public interface TransformerRegistry<K> extends Map<K, Transformer>, StaticServi
/**
* Whether the given transformer is stored in the static cache
*
- * @param key the transformer key
+ * @param scheme the scheme supported by this transformer
* @return <tt>true</tt> if in static cache, <tt>false</tt> if not
*/
- boolean isStatic(String key);
+ boolean isStatic(String scheme);
+
+ /**
+ * Whether the given transformer is stored in the static cache
+ *
+ * @param from 'from' data type
+ * @param to 'to' data type
+ * @return <tt>true</tt> if in static cache, <tt>false</tt> if not
+ */
+ boolean isStatic(DataType from, DataType to);
+
+ /**
+ * Whether the given transformer is stored in the dynamic cache
+ *
+ * @param scheme the scheme supported by this transformer
+ * @return <tt>true</tt> if in dynamic cache, <tt>false</tt> if not
+ */
+ boolean isDynamic(String scheme);
/**
* Whether the given transformer is stored in the dynamic cache
*
- * @param key the transformer key
+ * @param from 'from' data type
+ * @param to 'to' data type
* @return <tt>true</tt> if in dynamic cache, <tt>false</tt> if not
*/
- boolean isDynamic(String key);
+ boolean isDynamic(DataType from, DataType to);
/**
* Cleanup the cache (purging stale entries)
http://git-wip-us.apache.org/repos/asf/camel/blob/2bca9391/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
index 2960cb1..37754df 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedTransformerRegistryTest.java
@@ -17,18 +17,30 @@
package org.apache.camel.management;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Set;
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;
+import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.dataformat.StringDataFormat;
+import org.apache.camel.model.transformer.CustomTransformerDefinition;
+import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
+import org.apache.camel.model.transformer.EndpointTransformerDefinition;
+import org.apache.camel.spi.DataType;
+import org.apache.camel.spi.Transformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @version
*/
public class ManagedTransformerRegistryTest extends ManagementTestSupport {
+ private static final Logger LOG = LoggerFactory.getLogger(ManagedTransformerRegistryTest.class);
public void testManageTransformerRegistry() throws Exception {
// JMX tests dont work well on AIX CI servers (hangs them)
@@ -60,20 +72,46 @@ public class ManagedTransformerRegistryTest extends ManagementTestSupport {
assertEquals(1000, max.intValue());
Integer current = (Integer) mbeanServer.getAttribute(on, "Size");
- assertEquals(0, current.intValue());
+ assertEquals(3, current.intValue());
current = (Integer) mbeanServer.getAttribute(on, "StaticSize");
assertEquals(0, current.intValue());
current = (Integer) mbeanServer.getAttribute(on, "DynamicSize");
- assertEquals(0, current.intValue());
+ assertEquals(3, current.intValue());
String source = (String) mbeanServer.getAttribute(on, "Source");
assertTrue(source.startsWith("TransformerRegistry"));
assertTrue(source.endsWith("capacity: 1000"));
+
TabularData data = (TabularData) mbeanServer.invoke(on, "listTransformers", null, null);
- assertEquals(0, data.size());
+ for (Object row : data.values()) {
+ CompositeData composite = (CompositeData)row;
+ String scheme = (String)composite.get("scheme");
+ String from = (String)composite.get("from");
+ String to = (String)composite.get("to");
+ String description = (String)composite.get("description");
+ boolean isStatic = (boolean)composite.get("static");
+ boolean isDynamic = (boolean)composite.get("dynamic");
+ LOG.info("[{}][{}][{}][{}][{}][{}]", scheme, from, to, isStatic, isDynamic, description);
+ if (description.startsWith("ProcessorTransformer")) {
+ assertEquals(null, scheme);
+ assertEquals("xml:foo", from);
+ assertEquals("json:bar", to);
+ } else if (description.startsWith("DataFormatTransformer")) {
+ assertEquals(null, scheme);
+ assertEquals("java:" + ManagedTransformerRegistryTest.class.getName(), from);
+ assertEquals("xml:test", to);
+ } else if (description.startsWith("MyTransformer")) {
+ assertEquals("custom", scheme);
+ assertEquals("null:null", from);
+ assertEquals("null:null", to);
+ } else {
+ fail("Unexpected transformer:" + description);
+ }
+ }
+ assertEquals(3, data.size());
}
@Override
@@ -82,8 +120,32 @@ public class ManagedTransformerRegistryTest extends ManagementTestSupport {
@Override
public void configure() throws Exception {
from("direct:start").to("mock:result");
+
+ EndpointTransformerDefinition etd = new EndpointTransformerDefinition();
+ etd.setFrom("xml:foo");
+ etd.setTo("json:bar");
+ etd.setUri("direct:transformer");
+ context.getTransformers().add(etd);
+ context.resolveTransformer(new DataType("xml:foo"), new DataType("json:bar"));
+ DataFormatTransformerDefinition dftd = new DataFormatTransformerDefinition();
+ dftd.setFrom(ManagedTransformerRegistryTest.class);
+ dftd.setTo("xml:test");
+ dftd.setDataFormatType(new StringDataFormat());
+ context.getTransformers().add(dftd);
+ context.resolveTransformer(new DataType(ManagedTransformerRegistryTest.class), new DataType("xml:test"));
+ CustomTransformerDefinition ctd = new CustomTransformerDefinition();
+ ctd.setScheme("custom");
+ ctd.setType(MyTransformer.class.getName());
+ context.getTransformers().add(ctd);
+ context.resolveTransformer("custom");
}
};
}
+ public static class MyTransformer extends Transformer {
+ @Override
+ public void transform(Message message, DataType from, DataType to) throws Exception {
+ return;
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/2bca9391/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
index c336d8c..e342840 100644
--- a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
+++ b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
@@ -781,9 +781,12 @@ public class DefaultJolokiaCamelController extends AbstractCamelController imple
JSONObject service = (JSONObject) data2.values().iterator().next();
Map<String, String> row = new LinkedHashMap<String, String>();
- row.put("string", asString(service.get("string")));
+ row.put("scheme", asString(service.get("scheme")));
+ row.put("from", asString(service.get("from")));
+ row.put("to", asString(service.get("to")));
row.put("static", asString(service.get("static")));
row.put("dynamic", asString(service.get("dynamic")));
+ row.put("description", asString(service.get("description")));
answer.add(row);
}
}
@@ -793,9 +796,24 @@ public class DefaultJolokiaCamelController extends AbstractCamelController imple
Collections.sort(answer, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> service1, Map<String, String> service2) {
- String url1 = service1.get("string");
- String url2 = service2.get("string");
- return url1.compareTo(url2);
+ String scheme1 = service1.get("scheme");
+ String scheme2 = service2.get("scheme");
+ if (scheme1 != null && scheme2 != null) {
+ return scheme1.compareTo(scheme2);
+ } else if (scheme1 != null) {
+ return -1;
+ } else if (scheme2 != null) {
+ return 1;
+ } else {
+ String from1 = service1.get("from");
+ String from2 = service2.get("from");
+ if (from1.equals(from2)) {
+ String to1 = service1.get("to");
+ String to2 = service2.get("to");
+ return to1.compareTo(to2);
+ }
+ return from1.compareTo(from2);
+ }
}
});
}