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/01/14 08:11:19 UTC
svn commit: r734353 - in /activemq/camel/branches/camel-1.x: ./
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/model/
camel-core/src/main/java/org/apache/camel/model/dataformat/
camel-core/src/main/java/org/ap...
Author: davsclaus
Date: Tue Jan 13 23:11:17 2009
New Revision: 734353
URL: http://svn.apache.org/viewvc?rev=734353&view=rev
Log:
Merged revisions 734348 via svnmerge from
https://svn.apache.org/repos/asf/activemq/camel/trunk
........
r734348 | davsclaus | 2009-01-14 07:39:58 +0100 (Wed, 14 Jan 2009) | 1 line
CAMEL-1251: Dynamic recipient list not handles a single String with endpoints seperated with comma. Exposes a seperator attribute in Spring DSL to set it. Polished zip dataformat.
........
Added:
activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/processor/RecipientListWithStringDelimitedHeaderTest.java
- copied unchanged from r734348, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RecipientListWithStringDelimitedHeaderTest.java
activemq/camel/branches/camel-1.x/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringRecipientListWithStringDelimitedHeaderTest.java
- copied unchanged from r734348, activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringRecipientListWithStringDelimitedHeaderTest.java
activemq/camel/branches/camel-1.x/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/recipientListWithStringDelimitedHeader.xml
- copied unchanged from r734348, activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/recipientListWithStringDelimitedHeader.xml
Modified:
activemq/camel/branches/camel-1.x/ (props changed)
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/RecipientListType.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java
activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
Propchange: activemq/camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 13 23:11:17 2009
@@ -1 +1 @@
-/activemq/camel/trunk:732943,733749,734053,734057-734058,734064,734130,734309,734340-734342
+/activemq/camel/trunk:732943,733749,734053,734057-734058,734064,734130,734309,734340-734342,734348
Propchange: activemq/camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java Tue Jan 13 23:11:17 2009
@@ -26,10 +26,10 @@
import org.apache.camel.Exchange;
import org.apache.camel.converter.IOConverter;
import org.apache.camel.spi.DataFormat;
+import org.apache.camel.util.ExchangeHelper;
public class ZipDataFormat implements DataFormat {
- private static final int INITIALBYTEARRAYSIZE = 1048576;
private int compressionLevel;
public ZipDataFormat() {
@@ -40,43 +40,31 @@
this.compressionLevel = compressionLevel;
}
- public void marshal(Exchange exchange, Object body, OutputStream stream)
+ public void marshal(Exchange exchange, Object graph, OutputStream stream)
throws Exception {
- InputStream is;
- if (body instanceof InputStream) {
- is = (InputStream)body;
- }
- is = exchange.getIn().getBody(InputStream.class);
+
+ InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, graph);
if (is == null) {
- throw new IllegalArgumentException("Can't get the inputstream for ZipDataFormat mashalling");
+ throw new IllegalArgumentException("Cannot get the inputstream for ZipDataFormat mashalling");
}
-
- DeflaterOutputStream zipOutput = new DeflaterOutputStream(stream, new Deflater(compressionLevel));
-
- // Compress the data
- IOConverter.copy(is, zipOutput);
- zipOutput.close();
+ DeflaterOutputStream zipOutput = new DeflaterOutputStream(stream, new Deflater(compressionLevel));
+ try {
+ IOConverter.copy(is, zipOutput);
+ } finally {
+ zipOutput.close();
+ }
}
public Object unmarshal(Exchange exchange, InputStream stream)
throws Exception {
-
- InputStream is = stream;
- if (is == null) {
- exchange.getIn().getBody(InputStream.class);
- }
- if (is == null) {
- throw new IllegalArgumentException("Can't get the inputStream for ZipDataFormat unmashalling");
- }
-
+
+ InputStream is = ExchangeHelper.getMandatoryInBody(exchange, InputStream.class);
InflaterInputStream unzipInput = new InflaterInputStream(is);
// Create an expandable byte array to hold the inflated data
ByteArrayOutputStream bos = new ByteArrayOutputStream();
-
- IOConverter.copy(unzipInput, bos);
-
+ IOConverter.copy(unzipInput, bos);
return bos.toByteArray();
}
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/RecipientListType.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/RecipientListType.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/RecipientListType.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/RecipientListType.java Tue Jan 13 23:11:17 2009
@@ -18,10 +18,12 @@
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.camel.Expression;
import org.apache.camel.Processor;
+import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.model.language.ExpressionType;
import org.apache.camel.processor.RecipientList;
import org.apache.camel.spi.RouteContext;
@@ -34,6 +36,9 @@
@XmlRootElement(name = "recipientList")
@XmlAccessorType(XmlAccessType.FIELD)
public class RecipientListType extends ExpressionNode {
+ @XmlAttribute(required = false)
+ private String delimiter;
+
public RecipientListType() {
}
@@ -57,6 +62,24 @@
@Override
public Processor createProcessor(RouteContext routeContext) throws Exception {
- return new RecipientList(getExpression().createExpression(routeContext));
+ Expression expression = getExpression().createExpression(routeContext);
+
+ // add a tokenizer if we have a delimiter
+ if (delimiter != null) {
+ expression = ExpressionBuilder.tokenizeExpression(expression, delimiter);
+ }
+
+ return new RecipientList(expression);
+ }
+
+ // Properties
+ //-------------------------------------------------------------------------
+
+ public String getDelimiter() {
+ return delimiter;
+ }
+
+ public void setDelimiter(String delimiter) {
+ this.delimiter = delimiter;
}
}
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/dataformat/ZipDataFormat.java Tue Jan 13 23:11:17 2009
@@ -36,7 +36,6 @@
private int compressionLevel = Deflater.BEST_SPEED;
public ZipDataFormat() {
-
}
public ZipDataFormat(int compressionLevel) {
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java Tue Jan 13 23:11:17 2009
@@ -76,6 +76,10 @@
}
protected Endpoint<Exchange> resolveEndpoint(Exchange exchange, Object recipient) {
+ // trim strings as end users might have added spaces between separators
+ if (recipient instanceof String) {
+ recipient = ((String)recipient).trim();
+ }
return ExchangeHelper.resolveEndpoint(exchange, recipient);
}
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Tue Jan 13 23:11:17 2009
@@ -30,6 +30,7 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Scanner;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -319,6 +320,11 @@
throw new UnsupportedOperationException();
}
};
+ } else if (value instanceof String) {
+ Scanner scanner = new Scanner((String)value);
+ // use comma as delimiter for String values
+ scanner.useDelimiter(",");
+ return scanner;
} else {
return Collections.singletonList(value).iterator();
}
Modified: activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java Tue Jan 13 23:11:17 2009
@@ -19,21 +19,18 @@
import java.io.ByteArrayOutputStream;
import java.util.zip.Deflater;
import java.util.zip.Inflater;
-import org.apache.camel.CamelContext;
+
+import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.TestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-
-
/**
* Unit test of the zip data format.
*/
-public class ZipDataFormatTest extends TestSupport {
+public class ZipDataFormatTest extends ContextTestSupport {
private static final String TEXT = "The Cow in Apple Time \n"
+ "by: Robert Frost \n\n"
+ "Something inspires the only cow of late\n"
@@ -48,24 +45,12 @@
+ "She bellows on a knoll against the sky.\n"
+ "Her udder shrivels and the milk goes dry.";
- private CamelContext context;
- private ProducerTemplate template;
-
-
-
- protected void setUp() throws Exception {
- context = new DefaultCamelContext();
- template = context.createProducerTemplate();
- template.start();
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
}
- protected void tearDown() throws Exception {
- template.stop();
- context.stop();
- }
-
private void sendText() throws Exception {
-
template.send("direct:start", new Processor() {
public void process(Exchange exchange) throws Exception {
// Set the property of the charset encoding
@@ -78,7 +63,6 @@
}
public void testMarshalTextToZipBestCompression() throws Exception {
-
context.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:start").marshal().zip(Deflater.BEST_COMPRESSION).process(new ZippedMessageProcessor());
@@ -90,7 +74,6 @@
}
public void testMarshalTextToZipBestSpeed() throws Exception {
-
context.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:start").marshal().zip(Deflater.BEST_SPEED).process(new ZippedMessageProcessor());
@@ -103,7 +86,6 @@
}
public void testMarshalTextToZipDefaultCompression() throws Exception {
-
context.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:start").marshal().zip(Deflater.DEFAULT_COMPRESSION).process(new ZippedMessageProcessor());
@@ -115,13 +97,13 @@
}
public void testUnMarshalTextToZip() throws Exception {
-
context.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:start").marshal().zip().unmarshal().zip().to("mock:result");
}
});
context.start();
+
MockEndpoint result = (MockEndpoint)context.getEndpoint("mock:result");
result.expectedBodiesReceived(TEXT);
sendText();
Modified: activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java?rev=734353&r1=734352&r2=734353&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java Tue Jan 13 23:11:17 2009
@@ -132,4 +132,13 @@
Iterator<String> iterator = list.iterator();
assertSame("Should return the same iterator", iterator, ObjectHelper.createIterator(iterator));
}
+
+ public void testCreateIteratorWithStringAndCommaSeparator() {
+ String s = "a,b,c";
+ Iterator it = ObjectHelper.createIterator(s);
+ assertEquals("a", it.next());
+ assertEquals("b", it.next());
+ assertEquals("c", it.next());
+ }
+
}