@Override public Iterator<Binding> createDeserializer(InputStream in) { return new BindingInputStream(in); }
public BindingInputStream(Tokenizer tokenizer) { this(tokenizer, profile()) ; }
public static void main(String... args) { InputStream in = System.in ; OutputStream out = System.out ; BindingInputStream input = new BindingInputStream(in) ; BindingOutputStream output = new BindingOutputStream(out) ; for ( ; input.hasNext() ; ) output.send(input.next()) ; output.flush() ; } }
public static ResultSet fromBIO(InputStream input) { // Scan the stream for VARS and accumulate the total variables. // Trade off of guessing first line is all the VARS and coping with // anything possible. -> Cope with anything possible. BindingInputStream bin = new BindingInputStream(input) ; List<Binding> bindings = new ArrayList<>() ; List<Var> vars = new ArrayList<>() ; while(bin.hasNext()) { Binding b = bin.next(); bindings.add(b) ; for ( Var v : bin.vars() ) { if ( ! vars.contains(v) ) vars.add(v) ; } } QueryIterator qIter = new QueryIterPlainWrapper(bindings.iterator()) ; return new ResultSetStream(Var.varNames(vars), m, qIter) ; } }
public static void main(String... args) { InputStream in = System.in ; OutputStream out = System.out ; BindingInputStream input = new BindingInputStream(in) ; BindingOutputStream output = new BindingOutputStream(out) ; for ( ; input.hasNext() ; ) output.send(input.next()) ; output.flush() ; } }
static void testRead(String x, Binding ... bindings) { Tokenizer t = TokenizerFactory.makeTokenizerString(x) ; BindingInputStream inStream = new BindingInputStream(t) ; if ( bindings.length == 0 ) { for ( ; inStream.hasNext() ; ) inStream.next() ; return ; } int i ; for ( i = 0 ; inStream.hasNext() ; i++ ) { Binding b = inStream.next() ; assertTrue("Bindings do not match: expected="+bindings[i]+" got="+b, equalBindings(bindings[i], b)) ; } assertEquals("Wrong length: expect= "+bindings.length+" got="+i,bindings.length, i) ; }
static void testWriteRead(PrefixMap prefixMap, Binding ... bindings) { ByteArrayOutputStream out = new ByteArrayOutputStream() ; BindingOutputStream output = new BindingOutputStream(out, prefixMap) ; for ( Binding b : bindings ) output.write(b) ; output.flush() ; // When the going gets tough, the tough put in trace statements: //System.out.println("T: \n"+out.toString()) ; ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ; BindingInputStream input = new BindingInputStream(in) ; List<Binding> results = new ArrayList<>() ; for ( ; input.hasNext() ; ) { results.add(input.next()) ; } assertEquals(bindings.length, results.size()) ; for ( int i = 0 ; i < bindings.length ; i++ ) { Binding b1 = bindings[i] ; Binding b2 = results.get(i) ; assertTrue("Bindings do not match: expected="+b1+" got="+b2, equalBindings(b1, b2)) ; } }