@Test(expected = NoSuchElementException.class) public void testInitialStates() { JsonIterator iterator = new JsonIterator(null, Collections.emptyList()); assertFalse(iterator.hasNext()); iterator.next(); }
@Override public boolean hasNext() { if (queryIterator == null) return false; boolean r = queryIterator.hasNext() ; if (!r) close() ; return r ; }
@Test(expected = UnsupportedOperationException.class) public void testRemoveNotImplemented() { JsonIterator iterator = new JsonIterator(null, Collections.emptyList()); iterator.remove(); } }
@Override public Iterator<JsonObject> execJsonItems() { checkNotClosed() ; if ( ! query.isJsonType() ) throw new QueryExecException("Attempt to get a JSON result from a " + labelForQuery(query)+" query") ; startQueryIterator() ; return new JsonIterator(queryIterator, query.getResultVars()) ; }
@Test public void testIterator() { Model model = ModelFactory.createDefaultModel(); { Resource r = model.createResource(AnonId.create("first")); Property p = model.getProperty(""); RDFNode node = ResourceFactory.createTypedLiteral("123", XSDDatatype.XSDdecimal); model.add(r, p, node); r = model.createResource(AnonId.create("second")); p = model.getProperty(""); node = ResourceFactory.createTypedLiteral("abc", XSDDatatype.XSDstring); model.add(r, p, node); r = model.createResource(AnonId.create("third")); p = model.getProperty(""); node = ResourceFactory.createLangLiteral("def", "en"); model.add(r, p, node); } Query query = QueryFactory.create("JSON { \"s\": ?s , \"p\": ?p , \"o\" : ?o } " + "WHERE { ?s ?p ?o }", Syntax.syntaxARQ); try ( QueryExecution qexec = QueryExecutionFactory.create(query, model) ) { JsonIterator execJsonItems = (JsonIterator) qexec.execJsonItems(); assertTrue(execJsonItems.hasNext()); assertNotNull(execJsonItems.next()); } }
@Override public JsonObject next() { if (queryIterator == null) throw new NoSuchElementException(this.getClass() + ".next") ; try { Binding binding = queryIterator.next() ; JsonObject jsonObject = new JsonObject() ; for (String resultVar : resultVars) { Node n = binding.get(Var.alloc(resultVar)) ; JsonValue value = RDFTerm2Json.fromNode(n) ; jsonObject.put(resultVar, value); } return jsonObject ; } catch (NoSuchElementException ex) { close() ; throw ex ; } }