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 {