This commit is contained in:
Shinsuke Sugaya 2017-01-22 22:25:37 +09:00
parent e9e9f1ae14
commit 42172d6292
2 changed files with 49 additions and 41 deletions

View file

@ -191,7 +191,7 @@ public class CrawlingInfoHelper {
});
}
String generateId(final String url, final List<String> roleTypeList) {
protected String generateId(final String url, final List<String> 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 {

View file

@ -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<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("url", "http://example.com/");
assertEquals("http://example.com/", crawlingInfoHelper.generateId(dataMap));
assertEquals("http:%2F%2Fexample.com%2F", crawlingInfoHelper.generateId(dataMap));
final List<String> browserTypeList = new ArrayList<String>();
dataMap.put("type", browserTypeList);
final List<String> roleTypeList = new ArrayList<String>();
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<String> browserTypeList = new ArrayList<String>();
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());
}
}