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 2014/06/03 17:51:12 UTC

svn commit: r1599629 - /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java

Author: stefanegli
Date: Tue Jun  3 15:51:11 2014
New Revision: 1599629

URL: http://svn.apache.org/r1599629
Log:
SLING-3606 related : supporting creation of nt:file

Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1599629&r1=1599628&r2=1599629&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Tue Jun  3 15:51:11 2014
@@ -826,6 +826,11 @@ public class JcrNode implements IAdaptab
 	    } else if (parentSk!=SerializationKind.FOLDER && childSk==SerializationKind.METADATA_PARTIAL) {
             createDomChild(childNodeName, childNodeType);
 	    } else {
+	        if (childNodeType.equals("nt:file")) {
+	            IFolder f = (IFolder)resource;
+	            createNtFile(f, childNodeName, childNodeType);
+	            return;
+	        }
 	        //TODO: FILE not yet supported
 	        MessageDialog.openWarning(Display.getDefault().getActiveShell(), "Error creating node", "Cannot create child of "+thisNodeType+" with type "+childNodeType+" (yet?)");
 	        return;
@@ -852,7 +857,7 @@ public class JcrNode implements IAdaptab
         }
     }
 
-	private void createVaultFile(IFolder parent, String filename, String childNodeType) {
+    private void createVaultFile(IFolder parent, String filename, String childNodeType) {
         final String minimalContentXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<jcr:root \n    xmlns:sling=\"http://sling.apache.org/jcr/sling/1.0\"\n    xmlns:jcr=\"http://www.jcp.org/jcr/1.0\"\n    jcr:primaryType=\""+childNodeType+"\"/>";
         IFile file = parent.getFile(filename);
         if (file.exists()) {
@@ -866,7 +871,23 @@ public class JcrNode implements IAdaptab
             MessageDialog.openInformation(Display.getDefault().getActiveShell(), 
                     "Cannot create JCR node on a File", "Following Exception encountered: "+e);
         }
-	}
+    }
+
+    private void createNtFile(IFolder parent, String filename, String childNodeType) {
+        IFile file = parent.getFile(filename);
+        if (file.exists()) {
+            // file already exists
+            return;
+        }
+        try {
+            file.create(new ByteArrayInputStream("".getBytes()), true, new NullProgressMonitor());
+        } catch (CoreException e) {
+            //TODO proper logging
+            e.printStackTrace();
+            MessageDialog.openWarning(Display.getDefault().getActiveShell(), 
+                    "Cannot create file "+filename, "Following Exception encountered: "+e);
+        }
+    }
 
     private SerializationKind getFallbackSerializationKind(String nodeType) {
         if (nodeType.equals("nt:file")) {