@Override public String apply(String from) { return escape(from); } };
protected String escapePath(String path) { return pathEscaper.escape(path); }
protected String escapeParam(String param) { return queryParamEscaper.escape(param); }
@Override public String apply(String from) { return escape(from); } };
/** * Asserts that an escaper behaves correctly with respect to null inputs. * * @param escaper the non-null escaper to test */ public static void assertBasic(Escaper escaper) throws IOException { // Escapers operate on characters: no characters, no escaping. Assert.assertEquals("", escaper.escape("")); // Assert that escapers throw null pointer exceptions. try { escaper.escape((String) null); Assert.fail("exception not thrown when escaping a null string"); } catch (NullPointerException e) { // pass } }
@Override public String apply(String from) { return escape(from); } };
private static String escapeAsString(Escaper e, String s) { return e.escape(s); } }
String assembleLongPollRefreshUrl(String uri, String appId, String cluster, String dataCenter, Map<String, Long> notificationsMap) { Map<String, String> queryParams = Maps.newHashMap(); queryParams.put("appId", queryParamEscaper.escape(appId)); queryParams.put("cluster", queryParamEscaper.escape(cluster)); queryParams .put("notifications", queryParamEscaper.escape(assembleNotifications(notificationsMap))); if (!Strings.isNullOrEmpty(dataCenter)) { queryParams.put("dataCenter", queryParamEscaper.escape(dataCenter)); } String localIp = m_configUtil.getLocalIp(); if (!Strings.isNullOrEmpty(localIp)) { queryParams.put("ip", queryParamEscaper.escape(localIp)); } String params = MAP_JOINER.join(queryParams); if (!uri.endsWith("/")) { uri += "/"; } return uri + "notifications/v2?" + params; }
private String assembleMetaServiceUrl() { String domainName = m_configUtil.getMetaServerDomainName(); String appId = m_configUtil.getAppId(); String localIp = m_configUtil.getLocalIp(); Map<String, String> queryParams = Maps.newHashMap(); queryParams.put("appId", queryParamEscaper.escape(appId)); if (!Strings.isNullOrEmpty(localIp)) { queryParams.put("ip", queryParamEscaper.escape(localIp)); } return domainName + "/services/config?" + MAP_JOINER.join(queryParams); }
/** * @since 2.9 */ public static String escapeForXmlAttribute(String s) { return XmlEscapers.xmlAttributeEscaper().escape(s); }
/** * @since 2.9 */ public static String escapeForXmlContent(String s) { return XmlEscapers.xmlContentEscaper().escape(s); }
public static String self(String searchTerm) { return StrSubstitutor.replace(BASE + "?q=${searchTerm}", of("searchTerm", UrlEscapers.urlFormParameterEscaper().escape(searchTerm))); }
public void testNullEscaper() throws IOException { Escaper escaper = Escapers.nullEscaper(); EscaperAsserts.assertBasic(escaper); String s = "\0\n\t\\az09~\uD800\uDC00\uFFFF"; assertEquals("null escaper should have no effect", s, escaper.escape(s)); }
public void testHtmlEscaper() throws Exception { assertEquals("xxx", htmlEscaper().escape("xxx")); assertEquals(""test"", htmlEscaper().escape("\"test\"")); assertEquals("'test'", htmlEscaper().escape("\'test'")); assertEquals("test & test & test", htmlEscaper().escape("test & test & test")); assertEquals("test << 1", htmlEscaper().escape("test << 1")); assertEquals("test >> 1", htmlEscaper().escape("test >> 1")); assertEquals("<tab>", htmlEscaper().escape("<tab>")); assertEquals("foo&bar", htmlEscaper().escape("foo&bar")); assertSame(s, htmlEscaper().escape(s)); assertEquals("<p>", htmlEscaper().escape("<p>")); assertEquals("a"b<c>d&", htmlEscaper().escape("a\"b<c>d&")); assertEquals("foo&&bar", htmlEscaper().escape("foo&&bar")); + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + "1234567890"; assertSame(s, htmlEscaper().escape(s));
public void testAddEscapes() { char[] cs = {'a', 'b', 'c'}; CharEscaperBuilder builder = new CharEscaperBuilder().addEscapes(cs, "Z"); Escaper escaper = builder.toEscaper(); assertEquals("ZZZdef", escaper.escape("abcdef")); } }
public void testBuilderInitialStateNoneUnsafe() { // No characters are unsafe by default (safeMin == 0, safeMax == 0xFFFF). Escaper escaper = Escapers.builder().setUnsafeReplacement("X").build(); assertEquals("\0\uFFFF", escaper.escape("\0\uFFFF")); }
public void testBuilderInitialStateNoReplacement() { // Unsafe characters aren't modified by default (unsafeReplacement == null). Escaper escaper = Escapers.builder().setSafeRange('a', 'z').build(); assertEquals("The Quick Brown Fox", escaper.escape("The Quick Brown Fox")); }
public void testBuilderRetainsState() { // Setting a safe range and unsafe replacement works as expected. Escapers.Builder builder = Escapers.builder(); builder.setSafeRange('a', 'z'); builder.setUnsafeReplacement("X"); assertEquals("XheXXuickXXrownXXoxX", builder.build().escape("The Quick Brown Fox!")); // Explicit replacements take priority over unsafe characters. builder.addEscape(' ', "_"); builder.addEscape('!', "_"); assertEquals("Xhe_Xuick_Xrown_Xox_", builder.build().escape("The Quick Brown Fox!")); // Explicit replacements take priority over safe characters. builder.setSafeRange(' ', '~'); assertEquals("The_Quick_Brown_Fox_", builder.build().escape("The Quick Brown Fox!")); }
@Description("escape a string for use in URL query parameter names and values") @ScalarFunction @LiteralParameters({"x", "y"}) @Constraint(variable = "y", expression = "min(2147483647, x * 12)") @SqlType("varchar(y)") public static Slice urlEncode(@SqlType("varchar(x)") Slice value) { Escaper escaper = UrlEscapers.urlFormParameterEscaper(); return slice(escaper.escape(value.toStringUtf8())); }
public void testBuilderCreatesIndependentEscapers() { // Setup a simple builder and create the first escaper. Escapers.Builder builder = Escapers.builder(); builder.setSafeRange('a', 'z'); builder.setUnsafeReplacement("X"); builder.addEscape(' ', "_"); Escaper first = builder.build(); // Modify one of the existing mappings before creating a new escaper. builder.addEscape(' ', "-"); builder.addEscape('!', "$"); Escaper second = builder.build(); // This should have no effect on existing escapers. builder.addEscape(' ', "*"); // Test both escapers after modifying the builder. assertEquals("Xhe_Xuick_Xrown_XoxX", first.escape("The Quick Brown Fox!")); assertEquals("Xhe-Xuick-Xrown-Xox$", second.escape("The Quick Brown Fox!")); }