You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2013/09/12 17:56:41 UTC

svn commit: r1522642 - /sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java

Author: rombert
Date: Thu Sep 12 15:56:40 2013
New Revision: 1522642

URL: http://svn.apache.org/r1522642
Log:
SLING-2989 - [Tooling] integrate with vlt once available

Further work on the serialization: mimic more of the vlt special cases
and try harder to detect DocView serialized xml files.

Modified:
    sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java?rev=1522642&r1=1522641&r2=1522642&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java Thu Sep 12 15:56:40 2013
@@ -16,8 +16,10 @@
  */
 package org.apache.sling.ide.impl.vlt.serialization;
 
+import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URISyntaxException;
@@ -37,11 +39,14 @@ import org.apache.jackrabbit.vault.fs.Mo
 import org.apache.jackrabbit.vault.fs.api.Aggregate;
 import org.apache.jackrabbit.vault.fs.api.Aggregator;
 import org.apache.jackrabbit.vault.fs.api.RepositoryAddress;
+import org.apache.jackrabbit.vault.fs.api.SerializationType;
 import org.apache.jackrabbit.vault.fs.api.VaultFile;
 import org.apache.jackrabbit.vault.fs.api.VaultFileSystem;
 import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
 import org.apache.jackrabbit.vault.fs.impl.aggregator.FileAggregator;
+import org.apache.jackrabbit.vault.fs.impl.aggregator.GenericAggregator;
 import org.apache.jackrabbit.vault.fs.impl.io.DocViewSerializer;
+import org.apache.jackrabbit.vault.fs.impl.io.XmlAnalyzer;
 import org.apache.jackrabbit.vault.util.Constants;
 import org.apache.jackrabbit.vault.util.JcrConstants;
 import org.apache.jackrabbit.vault.util.MimeTypes;
@@ -52,6 +57,7 @@ import org.apache.sling.ide.impl.vlt.Vau
 import org.apache.sling.ide.serialization.SerializationManager;
 import org.apache.sling.ide.transport.RepositoryInfo;
 import org.apache.sling.ide.transport.ResourceProxy;
+import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
 public class VltSerializationManager implements SerializationManager {
@@ -86,7 +92,35 @@ public class VltSerializationManager imp
 
     @Override
     public boolean isSerializationFile(String filePath) {
-        return new File(filePath).getName().equals(Constants.DOT_CONTENT_XML);
+        
+        File file = new File(filePath);
+        String fileName = file.getName();
+        if (fileName.equals(Constants.DOT_CONTENT_XML)) {
+            return true;
+        }
+
+        if (!fileName.endsWith(".xml")) {
+            return false;
+        }
+
+        // TODO - refrain from doing I/O here
+        // TODO - copied from TransactionImpl
+        InputStream in = null;
+        try {
+            in = new BufferedInputStream(new FileInputStream(file));
+            SerializationType serType = XmlAnalyzer.analyze(new InputSource(in));
+            return serType == SerializationType.XML_DOCVIEW;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException e) {
+                    // don't care
+                }
+            }
+        }
     }
 
     @Override
@@ -175,8 +209,15 @@ public class VltSerializationManager imp
                 if (!needsDir) {
                     return null;
                 }
+            } else if (aggregator instanceof GenericAggregator) {
+                // TODO - copy-pasted from GenericAggregator
+                if (aggregate.getNode().getPrimaryNodeType().getName().equals("nt:folder")
+                        && aggregate.getNode().getMixinNodeTypes().length == 0) {
+                    return null;
+                }
             }
 
+
             DocViewSerializer s = new DocViewSerializer(aggregate);
             ByteArrayOutputStream out = new ByteArrayOutputStream();
             s.writeContent(out);