static void setObject(TupleEntry entry, Comparable<?> field, Object object) { entry.setObject(field, object); }
entry.setObject(field, result);
static void setObject(TupleEntry entry, Comparable<?> field, Object object) { entry.setObject(field, object); }
@Override public boolean source( FlowProcess<? extends Properties> flowProcess, SourceCall<LineNumberReader, InputStream> sourceCall ) throws IOException { String line = sourceCall.getContext().readLine(); if( line == null ) return false; TupleEntry incomingEntry = sourceCall.getIncomingEntry(); JsonNode jsonNode = null; if( !line.isEmpty() ) jsonNode = mapper.readTree( line ); incomingEntry.setObject( 0, jsonNode ); return true; }
public TupleEntry allocateTuple(Fields subSetOfFields, Object... values) { if (resuableEntry == null) { resuableEntry = new TupleEntry(allFields, Tuple.size(allFields.size())); } for (Comparable field : resuableEntry.getFields()) { resuableEntry.setObject(field, null); } for (int i = 0; i < subSetOfFields.size(); i++) { resuableEntry.setObject(subSetOfFields.get(i), values[i]); } return resuableEntry; }
@Test public void testRegexFilter() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); assertTrue( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "John D Doe" ) ), entry ) ); assertTrue( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "^John$" ) ), entry ) ); assertFalse( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "^John Doe$" ) ), entry ) ); assertFalse( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "John Doe" ) ), entry ) ); assertFalse( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "John[ ]Doe$" ) ), entry ) ); } }
@Test public void testRegexFilter() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); assertTrue( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "John D Doe" ) ), entry ) ); assertTrue( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "^John$" ) ), entry ) ); assertFalse( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "^John Doe$" ) ), entry ) ); assertFalse( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "John Doe" ) ), entry ) ); assertFalse( invokeFilter( new JSONRegexFilter( "/person/name", Pattern.compile( "John[ ]Doe$" ) ), entry ) ); } }
@Test public void testCreateMap() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "name", String.class ), Tuple.size( 1 ) ); entry.setObject( 0, "Jane Doe" ); JSONCreateFunction function = new JSONCreateFunction( new Fields( "result" ), singletonMap( new Fields( "name", String.class ), "/person/name" ) ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); JsonNode value = (JsonNode) result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "Jane Doe", value.at( "/person/name" ).textValue() ); }
@Test public void testCreateMapResolved() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "name", String.class ), Tuple.size( 1 ) ); entry.setObject( 0, "Jane Doe" ); JSONCreateFunction function = new JSONCreateFunction( new Fields( "result" ), singletonMap( new Fields( 0, String.class ), "/person/name" ) ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); JsonNode value = (JsonNode) result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "Jane Doe", value.at( "/person/name" ).textValue() ); }
@Test public void testGetMap() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); // the map ctor really expects large numbers of entries to be useful JSONGetFunction function = new JSONGetFunction( singletonMap( new Fields( "result" ), "/person/name" ) ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); Object value = result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "John Doe", ( (TextNode) value ).textValue() ); } }
@Test public void testGetMap() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); // the map ctor really expects large numbers of entries to be useful JSONGetFunction function = new JSONGetFunction( singletonMap( new Fields( "result" ), "/person/name" ) ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); Object value = result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "John Doe", ( (TextNode) value ).textValue() ); } }
@Test public void testGetMissing() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); JSONGetFunction function = new JSONGetFunction( new Fields( "result" ), "/person/foobar" ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); Object value = result.iterator().next().getObject( 0 ); assertNull( value ); }
@Test public void testGetMissing() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); JSONGetFunction function = new JSONGetFunction( new Fields( "result" ), "/person/foobar" ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); Object value = result.iterator().next().getObject( 0 ); assertNull( value ); }
@Test public void testCreateDeep() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "name", String.class ), Tuple.size( 1 ) ); entry.setObject( 0, "Jane Doe" ); JSONCreateFunction function = new JSONCreateFunction( new Fields( "result" ), new Fields( "name", String.class ), "/person/foo/name" ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); JsonNode value = (JsonNode) result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "Jane Doe", value.at( "/person/foo/name" ).textValue() ); }
@Test(expected = OperationException.class) public void testGetMissingFail() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); JSONGetFunction function = new JSONGetFunction( new Fields( "result" ), true, "/person/foobar" ); invokeFunction( function, entry, new Fields( "result" ) ); }
@Test public void testGet() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); JSONGetFunction function = new JSONGetFunction( new Fields( "result" ), "/person/name" ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); Object value = result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "John Doe", ( (TextNode) value ).textValue() ); }
@Test public void testGet() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); JSONGetFunction function = new JSONGetFunction( new Fields( "result" ), "/person/name" ); TupleListCollector result = invokeFunction( function, entry, new Fields( "result" ) ); Object value = result.iterator().next().getObject( 0 ); assertNotNull( value ); assertEquals( "John Doe", ( (TextNode) value ).textValue() ); }
@Test(expected = OperationException.class) public void testGetMissingFail() throws Exception { TupleEntry entry = new TupleEntry( new Fields( "json", JSONCoercibleType.TYPE ), Tuple.size( 1 ) ); entry.setObject( 0, JSONData.nested ); JSONGetFunction function = new JSONGetFunction( new Fields( "result" ), true, "/person/foobar" ); invokeFunction( function, entry, new Fields( "result" ) ); }