private static void addPatternCharacter(final StringBuilder patternBuilder, final char c) { if (DEFINITELY_FINE.matcher(String.valueOf(c)).matches()) { patternBuilder.append(c); } else { patternBuilder.append("\\u").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); } }
private static String escape(final String s) { final StringBuilder escaped = new StringBuilder(); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); if (Character.isLetterOrDigit(c) || Arrays.binarySearch(SAFE_CHARS, c) >= 0) { escaped.append(c); } else { escaped.append("\\u").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); } } return escaped.toString(); }
public static String escapeStringLiteral(final String s) { Preconditions.checkNotNull(s); boolean isPlainAscii = true; final StringBuilder builder = new StringBuilder("'"); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); if (Character.isLetterOrDigit(c) || c == ' ') { builder.append(c); if (c > 127) { isPlainAscii = false; } } else { builder.append("\\").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); isPlainAscii = false; } } builder.append("'"); return isPlainAscii ? builder.toString() : "U&" + builder; }
@Override public byte[] getCacheKey() { final byte[] dimensionBytes = StringUtils.toUtf8(dimension); final byte[] patternBytes = StringUtils.toUtf8(pattern); final byte[] escapeBytes = escapeChar == null ? new byte[0] : Chars.toByteArray(escapeChar); final byte[] extractionFnBytes = extractionFn == null ? new byte[0] : extractionFn.getCacheKey(); final int sz = 4 + dimensionBytes.length + patternBytes.length + escapeBytes.length + extractionFnBytes.length; return ByteBuffer.allocate(sz) .put(DimFilterUtils.LIKE_CACHE_ID) .put(dimensionBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(patternBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(escapeBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(extractionFnBytes) .array(); }
@GwtIncompatible // Chars.fromByteArray, Chars.toByteArray public void testByteArrayRoundTrips() { char c = 0; for (int hi = 0; hi < 256; hi++) { for (int lo = 0; lo < 256; lo++) { char result = Chars.fromByteArray(new byte[] {(byte) hi, (byte) lo}); assertEquals( String.format( Locale.ROOT, "hi=%s, lo=%s, expected=%s, result=%s", hi, lo, (int) c, (int) result), c, result); byte[] bytes = Chars.toByteArray(c); assertEquals((byte) hi, bytes[0]); assertEquals((byte) lo, bytes[1]); c++; } } assertEquals((char) 0, c); // sanity check }
private static void addPatternCharacter(final StringBuilder patternBuilder, final char c) { if (DEFINITELY_FINE.matcher(String.valueOf(c)).matches()) { patternBuilder.append(c); } else { patternBuilder.append("\\u").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); } }
private static void addPatternCharacter(final StringBuilder patternBuilder, final char c) { if (DEFINITELY_FINE.matcher(String.valueOf(c)).matches()) { patternBuilder.append(c); } else { patternBuilder.append("\\u").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); } }
private static String escape(final String s) { final StringBuilder escaped = new StringBuilder(); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); if (Character.isLetterOrDigit(c) || Arrays.binarySearch(SAFE_CHARS, c) >= 0) { escaped.append(c); } else { escaped.append("\\u").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); } } return escaped.toString(); }
private static String escape(final String s) { final StringBuilder escaped = new StringBuilder(); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); if (Character.isLetterOrDigit(c) || Arrays.binarySearch(SAFE_CHARS, c) >= 0) { escaped.append(c); } else { escaped.append("\\u").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); } } return escaped.toString(); }
@Override public QpidByteBuffer putChar(final int index, final char value) { byte[] valueArray = Chars.toByteArray(value); return put(index, valueArray); }
@Override public final QpidByteBuffer putChar(final char value) { byte[] valueArray = Chars.toByteArray(value); return put(valueArray); }
public static String escapeStringLiteral(final String s) { Preconditions.checkNotNull(s); boolean isPlainAscii = true; final StringBuilder builder = new StringBuilder("'"); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); if (Character.isLetterOrDigit(c) || c == ' ') { builder.append(c); if (c > 127) { isPlainAscii = false; } } else { builder.append("\\").append(BaseEncoding.base16().encode(Chars.toByteArray(c))); isPlainAscii = false; } } builder.append("'"); return isPlainAscii ? builder.toString() : "U&" + builder.toString(); }
@Override public byte[] getCacheKey() { final byte[] dimensionBytes = StringUtils.toUtf8(dimension); final byte[] patternBytes = StringUtils.toUtf8(pattern); final byte[] escapeBytes = escapeChar == null ? new byte[0] : Chars.toByteArray(escapeChar); final byte[] extractionFnBytes = extractionFn == null ? new byte[0] : extractionFn.getCacheKey(); final int sz = 4 + dimensionBytes.length + patternBytes.length + escapeBytes.length + extractionFnBytes.length; return ByteBuffer.allocate(sz) .put(DimFilterUtils.LIKE_CACHE_ID) .put(dimensionBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(patternBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(escapeBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(extractionFnBytes) .array(); }
@Override public byte[] getCacheKey() { final byte[] dimensionBytes = StringUtils.toUtf8(dimension); final byte[] patternBytes = StringUtils.toUtf8(pattern); final byte[] escapeBytes = escapeChar == null ? new byte[0] : Chars.toByteArray(escapeChar); final byte[] extractionFnBytes = extractionFn == null ? new byte[0] : extractionFn.getCacheKey(); final int sz = 4 + dimensionBytes.length + patternBytes.length + escapeBytes.length + extractionFnBytes.length; return ByteBuffer.allocate(sz) .put(DimFilterUtils.LIKE_CACHE_ID) .put(dimensionBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(patternBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(escapeBytes) .put(DimFilterUtils.STRING_SEPARATOR) .put(extractionFnBytes) .array(); }
@GwtIncompatible // Chars.fromByteArray, Chars.toByteArray public void testByteArrayRoundTrips() { char c = 0; for (int hi = 0; hi < 256; hi++) { for (int lo = 0; lo < 256; lo++) { char result = Chars.fromByteArray(new byte[]{(byte) hi, (byte) lo}); assertEquals(String.format(Locale.ROOT, "hi=%s, lo=%s, expected=%s, result=%s", hi, lo, (int) c, (int) result), c, result); byte[] bytes = Chars.toByteArray(c); assertEquals((byte) hi, bytes[0]); assertEquals((byte) lo, bytes[1]); c++; } } assertEquals((char) 0, c); // sanity check }