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) {
 


Reply via email to