diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagedResource.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagedResource.java index df86a5fdf3..0b93dbc081 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagedResource.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagedResource.java @@ -91,10 +91,14 @@ public StagedResource(File directory, String path, StagingManager stagingManager protected static String toPath(File directory, File file) { String path = file.getAbsolutePath(); path = path.replaceAll("\\\\", "/"); - path = path.substring(directory.getAbsolutePath().length(), file - .getAbsolutePath().length()); - path = path.substring(1, path.lastIndexOf(".")); - return path; + path = path.substring(directory.getAbsolutePath().length(), file.getAbsolutePath().length()); + int extensionIndex = path.lastIndexOf("."); + if (extensionIndex > 0) { + path = path.substring(1, extensionIndex); + return path; + } else { + throw new IllegalStateException("Expected an extension of .done or .create at the end of the path and did not find it: " + path); + } } @Override diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingManager.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingManager.java index 3ffedae65e..e49268b232 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingManager.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingManager.java @@ -66,11 +66,11 @@ public Set getResourceReferences() { private void refreshResourceList() { Collection files = FileUtils.listFiles(this.directory, - new String[] { State.CREATE.getExtensionName(), State.DONE.getExtensionName(), State.DONE.getExtensionName() }, true); + new String[] { State.CREATE.getExtensionName(), State.DONE.getExtensionName() }, true); for (File file : files) { try { String path = StagedResource.toPath(directory, file); - if (!resourcePaths.contains(path)) { + if (path != null && !resourcePaths.contains(path)) { resourcePaths.add(path); } } catch (IllegalStateException ex) {