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 <davscl...@apache.org> Authored: Wed Jul 22 18:14:07 2015 +0200 Committer: Claus Ibsen <davscl...@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);