You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/09/19 14:41:35 UTC
svn commit: r1524716 - in /sling/branches/tooling-ide-vlt/tooling/ide:
api/src/org/apache/sling/ide/serialization/
eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/
impl-vlt/src/org/apache/sling/ide/impl/vlt/
impl-vlt/src/org/apache/sling/ide/im...
Author: stefanegli
Date: Thu Sep 19 12:41:35 2013
New Revision: 1524716
URL: http://svn.apache.org/r1524716
Log:
SLING-3085 : support nt:resource/jcr:data patterns to be treated as a FILE (for serialization)
Modified:
sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddNodeCommand.java
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/GetNodeCommand.java
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
Modified: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java?rev=1524716&r1=1524715&r2=1524716&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java Thu Sep 19 12:41:35 2013
@@ -81,6 +81,10 @@ public class SerializationKindManager {
if (Repository.NT_FILE.equals(nodeType)) {
return SerializationKind.FILE;
}
+
+ if (Repository.NT_RESOURCE.equals(nodeType)) {
+ return SerializationKind.FILE;
+ }
if (Repository.NT_FOLDER.equals(nodeType)) {
return SerializationKind.FOLDER;
Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java?rev=1524716&r1=1524715&r2=1524716&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java Thu Sep 19 12:41:35 2013
@@ -21,6 +21,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
import org.apache.sling.ide.eclipse.core.ProjectUtil;
@@ -39,6 +40,7 @@ import org.apache.sling.ide.transport.Re
import org.apache.sling.ide.transport.RepositoryException;
import org.apache.sling.ide.transport.ResourceProxy;
import org.apache.sling.ide.transport.Result;
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -200,57 +202,65 @@ public class ImportRepositoryContentActi
System.out.println("For resource at path " + resource.getPath() + " got serialization data "
+ serializationData);
- if (serializationData == null) {
- System.err.println("Skipping resource at " + resource.getPath() + " since we got no serialization data.");
- return;
- }
-
- IPath fileOrFolderPath = projectRelativePath.append(serializationData.getFileOrFolderNameHint());
-
- switch (serializationData.getSerializationKind()) {
- case FILE: {
- byte[] contents = executeCommand(repository.newGetNodeCommand(path));
- importFile(project, fileOrFolderPath, contents);
-
- if (serializationData.hasContents()) {
- // TODO - should we abstract out .dir serialization?
- IPath directoryPath = fileOrFolderPath.addFileExtension("dir");
- createFolder(project, directoryPath);
- createFile(project, directoryPath.append(serializationData.getNameHint()),
- serializationData.getContents());
- }
- break;
- }
- case FOLDER:
- case METADATA_PARTIAL: {
- createFolder(project, fileOrFolderPath);
- if (serializationData.hasContents()) {
- createFile(project, fileOrFolderPath.append(serializationData.getNameHint()),
- serializationData.getContents());
- }
- break;
- }
-
- case METADATA_FULL: {
- if (serializationData.hasContents()) {
- createFile(project, fileOrFolderPath, serializationData.getContents());
- }
- break;
- }
- }
-
- System.out.println("Children: " + resource.getChildren());
-
- if (serializationData.getSerializationKind() == SerializationKind.METADATA_FULL) {
- return;
+ if (serializationData != null) {
+
+ IPath fileOrFolderPath = projectRelativePath.append(serializationData.getFileOrFolderNameHint());
+
+ switch (serializationData.getSerializationKind()) {
+ case FILE: {
+ byte[] contents = executeCommand(repository.newGetNodeCommand(path));
+ importFile(project, fileOrFolderPath, contents);
+
+ if (serializationData.hasContents()) {
+ // TODO - should we abstract out .dir serialization?
+ IPath directoryPath = fileOrFolderPath.addFileExtension("dir");
+ createFolder(project, directoryPath);
+ createFile(project, directoryPath.append(serializationData.getNameHint()),
+ serializationData.getContents());
+
+ // filter out the child of type Repository.NT_RESOURCE
+ for (Iterator<ResourceProxy> it = resource.getChildren().iterator(); it
+ .hasNext();) {
+ ResourceProxy child = it.next();
+ if (Repository.NT_RESOURCE.equals(child.getProperties().get(Repository.JCR_PRIMARY_TYPE))) {
+ it.remove();
+ break;
+ }
+ }
+ }
+ break;
+ }
+ case FOLDER:
+ case METADATA_PARTIAL: {
+ createFolder(project, fileOrFolderPath);
+ if (serializationData.hasContents()) {
+ createFile(project, fileOrFolderPath.append(serializationData.getNameHint()),
+ serializationData.getContents());
+ }
+ break;
+ }
+
+ case METADATA_FULL: {
+ if (serializationData.hasContents()) {
+ createFile(project, fileOrFolderPath, serializationData.getContents());
+ }
+ break;
+ }
+ }
+
+ System.out.println("Children: " + resource.getChildren());
+
+ if (serializationData.getSerializationKind() == SerializationKind.METADATA_FULL) {
+ return;
+ }
}
for (ResourceProxy child : resource.getChildren()) {
// TODO - still needed?
- if (Repository.NT_RESOURCE.equals(child.getProperties().get(Repository.JCR_PRIMARY_TYPE))) {
- continue;
- }
+// if (Repository.NT_RESOURCE.equals(child.getProperties().get(Repository.JCR_PRIMARY_TYPE))) {
+// continue;
+// }
if (filter != null) {
FilterResult filterResult = filter.filter(contentSyncRoot, child.getPath(),
@@ -296,7 +306,23 @@ public class ImportRepositoryContentActi
destinationFile.setContents(new ByteArrayInputStream(node), IResource.KEEP_HISTORY, null);
} else {
/* TODO progress monitor */
- destinationFile.create(new ByteArrayInputStream(node), true, null);
+ if (!destinationFile.getParent().exists()) {
+ createParents(destinationFile.getParent());
+ }
+ destinationFile.create(new ByteArrayInputStream(node), true, null);
}
}
+
+ private void createParents(IContainer container) throws CoreException {
+ if (container.exists()) {
+ return;
+ }
+ if (!(container instanceof IFolder)) {
+ return;
+ }
+ createParents(container.getParent());
+ IFolder parentFolder = (IFolder)container;
+ parentFolder.create(true, true, null);
+ }
+
}
\ No newline at end of file
Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddNodeCommand.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddNodeCommand.java?rev=1524716&r1=1524715&r2=1524716&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddNodeCommand.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddNodeCommand.java Thu Sep 19 12:41:35 2013
@@ -79,7 +79,11 @@ public class AddNodeCommand extends JcrC
if ( node.hasNode(JCR_CONTENT)) {
contentNode = node.getNode(JCR_CONTENT);
} else {
- contentNode = node.addNode(JCR_CONTENT, NT_RESOURCE);
+ if (node.getProperty(JCR_PRIMARYTYPE).getString().equals(NT_RESOURCE)) {
+ contentNode = node;
+ } else {
+ contentNode = node.addNode(JCR_CONTENT, NT_RESOURCE);
+ }
}
Binary binary = session.getValueFactory().createBinary(new FileInputStream(file));
Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/GetNodeCommand.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/GetNodeCommand.java?rev=1524716&r1=1524715&r2=1524716&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/GetNodeCommand.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/GetNodeCommand.java Thu Sep 19 12:41:35 2013
@@ -42,18 +42,23 @@ public class GetNodeCommand extends JcrC
Node node = session.getNode(getPath());
- if (!node.hasNode("jcr:content")) {
- return null;
+ Property property;
+ if (node.hasProperty("jcr:data")) {
+ property = node.getProperty("jcr:data");
+ } else {
+ if (!node.hasNode("jcr:content")) {
+ return null;
+ }
+
+ Node contentNode = node.getNode("jcr:content");
+
+ if (!contentNode.hasProperty("jcr:data")) {
+ return null;
+ }
+
+ property = contentNode.getProperty("jcr:data");
}
- Node contentNode = node.getNode("jcr:content");
-
- if (!contentNode.hasProperty("jcr:data")) {
- return null;
- }
-
- Property property = contentNode.getProperty("jcr:data");
-
if (property.getType() == PropertyType.BINARY) {
Binary binary = property.getBinary();
ByteArrayOutputStream out = new ByteArrayOutputStream();
Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java?rev=1524716&r1=1524715&r2=1524716&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java Thu Sep 19 12:41:35 2013
@@ -139,8 +139,10 @@ public class VltSerializationDataBuilder
Aggregate aggregate = vaultFile.getAggregate();
- if (aggregate == null)
- throw new IllegalArgumentException("No aggregate found for path " + resource.getPath());
+ if (aggregate == null) {
+ System.err.println("No aggregate found for path " + resource.getPath());
+ return null;
+ }
NodeType[] mixinNodeTypes = aggregate.getNode().getMixinNodeTypes();
List<String> mixinNodeTypeNames = new ArrayList<String>(mixinNodeTypes.length);