You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by su...@apache.org on 2014/03/17 21:07:25 UTC
[14/14] git commit: CAMEL-6820: Improved support for Camel File
Streams and JMS ByteMessages
CAMEL-6820: Improved support for Camel File Streams and JMS ByteMessages
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7f4952d4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7f4952d4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7f4952d4
Branch: refs/heads/master
Commit: 7f4952d457051f40543d11cd29eee930b911a700
Parents: 8be6a77
Author: Scott England-Sullivan <su...@apache.org>
Authored: Mon Mar 17 14:58:12 2014 -0500
Committer: Scott England-Sullivan <su...@apache.org>
Committed: Mon Mar 17 14:58:12 2014 -0500
----------------------------------------------------------------------
components/camel-sjms/pom.xml | 211 ++++++++++---------
.../component/sjms/jms/JmsMessageHelper.java | 16 ++
.../component/sjms/bugfixes/CAMEL_6820Test.java | 88 ++++++++
3 files changed, 215 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/7f4952d4/components/camel-sjms/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-sjms/pom.xml b/components/camel-sjms/pom.xml
index a4c0083..f7fb95e 100644
--- a/components/camel-sjms/pom.xml
+++ b/components/camel-sjms/pom.xml
@@ -15,112 +15,123 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.camel</groupId>
- <artifactId>components</artifactId>
- <version>2.13-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>components</artifactId>
+ <version>2.13-SNAPSHOT</version>
+ </parent>
- <artifactId>camel-sjms</artifactId>
- <packaging>bundle</packaging>
- <name>Camel :: Simple JMS</name>
- <description>A pure Java JMS Camel Component</description>
+ <artifactId>camel-sjms</artifactId>
+ <packaging>bundle</packaging>
+ <name>Camel :: Simple JMS</name>
+ <description>A pure Java JMS Camel Component</description>
- <properties>
- <camel.osgi.export.pkg>
- org.apache.camel.component.sjms,
- org.apache.camel.component.sjms.jms
- </camel.osgi.export.pkg>
- <camel.osgi.import.pkg>
- !org.apache.camel.component.sjms.*,
- org.apache.camel.*;${camel.osgi.import.camel.version},
- ${camel.osgi.import.defaults},
- *
- </camel.osgi.import.pkg>
- <camel.osgi.private.pkg>
- org.apache.camel.component.sjms.consumer,
- org.apache.camel.component.sjms.producer,
- org.apache.camel.component.sjms.taskmanager,
- org.apache.camel.component.sjms.tx
- </camel.osgi.private.pkg>
- <camel.osgi.export.service>org.apache.camel.spi.ComponentResolver;component=sjms</camel.osgi.export.service>
- </properties>
+ <properties>
+ <camel.osgi.export.pkg>
+ org.apache.camel.component.sjms,
+ org.apache.camel.component.sjms.jms
+ </camel.osgi.export.pkg>
+ <camel.osgi.import.pkg>
+ !org.apache.camel.component.sjms.*,
+ org.apache.camel.*;${camel.osgi.import.camel.version},
+ ${camel.osgi.import.defaults},
+ *
+ </camel.osgi.import.pkg>
+ <camel.osgi.private.pkg>
+ org.apache.camel.component.sjms.consumer,
+ org.apache.camel.component.sjms.producer,
+ org.apache.camel.component.sjms.taskmanager,
+ org.apache.camel.component.sjms.tx
+ </camel.osgi.private.pkg>
+ <camel.osgi.export.service>
+ org.apache.camel.spi.ComponentResolver;component=sjms
+ </camel.osgi.export.service>
+ </properties>
- <dependencies>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core</artifactId>
- </dependency>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-annotation_1.0_spec</artifactId>
- <version>${geronimo-annotation-spec-version}</version>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-annotation_1.0_spec</artifactId>
+ <version>${geronimo-annotation-spec-version}</version>
+ <scope>provided</scope>
+ </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-broker</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-kahadb-store</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-pool</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.atomikos</groupId>
- <artifactId>transactions-jta</artifactId>
- <version>${atomikos-transactions-version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-broker</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-kahadb-store</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-pool</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.atomikos</groupId>
+ <artifactId>transactions-jta</artifactId>
+ <version>${atomikos-transactions-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>${commons-io-version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <forkMode>pertest</forkMode>
- <forkedProcessTimeoutInSeconds>6000</forkedProcessTimeoutInSeconds>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-clean-plugin</artifactId>
- <configuration>
- <filesets>
- <fileset>
- <directory>${basedir}/activemq-data</directory>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <forkMode>pertest</forkMode>
+ <forkedProcessTimeoutInSeconds>6000</forkedProcessTimeoutInSeconds>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${basedir}/activemq-data</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
http://git-wip-us.apache.org/repos/asf/camel/blob/7f4952d4/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
index 4482dec..89e7ba5 100644
--- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
+++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.sjms.jms;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.Serializable;
import java.util.Collection;
@@ -120,6 +121,21 @@ public final class JmsMessageHelper {
textMessage.setText((String)payload);
answer = textMessage;
break;
+ case Stream:
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ InputStream is = (InputStream)payload;
+ int reads = is.read();
+ while (reads != -1) {
+ baos.write(reads);
+ reads = is.read();
+ }
+
+ BytesMessage bytesStreamMessage = session.createBytesMessage();
+ bytesStreamMessage.writeBytes(baos.toByteArray());
+ baos.close();
+ is.close();
+ answer = bytesStreamMessage;
+ break;
default:
break;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7f4952d4/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/bugfixes/CAMEL_6820Test.java
----------------------------------------------------------------------
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/bugfixes/CAMEL_6820Test.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/bugfixes/CAMEL_6820Test.java
new file mode 100644
index 0000000..e6e0ce4
--- /dev/null
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/bugfixes/CAMEL_6820Test.java
@@ -0,0 +1,88 @@
+/**
+ * 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.sjms.bugfixes;
+
+import java.io.File;
+import java.io.InputStream;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.sjms.SjmsComponent;
+import org.apache.camel.component.sjms.support.JmsTestSupport;
+import org.apache.commons.io.FileUtils;
+import org.junit.Test;
+
+/**
+ * Unit test for CAMEL_6820Test. This test is to verify the ability to
+ * support the Camel File Component more cleanly along with better support
+ * for ByteMessages.
+ */
+public class CAMEL_6820Test extends JmsTestSupport {
+
+ private static final String TEST_DATA_DIR = "target/testdata";
+ private static final String FILE_OUTPUT_URI = "file:" + TEST_DATA_DIR;
+ private static final String FILE_INPUT_URI = "file:" + TEST_DATA_DIR;
+ private static final String SJMS_QUEUE_URI = "sjms:queue:file.converter.queue";
+ private static final String MOCK_RESULT_URI = "mock:result";
+
+ @Test
+ public void testCamelGenericFileConverterMessage() throws Exception {
+ File f = new File(TEST_DATA_DIR);
+
+ // First make sure the directories are empty or purged so we don't get bad data on a
+ // test that is run against an uncleaned target directory
+ if (f.exists()) {
+ FileUtils.deleteDirectory(new File(TEST_DATA_DIR));
+
+ }
+
+ // Then add the directory back
+ f.mkdirs();
+
+ // Make sure the SjmsComponent is available
+ SjmsComponent component = context.getComponent("sjms", SjmsComponent.class);
+ assertNotNull(component);
+
+ // Create the test String
+ final String expectedBody = "Hello World";
+
+ // Create the Mock endpoint
+ MockEndpoint mock = getMockEndpoint(MOCK_RESULT_URI);
+ mock.expectedMessageCount(1);
+ mock.expectedBodiesReceived(expectedBody);
+
+ // Send the message to a file to be read by the file component
+ template.sendBody(FILE_OUTPUT_URI, expectedBody);
+
+ // Verify that it is working correctly
+ mock.assertIsSatisfied();
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from(FILE_INPUT_URI)
+ .convertBodyTo(InputStream.class)
+ .to(SJMS_QUEUE_URI);
+
+ from(SJMS_QUEUE_URI)
+ .convertBodyTo(String.class)
+ .to(MOCK_RESULT_URI);
+ }
+ };
+ }
+}