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 2015/07/22 19:47:26 UTC

[3/4] camel git commit: CAMEL-8992: EIP mbeans should output better expression/preidcate. A bit better when using Java DSL to build expression/predicate on EIPs to have them not wrapped as ValueBuilders

CAMEL-8992: EIP mbeans should output better expression/preidcate. A bit better when using Java DSL to build expression/predicate on EIPs to have them not wrapped as ValueBuilders


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

Branch: refs/heads/master
Commit: 2f9d595977f9096e66fc940c1bdd434f1b974b36
Parents: 14e018c
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Jul 22 18:14:07 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jul 22 19:54:19 2015 +0200

----------------------------------------------------------------------
 .../mbean/ManagedIdempotentConsumerMBean.java    |  6 ++++++
 .../api/management/mbean/ManagedLoopMBean.java   |  3 +++
 .../DefaultManagementObjectStrategy.java         |  4 ++--
 .../mbean/ManagedIdempotentConsumer.java         | 19 +++++++++++++++++--
 .../camel/management/mbean/ManagedLoop.java      | 18 +++++++++++++-----
 .../org/apache/camel/model/ExpressionNode.java   |  9 ++++++++-
 .../apache/camel/model/ProcessorDefinition.java  | 18 ++++++------------
 .../apache/camel/model/ResequenceDefinition.java |  6 ++++++
 .../apache/camel/model/ValidateDefinition.java   | 11 ++++++++++-
 .../apache/camel/management/ManagedLoopTest.java |  5 ++++-
 10 files changed, 75 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
index 4b2cd11..d459b06 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedIdempotentConsumerMBean.java
@@ -21,6 +21,12 @@ import org.apache.camel.api.management.ManagedOperation;
 
 public interface ManagedIdempotentConsumerMBean extends ManagedProcessorMBean {
 
+    @ManagedAttribute(description = "The language for the expression")
+    String getExpressionLanguage();
+
+    @ManagedAttribute(description = "Expression used to calculate the correlation key to use for duplicate check")
+    String getExpression();
+
     @ManagedAttribute(description = "Whether to eagerly add the key to the idempotent repository or wait until the exchange is complete")
     Boolean isEager();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
index 0449bf7..dfa7394 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedLoopMBean.java
@@ -20,6 +20,9 @@ import org.apache.camel.api.management.ManagedAttribute;
 
 public interface ManagedLoopMBean extends ManagedProcessorMBean {
 
+    @ManagedAttribute(description = "The language for the expression")
+    String getExpressionLanguage();
+
     @ManagedAttribute(description = "Expression to define how many times we should loop")
     String getExpression();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
index 97804eb..7b94ff6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
@@ -280,7 +280,7 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
             } else if (target instanceof LogProcessor) {
                 answer = new ManagedLog(context, (LogProcessor) target, definition);
             } else if (target instanceof LoopProcessor) {
-                answer = new ManagedLoop(context, (LoopProcessor) target, definition);
+                answer = new ManagedLoop(context, (LoopProcessor) target, (org.apache.camel.model.LoopDefinition) definition);
             } else if (target instanceof MarshalProcessor) {
                 answer = new ManagedMarshal(context, (MarshalProcessor) target, (org.apache.camel.model.MarshalDefinition) definition);
             } else if (target instanceof UnmarshalProcessor) {
@@ -348,7 +348,7 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
             } else if (target instanceof BeanProcessor) {
                 answer = new ManagedBeanProcessor(context, (BeanProcessor) target, definition);
             } else if (target instanceof IdempotentConsumer) {
-                answer = new ManagedIdempotentConsumer(context, (IdempotentConsumer) target, definition);
+                answer = new ManagedIdempotentConsumer(context, (IdempotentConsumer) target, (org.apache.camel.model.IdempotentConsumerDefinition) definition);
             } else if (target instanceof AggregateProcessor) {
                 answer = new ManagedAggregateProcessor(context, (AggregateProcessor) target, (org.apache.camel.model.AggregateDefinition) definition);
             } else if (target instanceof Enricher) {

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
index c74ca08..eb3c3a2 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedIdempotentConsumer.java
@@ -19,17 +19,32 @@ package org.apache.camel.management.mbean;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedIdempotentConsumerMBean;
-import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.IdempotentConsumerDefinition;
 import org.apache.camel.processor.idempotent.IdempotentConsumer;
 
 @ManagedResource(description = "Managed Idempotent Consumer")
 public class ManagedIdempotentConsumer extends ManagedProcessor implements ManagedIdempotentConsumerMBean {
 
-    public ManagedIdempotentConsumer(CamelContext context, IdempotentConsumer idempotentConsumer, ProcessorDefinition<?> definition) {
+    public ManagedIdempotentConsumer(CamelContext context, IdempotentConsumer idempotentConsumer, IdempotentConsumerDefinition definition) {
         super(context, idempotentConsumer, definition);
     }
 
     @Override
+    public IdempotentConsumerDefinition getDefinition() {
+        return (IdempotentConsumerDefinition) super.getDefinition();
+    }
+
+    @Override
+    public String getExpressionLanguage() {
+        return getDefinition().getExpression().getLanguage();
+    }
+
+    @Override
+    public String getExpression() {
+        return getDefinition().getExpression().getExpression();
+    }
+
+    @Override
     public IdempotentConsumer getProcessor() {
         return (IdempotentConsumer) super.getProcessor();
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
index 8d791c7..73ee7dd 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedLoop.java
@@ -19,7 +19,7 @@ package org.apache.camel.management.mbean;
 import org.apache.camel.CamelContext;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedLoopMBean;
-import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.LoopDefinition;
 import org.apache.camel.processor.LoopProcessor;
 
 /**
@@ -28,17 +28,25 @@ import org.apache.camel.processor.LoopProcessor;
 @ManagedResource(description = "Managed Loop")
 public class ManagedLoop extends ManagedProcessor implements ManagedLoopMBean {
     private final LoopProcessor processor;
-    private final String uri;
 
-    public ManagedLoop(CamelContext context, LoopProcessor processor, ProcessorDefinition<?> definition) {
+    public ManagedLoop(CamelContext context, LoopProcessor processor, LoopDefinition definition) {
         super(context, processor, definition);
         this.processor = processor;
-        this.uri = processor.getExpression().toString();
+    }
+
+    @Override
+    public LoopDefinition getDefinition() {
+        return (LoopDefinition) super.getDefinition();
+    }
+
+    @Override
+    public String getExpressionLanguage() {
+        return getDefinition().getExpression().getLanguage();
     }
 
     @Override
     public String getExpression() {
-        return uri;
+        return getDefinition().getExpression().getExpression();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java b/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
index c8f1616..8b58e07 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
@@ -66,7 +66,14 @@ public abstract class ExpressionNode extends ProcessorDefinition<ExpressionNode>
     }
 
     public void setExpression(ExpressionDefinition expression) {
-        this.expression = expression;
+        // favour using the helper to set the expression as it can unwrap some unwanted builders when using Java DSL
+        if (expression instanceof Expression) {
+            this.expression = ExpressionNodeHelper.toExpressionDefinition((Expression) expression);
+        } else if (expression instanceof Predicate) {
+            this.expression = ExpressionNodeHelper.toExpressionDefinition((Predicate) expression);
+        } else {
+            this.expression = expression;
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index fe6f12b..2ddb383 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -1410,8 +1410,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public FilterDefinition filter(ExpressionDefinition expression) {
-        FilterDefinition filter = new FilterDefinition();
-        filter.setExpression(expression);
+        FilterDefinition filter = new FilterDefinition(expression);
         addOutput(filter);
         return filter;
     }
@@ -1438,8 +1437,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public ValidateDefinition validate(Expression expression) {
-        ValidateDefinition answer = new ValidateDefinition();
-        answer.setExpression(ExpressionNodeHelper.toExpressionDefinition(expression));
+        ValidateDefinition answer = new ValidateDefinition(expression);
         addOutput(answer);
         return answer;
     }
@@ -1453,8 +1451,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public ValidateDefinition validate(Predicate predicate) {
-        ValidateDefinition answer = new ValidateDefinition();
-        answer.setExpression(ExpressionNodeHelper.toExpressionDefinition(predicate));
+        ValidateDefinition answer = new ValidateDefinition(predicate);
         addOutput(answer);
         return answer;
     }
@@ -1976,8 +1973,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public ResequenceDefinition resequence(Expression expression) {
-        ResequenceDefinition answer = new ResequenceDefinition();
-        answer.setExpression(ExpressionNodeHelper.toExpressionDefinition(expression));
+        ResequenceDefinition answer = new ResequenceDefinition(expression);
         addOutput(answer);
         return answer;
     }
@@ -2135,8 +2131,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public LoopDefinition loop(Expression expression) {
-        LoopDefinition loop = new LoopDefinition();
-        loop.setExpression(new ExpressionDefinition(expression));
+        LoopDefinition loop = new LoopDefinition(expression);
         addOutput(loop);
         return loop;
     }
@@ -2150,8 +2145,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
      * @return the builder
      */
     public LoopDefinition loop(int count) {
-        LoopDefinition loop = new LoopDefinition();
-        loop.setExpression(new ConstantExpression(Integer.toString(count)));
+        LoopDefinition loop = new LoopDefinition(new ConstantExpression(Integer.toString(count)));
         addOutput(loop);
         return loop;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
index 7f26a4f..ef6a423 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
@@ -68,6 +68,12 @@ public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefiniti
     public ResequenceDefinition() {
     }
 
+    public ResequenceDefinition(Expression expression) {
+        if (expression != null) {
+            setExpression(ExpressionNodeHelper.toExpressionDefinition(expression));
+        }
+    }
+
     public List<ProcessorDefinition<?>> getOutputs() {
         return outputs;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
index 4126de5..532e9c6 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
@@ -20,6 +20,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.validation.PredicateValidatingProcessor;
@@ -38,7 +39,15 @@ public class ValidateDefinition extends NoOutputExpressionNode {
 
     public ValidateDefinition() {
     }
-    
+
+    public ValidateDefinition(Expression expression) {
+        super(expression);
+    }
+
+    public ValidateDefinition(Predicate predicate) {
+        super(predicate);
+    }
+
     @Override
     public String toString() {
         return "Validate[" + getExpression() + " -> " + getOutputs() + "]";

http://git-wip-us.apache.org/repos/asf/camel/blob/2f9d5959/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
index bbacb6d..3036248 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedLoopTest.java
@@ -58,8 +58,11 @@ public class ManagedLoopTest extends ManagementTestSupport {
         String state = (String) mbeanServer.getAttribute(on, "State");
         assertEquals(ServiceStatus.Started.name(), state);
 
+        String lan = (String) mbeanServer.getAttribute(on, "ExpressionLanguage");
+        assertEquals("header", lan);
+
         String uri = (String) mbeanServer.getAttribute(on, "Expression");
-        assertEquals("header{foo}", uri);
+        assertEquals("foo", uri);
 
         TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{false}, new String[]{"boolean"});
         assertNotNull(data);