Author: davsclaus Date: Thu Sep 22 13:41:41 2011 New Revision: 1174131 URL: http://svn.apache.org/viewvc?rev=1174131&view=rev Log: Merged revisions 1174129 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk
Added: camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateSimpleExpressionIssueTest.java - copied unchanged from r1174129, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateSimpleExpressionIssueTest.java Modified: camel/branches/camel-2.8.x/ (props changed) camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Sep 22 13:41:41 2011 @@ -1 +1 @@ -/camel/trunk:1173732,1173958,1174047 +/camel/trunk:1173732,1173958,1174047,1174129 Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java?rev=1174131&r1=1174130&r2=1174131&view=diff ============================================================================== --- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java (original) +++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java Thu Sep 22 13:41:41 2011 @@ -33,6 +33,9 @@ public class SimpleBuilder implements Pr private final String text; private Class<?> resultType; + // cache the expression/predicate + private volatile Expression expression; + private volatile Predicate predicate; public SimpleBuilder(String text) { this.text = text; @@ -62,11 +65,17 @@ public class SimpleBuilder implements Pr } public boolean matches(Exchange exchange) { - return exchange.getContext().resolveLanguage("simple").createPredicate(text).matches(exchange); + if (predicate == null) { + predicate = exchange.getContext().resolveLanguage("simple").createPredicate(text); + } + return predicate.matches(exchange); } public <T> T evaluate(Exchange exchange, Class<T> type) { - return createExpression(exchange).evaluate(exchange, type); + if (expression == null) { + expression = createExpression(exchange); + } + return expression.evaluate(exchange, type); } private Expression createExpression(Exchange exchange) {