diff --git a/execution/src/main/java/org/springframework/batch/execution/facade/BatchResourceFactoryBean.java b/execution/src/main/java/org/springframework/batch/execution/facade/BatchResourceFactoryBean.java index c291da9b6..afb1b12a8 100644 --- a/execution/src/main/java/org/springframework/batch/execution/facade/BatchResourceFactoryBean.java +++ b/execution/src/main/java/org/springframework/batch/execution/facade/BatchResourceFactoryBean.java @@ -64,7 +64,7 @@ public class BatchResourceFactoryBean extends AbstractFactoryBean implements private static final String STEP_NAME_PATTERN = "%STEP_NAME%"; - private static final String DEFAULT_PATTERN = "%BATCH_ROOT%/data/%JOB_NAME%/" + private static final String DEFAULT_PATTERN = "/%BATCH_ROOT%/data/%JOB_NAME%/" + "%JOB_IDENTIFIER%-%STEP_NAME%.txt"; private String filePattern = DEFAULT_PATTERN; @@ -137,6 +137,8 @@ public class BatchResourceFactoryBean extends AbstractFactoryBean implements private String replacePattern(String string, String pattern, String replacement) { + if (string==null) return null; + // check to ensure pattern exists in string. if (string.indexOf(pattern) != -1) { return StringUtils.replace(string, pattern, replacement); @@ -168,11 +170,11 @@ public class BatchResourceFactoryBean extends AbstractFactoryBean implements } public void setFilePattern(String filePattern) { - this.filePattern = filePattern; + this.filePattern = replacePattern(filePattern, "\\", File.separator); } public void setRootDirectory(String rootDirectory) { - this.rootDirectory = rootDirectory; + this.rootDirectory = replacePattern(rootDirectory, "\\", File.separator); if (rootDirectory != null && rootDirectory.endsWith(File.separator)) { this.rootDirectory = rootDirectory.substring(0, rootDirectory .lastIndexOf(File.separator)); diff --git a/execution/src/test/java/org/springframework/batch/execution/facade/BatchResourceFactoryBeanTests.java b/execution/src/test/java/org/springframework/batch/execution/facade/BatchResourceFactoryBeanTests.java index 0369427bb..1b311a5ee 100644 --- a/execution/src/test/java/org/springframework/batch/execution/facade/BatchResourceFactoryBeanTests.java +++ b/execution/src/test/java/org/springframework/batch/execution/facade/BatchResourceFactoryBeanTests.java @@ -95,7 +95,7 @@ public class BatchResourceFactoryBeanTests extends TestCase { * regular use with valid context and pattern provided */ public void testCreateFileName() throws Exception { - // doTestPathName("testJob-testStream-11-20070730-bar.txt", path); + doTestPathName("testJob-testStream-11-20070730-bar.txt", path); } public void testObjectType() throws Exception { @@ -114,7 +114,7 @@ public class BatchResourceFactoryBeanTests extends TestCase { } public void testNonStandardFilePattern() throws Exception { - resourceFactory.setFilePattern("%BATCH_ROOT%/data/%JOB_NAME%/" + resourceFactory.setFilePattern("/%BATCH_ROOT%/data/%JOB_NAME%/" + "%STEP_NAME%+%JOB_IDENTIFIER%"); doTestPathName("bar+testJob-testStream-11-20070730", path); } @@ -141,10 +141,10 @@ public class BatchResourceFactoryBeanTests extends TestCase { public void testRootDirectoryEndsWithBackSlash() throws Exception { String rootDir = getRootDir(); - rootDir = StringUtils.replace(rootDir, File.separator, "\\") + "\\"; + rootDir = "/"+StringUtils.replace(rootDir, File.separator, "\\") + "\\"; resourceFactory.setRootDirectory(rootDir); // TODO: this one fails on UNIX (so Bamboo)... -// doTestPathName("testJob-testStream-11-20070730-bar.txt"); + doTestPathName("testJob-testStream-11-20070730-bar.txt", path); } private void doTestPathName(String filename, String path) throws Exception, IOException { @@ -154,9 +154,10 @@ public class BatchResourceFactoryBeanTests extends TestCase { String absolutePath = new File("/" + rootDir + pathsep + path + identifier.getName() + pathsep + filename).getAbsolutePath(); - // System.err.println(absolutePath); - // System.err.println(returnedPath); - // assertEquals(absolutePath, returnedPath); + System.err.println(path); + System.err.println(absolutePath); + System.err.println(returnedPath); + assertEquals(absolutePath, returnedPath); } }