Author: rombert Date: Thu Oct 9 09:16:12 2014 New Revision: 1630341 URL: http://svn.apache.org/r1630341 Log: SLING-4002 - Deleting a file throws a 'Could not publish' error
The VltSerializationManager now assumes that missing files with the XML extension are full serialization aggregates. Modified: sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java Modified: sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java?rev=1630341&r1=1630340&r2=1630341&view=diff ============================================================================== --- sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java (original) +++ sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java Thu Oct 9 09:16:12 2014 @@ -71,7 +71,7 @@ public class VltSerializationManagerTest File current = parent; for (String segment : segments) { - current = new File(parent, segment); + current = new File(current, segment); } return current; } @@ -135,4 +135,12 @@ public class VltSerializationManagerTest public void getRepositoryPath_SerializationDir() { assertThat(serializationManager.getRepositoryPath("/content/test.dir/file"), is("/content/test/file")); } + + @Test + public void getBaseResourcePath_MissingXmlFile() { + File f = newFile(findFilesystemRoot(), "apps", "sling", "servlet", "default", "config.xml"); + + assertThat(serializationManager.getBaseResourcePath(f.getAbsolutePath()), + is(f.getAbsolutePath().replace(".xml", ""))); + } } Modified: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java?rev=1630341&r1=1630340&r2=1630341&view=diff ============================================================================== --- sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java (original) +++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java Thu Oct 9 09:16:12 2014 @@ -128,6 +128,12 @@ public class VltSerializationManager imp return file.getAbsolutePath(); } + // assume that delete file with the xml extension is a full serialization aggregate + // TODO - this can generate false results + if (!file.exists()) { + return getPathWithoutXmlExtension(file); + } + // TODO - refrain from doing I/O here // TODO - copied from TransactionImpl InputStream in = null; @@ -135,7 +141,7 @@ public class VltSerializationManager imp in = new BufferedInputStream(new FileInputStream(file)); SerializationType serType = XmlAnalyzer.analyze(new InputSource(in)); if (serType == SerializationType.XML_DOCVIEW) { - return file.getAbsolutePath().substring(0, file.getAbsolutePath().length() - EXTENSION_XML.length()); + return getPathWithoutXmlExtension(file); } return file.getAbsolutePath(); @@ -146,6 +152,10 @@ public class VltSerializationManager imp } } + private String getPathWithoutXmlExtension(File file) { + return file.getAbsolutePath().substring(0, file.getAbsolutePath().length() - EXTENSION_XML.length()); + } + @Override public String getSerializationFilePath(String baseFilePath, SerializationKind serializationKind) {