public List<V> findAllEnds(char[] chars) { return findAllEnds(chars, 0, chars.length); }
@Override protected UrlMapping<T> find(String part, String[] parts) { return endsWith.findEnds(parts[parts.length - 1]); }
@Test public void testEnds() { CharTree<String> tree = new CharTree<String>() .appendReverse("foo", "foo") .appendReverse("bar", "bar") .appendReverse("foobar", "foobar"); Assert.assertEquals("foo", tree.findEnds("_foo".toCharArray())); Assert.assertEquals("bar", tree.findEnds("_bar".toCharArray())); Assert.assertEquals("bar", tree.findEnds("_foobar".toCharArray())); Assert.assertEquals("[bar, foobar]", tree.findAllEnds("_foobar".toCharArray()).toString()); } }
@Test public void testStarts() { CharTree<String> tree = new CharTree<String>() .append("foo", "foo") .append("bar", "bar") .append("foobar", "foobar"); Assert.assertEquals("foo", tree.findStarts("foo_".toCharArray())); Assert.assertEquals("bar", tree.findStarts("bar_".toCharArray())); Assert.assertEquals("foo", tree.findStarts("foobar_".toCharArray())); Assert.assertEquals("[foo, foobar]", tree.findAllStarts("foobar_".toCharArray()).toString()); }
@Test public void test2() { CharTree<String> tree = new CharTree<String>() .append("foo", "foo") .append("bar", "bar") .append("foobar", "foobar") .append("foo", "foo"); Assert.assertEquals("foo", tree.get("foo".toCharArray())); Assert.assertEquals("bar", tree.get("bar".toCharArray())); Assert.assertEquals("foobar", tree.get("foobar".toCharArray())); }
public CharTree<Pair<String, JsonFieldInfo>> getFieldsTree() { if (fieldsTree != null) return fieldsTree; fieldsTree = new CharTree<Pair<String, JsonFieldInfo>>(); for (JsonFieldInfo info : fields.fields()) { fieldsTree.append(info.field.getName(), Pair.of(info.field.getName(), info)); } return fieldsTree; } }
public static class ArrayBoxedSerializer extends Serializer { Serializer serializer; protected ArrayBoxedSerializer(Serializer serializer) { super(SerializerType.ARRAY); this.serializer = serializer; } @Override public void serialize(Object src, Appender sb, JsonGeneric generic, SerializationContext context) { Object[] arr = (Object[]) src; int length = arr.length; JsonGeneric inner = null; if (generic != null && generic.typesCount() == 1) inner = generic.type(0); sb.append('['); for (int i = 0; i < length; i++) { if (i > 0) sb.append(','); serializer.checkNullAndSerialize(arr[i], sb, inner, context); } sb.append(']'); } }
public boolean contains(char[] chars, int offset, int length) { return get(chars, offset, length) != null; }
public List<V> findAllEnds(String s) { CharTreeNode<V> node = root; int length = s.length(); List<V> list = new ArrayList<V>(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(length - i - 1)); addIfNotNull(list, node); } return list; }
public List<V> findAllStarts(char[] chars) { return findAllStarts(chars, 0, chars.length); }
public V findStarts(char[] chars) { return findStarts(chars, 0, chars.length); }
public boolean contains(char[] chars) { return contains(chars, 0, chars.length); }
UrlMapping<T> append(String pattern) { UrlMappingHolder<T> mapping = new UrlMappingHolder<>(this); endsWith.appendReverse(pattern, mapping); return mapping; }
@Test public void test1() { String[] strings = new String[]{ "Accept", "Accept-Encoding", "Accept-Language", "Cache-Control", "Connection", "Cookie", "Host", "Pragma", "User-Agent", "Content-Type", "Content-Length", "Close", "Keep-Alive" }; CharTree<String> tree = new CharTree<String>(); for (String string : strings) { tree.append(string, string); } for (String string : strings) { Assert.assertEquals(string, tree.get(string.toCharArray())); } }
public CharTree<V> append(String s, V value) { return append(s.toCharArray(), value); }
public boolean contains(String name) { return get(name) != null; }
public List<V> findAllStarts(char[] chars, int offset, int length) { CharTreeNode<V> node = root; List<V> list = new ArrayList<V>(); for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[i]); addIfNotNull(list, node); } return list; }
public List<V> findAllStarts(char[] chars) { return findAllStarts(chars, 0, chars.length); }
public V findStarts(char[] chars) { return findStarts(chars, 0, chars.length); }