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 2009/02/11 14:16:13 UTC

svn commit: r743330 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/builder/xml/ camel-core/src/main/java/org/apache/camel/component/bean/ camel-...

Author: davsclaus
Date: Wed Feb 11 13:16:09 2009
New Revision: 743330

URL: http://svn.apache.org/viewvc?rev=743330&view=rev
Log:
CAMEL-1252: Added parameter type to Expression. Polished code and javadoc a bit.

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java   (contents, props changed)
      - copied, changed from r743248, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ExpressionAdapter.java
Removed:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ExpressionAdapter.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/Expression.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileExpressionRenamer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileExpressionRenamer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProxyInstantiationException.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileExpressionBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionType.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/DefaultExchangeComparator.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExpressionHelper.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/issues/NeilSplitterTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetHeaderUsingDslExpressionsTest.java
    camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java
    camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java
    camel/trunk/components/camel-jhc/src/main/java/org/apache/camel/component/jhc/JhcHeaderFilterStrategy.java
    camel/trunk/components/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java
    camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
    camel/trunk/components/camel-rss/src/main/java/org/apache/camel/component/rss/AggregateRssFeedCollection.java
    camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala
    camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
    camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Expression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Expression.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Expression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Expression.java Wed Feb 11 13:16:09 2009
@@ -36,4 +36,13 @@
      * @return the value of the expression
      */
     Object evaluate(Exchange exchange);
+
+    /**
+     * Returns the value of the expression on the given exchange
+     *
+     * @param exchange the message exchange on which to evaluate the expression
+     * @param type the expected type of the evaluation result
+     * @return the value of the expression
+     */
+    <T> T evaluate(Exchange exchange, Class<T> type);
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java Wed Feb 11 13:16:09 2009
@@ -32,15 +32,13 @@
 
     /**
      * Returns the id of the message
-     *
-     * @return the id of the message
      */
     String getMessageId();
 
     /**
      * Sets the id of the message
      *
-     * @param messageId
+     * @param messageId id of the message
      */
     void setMessageId(String messageId);
 
@@ -79,7 +77,7 @@
     /**
      * Removes the named header from this message
      *
-     * @param name
+     * @param name name of the header
      * @return the old value of the header
      */
     Object removeHeader(String name);
@@ -94,14 +92,12 @@
     /**
      * Set all the headers associated with this message
      *
-     * @param headers
+     * @param headers headers to set
      */
     void setHeaders(Map<String, Object> headers);
 
     /**
      * Returns the body of the message as a POJO
-     *
-     * @return the body of the message
      */
     Object getBody();
 
@@ -115,11 +111,16 @@
 
     /**
      * Sets the body of the message
+     *
+     * @param body the body
      */
     void setBody(Object body);
 
     /**
      * Sets the body of the message as a specific type
+     *
+     * @param body the body
+     * @param type the type of the body
      */
     <T> void setBody(Object body, Class<T> type);
 
@@ -133,6 +134,8 @@
 
     /**
      * Copies the contents of the other message into this message
+     *
+     * @param message the other message
      */
     void copyFrom(Message message);
 
@@ -176,7 +179,7 @@
     /**
      * Set all the attachments associated with this message
      *
-     * @param attachments
+     * @param attachments attachements
      */
     void setAttachments(Map<String, DataHandler> attachments);
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Wed Feb 11 13:16:09 2009
@@ -30,6 +30,7 @@
 import org.apache.camel.Expression;
 import org.apache.camel.Message;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.impl.ExpressionAdapter;
 import org.apache.camel.language.bean.BeanLanguage;
 import org.apache.camel.language.simple.SimpleLanguage;
 import org.apache.camel.processor.DeadLetterChannel;
@@ -54,7 +55,7 @@
      * @return an expression object which will return the header value
      */
     public static Expression headerExpression(final String headerName) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Object header = exchange.getIn().getHeader(headerName);
                 if (header == null) {
@@ -78,7 +79,7 @@
      * @return an expression object which will return the inbound headers
      */
     public static Expression headersExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeaders();
             }
@@ -97,7 +98,7 @@
      * @return an expression object which will return the header value
      */
     public static Expression outHeaderExpression(final String headerName) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Message out = exchange.getOut(false);
                 if (out == null) {
@@ -125,7 +126,7 @@
      * @return an expression object which will return the headers
      */
     public static Expression outHeadersExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getOut().getHeaders();
             }
@@ -144,7 +145,7 @@
      * @return an expression object which will return the exception set on the exchange
      */
     public static Expression exchangeExceptionExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Throwable exception = exchange.getException();
                 if (exception == null) {
@@ -167,7 +168,7 @@
      * @return an expression object which will return the exception message set on the exchange
      */
     public static Expression exchangeExceptionMessageExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Throwable exception = exchange.getException();
                 if (exception == null) {
@@ -191,7 +192,7 @@
      * @return an expression object which will return the property value
      */
     public static Expression propertyExpression(final String propertyName) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getProperty(propertyName);
             }
@@ -211,7 +212,7 @@
      * @return an expression object which will return the properties
      */
     public static Expression propertiesExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getProperties();
             }
@@ -241,7 +242,7 @@
      */
     public static Expression systemPropertyExpression(final String propertyName,
                                                       final String defaultValue) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return System.getProperty(propertyName, defaultValue);
             }
@@ -260,7 +261,7 @@
      * @return an expression object which will return the constant value
      */
     public static Expression constantExpression(final Object value) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return value;
             }
@@ -276,7 +277,7 @@
      * Returns the expression for the exchanges inbound message body
      */
     public static Expression bodyExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getBody();
             }
@@ -293,7 +294,7 @@
      * to the given type
      */
     public static <T> Expression bodyExpression(final Class<T> type) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getBody(type);
             }
@@ -309,7 +310,7 @@
      * Returns the expression for the out messages body
      */
     public static Expression outBodyExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Message out = exchange.getOut(false);
                 if (out == null) {
@@ -330,7 +331,7 @@
      * to the given type
      */
     public static <T> Expression outBodyExpression(final Class<T> type) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Message out = exchange.getOut(false);
                 if (out == null) {
@@ -350,7 +351,7 @@
      * Returns the expression for the fault messages body
      */
     public static Expression faultBodyExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getFault().getBody();
             }
@@ -367,7 +368,7 @@
      * to the given type
      */
     public static <T> Expression faultBodyExpression(final Class<T> type) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getFault().getBody(type);
             }
@@ -383,7 +384,7 @@
      * Returns the expression for the exchange
      */
     public static Expression exchangeExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange;
             }
@@ -399,7 +400,7 @@
      * Returns the expression for the IN message
      */
     public static Expression inMessageExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn();
             }
@@ -415,7 +416,7 @@
      * Returns the expression for the OUT message
      */
     public static Expression outMessageExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getOut();
             }
@@ -431,10 +432,9 @@
      * Returns an expression which converts the given expression to the given type
      */
     public static Expression convertTo(final Expression expression, final Class type) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
-                Object value = expression.evaluate(exchange);
-                return exchange.getContext().getTypeConverter().convertTo(type, exchange, value);
+                return expression.evaluate(exchange, type);
             }
 
             @Override
@@ -450,7 +450,7 @@
      */
     public static Expression tokenizeExpression(final Expression expression,
                                                 final String token) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Object value = expression.evaluate(exchange);
                 Scanner scanner = getScanner(exchange, value);
@@ -472,7 +472,7 @@
     public static Expression regexTokenize(final Expression expression,
                                            final String regexTokenizer) {
         final Pattern pattern = Pattern.compile(regexTokenizer);
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Object value = expression.evaluate(exchange);
                 Scanner scanner = getScanner(exchange, value);
@@ -530,7 +530,7 @@
     public static Expression regexReplaceAll(final Expression expression,
                                              final String regex, final String replacement) {
         final Pattern pattern = Pattern.compile(regex);
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 String text = evaluateStringExpression(expression, exchange);
                 if (text == null) {
@@ -554,7 +554,7 @@
                                              final String regex, final Expression replacementExpression) {
 
         final Pattern pattern = Pattern.compile(regex);
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 String text = evaluateStringExpression(expression, exchange);
                 String replacement = evaluateStringExpression(replacementExpression, exchange);
@@ -575,7 +575,7 @@
      * Appends the String evaluations of the two expressions together
      */
     public static Expression append(final Expression left, final Expression right) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return evaluateStringExpression(left, exchange) + evaluateStringExpression(right, exchange);
             }
@@ -597,8 +597,7 @@
      *         not be evaluated
      */
     public static String evaluateStringExpression(Expression expression, Exchange exchange) {
-        Object value = expression.evaluate(exchange);
-        return exchange.getContext().getTypeConverter().convertTo(String.class, exchange, value);
+        return expression.evaluate(exchange, String.class);
     }
 
     /**
@@ -612,7 +611,7 @@
      * Returns an expression for the given system property
      */
     public static Expression systemProperty(final String name, final String defaultValue) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return System.getProperty(name, defaultValue);
             }
@@ -639,7 +638,7 @@
      * @return an expression which when evaluated will return the concatenated values
      */
     public static Expression concatExpression(final Collection<Expression> expressions, final String expression) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 StringBuffer buffer = new StringBuffer();
                 for (Expression expression : expressions) {
@@ -666,7 +665,7 @@
      * Returns an Expression for the inbound message id
      */
     public static Expression messageIdExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getMessageId();
             }
@@ -679,7 +678,7 @@
     }
 
     public static Expression dateExpression(final String command, final String pattern) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 Date date;
                 if ("now".equals(command)) {
@@ -712,7 +711,7 @@
     }
 
     public static Expression simpleExpression(final String simple) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 // must call evalute to return the nested langauge evaluate when evaluating
                 // stacked expressions
@@ -727,7 +726,7 @@
     }
 
     public static Expression beanExpression(final String expression) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 // must call evalute to return the nested langauge evaluate when evaluating
                 // stacked expressions

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java Wed Feb 11 13:16:09 2009
@@ -36,6 +36,11 @@
         return expression.evaluate(exchange);
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, result);
+    }
+
     public Expression getExpression() {
         return expression;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XPathBuilder.java Wed Feb 11 13:16:09 2009
@@ -114,6 +114,11 @@
         return answer;
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, result);
+    }
+
     // Builder methods
     // -------------------------------------------------------------------------
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java Wed Feb 11 13:16:09 2009
@@ -29,6 +29,7 @@
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.Pattern;
+import org.apache.camel.impl.ExpressionAdapter;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.processor.RecipientList;
 import org.apache.camel.util.ExchangeHelper;
@@ -170,7 +171,8 @@
             Expression parameterExpression = parameters.get(i).getExpression();
             expressions[i] = parameterExpression;
         }
-        return new Expression() {
+        return new ExpressionAdapter() {
+            @SuppressWarnings("unchecked")
             public Object evaluate(Exchange exchange) {
                 Object[] answer = new Object[size];
                 Object body = exchange.getIn().getBody();
@@ -183,11 +185,9 @@
                     if (multiParameterArray) {
                         value = ((Object[])body)[i];
                     } else {
-                        value = expressions[i].evaluate(exchange);
+                        value = expressions[i].evaluate(exchange, parameters.get(i).getType());
                     }
                     // now lets try to coerce the value to the required type
-                    Class expectedType = parameters.get(i).getType();
-                    value = ExchangeHelper.convertToType(exchange, expectedType, value);
                     answer[i] = value;
                 }
                 return answer;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConsumer.java Wed Feb 11 13:16:09 2009
@@ -366,6 +366,7 @@
 
     private void evaluteFileExpression() {
         if (fileExpressionResult == null) {
+            // create a dummy exchange as Exchange is needed for expression evaluation
             Exchange dummy = new DefaultExchange(endpoint.getCamelContext());
             fileExpressionResult = (String) endpoint.getFileExpression().evaluate(dummy);
         }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java Wed Feb 11 13:16:09 2009
@@ -171,8 +171,7 @@
             if (log.isDebugEnabled()) {
                 log.debug("Filename evaluated as expression: " + expression);
             }
-            Object result = expression.evaluate(exchange);
-            name = exchange.getContext().getTypeConverter().convertTo(String.class, result);
+            name = expression.evaluate(exchange, String.class);
         }
 
         String endpointFile = endpoint.getConfiguration().getFile();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileExpressionRenamer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileExpressionRenamer.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileExpressionRenamer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileExpressionRenamer.java Wed Feb 11 13:16:09 2009
@@ -39,8 +39,7 @@
     public File renameFile(FileExchange exchange, File file) {
         ObjectHelper.notNull(expression, "expression");
 
-        Object result = expression.evaluate(exchange);
-        String name = exchange.getContext().getTypeConverter().convertTo(String.class, result);
+        String name = expression.evaluate(exchange, String.class);
 
         // must normalize path to cater for Windows and other OS
         name = FileUtil.normalizePath(name);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileExpressionRenamer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileExpressionRenamer.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileExpressionRenamer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileExpressionRenamer.java Wed Feb 11 13:16:09 2009
@@ -34,8 +34,7 @@
     public GenericFile<T> renameFile(GenericFileExchange<T> exchange, GenericFile<T> file) {
         ObjectHelper.notNull(expression, "expression");
 
-        Object eval = expression.evaluate(exchange);
-        String newName = exchange.getContext().getTypeConverter().convertTo(String.class, eval);
+        String newName = expression.evaluate(exchange, String.class);
 
         // clone and change the name
         GenericFile<T> result = file.clone();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java Wed Feb 11 13:16:09 2009
@@ -34,6 +34,7 @@
 import org.apache.camel.component.bean.BeanProcessor;
 import org.apache.camel.component.bean.ProxyHelper;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -90,8 +91,7 @@
                 Consumer consumer = endpoint.createConsumer(processor);
                 startService(consumer);
             } catch (Exception e) {
-                LOG.warn(e);
-                throw org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(e);
+                throw ObjectHelper.wrapRuntimeCamelException(e);
             }
         }
     }
@@ -166,7 +166,7 @@
             startService(pollingConsumer);
             return pollingConsumer;
         } catch (Exception e) {
-            throw org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(e);
+            throw ObjectHelper.wrapRuntimeCamelException(e);
         }
     }
 
@@ -180,7 +180,7 @@
             startService(producer);
             return producer;
         } catch (Exception e) {
-            throw org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(e);
+            throw ObjectHelper.wrapRuntimeCamelException(e);
         }
     }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultHeaderFilterStrategy.java Wed Feb 11 13:16:09 2009
@@ -38,7 +38,7 @@
  * @version $Revision$
  */
 public class DefaultHeaderFilterStrategy implements HeaderFilterStrategy {
-    
+
     protected enum Direction { IN, OUT }
     
     private Set<String> inFilter;
@@ -47,35 +47,13 @@
     private Set<String> outFilter;
     private Pattern outFilterPattern;
 
-    private boolean isLowercase;
+    private boolean lowercase;
     private boolean allowNullValues;
     
-    /**
-     * Applies filtering logic to Camel Message header that is
-     * going to be copied to target message.
-     * 
-     * It returns true if the filtering logics return a match.  Otherwise,
-     * it returns false.  A match means the header should be excluded.
-     * 
-     * @param headerName 
-     * @param headerValue
-     * @return true if this header should be filtered out.
-     */
     public boolean applyFilterToCamelHeaders(String headerName, Object headerValue) {
         return doFiltering(Direction.OUT, headerName, headerValue);
     }
 
-    /**
-     * Applies filtering logic to an external message header message that 
-     * is going to be copied to Camel message header.
-     * 
-     * It returns true if the filtering logics return a match.  Otherwise,
-     * it returns false.  A match means the header should be excluded.
-     *  
-     * @param headerName 
-     * @param headerValue
-     * @return true if this header should be excluded.
-     */
     public boolean applyFilterToExternalHeaders(String headerName, Object headerValue) {
         return doFiltering(Direction.IN, headerName, headerValue);
     }
@@ -97,6 +75,8 @@
     /**
      * Sets the "out" direction filter set.  The "out" direction is referred to 
      * copying headers from a Camel message to an external message.
+     *
+     * @param value  the filter
      */
     public void setOutFilter(Set<String> value) {
         outFilter = value;
@@ -147,6 +127,8 @@
     /**
      * Sets the "in" direction filter set.  The "in" direction is referred to 
      * copying headers from an external message to a Camel message.
+     *
+     * @param value the filter
      */
     public void setInFilter(Set<String> value) {
         inFilter = value;
@@ -186,8 +168,8 @@
      * checking it the filter Set.  It does not affect filtering using
      * regular expression pattern.
      */
-    public boolean getIsLowercase() {
-        return isLowercase;
+    public boolean isLowercase() {
+        return lowercase;
     }
     
     /**
@@ -196,8 +178,8 @@
      * checking it the filter Set.  It does not affect filtering using
      * regular expression pattern.
      */
-    public void setIsLowercase(boolean value) {
-        isLowercase = value;
+    public void setLowercase(boolean value) {
+        lowercase = value;
     }
     
     public boolean getAllowNullValues() {
@@ -238,7 +220,7 @@
         }
             
         if (filter != null) {
-            if (isLowercase) {
+            if (lowercase) {
                 if (filter.contains(headerName.toLowerCase())) {
                     return true;
                 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java Wed Feb 11 13:16:09 2009
@@ -33,6 +33,7 @@
     protected static final FactoryFinder LANGUAGE_FACTORY = new FactoryFinder("META-INF/services/org/apache/camel/language/");
     protected static final FactoryFinder LANGUAGE_RESOLVER = new FactoryFinder("META-INF/services/org/apache/camel/language/resolver/");
 
+    @SuppressWarnings("unchecked")
     public Language resolveLanguage(String name, CamelContext context) {
         Class type = null;
         try {
@@ -52,6 +53,7 @@
         return noSpecificLanguageFound(name, context);
     }
 
+    @SuppressWarnings("unchecked")
     protected Language noSpecificLanguageFound(String name, CamelContext context) {
         Class type = null;
         try {

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java (from r743248, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ExpressionAdapter.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ExpressionAdapter.java&r1=743248&r2=743330&rev=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ExpressionAdapter.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java Wed Feb 11 13:16:09 2009
@@ -14,23 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.processor;
+package org.apache.camel.impl;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
-import org.apache.camel.impl.ExpressionSupport;
 
 /**
  * A helper class for developers wishing to implement an {@link Expression} using Java code with a minimum amount
- * of code to write so that the developer only needs to implement the {@link #evaluate(Exchange)} method.
+ * of code to write so that the developer only needs to implement one of the
+ * {@link #evaluate(Exchange)} or {@link #evaluate(org.apache.camel.Exchange, Class)} methods.
  *
  * @version $Revision$
  */
 public abstract class ExpressionAdapter extends ExpressionSupport {
 
-    public abstract Object evaluate(Exchange exchange);
-
     protected String assertionFailureMessage(Exchange exchange) {
         return toString();
     }
+
+    public Object evaluate(Exchange exchange) {
+        return evaluate(exchange, Object.class);
+    }
 }

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionAdapter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ExpressionSupport.java Wed Feb 11 13:16:09 2009
@@ -33,6 +33,11 @@
         return ObjectHelper.evaluateValuePredicate(value);
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, result);
+    }
+
     public void assertMatches(String text, Exchange exchange) {
         if (!matches(exchange)) {
             throw new AssertionError(text + " " + assertionFailureMessage(exchange) + " for exchange: " + exchange);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java Wed Feb 11 13:16:09 2009
@@ -51,6 +51,7 @@
         return getBody(type, getBody());
     }
 
+    @SuppressWarnings({"unchecked" })
     protected <T> T getBody(Class<T> type, Object body) {
         Exchange e = getExchange();
         if (e != null) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProxyInstantiationException.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProxyInstantiationException.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProxyInstantiationException.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProxyInstantiationException.java Wed Feb 11 13:16:09 2009
@@ -17,13 +17,14 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.RuntimeCamelException;
 
 /**
  * A proxy creation failed trying to create a proxy of a given type and on an given endpoint
  *
  * @version $Revision$
  */
-public class ProxyInstantiationException extends RuntimeException {
+public class ProxyInstantiationException extends RuntimeCamelException {
     private final Class<?> type;
     private final Endpoint endpoint;
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileExpressionBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileExpressionBuilder.java Wed Feb 11 13:16:09 2009
@@ -23,6 +23,7 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.builder.ExpressionBuilder;
+import org.apache.camel.impl.ExpressionAdapter;
 import org.apache.camel.language.IllegalSyntaxException;
 import org.apache.camel.language.constant.ConstantLanguage;
 
@@ -41,7 +42,7 @@
     }
 
     public static Expression fileNameExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFileName", String.class);
             }
@@ -54,7 +55,7 @@
     }
 
     public static Expression fileNameNoExtensionExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 String name = exchange.getIn().getHeader("CamelFileName", String.class);
                 if (name != null) {
@@ -77,7 +78,7 @@
     }
 
     public static Expression fileNameExtensionExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 String name = exchange.getIn().getHeader("CamelFileName", String.class);
                 if (name != null) {
@@ -95,7 +96,7 @@
     }
 
     public static Expression fileParentExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFileParent", String.class);
             }
@@ -108,7 +109,7 @@
     }
 
     public static Expression filePathExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFilePath", String.class);
             }
@@ -121,7 +122,7 @@
     }
 
     public static Expression fileAbsolutePathExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFileAbsolutePath", String.class);
             }
@@ -134,7 +135,7 @@
     }
 
     public static Expression fileCanoicalPathExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFileCanonicalPath", String.class);
             }
@@ -147,7 +148,7 @@
     }
 
     public static Expression fileSizeExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFileLength", Long.class);
             }
@@ -160,7 +161,7 @@
     }
 
     public static Expression fileLastModifiedExpression() {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getHeader("CamelFileLastModified", Date.class);
             }
@@ -174,7 +175,7 @@
 
 
     public static Expression dateExpression(final String command, final String pattern) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 if ("file".equals(command)) {
                     Date date = exchange.getIn().getHeader("CamelFileLastModified", Date.class);
@@ -198,7 +199,7 @@
     }
 
     public static Expression simpleExpression(final String simple) {
-        return new Expression() {
+        return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 // must call evaluate to return the nested language evaluate when evaluating
                 // stacked expressions

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionType.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionType.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionType.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionType.java Wed Feb 11 13:16:09 2009
@@ -116,6 +116,15 @@
         return expressionValue.evaluate(exchange);
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        if (expressionValue == null) {
+            RouteContext routeContext = new DefaultRouteContext(exchange.getContext());
+            expressionValue = createExpression(routeContext);
+        }
+        ObjectHelper.notNull(expressionValue, "expressionValue");
+        return expressionValue.evaluate(exchange, type);
+    }
+
     public void assertMatches(String text, Exchange exchange) throws AssertionError {
         if (!matches(exchange)) {
             throw new AssertionError(text + getExpression() + " for exchange: " + exchange);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoopProcessor.java Wed Feb 11 13:16:09 2009
@@ -46,7 +46,7 @@
     public void process(Exchange exchange) throws Exception {
         // Intermediate conversion to String is needed when direct conversion to Integer is not available
         // but evaluation result is a textual representation of a numeric value.
-        String text = ExchangeHelper.convertToType(exchange, String.class, expression.evaluate(exchange));
+        String text = expression.evaluate(exchange, String.class);
         Integer value = ExchangeHelper.convertToType(exchange, Integer.class, text);
         if (value == null) {
             // TODO: we should probably catch evaluate/convert exception an set is as fault (after fix for CAMEL-316)

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/DefaultExchangeComparator.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/DefaultExchangeComparator.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/DefaultExchangeComparator.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/DefaultExchangeComparator.java Wed Feb 11 13:16:09 2009
@@ -50,11 +50,9 @@
     @SuppressWarnings("unchecked")
     public void setExpressions(List<Expression> expressions) {
         if (expressions.isEmpty()) {
-            throw new IllegalArgumentException(
-                    "Expression required to resolve sequence number");
+            throw new IllegalArgumentException("Expression required to resolve sequence number");
         } else if (expressions.size() > 1) {
-            throw new IllegalArgumentException(
-                    "More than one expression currently not supported");
+            throw new IllegalArgumentException("More than one expression currently not supported");
         }
         expression = expressions.get(0);
     }
@@ -78,7 +76,7 @@
     }
 
     private long getSequenceNumber(Exchange exchange) {
-        return (Long)expression.evaluate(exchange);
+        return expression.evaluate(exchange, Long.class);
     }
     
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExpressionHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExpressionHelper.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExpressionHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExpressionHelper.java Wed Feb 11 13:16:09 2009
@@ -53,7 +53,6 @@
      * @return the result of the evaluation as the specified type.
      */
     public static <T> T evaluateAsType(Expression expression, Exchange exchange, Class<T> resultType) {
-        Object value = expression.evaluate(exchange);
-        return exchange.getContext().getTypeConverter().convertTo(resultType, exchange, value);
+        return expression.evaluate(exchange, resultType);
     }
 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java Wed Feb 11 13:16:09 2009
@@ -79,11 +79,11 @@
         Expression expression = language.createExpression(expressionText);
         assertNotNull("No Expression could be created for text: " + expressionText + " language: " + language, expression);
         
-        Object value = expression.evaluate(exchange);
-
-        // lets try convert to the type of the expected
+        Object value;
         if (expectedValue != null) {
-            value = ExchangeHelper.convertToType(exchange, expectedValue.getClass(), value);
+            value = expression.evaluate(exchange, expectedValue.getClass());
+        } else {
+            value = expression.evaluate(exchange);
         }
 
         log.debug("Evaluated expression: " + expression + " on exchange: " + exchange + " result: " + value);

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/TestSupport.java Wed Feb 11 13:16:09 2009
@@ -201,11 +201,11 @@
      * Asserts that the given expression when evaluated returns the given answer
      */
     protected Object assertExpression(Expression expression, Exchange exchange, Object expected) {
-        Object value = expression.evaluate(exchange);
-
-        // lets try convert to the type of the expected
+        Object value;
         if (expected != null) {
-            value = ExchangeHelper.convertToType(exchange, expected.getClass(), value);
+            value = expression.evaluate(exchange, expected.getClass());
+        } else {
+            value = expression.evaluate(exchange);
         }
 
         log.debug("Evaluated expression: " + expression + " on exchange: " + exchange + " result: " + value);

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/issues/NeilSplitterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/NeilSplitterTest.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/issues/NeilSplitterTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/issues/NeilSplitterTest.java Wed Feb 11 13:16:09 2009
@@ -25,6 +25,7 @@
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.ExpressionAdapter;
 import static org.apache.camel.builder.xml.XPathBuilder.xpath;
 
 /**
@@ -100,7 +101,7 @@
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                Expression catFightCats = new Expression() {
+                Expression catFightCats = new ExpressionAdapter() {
                     public Object evaluate(Exchange exchange) {
                         CatFight catFight = (CatFight)
                                 exchange.getIn().getBody();

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/issues/SetHeaderIssueTest.java Wed Feb 11 13:16:09 2009
@@ -18,7 +18,6 @@
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.builder.xml.Namespaces;
 import org.apache.camel.component.mock.MockEndpoint;

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java Wed Feb 11 13:16:09 2009
@@ -71,7 +71,7 @@
         assertExpression("${file:length}", file.length());
 
         // modified is a Date object
-        Date modified = (Date) FileLanguage.file("file:modified").evaluate(exchange);
+        Date modified = FileLanguage.file("file:modified").evaluate(exchange, Date.class);
         assertEquals(new Date(file.lastModified()), modified);
     }
 

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetHeaderUsingDslExpressionsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetHeaderUsingDslExpressionsTest.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetHeaderUsingDslExpressionsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetHeaderUsingDslExpressionsTest.java Wed Feb 11 13:16:09 2009
@@ -20,6 +20,7 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.ExpressionAdapter;
 
 /**
  * @version $Revision$

Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpHeaderFilterStrategy.java Wed Feb 11 13:16:09 2009
@@ -35,7 +35,7 @@
         getOutFilter().add(HttpMethods.HTTP_METHOD);
         getOutFilter().add(HttpProducer.QUERY);
         getOutFilter().add(HttpProducer.HTTP_RESPONSE_CODE.toLowerCase());
-        setIsLowercase(true);
+        setLowercase(true);
         
         // filter headers begin with "org.apache.camel"
         setOutFilterPattern("(org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");    

Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMethods.java Wed Feb 11 13:16:09 2009
@@ -68,4 +68,9 @@
         return ExpressionBuilder.constantExpression(name()).evaluate(exchange);
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, result);
+    }
+
 }

Modified: camel/trunk/components/camel-jhc/src/main/java/org/apache/camel/component/jhc/JhcHeaderFilterStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jhc/src/main/java/org/apache/camel/component/jhc/JhcHeaderFilterStrategy.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-jhc/src/main/java/org/apache/camel/component/jhc/JhcHeaderFilterStrategy.java (original)
+++ camel/trunk/components/camel-jhc/src/main/java/org/apache/camel/component/jhc/JhcHeaderFilterStrategy.java Wed Feb 11 13:16:09 2009
@@ -34,7 +34,7 @@
         getOutFilter().add("content-length");
         getOutFilter().add("content-type");
         getOutFilter().add(JhcProducer.HTTP_RESPONSE_CODE);
-        setIsLowercase(true);
+        setLowercase(true);
 
         // filter headers begin with "org.apache.camel"
         setOutFilterPattern("(org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");   

Modified: camel/trunk/components/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java (original)
+++ camel/trunk/components/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java Wed Feb 11 13:16:09 2009
@@ -52,6 +52,11 @@
         return evaluateQuery(exchange);
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, result);
+    }
+
     public boolean matches(Exchange exchange) {
         List list = evaluateQuery(exchange);
         return matches(exchange, list);

Modified: camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java (original)
+++ camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java Wed Feb 11 13:16:09 2009
@@ -17,7 +17,6 @@
 package org.apache.camel.component.jpa;
 
 import java.util.Map;
-
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
@@ -29,6 +28,7 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.builder.ExpressionBuilder;
+import org.apache.camel.impl.ExpressionAdapter;
 import org.apache.camel.impl.ScheduledPollEndpoint;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -185,7 +185,7 @@
     // Implementation methods
     // -------------------------------------------------------------------------
     protected void validate() {
-        ObjectHelper.notNull(getEntityManagerFactory(), "entityManagerFactory property");
+        ObjectHelper.notNull(getEntityManagerFactory(), "entityManagerFactory");
     }
 
     protected JpaTemplate createTemplate() {
@@ -203,7 +203,6 @@
     protected TransactionStrategy createTransactionStrategy() {
         EntityManagerFactory emf = getEntityManagerFactory();
         return JpaTemplateTransactionStrategy.newInstance(emf, getTemplate());
-        // return new DefaultTransactionStrategy(emf);
     }
 
     protected Expression createProducerExpression() {
@@ -211,7 +210,7 @@
         if (type == null) {
             return ExpressionBuilder.bodyExpression();
         } else {
-            return new Expression() {
+            return new ExpressionAdapter() {
                 public Object evaluate(Exchange exchange) {
                     Object answer = exchange.getIn().getBody(type);
                     if (answer == null) {

Modified: camel/trunk/components/camel-rss/src/main/java/org/apache/camel/component/rss/AggregateRssFeedCollection.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-rss/src/main/java/org/apache/camel/component/rss/AggregateRssFeedCollection.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-rss/src/main/java/org/apache/camel/component/rss/AggregateRssFeedCollection.java (original)
+++ camel/trunk/components/camel-rss/src/main/java/org/apache/camel/component/rss/AggregateRssFeedCollection.java Wed Feb 11 13:16:09 2009
@@ -19,12 +19,12 @@
 
 import com.sun.syndication.feed.synd.SyndFeed;
 import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
+import org.apache.camel.impl.ExpressionAdapter;
 import org.apache.camel.processor.aggregate.DefaultAggregationCollection;
 
 public class AggregateRssFeedCollection extends DefaultAggregationCollection {
     public AggregateRssFeedCollection() {
-        super(new Expression() {
+        super(new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
                 return exchange.getIn().getBody() instanceof SyndFeed;
             }

Modified: camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java (original)
+++ camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java Wed Feb 11 13:16:09 2009
@@ -95,6 +95,27 @@
         exchange.getOut().getHeaders().putAll(exchange.getIn().getHeaders());
     }
 
+    @SuppressWarnings("unchecked")
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        ObjectHelper.notNull(type, "type");
+        try {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Evaluation " + expression + " for exchange: " + exchange);
+            }
+            if (type.equals(String.class)) {
+                return (T) evaluateAsString(exchange);
+            } else if (type.isAssignableFrom(Collection.class)) {
+                return (T) evaluateAsList(exchange);
+            } else if (type.isAssignableFrom(Node.class)) {
+                return (T) evaluateAsDOM(exchange);
+            } else {
+                throw new IllegalArgumentException("Type: " + type.getCanonicalName() + " not supported");
+            }
+        } catch (Exception e) {
+            throw new RuntimeExpressionException(e);
+        }
+    }
+
     public Object evaluate(Exchange exchange) {
         try {
             if (LOG.isDebugEnabled()) {

Modified: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/ScalaExpression.scala Wed Feb 11 13:16:09 2009
@@ -23,4 +23,9 @@
   
   def evaluate(exchange: Exchange) = expression(exchange).asInstanceOf[Object]
 
+  def evaluate[Target](exchange: Exchange, toType: Class[Target]) = {
+    var value = expression(exchange)
+    exchange.getContext().getTypeConverter().convertTo(toType, value)
+  }
+
 }

Modified: camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala (original)
+++ camel/trunk/components/camel-scala/src/main/scala/org/apache/camel/scala/dsl/builder/RouteBuilder.scala Wed Feb 11 13:16:09 2009
@@ -53,8 +53,8 @@
 
   def from(uri: String) = new SRouteType(builder.from(uri), this)
   def handle[E](block: => Unit)(implicit manifest: Manifest[E]) = {
-     val exception = new SExceptionType(builder.onException(manifest.erasure))(this)
-     exception.apply(block)
+    val exception = new SExceptionType(builder.onException(manifest.erasure))(this)
+    exception.apply(block)
   }
 
   def attempt = stack.top.attempt

Modified: camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java?rev=743330&r1=743329&r2=743330&view=diff
==============================================================================
--- camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java (original)
+++ camel/trunk/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java Wed Feb 11 13:16:09 2009
@@ -77,6 +77,11 @@
         return evaluateScript(exchange);
     }
 
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, result);
+    }
+
     public boolean matches(Exchange exchange) {
         Object scriptValue = evaluateScript(exchange);
         return matches(exchange, scriptValue);