@Override protected ValueObject convert(ValueObject nextValue) { if (nextValue.getObjectType() != ValueObject.TYPE.ARRAY) { return nextValue.asString(); } else { return nextValue; } }
@Override public Entry<String, String> next() { Entry<String, ValueObject> input = iterator.next(); return new AbstractMap.SimpleEntry<>(input.getKey(), input.getValue().asString().asNative()); }
@Nullable @Override public ValueObject filterValue(@Nullable ValueObject value) { try { if (value == null) { return null; } else { return ValueFactory.decodeValue(value.asString().asNative()); } } catch (IOException ex) { throw new UncheckedIOException(ex); } }
@JsonCreator public StringWithValueFilter(@JsonProperty("input") @Nullable final String input, @JsonProperty("filter") @Nullable final ValueFilter filter) { if (filter == null) { result = input; } else { ValueObject object = filter.filter(ValueFactory.create(input)); result = (object != null) ? object.asString().asNative() : null; } }
@Override public String get(int index) { ValueObject val = data.get(index); if (val == null) return null; return val.asString().asNative(); }
@Override public String remove(int index) { ValueObject prev = data.remove(index); if (prev == null) return null; return prev.asString().asNative(); } }
@Override public String get(Object key) { String stringKey = (String) key; ValueObject val = data.get(stringKey); if (val == null) { return null; } else { return val.asString().asNative(); } }
@Override public String remove(Object key) { String stringKey = (String) key; ValueObject val = data.remove(stringKey); if (val == null) { return null; } else { return val.asString().asNative(); } }
@Override public String set(int index, String element) { ValueObject prev = data.set(index, ValueFactory.create(element)); if (prev == null) return null; return prev.asString().asNative(); }
@Override public String put(String key, String value) { ValueObject val = data.put(key, ValueFactory.create(value)); if (val == null) { return null; } else { return val.asString().asNative(); } }
@Override public Bundle peek() { Bundle tmp; while (peek == null && (tmp = stream.peek()) != null) { int hash = Math.abs(PluggableHashFunction.hash(tmp.getValue(tmp.getFormat().getField(hashKey)).asString().toString()) % shardTotal); for (Integer shard : shards) { if (hash == shard) { return tmp; } } stream.next(); } return null; }
@Override public void process(Bundle row, StreamEmitter emitter) { String keyValue = row.getValue(row.getFormat().getField(key)).asString().asNative(); String hashValue = row.getValue(row.getFormat().getField(hash)).asString().asNative(); if (keyValue != null) { if (currentHash != null && hashValue != null && !currentHash.equals(hashValue)) { releaseMap(emitter); } currentHash = hashValue; joinAndEmit(keyValue, row, emitter); } }
@Override public void setValues(ValueMap valueMapEntries) { byte[] b = valueMapEntries.get("b").asBytes().asNative(); this.quantile = valueMapEntries.get("q").asDouble().getDouble(); this.op = OP.valueOf(valueMapEntries.get("o").asString().toString()); heldObject = TDigest.fromBytes(ByteBuffer.wrap(b)); }
@Override public void start() { int count = 0; for (String next : haystack) { ValueObject result = filter.filterValue(ValueFactory.create(next)); if (needles.contains(next)) { assertEquals(next, result.asString().toString()); count++; } else { assertNull(result); } } assertEquals(needles.size(), count); }
@Test public void getString() throws Exception { ValueObject value = applyFilter("{key: c}"); assertEquals(value.asString().asNative(), "test"); }
@Test public void returnMatch() { String[] values = new String[3]; values[0] = "foo"; values[1] = "bar"; values[2] = "baz"; ValueFilterContains filter = new ValueFilterContains(values, null, false, true); assertEquals("foo", filter.filter(ValueFactory.create("foo")).asString().toString()); assertEquals("bar", filter.filter(ValueFactory.create("bar")).asString().toString()); assertEquals("baz", filter.filter(ValueFactory.create("baz")).asString().toString()); assertEquals("foo", filter.filter(ValueFactory.create("hellofooworld")).asString().toString()); assertNull(filter.filter(ValueFactory.create(""))); assertNull(filter.filter(null)); }
@Test public void append() throws IOException { ValueFilterCreateMap vf = Configs.decodeObject(ValueFilterCreateMap.class, "appendValues=true"); ValueMap result = vf.filter(ValueFactory.create("hello=world,baz=quux,hello=bar,hello=world")).asMap(); ValueArray values = result.get("hello").asArray(); assertEquals(3, values.size()); assertEquals("world", values.get(0).asString().asNative()); assertEquals("bar", values.get(1).asString().asNative()); assertEquals("world", values.get(2).asString().asNative()); assertEquals("quux", result.get("baz").asString().asNative()); }
@Test public void createMap() throws IOException { ValueFilterCreateMap vf = Configs.decodeObject(ValueFilterCreateMap.class, ""); ValueMap result = vf.filter(ValueFactory.create("hello=world,foo=bar")).asMap(); assertEquals("world", result.get("hello").asString().asNative()); assertEquals("bar", result.get("foo").asString().asNative()); result = vf.filter(ValueFactory.create("hello=world,hello=bar")).asMap(); assertEquals("bar", result.get("hello").asString().asNative()); result = vf.filter(ValueFactory.create("hello=world,hello")).asMap(); assertEquals("world", result.get("hello").asString().asNative()); }
private void verifyOnePass() { bundle = source.next(); assertNotNull(bundle); assertEquals("a", getField("A").asString().asNative()); assertEquals(new Long(1), getField("B").asLong().asNative()); assertNotNull(bundle); bundle = source.next(); assertNotNull(bundle); assertEquals(Lists.newArrayList(new Long(1), new Long(2)), getField("C").asArray().asNative()); assertEquals(Lists.newArrayList("a", "b"), getField("D").asArray().asNative()); }
@Test public void akamaiGroup() { ValueFilterRegex vf = new ValueFilterRegex().setPattern(Pattern.compile("Log_([0-9]+)\\.")); ValueObject res = vf.filter(ValueFactory.create("stream://san1.local:8614/split/logs/12345/2011/05/20/aLog_12345.esw3c_U.201105200000-0100-1.gz")); assertTrue(res != null); assertTrue(res.asArray().size() > 0); assertEquals("12345", res.asArray().get(0).asString().toString()); } }