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) {


Reply via email to