You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2014/05/16 16:23:35 UTC

svn commit: r1595211 - in /sling/trunk/tooling/ide: api-test/src/test/java/org/apache/sling/ide/filter/ api/src/org/apache/sling/ide/filter/ eclipse-test/src/org/apache/sling/ide/test/impl/ eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/

Author: rombert
Date: Fri May 16 14:23:34 2014
New Revision: 1595211

URL: http://svn.apache.org/r1595211
Log:
SLING-3161 - SlingIDE Import Content wizard should respect .vltignore
files

Take into account .vltignore files which are present under the content
sync root but not under the import root.

Modified:
    sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java
    sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/IgnoredResources.java
    sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/ContentImportTest.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java

Modified: sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java?rev=1595211&r1=1595210&r2=1595211&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java (original)
+++ sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java Fri May 16 14:23:34 2014
@@ -69,4 +69,14 @@ public class IgnoredResourcesTest {
 
         assertThat(r.isIgnored("/content/zen"), equalTo(true));
     }
+
+    @Test
+    public void rulesWithRootPath() {
+
+        IgnoredResources r = new IgnoredResources();
+        r.registerRegExpIgnoreRule("/", "en");
+
+        assertThat(r.isIgnored("/en"), equalTo(true));
+
+    }
 }

Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/IgnoredResources.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/IgnoredResources.java?rev=1595211&r1=1595210&r2=1595211&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/IgnoredResources.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/IgnoredResources.java Fri May 16 14:23:34 2014
@@ -29,11 +29,14 @@ public class IgnoredResources {
 
     public void registerRegExpIgnoreRule(String root, String pattern) {
 
-        // copied from org.apache.jackrabbit.vault.vlt.meta.Ignored
+        // copied from org.apache.jackrabbit.vault.vlt.meta.Ignored and tweaked
         if (pattern.startsWith("#")) {
             return;
         }
         StringBuilder reg = new StringBuilder("^");
+        if (root.equals("/")) {
+            root = "";
+        }
         reg.append(root).append("/");
         for (int i = 0; i < pattern.length(); i++) {
             char c = pattern.charAt(i);

Modified: sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/ContentImportTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/ContentImportTest.java?rev=1595211&r1=1595210&r2=1595211&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/ContentImportTest.java (original)
+++ sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/ContentImportTest.java Fri May 16 14:23:34 2014
@@ -166,6 +166,44 @@ public class ContentImportTest {
         assertThat(contentProject.findMember("jcr_root/content/test-root/en"), nullValue());
     }
 
+    @Test
+    public void importFilesAndFoldersRespectsVltIgnoreNotUnderImportRoot() throws Exception {
+
+        // create faceted project
+        IProject contentProject = projectRule.getProject();
+
+        ProjectAdapter project = new ProjectAdapter(contentProject);
+        project.addNatures(JavaCore.NATURE_ID, "org.eclipse.wst.common.project.facet.core.nature");
+
+        project.createOrUpdateFile(Path.fromPortableString("jcr_root/content/hello.txt"), new ByteArrayInputStream(
+                "hello, world".getBytes()));
+
+        project.createOrUpdateFile(Path.fromPortableString("META-INF/vault/filter.xml"), getClass()
+                .getResourceAsStream("filter-only-content-test-root-en.xml"));
+
+        project.createOrUpdateFile(Path.fromPortableString("jcr_root/.vltignore"), new ByteArrayInputStream(
+                "content/test-root/en\n".getBytes()));
+
+        // install bundle facet
+        project.installFacet("sling.content", "1.0");
+
+        ServerAdapter server = new ServerAdapter(wstServer.getServer());
+        server.installModule(contentProject);
+
+        // create server-side content
+        RepositoryAccessor repo = new RepositoryAccessor(config);
+        repo.createNode("/content/test-root/en", "nt:folder");
+        repo.createNode("/content/test-root/en/files", "nt:folder");
+        repo.createFile("/content/test-root/en/files/first.txt", "first file".getBytes());
+
+        ImportRepositoryContentAction action = new ImportRepositoryContentAction(wstServer.getServer(),
+                Path.fromPortableString("/content/test-root"), contentProject, Activator.getDefault()
+                        .getSerializationManager());
+        action.run(new NullProgressMonitor());
+
+        assertThat(contentProject.findMember("jcr_root/content/test-root/en"), nullValue());
+    }
+
     @Before
     public void setUp() throws Exception {
         RepositoryAccessor repo = new RepositoryAccessor(config);

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java?rev=1595211&r1=1595210&r2=1595211&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java Fri May 16 14:23:34 2014
@@ -131,6 +131,8 @@ public class ImportRepositoryContentActi
             IPath repositoryImportRoot = projectRelativePath.makeRelativeTo(syncDir.getProjectRelativePath())
                     .makeAbsolute();
 
+            readVltIgnoresNotUnderImportRoot(syncDir, repositoryImportRoot);
+
             Activator
                     .getDefault()
                     .getPluginLogger()
@@ -157,6 +159,19 @@ public class ImportRepositoryContentActi
 
     }
 
+    private void readVltIgnoresNotUnderImportRoot(IFolder syncDir, IPath repositoryImportRoot) throws IOException,
+            CoreException {
+
+        IFolder current = syncDir;
+        for (int i = 0; i < repositoryImportRoot.segmentCount(); i++) {
+            IPath repoPath = current.getProjectRelativePath().makeRelativeTo(syncDir.getProjectRelativePath())
+                    .makeAbsolute();
+            parseIgnoreFiles(current, repoPath.toPortableString());
+            current = (IFolder) current.findMember(repositoryImportRoot.segment(i));
+        }
+
+    }
+
     /**
      * Crawls the repository and recursively imports founds resources
      * 
@@ -164,8 +179,7 @@ public class ImportRepositoryContentActi
      * @param filter
      * @param path the current path to import from
      * @param project the project to create resources in
-     * @param projectRelativePath the path, relative to the project root, where the resources should be
-     *            created
+     * @param projectRelativePath the path, relative to the project root, where the resources should be created
      * @param tracer
      * @throws JSONException
      * @throws RepositoryException
@@ -269,10 +283,14 @@ public class ImportRepositoryContentActi
         // TODO - the parsing should be extracted
         IResource vltIgnore = folder.findMember(".vltignore");
         if (vltIgnore != null && vltIgnore instanceof IFile) {
+
+            logger.trace("Found ignore file at {0}", vltIgnore.getFullPath());
+
             InputStream contents = ((IFile) vltIgnore).getContents();
             try {
                 List<String> ignoreLines = IOUtils.readLines(contents);
                 for (String ignoreLine : ignoreLines) {
+                    logger.trace("Registering ignore rule {0}:{1}", path, ignoreLine);
                     ignoredResources.registerRegExpIgnoreRule(path, ignoreLine);
                 }
             } finally {