Author: rombert
Date: Thu Sep 12 15:56:19 2013
New Revision: 1522639

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

Support serializing custom file properties under the ${node.name].dir
directory. This is currently supported only for mime types which don't
match.

Modified:
    
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/META-INF/MANIFEST.MF
    
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/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java?rev=1522639&r1=1522638&r2=1522639&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
 (original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
 Thu Sep 12 15:56:19 2013
@@ -167,7 +167,7 @@ public class ImportWizard extends Wizard
                             launchpad.setPublishState(oldPublishState, 
monitor);
                         }
                         monitor.done();
-                        }
+                    }
 
                 }
 
@@ -253,11 +253,22 @@ public class ImportWizard extends Wizard
 
         String serializationPath = 
serializationManager.getSerializationFilePath(path);
         switch (skm.getSerializationKind(primaryType)) {
-            case FILE:
+            case FILE: {
                 importFile(repository, path, project, projectRelativePath);
-                // TODO support ${filename}.dir serialization of properties
-                break;
 
+                ResourceProxy resourceToSerialize = 
executeCommand(repository.newGetNodeContentCommand(path));
+
+                String out = 
serializationManager.buildSerializationData(contentSyncRoot, 
resourceToSerialize,
+                        repository.getRepositoryInfo());
+                if (out != null) {
+                    IPath directoryPath = projectRelativePath.append(path + 
".dir");
+                    createFolder(project, directoryPath);
+                    // TODO remove hardcoding of .content.xml name here
+                    createFile(project, directoryPath.append(".content.xml"), 
out.getBytes("UTF-8"));
+                }
+
+                break;
+            }
             case FOLDER:
             case METADATA_PARTIAL: {
                 createFolder(project, projectRelativePath.append(path));

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/META-INF/MANIFEST.MF?rev=1522639&r1=1522638&r2=1522639&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/META-INF/MANIFEST.MF 
(original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/META-INF/MANIFEST.MF 
Thu Sep 12 15:56:19 2013
@@ -13,6 +13,7 @@ Import-Package: javax.jcr,
  org.apache.jackrabbit.vault.fs.api,
  org.apache.jackrabbit.vault.fs.config,
  org.apache.jackrabbit.vault.fs.impl,
+ org.apache.jackrabbit.vault.fs.impl.aggregator,
  org.apache.jackrabbit.vault.fs.impl.io,
  org.apache.jackrabbit.vault.util,
  org.apache.sling.ide.filter,

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=1522639&r1=1522638&r2=1522639&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:19 2013
@@ -24,6 +24,7 @@ import java.net.URISyntaxException;
 import java.util.Map;
 
 import javax.jcr.Credentials;
+import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -34,12 +35,16 @@ import javax.xml.parsers.SAXParserFactor
 
 import org.apache.jackrabbit.vault.fs.Mounter;
 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.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.io.DocViewSerializer;
 import org.apache.jackrabbit.vault.util.Constants;
+import org.apache.jackrabbit.vault.util.JcrConstants;
+import org.apache.jackrabbit.vault.util.MimeTypes;
 import org.apache.jackrabbit.vault.util.PlatformNameFormat;
 import org.apache.jackrabbit.vault.util.RepositoryProvider;
 import org.apache.sling.ide.impl.vlt.RepositoryUtils;
@@ -145,6 +150,33 @@ public class VltSerializationManager imp
             if (aggregate == null)
                 throw new IllegalArgumentException("No aggregate found for 
path " + resource.getPath());
 
+            Aggregator aggregator = 
fs.getAggregateManager().getAggregator(aggregate.getNode(), null);
+            if (aggregator instanceof FileAggregator) {
+                // TODO - copy-pasted from FileAggregator, and really does not 
belong here...
+                Node content = aggregate.getNode();
+                if (content.isNodeType(JcrConstants.NT_FILE)) {
+                    content = content.getNode(JcrConstants.JCR_CONTENT);
+                }
+                String mimeType = null;
+                if (content.hasProperty(JcrConstants.JCR_MIMETYPE)) {
+                    try {
+                        mimeType = 
content.getProperty(JcrConstants.JCR_MIMETYPE).getString();
+                    } catch (RepositoryException e) {
+                        // ignore
+                    }
+                }
+                if (mimeType == null) {
+                    // guess mime type from name
+                    mimeType = 
MimeTypes.getMimeType(aggregate.getNode().getName(), 
MimeTypes.APPLICATION_OCTET_STREAM);
+                }
+
+                boolean needsDir = 
!MimeTypes.matches(aggregate.getNode().getName(), mimeType,
+                        MimeTypes.APPLICATION_OCTET_STREAM);
+                if (!needsDir) {
+                    return null;
+                }
+            }
+
             DocViewSerializer s = new DocViewSerializer(aggregate);
             ByteArrayOutputStream out = new ByteArrayOutputStream();
             s.writeContent(out);


Reply via email to