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);
+                    }
                 }
             });
         }