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