Author: bdelacretaz
Date: Fri Dec 11 13:19:20 2009
New Revision: 889608
URL: http://svn.apache.org/viewvc?rev=889608&view=rev
Log:
SLING-1234 - jcrinstall ignored install folders with paths that contain dots
Modified:
sling/trunk/installer/jcr/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilter.java
sling/trunk/installer/jcr/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilterTest.java
Modified: sling/trunk/installer/jcr/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilter.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/jcr/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilter.java?rev=889608&r1=889607&r2=889608&view=diff
==============================================================================
--- sling/trunk/installer/jcr/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilter.java
(original)
+++ sling/trunk/installer/jcr/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilter.java
Fri Dec 11 13:19:20 2009
@@ -99,14 +99,19 @@
int getPriority(final String path) {
int result = 0;
- // If path contains dots, remove suffixes starting with
- // dots until path matches regexp, and accept if all suffixes
+ // If path contains dots after the last /, remove suffixes
+ // starting with dots until path matches regexp, and accept
+ // if all suffixes
// are included in our list of runmodes
final char DOT = '.';
- if(path.indexOf(DOT) > 0) {
+ String prefix = path;
+ final int lastSlash = prefix.lastIndexOf('/');
+ if(lastSlash > 0) {
+ prefix = prefix.substring(lastSlash);
+ }
+ if(prefix.indexOf(DOT) > 0) {
int pos = 0;
- String prefix = path;
final List<String> modes = new LinkedList<String>();
while( (pos = prefix.lastIndexOf(DOT)) >= 0) {
modes.add(prefix.substring(pos + 1));
Modified: sling/trunk/installer/jcr/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/jcr/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilterTest.java?rev=889608&r1=889607&r2=889608&view=diff
==============================================================================
--- sling/trunk/installer/jcr/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilterTest.java
(original)
+++ sling/trunk/installer/jcr/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/impl/FolderNameFilterTest.java
Fri Dec 11 13:19:20 2009
@@ -63,6 +63,7 @@
assertFalse("Test 2", f.getPriority("/libs/install.bar") > 0);
}
+ @Test
public void testSingleMode() {
final String [] m = { "dev" };
final FolderNameFilter f = new FolderNameFilter(ROOTS, DEFAULT_REGEXP, new MockRunMode(m));
@@ -75,6 +76,7 @@
assertFalse("Test 7", f.getPriority("/libs/install.bar.dev") > 0);
}
+ @Test
public void testThreeModes() {
final String [] m = { "dev", "web", "staging" };
final FolderNameFilter f = new FolderNameFilter(ROOTS, DEFAULT_REGEXP, new MockRunMode(m));
@@ -93,6 +95,7 @@
assertFalse("Test 13",f.getPriority("/libs/install.bar.dev") > 0);
}
+ @Test
public void testRootPriorities() {
final String [] m = { "dev" };
final FolderNameFilter f = new FolderNameFilter(ROOTS, DEFAULT_REGEXP, new MockRunMode(m));
@@ -100,6 +103,7 @@
assertEquals("/apps root", new Integer(200), f.getPriority("/apps/install"));
}
+ @Test
public void testRunModePriorities() {
final String [] m = { "dev", "prod", "staging" };
final FolderNameFilter f = new FolderNameFilter(ROOTS, DEFAULT_REGEXP, new MockRunMode(m));
@@ -110,4 +114,16 @@
assertEquals("Matches three runmodes (B)", new Integer(203), f.getPriority("/apps/install.dev.prod.staging"));
assertEquals("Matches three runmodes (C)", new Integer(103), f.getPriority("/libs/install.dev.prod.staging"));
}
+
+ @Test
+ public void testDotsInPath() {
+ final String [] m = { "dev", "prod", "staging" };
+ final FolderNameFilter f = new FolderNameFilter(ROOTS, DEFAULT_REGEXP, new MockRunMode(m));
+ assertEquals("Matches no runmode", new Integer(100), f.getPriority("/libs/foo.bar/install"));
+ assertEquals("Matches dev runmode", new Integer(201), f.getPriority("/apps/foo.bar/install.dev"));
+ assertEquals("Matches staging runmode", new Integer(201), f.getPriority("/apps/foo.bar/install.staging"));
+ assertEquals("Matches three runmodes (A)", new Integer(203), f.getPriority("/apps/foo.bar/install.dev.staging.prod"));
+ assertEquals("Matches three runmodes (B)", new Integer(203), f.getPriority("/apps/foo.bar/install.dev.prod.staging"));
+ assertEquals("Matches three runmodes (C)", new Integer(103), f.getPriority("/libs/foo.bar/install.dev.prod.staging"));
+ }
}
|