You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ha...@apache.org on 2012/01/17 05:59:41 UTC
svn commit: r1232304 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/builder/ test/java/org/apache/camel/builder/
Author: hadrian
Date: Tue Jan 17 04:59:41 2012
New Revision: 1232304
URL: http://svn.apache.org/viewvc?rev=1232304&view=rev
Log:
CAMEL-4603. Add attachments expression returning just attachment values to be used with splitter
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExpressionClauseTest.java
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=1232304&r1=1232303&r2=1232304&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 Tue Jan 17 04:59:41 2012
@@ -81,6 +81,24 @@ public final class ExpressionBuilder {
}
/**
+ * Returns an expression for the inbound message attachments
+ *
+ * @return an expression object which will return the inbound message attachments
+ */
+ public static Expression attachmentValuesExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getAttachments().values();
+ }
+
+ @Override
+ public String toString() {
+ return "attachments";
+ }
+ };
+ }
+
+ /**
* Returns an expression for the header value with the given name
* <p/>
* Will fallback and look in properties if not found in headers.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java?rev=1232304&r1=1232303&r2=1232304&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java Tue Jan 17 04:59:41 2012
@@ -137,6 +137,13 @@ public class ExpressionClause<T> extends
}
/**
+ * An expression of the inbound headers
+ */
+ public T attachments() {
+ return delegate.attachments();
+ }
+
+ /**
* An expression of an exchange property of the given name
*/
public T property(String name) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java?rev=1232304&r1=1232303&r2=1232304&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java Tue Jan 17 04:59:41 2012
@@ -164,6 +164,13 @@ public class ExpressionClauseSupport<T>
}
/**
+ * An expression of the inbound message attachments
+ */
+ public T attachments() {
+ return expression(ExpressionBuilder.attachmentValuesExpression());
+ }
+
+ /**
* An expression of the exchange pattern
*/
public T exchangePattern() {
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExpressionClauseTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExpressionClauseTest.java?rev=1232304&r1=1232303&r2=1232304&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExpressionClauseTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExpressionClauseTest.java Tue Jan 17 04:59:41 2012
@@ -16,7 +16,17 @@
*/
package org.apache.camel.builder;
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.activation.FileDataSource;
+
import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.component.bean.pojomessage.Person;
+import org.apache.camel.component.bean.pojomessage.PojoProxyHelperRequestReplyTest.PersonHandler;
import org.apache.camel.component.mock.MockEndpoint;
/**
@@ -34,13 +44,46 @@ public class ExpressionClauseTest extend
assertMockEndpointsSatisfied();
}
+ public void testAttachments() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(2);
+ mock.expectedBodiesReceivedInAnyOrder("log4j.properties", "jndi-example.properties");
+
+ template.send("direct:begin", new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Message m = exchange.getIn();
+ m.setBody("Hello World");
+ m.addAttachment("log4j", new DataHandler(new FileDataSource("src/test/resources/log4j.properties")));
+ m.addAttachment("jndi-example", new DataHandler(new FileDataSource("src/test/resources/jndi-example.properties")));
+ }
+ });
+
+ assertMockEndpointsSatisfied();
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start").to("mock:result");
+ from("direct:begin")
+ .split().attachments()
+ // extract just the name from the DataHandler/DataSource to simplify assertions
+ .bean(new Extractor())
+ .to("mock:result");
}
};
}
+
+ public final class Extractor {
+ public String extractName(DataHandler body) {
+ DataSource ds = (body != null) ? body.getDataSource() : null;
+ if (ds != null && ds instanceof FileDataSource) {
+ return ((FileDataSource)ds).getName();
+ }
+ return null;
+ }
+ }
}