diff --git a/src/main/java/org/codelibs/fess/helper/CrawlingInfoHelper.java b/src/main/java/org/codelibs/fess/helper/CrawlingInfoHelper.java index 9e6fc7b6e..a306d1244 100644 --- a/src/main/java/org/codelibs/fess/helper/CrawlingInfoHelper.java +++ b/src/main/java/org/codelibs/fess/helper/CrawlingInfoHelper.java @@ -191,7 +191,7 @@ public class CrawlingInfoHelper { }); } - String generateId(final String url, final List roleTypeList) { + protected String generateId(final String url, final List roleTypeList) { final UnsafeStringBuilder buf = new UnsafeStringBuilder(1000); buf.append(url); if (roleTypeList != null && !roleTypeList.isEmpty()) { @@ -210,25 +210,24 @@ public class CrawlingInfoHelper { || c == '-' // || c == '*' // || c == '_' // - || c == ':' // added - || c == '/' // added - || c == '+' // added - || c == '%' // added - || c == '=' // added - || c == '&' // added - || c == '?' // added - || c == '#' // added - || c == '[' // added - || c == ']' // added - || c == '@' // added - || c == '~' // added - || c == '!' // added - || c == '$' // added - || c == '\'' // added - || c == '(' // added - || c == ')' // added - || c == ',' // added - || c == ';' // added + || c == ':' // + || c == '+' // + || c == '%' // + || c == '=' // + || c == '&' // + || c == '?' // + || c == '#' // + || c == '[' // + || c == ']' // + || c == '@' // + || c == '~' // + || c == '!' // + || c == '$' // + || c == '\'' // + || c == '(' // + || c == ')' // + || c == ',' // + || c == ';' // ) { encodedBuf.append(c); } else { diff --git a/src/test/java/org/codelibs/fess/helper/CrawlingInfoHelperTest.java b/src/test/java/org/codelibs/fess/helper/CrawlingInfoHelperTest.java index 972f3b060..0293d84df 100644 --- a/src/test/java/org/codelibs/fess/helper/CrawlingInfoHelperTest.java +++ b/src/test/java/org/codelibs/fess/helper/CrawlingInfoHelperTest.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.RandomStringUtils; import org.codelibs.fess.unit.UnitFessTestCase; public class CrawlingInfoHelperTest extends UnitFessTestCase { @@ -35,14 +36,14 @@ public class CrawlingInfoHelperTest extends UnitFessTestCase { final Map dataMap = new HashMap(); dataMap.put("url", "http://example.com/"); - assertEquals("http://example.com/", crawlingInfoHelper.generateId(dataMap)); + assertEquals("http:%2F%2Fexample.com%2F", crawlingInfoHelper.generateId(dataMap)); final List browserTypeList = new ArrayList(); dataMap.put("type", browserTypeList); final List roleTypeList = new ArrayList(); dataMap.put("role", roleTypeList); - assertEquals("http://example.com/", crawlingInfoHelper.generateId(dataMap)); + assertEquals("http:%2F%2Fexample.com%2F", crawlingInfoHelper.generateId(dataMap)); } public void test_generateId_roleType() { @@ -52,35 +53,43 @@ public class CrawlingInfoHelperTest extends UnitFessTestCase { roleTypeList.add("admin"); dataMap.put("role", roleTypeList); - assertEquals("http://example.com/;role=admin", crawlingInfoHelper.generateId(dataMap)); + assertEquals("http:%2F%2Fexample.com%2F;role=admin", crawlingInfoHelper.generateId(dataMap)); roleTypeList.add("guest"); - assertEquals("http://example.com/;role=admin,guest", crawlingInfoHelper.generateId(dataMap)); + assertEquals("http:%2F%2Fexample.com%2F;role=admin,guest", crawlingInfoHelper.generateId(dataMap)); final List browserTypeList = new ArrayList(); dataMap.put("type", browserTypeList); - assertEquals("http://example.com/;role=admin,guest", crawlingInfoHelper.generateId(dataMap)); + assertEquals("http:%2F%2Fexample.com%2F;role=admin,guest", crawlingInfoHelper.generateId(dataMap)); } public void test_generateId_long() { - StringBuilder buf = new StringBuilder(1000); - for (int i = 0; i < 550; i++) { - buf.append('x'); + for (int i = 0; i < 1000; i++) { + final String value = RandomStringUtils.randomAlphabetic(550); + assertEquals(440, crawlingInfoHelper.generateId(value.substring(0, 440), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 450), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 460), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 470), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 480), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 490), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 500), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 510), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 520), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.toString(), null).length()); + } + for (int i = 0; i < 1000; i++) { + final String value = RandomStringUtils.randomAscii(550); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 450), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 460), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 470), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 480), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 490), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 500), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 510), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.substring(0, 520), null).length()); + assertEquals(509, crawlingInfoHelper.generateId(value.toString(), null).length()); } - - assertEquals(440, crawlingInfoHelper.generateId(buf.substring(0, 440), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 450), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 460), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 470), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 480), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 490), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 500), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 510), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.substring(0, 520), null).length()); - assertEquals(509, crawlingInfoHelper.generateId(buf.toString(), null).length()); - } - }