From a31d2a153d454bca822606de84cdc8973ad1128a Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 2 Jan 2008 13:36:45 +0000 Subject: [PATCH] DefaultFileNameGenerator now checks for a filename property on the Message. --- .../file/DefaultFileNameGenerator.java | 5 +- .../adapter/file/FileNameGenerator.java | 3 ++ .../file/DefaultFileNameGeneratorTests.java | 50 +++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 spring-integration-core/src/test/java/org/springframework/integration/adapter/file/DefaultFileNameGeneratorTests.java diff --git a/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/DefaultFileNameGenerator.java b/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/DefaultFileNameGenerator.java index 61b1dde2f3..abeb70c3d6 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/DefaultFileNameGenerator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/DefaultFileNameGenerator.java @@ -17,6 +17,7 @@ package org.springframework.integration.adapter.file; import org.springframework.integration.message.Message; +import org.springframework.util.StringUtils; /** * Default implementation of the filename generator strategy. Concatenates the @@ -27,7 +28,9 @@ import org.springframework.integration.message.Message; public class DefaultFileNameGenerator implements FileNameGenerator { public String generateFileName(Message message) { - return message.getId() + "-" + System.currentTimeMillis() + ".msg"; + String filenameProperty = message.getHeader().getProperty(FILENAME_PROPERTY_KEY); + return StringUtils.hasText(filenameProperty) ? + filenameProperty : message.getId() + "-" + System.currentTimeMillis() + ".msg"; } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/FileNameGenerator.java b/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/FileNameGenerator.java index 09802dbd26..bff13aa640 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/FileNameGenerator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/adapter/file/FileNameGenerator.java @@ -25,6 +25,9 @@ import org.springframework.integration.message.Message; */ public interface FileNameGenerator { + String FILENAME_PROPERTY_KEY = "filename"; + + String generateFileName(Message message); } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/adapter/file/DefaultFileNameGeneratorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/adapter/file/DefaultFileNameGeneratorTests.java new file mode 100644 index 0000000000..adf525f8ca --- /dev/null +++ b/spring-integration-core/src/test/java/org/springframework/integration/adapter/file/DefaultFileNameGeneratorTests.java @@ -0,0 +1,50 @@ +/* + * Copyright 2002-2007 the original author or authors. + * + * Licensed 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.springframework.integration.adapter.file; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import org.springframework.integration.message.GenericMessage; +import org.springframework.integration.message.Message; + +/** + * @author Mark Fisher + */ +public class DefaultFileNameGeneratorTests { + + @Test + public void testWithFileNamePropertyProvided() { + Message message = new GenericMessage("123", "testing"); + message.getHeader().setProperty(FileNameGenerator.FILENAME_PROPERTY_KEY, "foo.bar"); + FileNameGenerator generator = new DefaultFileNameGenerator(); + String filename = generator.generateFileName(message); + assertEquals("foo.bar", filename); + } + + @Test + public void testWithoutFileNamePropertyProvided() { + Message message = new GenericMessage("123", "testing"); + FileNameGenerator generator = new DefaultFileNameGenerator(); + String filename = generator.generateFileName(message); + assertTrue(filename.startsWith("123-")); + assertTrue(filename.endsWith(".msg")); + } + +}