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