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/12/08 08:42:24 UTC
svn commit: r888284 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/language/simple/
camel-core/src/main/java/org/apache/camel/processor/interceptor/
camel-core/src/main/resources/META-INF...
Author: davsclaus
Date: Tue Dec 8 07:42:23 2009
New Revision: 888284
URL: http://svn.apache.org/viewvc?rev=888284&view=rev
Log:
CAMEL-2226: File language now merged into Simple language by default. This improves CBR with files etc.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java (with props)
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java (with props)
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/file/SpringFileLanguageCBRTest.xml
- copied, changed from r888103, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml
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/FileExpressionBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java
camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentAggregateBatchConsumerTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.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=888284&r1=888283&r2=888284&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 Dec 8 07:42:23 2009
@@ -36,6 +36,7 @@
import org.apache.camel.language.bean.BeanLanguage;
import org.apache.camel.spi.Language;
import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
/**
@@ -624,7 +625,7 @@
/**
* Returns an expression which converts the given expression to the given type the type
- * expression is evaluted to
+ * expression is evaluated to
*/
public static Expression convertToExpression(final Expression expression, final Expression type) {
return new ExpressionAdapter() {
@@ -852,13 +853,18 @@
String key = command.substring(command.lastIndexOf('.') + 1);
date = exchange.getIn().getHeader(key, Date.class);
if (date == null) {
- throw new IllegalArgumentException("Cannot find java.util.Date object at " + command);
+ throw new IllegalArgumentException("Cannot find java.util.Date object at command: " + command);
}
} else if (command.startsWith("out.header.")) {
String key = command.substring(command.lastIndexOf('.') + 1);
date = exchange.getOut().getHeader(key, Date.class);
if (date == null) {
- throw new IllegalArgumentException("Cannot find java.util.Date object at " + command);
+ throw new IllegalArgumentException("Cannot find java.util.Date object at command: " + command);
+ }
+ } else if ("file".equals(command)) {
+ date = exchange.getIn().getHeader("CamelFileLastModified", Date.class);
+ if (date == null) {
+ throw new IllegalArgumentException("Cannot find CamelFileLastModified header at command: " + command);
}
} else {
throw new IllegalArgumentException("Command not supported for dateExpression: " + command);
@@ -956,4 +962,160 @@
}
};
}
+
+ public static Expression fileNameExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:name";
+ }
+ };
+ }
+
+ public static Expression fileOnlyNameExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ String answer = exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY, String.class);
+ if (answer == null) {
+ answer = exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
+ answer = FileUtil.stripPath(answer);
+ }
+ return answer;
+ }
+
+ @Override
+ public String toString() {
+ return "file:onlyname";
+ }
+ };
+ }
+
+ public static Expression fileNameNoExtensionExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ String name = exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
+ return FileUtil.stripExt(name);
+ }
+
+ @Override
+ public String toString() {
+ return "file:name.noext";
+ }
+ };
+ }
+
+ public static Expression fileOnlyNameNoExtensionExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ String name = fileOnlyNameExpression().evaluate(exchange, String.class);
+ return FileUtil.stripExt(name);
+ }
+
+ @Override
+ public String toString() {
+ return "file:onlyname.noext";
+ }
+ };
+ }
+
+ public static Expression fileExtensionExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ String name = exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
+ if (name != null) {
+ return name.substring(name.lastIndexOf('.') + 1);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "file:ext";
+ }
+ };
+ }
+
+ public static Expression fileParentExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader("CamelFileParent", String.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:parent";
+ }
+ };
+ }
+
+ public static Expression filePathExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader("CamelFilePath", String.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:path";
+ }
+ };
+ }
+
+ public static Expression fileAbsolutePathExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader("CamelFileAbsolutePath", String.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:absolute.path";
+ }
+ };
+ }
+
+ public static Expression fileAbsoluteExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader("CamelFileAbsolute", Boolean.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:absolute";
+ }
+ };
+ }
+
+ public static Expression fileSizeExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader("CamelFileLength", Long.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:length";
+ }
+ };
+ }
+
+ public static Expression fileLastModifiedExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return exchange.getIn().getHeader("CamelFileLastModified", Date.class);
+ }
+
+ @Override
+ public String toString() {
+ return "file:modified";
+ }
+ };
+ }
+
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java Tue Dec 8 07:42:23 2009
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.builder;
import java.text.SimpleDateFormat;
@@ -33,7 +32,9 @@
* This expression expects the headers from the {@link org.apache.camel.language.simple.FileLanguage} on the <b>IN</b> message.
*
* @see org.apache.camel.language.simple.FileLanguage
+ * @deprecated will be removed in Camel 2.3
*/
+@Deprecated
public final class FileExpressionBuilder {
private FileExpressionBuilder() {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java Tue Dec 8 07:42:23 2009
@@ -17,9 +17,6 @@
package org.apache.camel.language.simple;
import org.apache.camel.Expression;
-import org.apache.camel.ExpressionIllegalSyntaxException;
-import org.apache.camel.builder.FileExpressionBuilder;
-import org.apache.camel.util.ObjectHelper;
/**
* File language is an extension to Simple language to add file specific expressions.
@@ -51,59 +48,18 @@
*
* @see org.apache.camel.language.simple.SimpleLanguage
* @see org.apache.camel.language.bean.BeanLanguage
+ * @deprecated file language is now included as standard in simple language, will be removed in Camel 2.4
*/
+@Deprecated
public class FileLanguage extends SimpleLanguageSupport {
private static final SimpleLanguage SIMPLE = new SimpleLanguage();
public static Expression file(String expression) {
- FileLanguage language = new FileLanguage();
- return language.createExpression(expression);
+ return SimpleLanguage.simple(expression);
}
protected Expression createSimpleExpression(String expression, boolean strict) {
-
- // file: prefix
- String remainder = ifStartsWithReturnRemainder("file:", expression);
- if (remainder != null) {
- if (ObjectHelper.equal(remainder, "name")) {
- return FileExpressionBuilder.fileNameExpression();
- } else if (ObjectHelper.equal(remainder, "name.noext")) {
- return FileExpressionBuilder.fileNameNoExtensionExpression();
- } else if (ObjectHelper.equal(remainder, "onlyname")) {
- return FileExpressionBuilder.fileOnlyNameExpression();
- } else if (ObjectHelper.equal(remainder, "onlyname.noext")) {
- return FileExpressionBuilder.fileOnlyNameNoExtensionExpression();
- } else if (ObjectHelper.equal(remainder, "ext")) {
- return FileExpressionBuilder.fileExtensionExpression();
- } else if (ObjectHelper.equal(remainder, "parent")) {
- return FileExpressionBuilder.fileParentExpression();
- } else if (ObjectHelper.equal(remainder, "path")) {
- return FileExpressionBuilder.filePathExpression();
- } else if (ObjectHelper.equal(remainder, "absolute")) {
- return FileExpressionBuilder.fileAbsoluteExpression();
- } else if (ObjectHelper.equal(remainder, "absolute.path")) {
- return FileExpressionBuilder.fileAbsolutePathExpression();
- } else if (ObjectHelper.equal(remainder, "length")) {
- return FileExpressionBuilder.fileSizeExpression();
- } else if (ObjectHelper.equal(remainder, "modified")) {
- return FileExpressionBuilder.fileLastModifiedExpression();
- }
- }
-
- // date: prefix
- remainder = ifStartsWithReturnRemainder("date:", expression);
- if (remainder != null) {
- String[] parts = remainder.split(":");
- if (parts.length != 2) {
- throw new ExpressionIllegalSyntaxException("Valid syntax: ${date:command:pattern} was: " + expression);
- }
- String command = parts[0];
- String pattern = parts[1];
- return FileExpressionBuilder.dateExpression(command, pattern);
- }
-
- // fallback to simple language if not file specific
return SIMPLE.createSimpleExpression(expression, strict);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java Tue Dec 8 07:42:23 2009
@@ -42,14 +42,39 @@
* <li>bean:<bean expression> to invoke a bean using the
* {@link org.apache.camel.language.bean.BeanLanguage BeanLanguage}</li>
* </ul>
+ * <p/>
+ * The simple language now also includes file language out of the box which means the following expression is also
+ * supported:
+ * <ul>
+ * <li><tt>file:name</tt> to access the file name (is relative, see note below))</li>
+ * <li><tt>file:name.noext</tt> to access the file name with no extension</li>
+ * <li><tt>file:ext</tt> to access the file extension</li>
+ * <li><tt>file:onlyname</tt> to access the file name (no paths)</li>
+ * <li><tt>file:onlyname.noext</tt> to access the file name (no paths) with no extension </li>
+ * <li><tt>file:parent</tt> to access the parent file name</li>
+ * <li><tt>file:path</tt> to access the file path name</li>
+ * <li><tt>file:absolute</tt> is the file regarded as absolute or relative</li>
+ * <li><tt>file:absolute.path</tt> to access the absolute file path name</li>
+ * <li><tt>file:length</tt> to access the file length as a Long type</li>
+ * <li><tt>file:modified</tt> to access the file last modified as a Date type</li>
+ * <li><tt>date:<command>:<pattern></tt> for date formatting using the {@link java.text.SimpleDateFormat} patterns.
+ * Additional Supported commands are: <tt>file</tt> for the last modified timestamp of the file.
+ * All the commands from {@link SimpleLanguage} is also available.
+ * </li>
+ * </ul>
+ * The <b>relative</b> file is the filename with the starting directory clipped, as opposed to <b>path</b> that will
+ * return the full path including the starting directory.
+ * <br/>
+ * The <b>only</b> file is the filename only with all paths clipped.
*
* @version $Revision$
*/
public class SimpleLanguage extends SimpleLanguageSupport {
+ private static final SimpleLanguage SIMPLE = new SimpleLanguage();
+
public static Expression simple(String expression) {
- SimpleLanguage language = new SimpleLanguage();
- return language.createExpression(expression);
+ return SIMPLE.createExpression(expression);
}
protected Expression createSimpleExpression(String expression, boolean strict) {
@@ -99,6 +124,34 @@
return ExpressionBuilder.systemPropertyExpression(remainder);
}
+ // file: prefix
+ remainder = ifStartsWithReturnRemainder("file:", expression);
+ if (remainder != null) {
+ if (ObjectHelper.equal(remainder, "name")) {
+ return ExpressionBuilder.fileNameExpression();
+ } else if (ObjectHelper.equal(remainder, "name.noext")) {
+ return ExpressionBuilder.fileNameNoExtensionExpression();
+ } else if (ObjectHelper.equal(remainder, "onlyname")) {
+ return ExpressionBuilder.fileOnlyNameExpression();
+ } else if (ObjectHelper.equal(remainder, "onlyname.noext")) {
+ return ExpressionBuilder.fileOnlyNameNoExtensionExpression();
+ } else if (ObjectHelper.equal(remainder, "ext")) {
+ return ExpressionBuilder.fileExtensionExpression();
+ } else if (ObjectHelper.equal(remainder, "parent")) {
+ return ExpressionBuilder.fileParentExpression();
+ } else if (ObjectHelper.equal(remainder, "path")) {
+ return ExpressionBuilder.filePathExpression();
+ } else if (ObjectHelper.equal(remainder, "absolute")) {
+ return ExpressionBuilder.fileAbsoluteExpression();
+ } else if (ObjectHelper.equal(remainder, "absolute.path")) {
+ return ExpressionBuilder.fileAbsolutePathExpression();
+ } else if (ObjectHelper.equal(remainder, "length")) {
+ return ExpressionBuilder.fileSizeExpression();
+ } else if (ObjectHelper.equal(remainder, "modified")) {
+ return ExpressionBuilder.fileLastModifiedExpression();
+ }
+ }
+
// date: prefix
remainder = ifStartsWithReturnRemainder("date:", expression);
if (remainder != null) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceEventMessage.java Tue Dec 8 07:42:23 2009
@@ -19,14 +19,14 @@
import java.util.Date;
/**
- * A trace event message that contains decomposited information about the traced
+ * A trace event message that contains decomposed information about the traced
* {@link org.apache.camel.Exchange} at the point of interception. The information is stored as snapshot copies
* using String types.
*/
public interface TraceEventMessage {
/**
- * Gets the timestamp when the interception occured
+ * Gets the timestamp when the interception occurred
*/
Date getTimestamp();
@@ -39,14 +39,14 @@
* Gets the previous node.
* <p/>
* Will return <tt>null</tt> if this is the first node, then you can use the from endpoint uri
- * instread to indicate the start
+ * instead to indicate the start
*/
String getPreviousNode();
/**
* Gets the current node that just have been intercepted and processed
* <p/>
- * Is never null.
+ * Is never <tt>null</tt>.
*/
String getToNode();
Modified: camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file (original)
+++ camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file Tue Dec 8 07:42:23 2009
@@ -15,4 +15,4 @@
# limitations under the License.
#
-class=org.apache.camel.language.simple.FileLanguage
\ No newline at end of file
+class=org.apache.camel.language.simple.SimpleLanguage
\ No newline at end of file
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentAggregateBatchConsumerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentAggregateBatchConsumerTest.java?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentAggregateBatchConsumerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentAggregateBatchConsumerTest.java Tue Dec 8 07:42:23 2009
@@ -20,7 +20,7 @@
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.apache.camel.language.simple.FileLanguage.file;
+import static org.apache.camel.language.simple.SimpleLanguage.simple;
/**
* File being processed sync vs async to demonstrate the time difference.
@@ -36,7 +36,7 @@
@Override
public void configure() throws Exception {
from("file://target/concurrent?delay=60000&initialDelay=2500")
- .setHeader("id", file("${file:onlyname.noext}"))
+ .setHeader("id", simple("${file:onlyname.noext}"))
.threads(20)
.beanRef("business")
.aggregate(header("country"), new MyBusinessTotal()).batchSizeFromConsumer().batchTimeout(60000).to("mock:result");
@@ -59,7 +59,7 @@
@Override
public void configure() throws Exception {
from("file://target/concurrent?delay=60000&initialDelay=2500")
- .setHeader("id", file("${file:onlyname.noext}"))
+ .setHeader("id", simple("${file:onlyname.noext}"))
.beanRef("business")
.aggregate(header("country"), new MyBusinessTotal()).batchSizeFromConsumer().batchTimeout(60000).to("mock:result");
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentTest.java?rev=888284&r1=888283&r2=888284&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConcurrentTest.java Tue Dec 8 07:42:23 2009
@@ -32,7 +32,7 @@
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.apache.camel.language.simple.FileLanguage.file;
+import static org.apache.camel.language.simple.SimpleLanguage.simple;
/**
* File being processed sync vs async to demonstrate the time difference.
@@ -65,7 +65,7 @@
@Override
public void configure() throws Exception {
from("file://target/concurrent?delay=60000&initialDelay=2500")
- .setHeader("id", file("${file:onlyname.noext}"))
+ .setHeader("id", simple("${file:onlyname.noext}"))
.threads(20)
.beanRef("business")
.aggregate(header("country"), new MyBusinessTotal()).batchSize(10).batchTimeout(60000).to("mock:result");
@@ -88,7 +88,7 @@
@Override
public void configure() throws Exception {
from("file://target/concurrent?delay=60000&initialDelay=2500")
- .setHeader("id", file("${file:onlyname.noext}"))
+ .setHeader("id", simple("${file:onlyname.noext}"))
.beanRef("business")
.aggregate(header("country"), new MyBusinessTotal()).batchSize(10).batchTimeout(60000).to("mock:result");
}
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java?rev=888284&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java Tue Dec 8 07:42:23 2009
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.file;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class FileLanguageCBRTest extends ContextTestSupport {
+
+ @Override
+ protected void setUp() throws Exception {
+ deleteDirectory("target/cbr");
+ super.setUp();
+ }
+
+ public void testTxt() throws Exception {
+ getMockEndpoint("mock:txt").expectedMessageCount(1);
+ getMockEndpoint("mock:dat").expectedMessageCount(0);
+ getMockEndpoint("mock:other").expectedMessageCount(0);
+
+ template.sendBodyAndHeader("file://target/cbr", "Hello World", Exchange.FILE_NAME, "hello.txt");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testDat() throws Exception {
+ getMockEndpoint("mock:txt").expectedMessageCount(0);
+ getMockEndpoint("mock:dat").expectedMessageCount(1);
+ getMockEndpoint("mock:other").expectedMessageCount(0);
+
+ template.sendBodyAndHeader("file://target/cbr", "Bye World", Exchange.FILE_NAME, "bye.dat");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testOther() throws Exception {
+ getMockEndpoint("mock:txt").expectedMessageCount(0);
+ getMockEndpoint("mock:dat").expectedMessageCount(0);
+ getMockEndpoint("mock:other").expectedMessageCount(1);
+
+ template.sendBodyAndHeader("file://target/cbr", "Hi World", Exchange.FILE_NAME, "hi.foo");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("file://target/cbr?delete=true")
+ .convertBodyTo(String.class)
+ .choice()
+ .when().simple("${file:ext} == 'txt'").to("mock:txt")
+ .when().simple("${file:ext} == 'dat'").to("mock:dat")
+ .otherwise().to("mock:other");
+ }
+ };
+ }
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileLanguageCBRTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=888284&r1=888283&r2=888284&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 Tue Dec 8 07:42:23 2009
@@ -29,7 +29,7 @@
import org.apache.camel.component.file.FileEndpoint;
import org.apache.camel.component.file.GenericFile;
import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.language.simple.FileLanguage;
+import org.apache.camel.language.simple.SimpleLanguage;
/**
* Unit test for File Language.
@@ -71,7 +71,7 @@
assertExpression("${file:length}", file.length());
// modified is a Date object
- Date modified = FileLanguage.file("file:modified").evaluate(exchange, Date.class);
+ Date modified = SimpleLanguage.simple("file:modified").evaluate(exchange, Date.class);
assertEquals(new Date(file.lastModified()), modified);
}
Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java?rev=888284&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java Tue Dec 8 07:42:23 2009
@@ -0,0 +1,70 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.file;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * @version $Revision$
+ */
+public class SpringFileLanguageCBRTest extends SpringTestSupport {
+
+ @Override
+ protected AbstractXmlApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/spring/file/SpringFileLanguageCBRTest.xml");
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ deleteDirectory("target/cbr");
+ super.setUp();
+ }
+
+ public void testTxt() throws Exception {
+ getMockEndpoint("mock:txt").expectedMessageCount(1);
+ getMockEndpoint("mock:dat").expectedMessageCount(0);
+ getMockEndpoint("mock:other").expectedMessageCount(0);
+
+ template.sendBodyAndHeader("file://target/cbr", "Hello World", Exchange.FILE_NAME, "hello.txt");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testDat() throws Exception {
+ getMockEndpoint("mock:txt").expectedMessageCount(0);
+ getMockEndpoint("mock:dat").expectedMessageCount(1);
+ getMockEndpoint("mock:other").expectedMessageCount(0);
+
+ template.sendBodyAndHeader("file://target/cbr", "Bye World", Exchange.FILE_NAME, "bye.dat");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testOther() throws Exception {
+ getMockEndpoint("mock:txt").expectedMessageCount(0);
+ getMockEndpoint("mock:dat").expectedMessageCount(0);
+ getMockEndpoint("mock:other").expectedMessageCount(1);
+
+ template.sendBodyAndHeader("file://target/cbr", "Hi World", Exchange.FILE_NAME, "hi.foo");
+
+ assertMockEndpointsSatisfied();
+ }
+
+}
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/file/SpringFileLanguageCBRTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/file/SpringFileLanguageCBRTest.xml (from r888103, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/file/SpringFileLanguageCBRTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/file/SpringFileLanguageCBRTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml&r1=888103&r2=888284&rev=888284&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/file/SpringFileLanguageCBRTest.xml Tue Dec 8 07:42:23 2009
@@ -25,11 +25,20 @@
<!-- START SNIPPET: e1 -->
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
- <from uri="direct:start"/>
- <aop afterUri="mock:after">
- <transform><constant>Bye World</constant></transform>
- <to uri="mock:result"/>
- </aop>
+ <from uri="file://target/cbr?delete=true"/>
+ <choice>
+ <when>
+ <simple>${file:ext} == 'txt'</simple>
+ <to uri="mock:txt"/>
+ </when>
+ <when>
+ <simple>${file:ext} == 'dat'</simple>
+ <to uri="mock:dat"/>
+ </when>
+ <otherwise>
+ <to uri="mock:other"/>
+ </otherwise>
+ </choice>
</route>
</camelContext>
<!-- END SNIPPET: e1 -->