From b0577ffba92227e3ac5a0126d74a26234117e00c Mon Sep 17 00:00:00 2001 From: Chris Henson Date: Tue, 3 Oct 2017 18:20:44 -0400 Subject: [PATCH] 0003269: If a file exists in staging with a done or create suffix and no period to separate the suffix, then the server won't startup --- .../jumpmind/symmetric/io/stage/StagedResource.java | 12 ++++++++---- .../jumpmind/symmetric/io/stage/StagingManager.java | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) 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) {