CAMEL-8992: EIP mbeans should output better expression/preidcate. Make sure to 
unwrap when using ValueBuilder so we have access the to actual easier.


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

Branch: refs/heads/master
Commit: 7c0cc37bd7e5c91cfda68350cbf69aa5755d61d7
Parents: d663114
Author: Claus Ibsen <[email protected]>
Authored: Wed Jul 22 17:34:43 2015 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Wed Jul 22 19:54:18 2015 +0200

----------------------------------------------------------------------
 .../api/management/mbean/ManagedFilterMBean.java     |  3 +++
 .../java/org/apache/camel/builder/ValueBuilder.java  |  1 +
 .../management/DefaultManagementObjectStrategy.java  |  2 +-
 .../apache/camel/management/mbean/ManagedFilter.java | 15 +++++++++++++--
 .../org/apache/camel/model/ExpressionNodeHelper.java |  8 ++++++++
 .../org/apache/camel/model/FilterDefinition.java     |  1 +
 .../apache/camel/management/ManagedFilterTest.java   |  5 ++++-
 7 files changed, 31 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
 
b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
index 71218d5..bf3145f 100644
--- 
a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
+++ 
b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedFilterMBean.java
@@ -20,6 +20,9 @@ import org.apache.camel.api.management.ManagedAttribute;
 
 public interface ManagedFilterMBean extends ManagedProcessorMBean {
 
+    @ManagedAttribute(description = "The language used for the predicate to 
determine if the message should be filtered or not")
+    String getPredicateLanguage();
+
     @ManagedAttribute(description = "Predicate to determine if the message 
should be filtered or not")
     String getPredicate();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java 
b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
index a8faf61..e9fca82 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
@@ -24,6 +24,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.builder.xml.Namespaces;
+import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.util.ExpressionToPredicateAdapter;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/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 983eb7d..b2e55b1 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
@@ -276,7 +276,7 @@ public class DefaultManagementObjectStrategy implements 
ManagementObjectStrategy
             } else if (target instanceof RoutingSlip) {
                 answer = new ManagedRoutingSlip(context, (RoutingSlip) target, 
definition);
             } else if (target instanceof FilterProcessor) {
-                answer = new ManagedFilter(context, (FilterProcessor) target, 
definition);
+                answer = new ManagedFilter(context, (FilterProcessor) target, 
(org.apache.camel.model.FilterDefinition) definition);
             } else if (target instanceof LogProcessor) {
                 answer = new ManagedLog(context, (LogProcessor) target, 
definition);
             } else if (target instanceof LoopProcessor) {

http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
index edd89f2..d84b40f 100644
--- 
a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
+++ 
b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedFilter.java
@@ -19,6 +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.ManagedFilterMBean;
+import org.apache.camel.model.FilterDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.processor.FilterProcessor;
 
@@ -29,12 +30,17 @@ import org.apache.camel.processor.FilterProcessor;
 public class ManagedFilter extends ManagedProcessor implements 
ManagedFilterMBean {
     private final FilterProcessor processor;
 
-    public ManagedFilter(CamelContext context, FilterProcessor processor, 
ProcessorDefinition<?> definition) {
+    public ManagedFilter(CamelContext context, FilterProcessor processor, 
FilterDefinition definition) {
         super(context, processor, definition);
         this.processor = processor;
     }
 
     @Override
+    public FilterDefinition getDefinition() {
+        return (FilterDefinition) super.getDefinition();
+    }
+
+    @Override
     public synchronized void reset() {
         processor.reset();
         super.reset();
@@ -42,7 +48,12 @@ public class ManagedFilter extends ManagedProcessor 
implements ManagedFilterMBea
 
     @Override
     public String getPredicate() {
-        return processor.getPredicate().toString();
+        return getDefinition().getExpression().getExpression();
+    }
+
+    @Override
+    public String getPredicateLanguage() {
+        return getDefinition().getExpression().getLanguage();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/camel-core/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java 
b/camel-core/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java
index a3a3d48..914bc0d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java
@@ -58,6 +58,7 @@ public final class ExpressionNodeHelper {
             answer.setResultType(builder.getResultType());
             return answer;
         } else if (expression instanceof ValueBuilder) {
+            // ValueBuilder wraps the actual expression so unwrap
             ValueBuilder builder = (ValueBuilder) expression;
             expression = builder.getExpression();
         }
@@ -90,6 +91,13 @@ public final class ExpressionNodeHelper {
             XPathExpression answer = new XPathExpression(builder);
             answer.setExpression(builder.getText());
             return answer;
+        } else if (predicate instanceof ValueBuilder) {
+            // ValueBuilder wraps the actual predicate so unwrap
+            ValueBuilder builder = (ValueBuilder) predicate;
+            Expression expression = builder.getExpression();
+            if (expression instanceof Predicate) {
+                predicate = (Predicate) expression;
+            }
         }
 
         if (predicate instanceof ExpressionDefinition) {

http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
index 01bcdce..9c2d13b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/FilterDefinition.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.Processor;
 import org.apache.camel.model.language.ExpressionDefinition;

http://git-wip-us.apache.org/repos/asf/camel/blob/7c0cc37b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java 
b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
index 29082e6..d96a921 100644
--- 
a/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/management/ManagedFilterTest.java
@@ -61,8 +61,11 @@ public class ManagedFilterTest extends ManagementTestSupport 
{
         Long count = (Long) mbeanServer.getAttribute(on, "FilteredCount");
         assertEquals(1, count.longValue());
 
+        String lan = (String) mbeanServer.getAttribute(on, 
"PredicateLanguage");
+        assertEquals("header", lan);
+
         String uri = (String) mbeanServer.getAttribute(on, "Predicate");
-        assertEquals("header{header(foo)}", uri);
+        assertEquals("foo", uri);
 
         TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new 
Object[]{false}, new String[]{"boolean"});
         assertNotNull(data);

Reply via email to