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());
+    }
+
 }