Merge branch 'parser-writer-interface' into parser-with-quads

Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/953e9b89
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/953e9b89
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/953e9b89

Branch: refs/heads/master
Commit: 953e9b8915fd7d42f8beac6fac8cabc39d5351e1
Parents: 7c69d4f c0700de
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Mon Jun 20 09:52:59 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Jun 20 09:52:59 2016 +0100

----------------------------------------------------------------------
 api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/953e9b89/api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java
----------------------------------------------------------------------
diff --cc api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java
index 0494502,b387406..5e8ee33
--- a/api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java
+++ b/api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java
@@@ -183,71 -166,13 +183,73 @@@ public interface RDFParserBuilder 
         * @return An {@link RDFParserBuilder} that will insert triples into the
         *         specified graph.
         */
 -      default RDFParserBuilder target(Graph graph) {
 -              return target(graph::add);
 +      default RDFParserBuilder target(Graph graph) {          
 +              return target(q -> { 
 +                      if (! q.getGraphName().isPresent()) { 
 +                              graph.add(q.asTriple());
 +                      }
 +              });
        }
  
+       RDFParserBuilder target(Consumer<Triple> tripleConsumer);
+       
        /**
 +       * Specify a {@link Dataset} to add parsed quads to.
 +       * <p>
 +       * It is undefined if any quads are added to the specified
 +       * {@link Dataset} if {@link #parse()} throws any exceptions. 
 +       * (However implementations are free to prevent this using transaction 
 +       * mechanisms or similar).  On the other hand, if {@link #parse()}
 +       * does not indicate an exception, the 
 +       * implementation SHOULD have inserted all parsed quads 
 +       * to the specified dataset.
 +       * <p>
 +       * Calling this method will override any earlier targets set with 
 +       * {@link #target(Graph)}, {@link #target(Consumer)} or {@link 
#target(Dataset)}.
 +       * <p>
 +       * The default implementation of this method calls {@link 
#target(Consumer)}
 +       * with a {@link Consumer} that does {@link Dataset#add(Quad)}.
 +       * 
 +       * @param dataset
 +       *            The {@link Dataset} to add quads to.
 +       * @return An {@link RDFParserBuilder} that will insert triples into the
 +       *         specified dataset.
 +       */
 +      default RDFParserBuilder target(Dataset dataset) {
 +              return target(dataset::add);
 +      }
 +
 +      /**
 +       * Specify a consumer for parsed quads.
 +       * <p>
 +       * It is undefined if any quads are consumed if {@link #parse()} throws 
any
 +       * exceptions. On the other hand, if {@link #parse()} does not indicate 
an
 +       * exception, the implementation SHOULD have produced all parsed quads 
to
 +       * the specified consumer.
 +       * <p>
 +       * Calling this method will override any earlier targets set with
 +       * {@link #target(Graph)}, {@link #target(Consumer)} or
 +       * {@link #target(Dataset)}.
 +       * <p>
 +       * The consumer is not assumed to be thread safe - only one
 +       * {@link Consumer#accept(Object)} is delivered at a time for a given
 +       * {@link RDFParserBuilder#parse()} call.
 +       * <p>
 +       * This method is typically called with a functional consumer, for 
example:
 +       * <pre>
 +       * List<Quad> quads = new ArrayList<Quad>;
 +       * parserBuilder.target(quads::add).parse();
 +       * </pre>
 +       * 
 +       * @param consumer
 +       *            A {@link Consumer} of {@link Quad}s
 +       * @return An {@link RDFParserBuilder} that will call the consumer for 
into
 +       *         the specified dataset.
 +       * @return
 +       */
 +      RDFParserBuilder target(Consumer<Quad> consumer);
 +      
 +      /**
         * Specify a base IRI to use for parsing any relative IRI references.
         * <p>
         * Setting this option will override any protocol-specific base IRI 
(e.g.

Reply via email to