Author: rombert
Date: Fri Feb 26 15:19:28 2016
New Revision: 1732500

URL: http://svn.apache.org/viewvc?rev=1732500&view=rev
Log:
SLING-5564 - Hide WEB-INF and META-INF under the content sync root

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

Modified: 
sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/JcrContentContentProviderTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/JcrContentContentProviderTest.java?rev=1732500&r1=1732499&r2=1732500&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/JcrContentContentProviderTest.java
 (original)
+++ 
sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/JcrContentContentProviderTest.java
 Fri Feb 26 15:19:28 2016
@@ -16,6 +16,8 @@
  */
 package org.apache.sling.ide.test.impl;
 
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
 import java.io.ByteArrayInputStream;
@@ -128,6 +130,24 @@ public class JcrContentContentProviderTe
         assertIsNavigableAndHasNoChildren(syncDirNode, 
"/content/jcr:content/first-folder/second-folder");
     }
     
+    @Test
+    public void listChildrenOnSyncDirIgnoresWebInfAndMetaInf() throws 
Exception {
+        
+        
project.ensureDirectoryExists(Path.fromPortableString("jcr_root/WEB-INF"));
+        
project.ensureDirectoryExists(Path.fromPortableString("jcr_root/META-INF"));
+        
project.ensureDirectoryExists(Path.fromPortableString("jcr_root/content"));
+        
+        // directly create the root node
+        SyncDir syncDirNode = new SyncDir((IFolder) 
contentProject.findMember("jcr_root"));
+
+        // assertion
+        Object[] children = new 
JcrContentContentProvider().getChildren(syncDirNode);
+        assertThat(children.length, equalTo(1));
+        
+        JcrNode child = (JcrNode) children[0];
+        assertThat(child.getName(), equalTo("content"));
+    }
+    
     /**
      * Asserts that the specified <tt>nodePath</tt> is reachable from the 
<tt>startNode</tt>
      * 

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=1732500&r1=1732499&r2=1732500&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
 Fri Feb 26 15:19:28 2016
@@ -342,6 +342,12 @@ public class JcrNode implements IAdaptab
                             it.remove();
                             continue;
                         }
+                        
+                        if (childShouldNotBeShown(iResource)) {
+                            it.remove();
+                            continue;
+                        }
+                        
                                                if (isVaultFile(iResource)) {
                                                        GenericJcrRootFile gjrf;
                             try {
@@ -406,6 +412,10 @@ public class JcrNode implements IAdaptab
         return Activator.getDefault().getSerializationManager()
                 .isSerializationFile(iResource.getLocation().toOSString());
        }
+    
+    protected boolean childShouldNotBeShown(IResource resource) {
+        return false;
+    }
 
        public void setResource(IResource resource) {
                if (this.resource!=null) {

Modified: 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java?rev=1732500&r1=1732499&r2=1732500&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java
 (original)
+++ 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java
 Fri Feb 26 15:19:28 2016
@@ -42,6 +42,15 @@ public class SyncDir extends JcrNode {
        }
        
        @Override
+       protected boolean childShouldNotBeShown(IResource resource) {
+           // WTP Dynamic Web projects automatically create WEB-INF/lib and 
META-INF/MANIFEST.MF in the
+           // web content directory, even though they don't make sense for 
Sling projects
+           // So just ignore these in our own navigator
+           return resource.getType() == IResource.FOLDER && 
+                   ( resource.getName().equals("WEB-INF") || 
resource.getName().equals("META-INF"));
+       }
+       
+       @Override
        public boolean equals(Object obj) {
                if (obj instanceof SyncDir) {
                        SyncDir other = (SyncDir) obj;


Reply via email to