You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/08/20 07:39:00 UTC

[01/19] jena git commit: Provision for custom parameters so request validation does not WARN.

Repository: jena
Updated Branches:
  refs/heads/master 09994d2e2 -> 0cb4374e4


Provision for custom parameters so request validation does not WARN.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8206b7c6
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8206b7c6
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8206b7c6

Branch: refs/heads/master
Commit: 8206b7c6cd57868a6aba4021647c10b221986cc1
Parents: 833cdb6
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Aug 15 16:55:53 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Aug 15 21:34:46 2018 +0100

----------------------------------------------------------------------
 .../jena/fuseki/servlets/SPARQL_Query.java      | 61 +++++++++++++++++---
 1 file changed, 54 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8206b7c6/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
index bb81696..6c9e5b4 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
@@ -94,12 +94,28 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
         doOptions(action.request, action.response) ;
     }
 
-    // All the params we support
-
-    protected static List<String> allParams = Arrays.asList(paramQuery, paramDefaultGraphURI, paramNamedGraphURI,
-                                                            paramQueryRef, paramStyleSheet, paramAccept, paramOutput1,
-                                                            paramOutput2, paramCallback, paramForceAccept, paramTimeout) ;
-
+    /** All the query parameters that are acceptable in a given request.
+    *  This is comprised of, by default,
+    *  <ul>
+    *  <li>SPARQL Protocol for query ({@link #stdParams()}) as mentioned in the spec.
+    *  <li>Fuseki parameters ({@link #fusekiParams()}) e.g. timeout and formatting
+    *  <li>Any custom parameter for this particular servlet ({@link #customParams()}, usually none.
+    *  </ul>
+    *  The default implementation calculates this list of parameters once (on first use). 
+    */     
+    private Set<String> acceptedParams_ = null;
+    protected Collection<String> acceptedParams(HttpAction action) {
+        if ( acceptedParams_ == null ) {
+            synchronized(this) {
+                if ( acceptedParams_ == null )
+                // Does not matter about race condition here because the same Set should be
+                // created on any call to generateAcceptedParams.
+                acceptedParams_ = generateAcceptedParams();
+            }
+        }
+        return acceptedParams_;
+    }
+    
     /**
      * Validate the request, checking HTTP method and HTTP Parameters.
      * @param action HTTP Action
@@ -121,7 +137,8 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
 
         // Use of the dataset describing parameters is check later.
         try {
-            validateParams(action, allParams) ;
+            Collection<String> x = acceptedParams(action);
+            validateParams(action, x) ;
             validateRequest(action) ;
         } catch (ActionErrorException ex) {
             throw ex ;
@@ -437,4 +454,34 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
         return HttpOp.execHttpGetString(queryURI) ;
     }
 
+    // ---- Query parameters for validation
+    /** 
+     * Create the set of all parameters passed by validation.
+     * This is called once only.
+     * Override {@link acceptedParams} for a full dynamic choice.  
+     */
+    protected Set<String> generateAcceptedParams() {
+        Set<String> x  = new HashSet<>();
+        x.addAll(stdParams());
+        x.addAll(fusekiParams());
+        x.addAll(customParams());
+        return x;
+    }
+
+    private static Collection<String> customParams_ = Collections.emptyList();
+    /** Extension parameters : called once during parameter collection setup. */
+    protected Collection<String> customParams() {
+        return customParams_;
+    }
+
+    /** The parameters in the SPARQL Protocol for query */
+    private static Collection<String> stdParams_ = Arrays.asList(paramQuery, paramDefaultGraphURI, paramNamedGraphURI);
+
+    protected Collection<String> stdParams() { return stdParams_; }
+
+    /** The parameters Fuseki also provides */
+    private static Collection<String> fusekiParams_ = Arrays.asList(paramQueryRef, paramStyleSheet, paramAccept, paramOutput1,
+                                                                    paramOutput2, paramCallback, paramForceAccept, paramTimeout) ;
+
+    protected Collection<String> fusekiParams() { return fusekiParams_; }
 }


[15/19] jena git commit: Typos

Posted by an...@apache.org.
Typos

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/3b153d52
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/3b153d52
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/3b153d52

Branch: refs/heads/master
Commit: 3b153d526d18626e6ad3ea4414d1dc8f138213ba
Parents: 9dace24
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 23:22:07 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 23:22:07 2018 +0100

----------------------------------------------------------------------
 jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/3b153d52/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
index dbe6c50..21ffe8e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java
@@ -33,7 +33,7 @@ public class Quad implements Serializable
 {    
     // Create QuadNames? GraphNames?
     
-    /** Name of the default for explict use in GRAPH */
+    /** Name of the default for explicit use in GRAPH */
     public static final Node defaultGraphIRI        =  NodeFactory.createURI("urn:x-arq:DefaultGraph") ;
 
     /** Name of the default graph as used by parsers and in quad form of algebra. 
@@ -231,7 +231,7 @@ public class Quad implements Serializable
 
     private static boolean nodeMatches(Node thisNode, Node otherNode)
     {
-        // otheNode may be Node.ANY, and this works out.
+        // otherNode may be Node.ANY, and this works out.
         return otherNode.matches(thisNode) ;
     }
 


[03/19] jena git commit: Typos and comments.

Posted by an...@apache.org.
Typos and comments.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8d0c1310
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8d0c1310
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8d0c1310

Branch: refs/heads/master
Commit: 8d0c1310a89c115553889208c97cbdfdfb1958b2
Parents: 09994d2
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Aug 14 13:02:38 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Aug 15 21:34:46 2018 +0100

----------------------------------------------------------------------
 .../org/apache/jena/riot/RDFParserBuilder.java    |  2 +-
 .../jena/fuseki/servlets/ActionService.java       |  3 ++-
 .../apache/jena/fuseki/servlets/SPARQL_Query.java | 18 +++++++++++++++---
 .../fuseki/servlets/ServiceDispatchRegistry.java  | 17 ++++++++++++++---
 .../jena/fuseki/servlets/ServiceRouter.java       | 18 +++++++++++-------
 .../apache/jena/fuseki/embedded/FusekiServer.java |  2 +-
 6 files changed, 44 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8d0c1310/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
index 8b59be5..b0a9015 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
@@ -278,7 +278,7 @@ public class RDFParserBuilder {
     public RDFParserBuilder base(String base) { this.baseUri = base ; return this; }
 
     /** Choose whether to resolve URIs.<br/>
-     *  This does not affect all langages: N-Triples and N-Quads never resolve URIs.<br/>
+     *  This does not affect all languages: N-Triples and N-Quads never resolve URIs.<br/>
      *  Relative URIs are bad data.<br/>
      *  Only set this to false for debugging and development purposes. 
      */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/8d0c1310/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionService.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionService.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionService.java
index 79cc236..a22b097 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionService.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionService.java
@@ -100,7 +100,8 @@ public abstract class ActionService extends ActionBase {
     // Overridden by the ServiceRouter.
     protected Operation chooseOperation(HttpAction action, DataService dataService, String serviceName) {
         // This default implementation is plain service name to operation based on the
-        // DataService as would be used by operation servlets bound by web.xml.
+        // DataService as would be used by operation servlets bound by web.xml
+        // except Fuseki can add and delete mapping while running.
         Endpoint ep = dataService.getEndpoint(serviceName);
         Operation operation = ep.getOperation();
         return operation;

http://git-wip-us.apache.org/repos/asf/jena/blob/8d0c1310/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
index d88a51c..bb81696 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
@@ -267,7 +267,7 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
         try {
             action.beginRead() ;
             Dataset dataset = decideDataset(action, query, queryStringLog) ;
-            try ( QueryExecution qExec = createQueryExecution(query, dataset) ; ) {
+            try ( QueryExecution qExec = createQueryExecution(action, query, dataset) ; ) {
                 SPARQLResult result = executeQuery(action, qExec, query, queryStringLog) ;
                 // Deals with exceptions itself.
                 sendResults(action, result, query.getPrologue()) ;
@@ -285,8 +285,8 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
     }
 
     /**
-     * Check the query - if unacceptable, throw ActionErrorException or call
-     * super.error
+     * Check the query - if unacceptable, throw ActionErrorException 
+     * or call on of the {@link ServletOps#error} operations.
      * @param action HTTP Action
      * @param query  SPARQL Query
      */
@@ -296,11 +296,23 @@ public abstract class SPARQL_Query extends SPARQL_Protocol
      * @param query
      * @param dataset
      * @return QueryExecution
+     * @deprecated Use {@link #createQueryExecution(HttpAction, Query, Dataset)}
      */
+    @Deprecated
     protected QueryExecution createQueryExecution(Query query, Dataset dataset) {
         return QueryExecutionFactory.create(query, dataset) ;
     }
 
+    /** Create the {@link QueryExecution} for this operation.
+     * @param action
+     * @param query
+     * @param dataset
+     * @return QueryExecution
+     */
+    protected QueryExecution createQueryExecution(HttpAction action, Query query, Dataset dataset) {
+        return createQueryExecution(query, dataset);
+    }
+
     /** Perform the {@link QueryExecution} once.
      * @param action
      * @param queryExecution

http://git-wip-us.apache.org/repos/asf/jena/blob/8d0c1310/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
index cc45de4..bbc1eb5 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
@@ -29,8 +29,14 @@ import org.apache.jena.fuseki.server.DataService;
 import org.apache.jena.fuseki.server.Operation;
 import org.apache.jena.riot.WebContent;
 
-/** 
- * The global mapping of content-type to Operation and operation to implementation.
+/**
+ * Mapping of dispatching operations. {@link Operation} is the operation reference (name)
+ * but the {@link Operation} does not carry the implementation. The registry, which is
+ * per-server, maps:
+ * <ul>
+ * <li>Content-type to {@code Operation}.
+ * <li>{@code Operation} to {@link ActionService} implementation
+ * </ul>
  */
 
 public class ServiceDispatchRegistry {
@@ -94,13 +100,18 @@ public class ServiceDispatchRegistry {
      * Register a new {@link Operation}, with its {@code Content-Type} (may be null,
      * meaning no dispatch by content type), and the implementation handler.
      * <p>
-     * The application needs to enable an operation on a service endpoint. 
+     * The application needs to enable an operation on a service endpoint.
+     * <p>
+     * Replaces any existing registration.  
      */
     public void register(Operation operation, String contentType, ActionService action) {
         Objects.requireNonNull(operation);
         Objects.requireNonNull(action);
         if ( contentType != null )
             contentTypeToOperation.put(contentType, operation);
+        else
+            // Remove any mapping.
+            contentTypeToOperation.values().remove(operation);
         operationToHandler.put(operation, action);
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/8d0c1310/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
index 59a5b5c..c54a69b 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
@@ -42,7 +42,7 @@ import org.apache.jena.riot.web.HttpNames;
  * for operations by service endpoint.
  * <p>
  * Normal use is to route all service operations to this servlet via {@link ActionService}.
- * It will route for operations on the dataset and the
+ * It will route for operations on the dataset.
  * <p>
  * It be attached to a dataset location and acts as a router for all SPARQL operations
  * (query, update, graph store, both direct and indirect naming, quads operations on a
@@ -120,10 +120,12 @@ public abstract class ServiceRouter extends ActionService {
             return isEnabled(action, Operation.Quads_RW);
         }
 
-        // Test whether there is a configuration that allows this action as the operation
-        // given.
-        // Ignores the operation in the action (set due to parsing - it might be "quads"
-        // which is the generic operation when just the dataset is specificed.
+        /**
+         * Test whether there is a configuration that allows this action as the operation
+         * given. Ignores the operation in the action which is set due to parsing - it
+         * might be "quads" which is the generic operation when just the dataset is
+         * specificed.
+         */
         private boolean isEnabled(HttpAction action, Operation operation) {
             // Disregard the operation name of the action
             DataService dSrv = action.getDataService();
@@ -137,7 +139,10 @@ public abstract class ServiceRouter extends ActionService {
         super();
     }
 
-    // These calls should not happen because we hook in at executeAction
+    // These calls should not happen because ActionService calls chooseOperation(),
+    // looks that up in the ServiceDispatchRegistry for the servlet context,
+    // then calls executeLifecycle() on that servlet.
+    // These exceptions catch any loops. 
     @Override
     protected void validate(HttpAction action) {
         throw new FusekiException("Call to ServiceRouterServlet.validate");
@@ -201,7 +206,6 @@ public abstract class ServiceRouter extends ActionService {
      * <li>HTTP params (for ?query= and ?update=)</li>
      * <li>Content type</li>
      * </ul>
-     * 
      */
     @Override
     protected Operation chooseOperation(HttpAction action, DataService dataService) {

http://git-wip-us.apache.org/repos/asf/jena/blob/8d0c1310/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index 09a9a79..2df22e7 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -351,7 +351,7 @@ public class FusekiServer {
         /**
          * Add an operation to the server, together with its triggering Content-Type (may be null) and servlet handler.
          * <p>
-         * To associate an operation with a daatsets, call {@link #addOperation} after adding the dataset. 
+         * To associate an operation with a dataset, call {@link #addOperation} after adding the dataset. 
          *
          * @see #addOperation 
          */


[11/19] jena git commit: Support for ServletFilters.

Posted by an...@apache.org.
Support for ServletFilters.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/99180e58
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/99180e58
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/99180e58

Branch: refs/heads/master
Commit: 99180e5831bb8d0ff94c0e98fd3a375f02c20af5
Parents: f6bac07
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 16:11:59 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 16:11:59 2018 +0100

----------------------------------------------------------------------
 .../jena/fuseki/embedded/FusekiServer.java      | 33 +++++++++++++++-----
 1 file changed, 26 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/99180e58/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index 94f4c20..9d68be0 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -22,6 +22,7 @@ import static java.util.Objects.requireNonNull;
 
 import java.util.*;
 
+import javax.servlet.Filter;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServlet;
 
@@ -178,7 +179,9 @@ public class FusekiServer {
         private boolean                  withStats          = false;
         private boolean                  withPing           = false;
         // Other servlets to add.
-        private List<Pair<String, HttpServlet>> other       = new ArrayList<>();
+        private List<Pair<String, HttpServlet>> servlets    = new ArrayList<>();
+        private List<Pair<String, Filter>> filters          = new ArrayList<>();
+
         private String                   contextPath        = "/";
         private String                   staticContentDir   = null;
         private SecurityHandler          securityHandler    = null;
@@ -377,7 +380,7 @@ public class FusekiServer {
         public Builder addServlet(String pathSpec, HttpServlet servlet) {
             requireNonNull(pathSpec, "pathSpec");
             requireNonNull(servlet, "servlet");
-            other.add(Pair.create(pathSpec, servlet));
+            servlets.add(Pair.create(pathSpec, servlet));
             return this;
         }
         
@@ -395,6 +398,16 @@ public class FusekiServer {
         }
         
         /**
+         * Add a filter with the pathSpec.
+         */
+        public Builder addFilter(String pathSpec, Filter filter) {
+            requireNonNull(pathSpec, "pathSpec");
+            requireNonNull(filter, "filter");
+            filters.add(Pair.create(pathSpec, filter));
+            return this;
+        }
+        
+        /**
          * Add an operation and handler to the server. This does not enable it for any dataset.
          * <p>
          * To associate an operation with a dataset, call {@link #addOperation} after adding the dataset.
@@ -514,17 +527,18 @@ public class FusekiServer {
 
         private void servlets(ServletContextHandler context) {
             // Fuseki dataset services filter
+            // This goes as the filter at the end of any filter chaining.
             FusekiFilter ff = new FusekiFilter();
-            FilterHolder h = new FilterHolder(ff);
-            context.addFilter(h, "/*", null);
-
-            other.forEach(p->addServlet(context, p.getLeft(), p.getRight()));
+            addFilter(context, "/*", ff);
             
             if ( withStats )
                 addServlet(context, "/$/stats", new ActionStats());
             if ( withPing )
                 addServlet(context, "/$/ping", new ActionPing());
             
+            servlets.forEach(p->addServlet(context, p.getLeft(), p.getRight()));
+            filters.forEach (p-> addFilter(context, p.getLeft(), p.getRight()));
+
             if ( staticContentDir != null ) {
                 DefaultServlet staticServlet = new DefaultServlet();
                 ServletHolder staticContent = new ServletHolder(staticServlet);
@@ -532,12 +546,17 @@ public class FusekiServer {
                 context.addServlet(staticContent, "/");
             }
         }
-
+        
         private static void addServlet(ServletContextHandler context, String pathspec, HttpServlet httpServlet) {
             ServletHolder sh = new ServletHolder(httpServlet);
             context.addServlet(sh, pathspec);
         }
 
+        private void addFilter(ServletContextHandler context, String pathspec, Filter filter) {
+            FilterHolder h = new FilterHolder(filter);
+            context.addFilter(h, pathspec, null);
+        }
+
         /** Jetty server */
         private static Server jettyServer(int port, boolean loopback) {
             Server server = new Server();


[14/19] jena git commit: Better attribute naming - org.apache.jena.fuseki:

Posted by an...@apache.org.
Better attribute naming - org.apache.jena.fuseki:<name>

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/9dace245
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/9dace245
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/9dace245

Branch: refs/heads/master
Commit: 9dace245d39a7c1a977fa34e423502c5ed39afe9
Parents: aa3518e
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 23:21:49 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 23:21:49 2018 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/fuseki/Fuseki.java         | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/9dace245/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
index 2b82a06..ec1126a 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
@@ -186,10 +186,10 @@ public class Fuseki {
 
     // Servlet context attribute names,
 
-    public static final String attrVerbose                 = "jena-fuseki:verbose";
-    public static final String attrNameRegistry            = "jena-fuseki:dataAccessPointRegistry";
-    public static final String attrServiceRegistry         = "jena-fuseki:ServiceDispatchRegistry";
-    public static final String attrSecurityContextRegistry = "jena-fuseki:SecurityContextRegistry";
+    public static final String attrVerbose                 = "org.apache.jena.fuseki:verbose";
+    public static final String attrNameRegistry            = "org.apache.jena.fuseki:DataAccessPointRegistry";
+    public static final String attrServiceRegistry         = "org.apache.jena.fuseki:ServiceDispatchRegistry";
+    public static final String attrSecurityRegistry        = "org.apache.jena.fuseki:SecurityRegistry";
 
     public static void setVerbose(ServletContext cxt, boolean verbose) {
         cxt.setAttribute(attrVerbose, Boolean.valueOf(verbose));


[09/19] jena git commit: Put attribute names constants in Fuseki.

Posted by an...@apache.org.
Put attribute names constants in Fuseki.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/21050fc9
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/21050fc9
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/21050fc9

Branch: refs/heads/master
Commit: 21050fc9300cc29eda22744c35466aae9f5b01c0
Parents: cb6d9b5
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 12:03:08 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 12:03:08 2018 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/fuseki/Fuseki.java         | 8 ++++++--
 .../apache/jena/fuseki/server/DataAccessPointRegistry.java   | 6 +++---
 .../apache/jena/fuseki/servlets/ServiceDispatchRegistry.java | 7 +++----
 3 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/21050fc9/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
index 0f1cf17..2b82a06 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
@@ -184,8 +184,12 @@ public class Fuseki {
      */
     public static boolean             verboseLogging    = false ;
 
-    /** ServletContext attibute for "verbose" - the value of the attirbiye is a Boolean */
-    public static String attrVerbose = "jena-fuseki:verbose" ;
+    // Servlet context attribute names,
+
+    public static final String attrVerbose                 = "jena-fuseki:verbose";
+    public static final String attrNameRegistry            = "jena-fuseki:dataAccessPointRegistry";
+    public static final String attrServiceRegistry         = "jena-fuseki:ServiceDispatchRegistry";
+    public static final String attrSecurityContextRegistry = "jena-fuseki:SecurityContextRegistry";
 
     public static void setVerbose(ServletContext cxt, boolean verbose) {
         cxt.setAttribute(attrVerbose, Boolean.valueOf(verbose));

http://git-wip-us.apache.org/repos/asf/jena/blob/21050fc9/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataAccessPointRegistry.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataAccessPointRegistry.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataAccessPointRegistry.java
index 5097cf0..9d16b84 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataAccessPointRegistry.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataAccessPointRegistry.java
@@ -22,6 +22,7 @@ import javax.servlet.ServletContext ;
 
 import org.apache.jena.atlas.lib.Registry ;
 import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.FusekiException ;
 
 public class DataAccessPointRegistry extends Registry<String, DataAccessPoint>
@@ -57,15 +58,14 @@ public class DataAccessPointRegistry extends Registry<String, DataAccessPoint>
 
     // The server DataAccessPointRegistry is held in the ServletContext for the server.
     
-    private static final String attrNameRegistry = "jena-fuseki:dataAccessPointRegistry" ;
     public static DataAccessPointRegistry get(ServletContext cxt) {
-        DataAccessPointRegistry registry = (DataAccessPointRegistry)cxt.getAttribute(attrNameRegistry) ;
+        DataAccessPointRegistry registry = (DataAccessPointRegistry)cxt.getAttribute(Fuseki.attrNameRegistry) ;
         if ( registry == null )
             Log.warn(DataAccessPointRegistry.class, "No data access point registry for ServletContext") ;
         return registry ;
     }
     
     public static void set(ServletContext cxt, DataAccessPointRegistry registry) {
-        cxt.setAttribute(attrNameRegistry, registry) ;
+        cxt.setAttribute(Fuseki.attrNameRegistry, registry) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/21050fc9/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
index bbc1eb5..198eb5c 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceDispatchRegistry.java
@@ -25,6 +25,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import javax.servlet.ServletContext;
 
 import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.server.DataService;
 import org.apache.jena.fuseki.server.Operation;
 import org.apache.jena.riot.WebContent;
@@ -117,16 +118,14 @@ public class ServiceDispatchRegistry {
     
     // The server DataAccessPointRegistry is held in the ServletContext for the server.
     
-    private static final String attrServiceRegistry = "jena-fuseki:ServiceDispatchRegistry" ;
-
     public static ServiceDispatchRegistry get(ServletContext servletContext) {
-        ServiceDispatchRegistry registry = (ServiceDispatchRegistry)servletContext.getAttribute(attrServiceRegistry) ;
+        ServiceDispatchRegistry registry = (ServiceDispatchRegistry)servletContext.getAttribute(Fuseki.attrServiceRegistry) ;
         if ( registry == null )
             Log.warn(ServiceDispatchRegistry.class, "No service registry for ServletContext") ;
         return registry ;
     }
     
     public static void set(ServletContext cxt, ServiceDispatchRegistry registry) {
-        cxt.setAttribute(attrServiceRegistry, registry) ;
+        cxt.setAttribute(Fuseki.attrServiceRegistry, registry) ;
     }
 }


[07/19] jena git commit: Convert to single format.

Posted by an...@apache.org.
Convert to single format.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/caf572a1
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/caf572a1
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/caf572a1

Branch: refs/heads/master
Commit: caf572a1081bb4ab84337c7553ff0181a5052c8b
Parents: 8206b7c
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 09:56:25 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 09:56:25 2018 +0100

----------------------------------------------------------------------
 .../org/apache/jena/atlas/lib/ListUtils.java    | 110 +++++++++----------
 1 file changed, 49 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/caf572a1/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
index 272fb28..eead5ec 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
@@ -34,49 +34,40 @@ public class ListUtils
 {
     private ListUtils() {}
 
-    public static <T>
-    List<T> unique(List<T> list)
-    {
-    		return toList(list.stream().distinct()) ;
+    public static <T> List<T> unique(List<T> list) {
+        return toList(list.stream().distinct());
     }
-    
-    public static
-    List<Integer> asList(int... values)
-    {
-        List<Integer> x = new ArrayList<>(values.length) ;
+
+    public static List<Integer> asList(int...values) {
+        List<Integer> x = new ArrayList<>(values.length);
         for ( int v : values )
-            x.add(v) ;
-        return x ;
+            x.add(v);
+        return x;
     }
-    
+
     // This is commonly needed
     public static <T> List<T> toList(Stream<T> stream) {
         return stream.collect(Collectors.toList()) ;
     }
     
-    public static <T> String str(T[] array)
-    {
+    public static <T> String str(T[] array) {
         return stream(array).map(String::valueOf).collect(joining(", ", "[", "]"));
     }
-    
-    public static String str(int[] array)
-    {
-    		return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]"));
+
+    public static String str(int[] array) {
+        return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]"));
     }
-    
-    public static String str(long[] array)
-    {
-    		return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]"));
+
+    public static String str(long[] array) {
+        return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]"));
     }
 
-    public static <T> void print(IndentedWriter out, List<T> list)
-    { 
-        print(out, list, " ") ;
+    public static <T> void print(IndentedWriter out, List<T> list) {
+        print(out, list, " ");
     }
-    
-    public static <T> void print(final IndentedWriter out, List<T> list, final CharSequence sep)
-    {
-		out.print(list.stream().map(String::valueOf).collect(joining(sep)));
+
+    public static <T> void print(final IndentedWriter out, List<T> list, final CharSequence sep) {
+        out.print(list.stream().map(String::valueOf).collect(joining(sep)));
     }
     
     /**
@@ -85,49 +76,46 @@ public class ListUtils
      */
     public static <T> boolean equalsUnordered(List<T> list1, List<T> list2) {
         if ( list1.size() != list2.size() )
-            return false ;
+            return false;
         // containsAll bothe ways round isn't enough.
-        List<T> list2a = new ArrayList<>(list2) ;
+        List<T> list2a = new ArrayList<>(list2);
         for ( T elt : list1 )
-            list2a.remove(elt) ;
+            list2a.remove(elt);
         if ( list2a.size() != 0 )
-            return false ;
-        return true ;
+            return false;
+        return true;
     }
     
-    /** Return a list of lists of all the elements of collection in every order
-     *  Easy to run out of heap memory.
-     *  
-     *  See also {@code org.apache.jena.ext.com.google.common.collect.Collections2#permutations}
-     */  
-    static public <T> List<List<T>> permute(List<T> c)
-    {
-        if ( c.size() > 5 )
-        {
-            Log.warn(ListUtils.class, "Attempt to permute more than 5 items - think again") ;
-            return null ;
+    /**
+     * Return a list of lists of all the elements of collection in every order Easy to run
+     * out of heap memory.
+     * 
+     * See also
+     * {@code org.apache.jena.ext.com.google.common.collect.Collections2#permutations}
+     */
+    static public <T> List<List<T>> permute(List<T> c) {
+        if ( c.size() > 5 ) {
+            Log.warn(ListUtils.class, "Attempt to permute more than 5 items - think again");
+            return null;
         }
-        
-        List<List<T>> x = new ArrayList<>() ;
-        if ( c.size() == 1 )
-        {
-            x.add(c) ;
-            return x ;
+
+        List<List<T>> x = new ArrayList<>();
+        if ( c.size() == 1 ) {
+            x.add(c);
+            return x;
         }
 
-        for ( T obj : c )
-        {
-            List<T> c2 = new ArrayList<>(c) ;
-            c2.remove(obj) ;
-            List<List<T>> x2 = permute(c2) ;
+        for ( T obj : c ) {
+            List<T> c2 = new ArrayList<>(c);
+            c2.remove(obj);
+            List<List<T>> x2 = permute(c2);
             // For each list returned
-            for ( List<T> x3 : x2 )
-            {
+            for ( List<T> x3 : x2 ) {
                 // Gives a more expected ordering
-                x3.add(0,obj) ;
-                x.add(x3) ;
+                x3.add(0, obj);
+                x.add(x3);
             }
         }
-        return x ;
+        return x;
     }
 }


[17/19] jena git commit: Refactoring: Make ServletContext separately from the Jetty server.

Posted by an...@apache.org.
Refactoring: Make ServletContext separately from the Jetty server.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2cd26a8e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2cd26a8e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2cd26a8e

Branch: refs/heads/master
Commit: 2cd26a8e462a3c03e024c5c34ac3b5432b7cb4c8
Parents: 08ef457
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Aug 17 23:45:36 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Aug 17 23:46:37 2018 +0100

----------------------------------------------------------------------
 .../jena/fuseki/embedded/FusekiServer.java      | 29 +++++++++++---------
 1 file changed, 16 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2cd26a8e/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index 3c84fd3..2406e33 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -468,27 +468,30 @@ public class FusekiServer {
          * Build a server according to the current description.
          */
         public FusekiServer build() {
-            ServletContextHandler handler = buildServletContext(contextPath);
+            ServletContextHandler handler = buildFusekiContext();
+            // Use HandlerCollection for several ServletContextHandlers and thus several ServletContext.
+            Server server = jettyServer(port, loopback);
+            server.setHandler(handler);
+            return new FusekiServer(port, server);
+        }
 
+        /** Build one configured Fuseki in one unit - same ServletContext, same dispatch ContextPath */  
+        private ServletContextHandler buildFusekiContext() {
+            ServletContextHandler handler = buildServletContext(contextPath);
             ServletContext cxt = handler.getServletContext();
             Fuseki.setVerbose(cxt, verbose);
             servletAttr.forEach((n,v)->cxt.setAttribute(n, v));
             // Clone to isolate from any future changes.
             ServiceDispatchRegistry.set(cxt, new ServiceDispatchRegistry(serviceDispatch));
             DataAccessPointRegistry.set(cxt, new DataAccessPointRegistry(dataAccessPoints));
-
-            // Start services.
-            DataAccessPointRegistry.get(cxt).forEach((name, dap)->dap.getDataService().goActive());
-
             setMimeTypes(handler);
             servlets(handler);
-
-            Server server = jettyServer(port, loopback);
-            server.setHandler(handler);
-            return new FusekiServer(port, server);
+            // Start services.
+            DataAccessPointRegistry.get(cxt).forEach((name, dap)->dap.getDataService().goActive());
+            return handler;
         }
-
-        /** Build a ServletContextHandler with the Fuseki router : {@link FusekiFilter} */
+        
+        /** Build a ServletContextHandler */
         private ServletContextHandler buildServletContext(String contextPath) {
             if ( contextPath == null || contextPath.isEmpty() )
                 contextPath = "/";
@@ -500,7 +503,6 @@ public class FusekiServer {
             context.setContextPath(contextPath);
             if ( securityHandler != null )
                 context.setSecurityHandler(securityHandler);
-
             return context;
         }
 
@@ -533,6 +535,7 @@ public class FusekiServer {
             context.setMimeTypes(mimeTypes);
         }
 
+        /** Add servlets and servlet filters, including the {@link FusekiFilter} */ 
         private void servlets(ServletContextHandler context) {
             // Fuseki dataset services filter
             // This goes as the filter at the end of any filter chaining.
@@ -565,7 +568,7 @@ public class FusekiServer {
             context.addFilter(h, pathspec, null);
         }
 
-        /** Jetty server */
+        /** Jetty server with one connector/port. */
         private static Server jettyServer(int port, boolean loopback) {
             Server server = new Server();
             HttpConnectionFactory f1 = new HttpConnectionFactory();


[06/19] jena git commit: Expose the command line argument processing to build a FusekiServer.

Posted by an...@apache.org.
Expose the command line argument processing to build a FusekiServer.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d061885f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d061885f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d061885f

Branch: refs/heads/master
Commit: d061885fae1ca4ba86e0603e7b7a45d21c739802
Parents: 8d0c131
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Aug 14 13:12:23 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Aug 15 21:34:46 2018 +0100

----------------------------------------------------------------------
 .../apache/jena/fuseki/cmds/FusekiBasicCmd.java  | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d061885f/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
index 010b391..60ccf69 100644
--- a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
+++ b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
@@ -78,10 +78,16 @@ public class FusekiBasicCmd {
         FusekiLogging.setLogging();
     }
 
+    /** Build and run, a server based on command line syntax. This operation does not return. */  
     static public void main(String... argv) {
         FusekiCmdInner.innerMain(argv);
     }
     
+    /** Build, but do not start, a server based on command line syntax. */  
+    static public FusekiServer build(String... argv) {
+        return FusekiCmdInner.build(argv);
+    }
+
     /** Dataset setup (command line, config file) for a dataset (or several if config file) */
     static class ServerConfig {
         public int port;
@@ -131,11 +137,18 @@ public class FusekiBasicCmd {
         // private static ModLocation modLocation = new ModLocation();
         private static ModDatasetAssembler modDataset      = new ModDatasetAssembler();
 
-        static public void innerMain(String... argv) {
+        static void innerMain(String... argv) {
             JenaSystem.init();
             new FusekiCmdInner(argv).mainRun();
         }
 
+        /** Build, but do not start, a server based on command line syntax. */  
+        static FusekiServer build(String... argv) {
+            FusekiCmdInner inner = new FusekiCmdInner(argv);
+            inner.process();
+            return inner.buildServer();
+        }
+
         private final ServerConfig serverConfig  = new ServerConfig();
         private boolean useTDB2;
         
@@ -427,6 +440,10 @@ public class FusekiBasicCmd {
             }
         }
 
+        private FusekiServer buildServer() {
+            return buildServer(serverConfig);
+        }
+
         // ServerConfig -> Setup the builder.
         private static FusekiServer buildServer(ServerConfig serverConfig) {
             FusekiServer.Builder builder = FusekiServer.create();


[18/19] jena git commit: Typos

Posted by an...@apache.org.
Typos

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e7eea47d
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e7eea47d
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e7eea47d

Branch: refs/heads/master
Commit: e7eea47da6fd9d28a97ca7d64f8a584cbc5e3412
Parents: 2cd26a8
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Aug 19 13:18:58 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Aug 19 13:18:58 2018 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/riot/system/ErrorHandlerFactory.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e7eea47d/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java b/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
index 3eeef44..026d5c6 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/ErrorHandlerFactory.java
@@ -32,7 +32,7 @@ public class ErrorHandlerFactory
     /** Standard error handler - logs to stdLogger */
     static public final ErrorHandler errorHandlerStd          = errorHandlerStd(stdLogger) ;
 
-    /** Error handler (no wanrings) - logs to stdLogger */
+    /** Error handler (no warnings) - logs to stdLogger */
     static public final ErrorHandler errorHandlerNoWarnings   = errorHandlerNoWarnings(stdLogger) ;
 
     /** Strict error handler - logs to stdLogger - exceptions for warnings */
@@ -47,7 +47,7 @@ public class ErrorHandlerFactory
     /** Silent, strict error handler */
     static public final ErrorHandler errorHandlerStrictNoLogging    = errorHandlerStrictSilent() ;
 
-    /** Silent, strict error handler, nologging */
+    /** Silent, strict error handler, no logging */
     public static ErrorHandler errorHandlerStrictSilent()           { return new ErrorHandlerStrict(null) ; }
 
     /** Strict error handler, with logging */


[10/19] jena git commit: Switch naming of setters to non-"set" style.

Posted by an...@apache.org.
Switch naming of setters to non-"set" style.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f6bac07b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f6bac07b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f6bac07b

Branch: refs/heads/master
Commit: f6bac07b64c500472091efb7a83ca486b89e321e
Parents: 21050fc
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 12:03:59 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 12:04:14 2018 +0100

----------------------------------------------------------------------
 .../apache/jena/fuseki/cmds/FusekiBasicCmd.java |  6 +-
 .../jena/fuseki/embedded/FusekiServer.java      | 95 ++++++++++++++++----
 .../jena/fuseki/embedded/FusekiTestAuth.java    |  4 +-
 .../jena/fuseki/embedded/FusekiTestServer.java  |  2 +-
 .../fuseki/embedded/TestEmbeddedFuseki.java     | 24 ++---
 .../embedded/TestFusekiCustomOperation.java     | 12 +--
 .../fuseki/embedded/TestMultipleEmbedded.java   | 16 ++--
 .../examples/ExtendFuseki_AddService_1.java     |  4 +-
 .../examples/ExtendFuseki_AddService_2.java     |  4 +-
 .../examples/ExtendFuseki_AddService_3.java     |  4 +-
 .../TestRDFConnectionFusekiBinary.java          |  2 +-
 .../rdfconnection/TestRDFConnectionRemote.java  |  2 +-
 12 files changed, 117 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
index 60ccf69..baa3b28 100644
--- a/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
+++ b/jena-fuseki2/jena-fuseki-basic/src/main/java/org/apache/jena/fuseki/cmds/FusekiBasicCmd.java
@@ -448,8 +448,8 @@ public class FusekiBasicCmd {
         private static FusekiServer buildServer(ServerConfig serverConfig) {
             FusekiServer.Builder builder = FusekiServer.create();
             // Loopback.
-            builder.setPort(serverConfig.port);
-            builder.setLoopback(serverConfig.loopback);
+            builder.port(serverConfig.port);
+            builder.loopback(serverConfig.loopback);
             
             if ( serverConfig.validators ) {
                 if ( serverConfig.sparqler )
@@ -470,7 +470,7 @@ public class FusekiBasicCmd {
             }
             
             if ( serverConfig.contentDirectory != null )
-                builder.setStaticFileBase(serverConfig.contentDirectory) ;
+                builder.staticFileBase(serverConfig.contentDirectory) ;
 
             return builder.build();
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index 2df22e7..94f4c20 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -20,9 +20,7 @@ package org.apache.jena.fuseki.embedded;
 
 import static java.util.Objects.requireNonNull;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServlet;
@@ -33,8 +31,8 @@ import org.apache.jena.fuseki.FusekiConfigException;
 import org.apache.jena.fuseki.FusekiException;
 import org.apache.jena.fuseki.build.FusekiBuilder;
 import org.apache.jena.fuseki.build.FusekiConfig;
-import org.apache.jena.fuseki.ctl.ActionStats;
 import org.apache.jena.fuseki.ctl.ActionPing;
+import org.apache.jena.fuseki.ctl.ActionStats;
 import org.apache.jena.fuseki.jetty.FusekiErrorHandler1;
 import org.apache.jena.fuseki.server.*;
 import org.apache.jena.fuseki.servlets.ActionService;
@@ -83,18 +81,13 @@ import org.eclipse.jetty.servlet.ServletHolder;
  * 
  */
 public class FusekiServer {
-    static { 
-        //FusekiEnv.mode = FusekiEnv.INIT.EMBEDDED;
-        // Stop anything accidently resetting Fuseki server logging. 
-        //FusekiLogging.allowLoggingReset(false);
-    }
-    
     /** Construct a Fuseki server for one dataset.
      * It only responds to localhost. 
-     * The returned server has not been started  */ 
+     * The returned server has not been started. 
+     */ 
     static public FusekiServer make(int port, String name, DatasetGraph dsg) {
         return create()
-            .setPort(port)
+            .port(port)
             .setLoopback(true)
             .add(name, dsg)
             .build();
@@ -189,9 +182,18 @@ public class FusekiServer {
         private String                   contextPath        = "/";
         private String                   staticContentDir   = null;
         private SecurityHandler          securityHandler    = null;
+        private Map<String, Object>      servletAttr        = new HashMap<>();
 
-        /** Set the port to run on. */ 
+        /** Set the port to run on.
+         * @deprecated Use {@link #port}. 
+         */
+        @Deprecated
         public Builder setPort(int port) {
+            return port(port);
+        }
+        
+        /** Set the port to run on. */ 
+        public Builder port(int port) {
             if ( port < 0 )
                 throw new IllegalArgumentException("Illegal port="+port+" : Port must be greater than or equal to zero.");
             this.port = port;
@@ -200,25 +202,60 @@ public class FusekiServer {
         
         /** Context path to Fuseki.  If it's "/" then Fuseki URL look like
          * "http://host:port/dataset/query" else "http://host:port/path/dataset/query" 
+         * @deprecated Use {@link #contextPath}. 
          */
+        @Deprecated
         public Builder setContextPath(String path) {
+            return contextPath(path);
+        }
+        
+        /** Context path to Fuseki.  If it's "/" then Fuseki URL look like
+         * "http://host:port/dataset/query" else "http://host:port/path/dataset/query" 
+         */
+        public Builder contextPath(String path) {
             requireNonNull(path, "path");
             this.contextPath = path;
             return this;
         }
         
-        /** Restrict the server to only responding to the localhost interface. */ 
+        /** Restrict the server to only responding to the localhost interface.
+         *  @deprecated Use {@link #loopback}.
+         */
+        @Deprecated
         public Builder setLoopback(boolean loopback) {
+            return loopback(loopback);
+        }
+
+        /** Restrict the server to only responding to the localhost interface. */ 
+        public Builder loopback(boolean loopback) {
             this.loopback = loopback;
             return this;
         }
 
-        /** Set the location (filing system directory) to serve static file from. */ 
+        /** Set the location (filing system directory) to serve static file from.
+         *  @deprecated Use {@link #staticFileBase}.
+         */
+        @Deprecated
         public Builder setStaticFileBase(String directory) {
+            return staticFileBase(directory);
+        }
+        
+        /** Set the location (filing system directory) to serve static file from. */ 
+        public Builder staticFileBase(String directory) {
             requireNonNull(directory, "directory");
             this.staticContentDir = directory;
             return this;
         }
+
+        /** Set a Jetty SecurityHandler.
+         * <p>
+         *  By default, the server runs with no security.
+         *  @deprecated Use {@link #staticFileBase}.
+         */
+        @Deprecated
+        public Builder setSecurityHandler(SecurityHandler securityHandler) {
+            return securityHandler(securityHandler);
+        }
         
         /** Set a Jetty SecurityHandler.
          * <p>
@@ -226,16 +263,24 @@ public class FusekiServer {
          *  This is more for using the basic server for testing.
          *  The full Fuseki server provides security with Apache Shiro
          *  and a defensive reverse proxy (e.g. Apache httpd) in front of the Jetty server
-         *  can also be used, which provides a wide varity of proven security options.   
+         *  can also be used, which provides a wide variety of proven security options.   
          */
-        public Builder setSecurityHandler(SecurityHandler securityHandler) {
+        public Builder securityHandler(SecurityHandler securityHandler) {
             requireNonNull(securityHandler, "securityHandler");
             this.securityHandler = securityHandler;
             return this;
         }
         
-        /** Set verbose logging */
+
+        /** Set verbose logging 
+         *  @deprecated Use {@link #verbose(boolean)}.
+         */
         public Builder setVerbose(boolean verbose) {
+            return verbose(verbose);
+        }
+
+        /** Set verbose logging */
+        public Builder verbose(boolean verbose) {
             this.verbose = verbose;
             return this;
         }
@@ -337,6 +382,19 @@ public class FusekiServer {
         }
         
         /**
+         * Add a servlet attribute. Pass a value of null to remove any existing binding.
+         */
+        
+        public Builder addServletAttribute(String attrName, Object value) {
+            requireNonNull(attrName, "attrName");
+            if ( value != null )
+                servletAttr.put(attrName, value);
+            else
+                servletAttr.remove(attrName);
+            return this;
+        }
+        
+        /**
          * Add an operation and handler to the server. This does not enable it for any dataset.
          * <p>
          * To associate an operation with a dataset, call {@link #addOperation} after adding the dataset.
@@ -393,6 +451,7 @@ public class FusekiServer {
 
             ServletContext cxt = handler.getServletContext();
             Fuseki.setVerbose(cxt, verbose);
+            servletAttr.forEach((n,v)->cxt.setAttribute(n, v));
             // Clone to isolate from any future changes. 
             ServiceDispatchRegistry.set(cxt, new ServiceDispatchRegistry(serviceDispatch));
             DataAccessPointRegistry.set(cxt, new DataAccessPointRegistry(dataAccessPoints));

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
index 48eec5d..20152b8 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
@@ -113,8 +113,8 @@ public class FusekiTestAuth {
         dsgTesting = dsg;
         server = FusekiServer.create()
             .add(datasetPath(), dsgTesting)
-            .setPort(port())
-            .setSecurityHandler(sh)
+            .port(port())
+            .securityHandler(sh)
             .build()
             .start();
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestServer.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestServer.java
index b661e5d..c8de9db 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestServer.java
@@ -231,7 +231,7 @@ public class FusekiTestServer {
         dsgTesting = DatasetGraphFactory.createTxnMem();
         server = FusekiServer.create()
             .add(datasetPath(), dsgTesting)
-            .setPort(port())
+            .port(port())
             .build()
             .start();
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
index 9841a9c..0d82a6e 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
@@ -96,7 +96,7 @@ public class TestEmbeddedFuseki {
         DatasetGraph dsg = dataset() ;
         int port = FusekiLib.choosePort() ;
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
+            .port(port)
             .add("/ds1", dsg) 
             .build() ;
         server.start() ;
@@ -131,7 +131,7 @@ public class TestEmbeddedFuseki {
         int port = FusekiLib.choosePort() ;
         
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
+            .port(port)
             .add("/data", dataService)
             .build() ;
         server.start() ;
@@ -170,7 +170,7 @@ public class TestEmbeddedFuseki {
         DatasetGraph dsg = dataset() ;
         int port = FusekiLib.choosePort() ;
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
+            .port(port)
             .add("/ds0", dsg) 
             .build() ;
         server.start() ;
@@ -185,7 +185,7 @@ public class TestEmbeddedFuseki {
         DatasetGraph dsg = dataset() ;
         int port = FusekiLib.choosePort() ;
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
+            .port(port)
             .add("/ds0", dsg)
             .enableStats(true)
             .build() ;
@@ -202,8 +202,8 @@ public class TestEmbeddedFuseki {
         int port = FusekiLib.choosePort() ;
         
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
-            .setContextPath("/ABC")
+            .port(port)
+            .contextPath("/ABC")
             .add("/ds", dsg) 
             .build() ;
         server.start() ;
@@ -220,7 +220,7 @@ public class TestEmbeddedFuseki {
         int port = FusekiLib.choosePort() ;
 
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
+            .port(port)
             .parseConfigFile(DIR+"config.ttl") 
             .build() ;
         server.start() ;
@@ -234,8 +234,8 @@ public class TestEmbeddedFuseki {
         int port = FusekiLib.choosePort() ;
 
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
-            .setContextPath("/ABC")
+            .port(port)
+            .contextPath("/ABC")
             .parseConfigFile(DIR+"config.ttl") 
             .build() ;
         server.start() ;
@@ -259,7 +259,7 @@ public class TestEmbeddedFuseki {
         dSrv.addEndpoint(Operation.GSP_R, "gsp") ;
         FusekiServer server = FusekiServer.create()
             .add("/dsrv1", dSrv)
-            .setPort(port)
+            .port(port)
             .build() ;
         server.start() ;
         try {
@@ -278,8 +278,8 @@ public class TestEmbeddedFuseki {
         dSrv.addEndpoint(Operation.GSP_R, "gsp") ;
         FusekiServer server = FusekiServer.create()
             .add("/dsrv1", dSrv)
-            .setStaticFileBase(DIR)
-            .setPort(port)
+            .staticFileBase(DIR)
+            .port(port)
             .build() ;
         server.start() ;
         

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestFusekiCustomOperation.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestFusekiCustomOperation.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestFusekiCustomOperation.java
index 064e1b2..17eaff6 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestFusekiCustomOperation.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestFusekiCustomOperation.java
@@ -64,7 +64,7 @@ public class TestFusekiCustomOperation {
         
         FusekiServer server = 
             FusekiServer.create()
-                .setPort(port)
+                .port(port)
                 .registerOperation(newOp, contentType, customHandler)
                 .add("/ds", dataService)
                 .build();
@@ -75,7 +75,7 @@ public class TestFusekiCustomOperation {
     public void cfg_builder_CT() {
         FusekiServer server = 
             FusekiServer.create()
-                .setPort(port)
+                .port(port)
                 .registerOperation(newOp, contentType, customHandler)
                 .add("/ds", DatasetGraphFactory.createTxnMem(), true)
                 .addOperation("/ds", endpointName, newOp)
@@ -87,7 +87,7 @@ public class TestFusekiCustomOperation {
     public void cfg_builder_noCT() {
         FusekiServer server = 
             FusekiServer.create()
-                .setPort(port)
+                .port(port)
                 .registerOperation(newOp, null, customHandler)
                 .add("/ds", DatasetGraphFactory.createTxnMem(), true)
                 .addOperation("/ds", endpointName, newOp)
@@ -98,7 +98,7 @@ public class TestFusekiCustomOperation {
     @Test(expected=FusekiConfigException.class)
     public void cfg_bad_01() {
         FusekiServer.create()
-        .setPort(port)
+        .port(port)
         .registerOperation(newOp, null, customHandler)
         .addOperation("/UNKNOWN", endpointName, newOp);
         //.build();
@@ -107,7 +107,7 @@ public class TestFusekiCustomOperation {
     @Test(expected=FusekiConfigException.class)
     public void cfg_bad_02() {
         FusekiServer.create()
-        .setPort(port)
+        .port(port)
         //.registerOperation(newOp, null, customHandler)
         .add("/ds", DatasetGraphFactory.createTxnMem(), true)
         // Unregistered.
@@ -117,7 +117,7 @@ public class TestFusekiCustomOperation {
     
     public void cfg_bad_ct_not_enabkled_here() {
         FusekiServer server = FusekiServer.create()
-            .setPort(port)
+            .port(port)
             .registerOperation(newOp, "app/special", customHandler)
             .add("/ds", DatasetGraphFactory.createTxnMem(), true)
             // Unregistered.

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestMultipleEmbedded.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestMultipleEmbedded.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestMultipleEmbedded.java
index 7a154c2..57d6c93 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestMultipleEmbedded.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestMultipleEmbedded.java
@@ -53,9 +53,9 @@ public class TestMultipleEmbedded {
         DatasetGraph dsg = dataset() ;
 
         int port = FusekiLib.choosePort() ;
-        FusekiServer server1 = FusekiServer.create().setPort(port).add("/ds1", dsg).build() ;
+        FusekiServer server1 = FusekiServer.create().port(port).add("/ds1", dsg).build() ;
         // Same port - Bbad.
-        FusekiServer server2 = FusekiServer.create().setPort(port).add("/ds2", dsg).build() ;
+        FusekiServer server2 = FusekiServer.create().port(port).add("/ds2", dsg).build() ;
     
         server1.start();
         
@@ -75,11 +75,11 @@ public class TestMultipleEmbedded {
     public void multiple_02() {
         DatasetGraph dsg = dataset() ;
         int port1 = FusekiLib.choosePort() ;
-        FusekiServer server1 = FusekiServer.create().setPort(port1).add("/ds1", dsg).build() ;
+        FusekiServer server1 = FusekiServer.create().port(port1).add("/ds1", dsg).build() ;
 
         // Different port - good
         int port2 = FusekiLib.choosePort() ;
-        FusekiServer server2 = FusekiServer.create().setPort(port2).add("/ds2", dsg).build() ;
+        FusekiServer server2 = FusekiServer.create().port(port2).add("/ds2", dsg).build() ;
 
         try {
             server1.start();
@@ -97,11 +97,11 @@ public class TestMultipleEmbedded {
         DatasetGraph dsg2 = dataset() ;
         // Same name.
         int port1 = FusekiLib.choosePort() ;
-        FusekiServer server1 = FusekiServer.create().setPort(port1).add("/ds", dsg1).build().start() ;
+        FusekiServer server1 = FusekiServer.create().port(port1).add("/ds", dsg1).build().start() ;
         Txn.executeWrite(dsg1, ()->dsg1.add(q1));
         
         int port2 = FusekiLib.choosePort() ;
-        FusekiServer server2 = FusekiServer.create().setPort(port2).add("/ds", dsg2).build().start() ;
+        FusekiServer server2 = FusekiServer.create().port(port2).add("/ds", dsg2).build().start() ;
         Txn.executeWrite(dsg2, ()->dsg2.add(q2));
         
         query("http://localhost:"+port1+"/ds/", "SELECT * {?s ?p 1}", qExec->{
@@ -130,11 +130,11 @@ public class TestMultipleEmbedded {
         DatasetGraph dsg = dataset() ;
         
         int port1 = FusekiLib.choosePort() ;
-        FusekiServer server1 = FusekiServer.create().setPort(port1).add("/ds1", dsg).build().start() ;
+        FusekiServer server1 = FusekiServer.create().port(port1).add("/ds1", dsg).build().start() ;
         Txn.executeWrite(dsg, ()->dsg.add(q1));
         
         int port2 = FusekiLib.choosePort() ;
-        FusekiServer server2 = FusekiServer.create().setPort(port2).add("/ds2", dsg).build().start() ;
+        FusekiServer server2 = FusekiServer.create().port(port2).add("/ds2", dsg).build().start() ;
         Txn.executeWrite(dsg, ()->dsg.add(q2));
         
         query("http://localhost:"+port1+"/ds1", "SELECT * {?s ?p ?o}", qExec->{

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_1.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_1.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_1.java
index cdeb7c4..e4f8e3d 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_1.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_1.java
@@ -103,8 +103,8 @@ public class ExtendFuseki_AddService_1 {
         ActionService customHandler = new SpecialService();
         
         FusekiServer server = 
-            FusekiServer.create().setPort(PORT)
-                .setVerbose(true)
+            FusekiServer.create().port(PORT)
+                .verbose(true)
 
                 // Register the new operation, and it's handler, but no Content-Type
                 .registerOperation(myOperation, customHandler)

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_2.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_2.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_2.java
index a05026a..7c97132 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_2.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_2.java
@@ -74,8 +74,8 @@ public class ExtendFuseki_AddService_2 {
         ActionService customHandler = new SpecialService();
         
         FusekiServer server = 
-            FusekiServer.create().setPort(PORT)
-                .setVerbose(true)
+            FusekiServer.create().port(PORT)
+                .verbose(true)
                 // Register the new operation, and it's handler
                 .registerOperation(myOperation, customHandler)
 

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_3.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_3.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_3.java
index eb23df3..ce663a8 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_3.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/examples/ExtendFuseki_AddService_3.java
@@ -67,8 +67,8 @@ public class ExtendFuseki_AddService_3 {
         ActionService customHandler = new SpecialService();
         
         FusekiServer server = 
-            FusekiServer.create().setPort(PORT)
-                .setVerbose(true)
+            FusekiServer.create().port(PORT)
+                .verbose(true)
 
                 // Register the new operation, with content type and handler
                 .registerOperation(myOperation, contentType, customHandler)

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFusekiBinary.java
----------------------------------------------------------------------
diff --git a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFusekiBinary.java b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFusekiBinary.java
index 9619798..881b87e 100644
--- a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFusekiBinary.java
+++ b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFusekiBinary.java
@@ -114,7 +114,7 @@ public class TestRDFConnectionFusekiBinary {
         DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
         return  
             FusekiServer.create()
-                .setPort(PORT)
+                .port(PORT)
                 //.setStaticFileBase("/home/afs/ASF/jena-fuseki-cmds/sparqler")
                 .add("/ds", dsg)
                 //.setVerbose(true)

http://git-wip-us.apache.org/repos/asf/jena/blob/f6bac07b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
----------------------------------------------------------------------
diff --git a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
index d064b6d..5dc87f1 100644
--- a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
+++ b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
@@ -41,7 +41,7 @@ public class TestRDFConnectionRemote extends AbstractTestRDFConnection {
     public static void beforeClass() {
         PORT = FusekiLib.choosePort();
         server = FusekiServer.create()
-            .setPort(PORT)
+            .port(PORT)
             .add("/ds", serverdsg)
             .build() ;
         LogCtl.setLevel(Fuseki.serverLogName,  "WARN");


[05/19] jena git commit: Deprecate isBackedByTDB in favour of isTDB2.

Posted by an...@apache.org.
Deprecate isBackedByTDB in favour of isTDB2.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0335b26f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0335b26f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0335b26f

Branch: refs/heads/master
Commit: 0335b26f11825843f17053501a07c185f28571a5
Parents: d061885
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Aug 14 13:13:46 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Aug 15 21:34:46 2018 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/jena/tdb2/DatabaseMgr.java    | 13 +++++++++++--
 .../main/java/org/apache/jena/tdb2/TDB2Factory.java    | 11 ++++++++---
 2 files changed, 19 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/0335b26f/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/DatabaseMgr.java
----------------------------------------------------------------------
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/DatabaseMgr.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/DatabaseMgr.java
index 52ca661..ad43905 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/DatabaseMgr.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/DatabaseMgr.java
@@ -82,9 +82,18 @@ public class DatabaseMgr {
         return connectDatasetGraph(Location.mem()) ;
     }
 
-    /** Return the location of a dataset if it is backed by TDB, else null */ 
+    /** Return whether a {@code DatasetGraph} is TDB2.
+     * @deprecated Use {@link #isTDB2}.
+     */
+    @Deprecated
+    // Wrong name
     public static boolean isBackedByTDB(DatasetGraph datasetGraph) {
-        return TDBInternal.isBackedByTDB(datasetGraph);
+        return TDBInternal.isTDB2(datasetGraph);
+    }
+
+    /** Return whether a {@code DatasetGraph} is a TDB2 database. */
+    public static boolean isTDB2(DatasetGraph datasetGraph) {
+        return TDBInternal.isTDB2(datasetGraph);
     }
 
     /** Return the location of a DatasetGraph if it is backed by TDB, else null. */

http://git-wip-us.apache.org/repos/asf/jena/blob/0335b26f/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/TDB2Factory.java
----------------------------------------------------------------------
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/TDB2Factory.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/TDB2Factory.java
index 6f1d6ba..ccb6f4c 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/TDB2Factory.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/TDB2Factory.java
@@ -86,12 +86,17 @@ public class TDB2Factory
         return (Dataset)AssemblerUtils.build(assemblerFile, VocabTDB2.tDatasetTDB) ;
     }
     
-    /** Test whether a dataset is backed by TDB or not. */ 
+    /** Test whether a dataset is backed by TDB or not.
+     * @deprecated Use {#isTDB2} 
+     */ 
     public static boolean isBackedByTDB(Dataset dataset) {
-        DatasetGraph dsg = dataset.asDatasetGraph() ;
-        return DatabaseMgr.isBackedByTDB(dsg) ;
+        return isTDB2(dataset);
     }
     
+    /** Test whether a dataset is backed by TDB or not. */ 
+    public static boolean isTDB2(Dataset dataset) {
+        return DatabaseMgr.isTDB2(dataset.asDatasetGraph());
+    }
     /** Return the location of a dataset if it is backed by TDB, else null */
     public static Location location(Dataset dataset) {
         DatasetGraph dsg = dataset.asDatasetGraph() ;


[16/19] jena git commit: Fixes up based on comments on PR#463

Posted by an...@apache.org.
Fixes up based on comments on PR#463


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/08ef457a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/08ef457a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/08ef457a

Branch: refs/heads/master
Commit: 08ef457a44e6f8491bdea84c798c7af5c73925d9
Parents: 3b153d5
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Aug 17 13:22:53 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Aug 17 13:22:53 2018 +0100

----------------------------------------------------------------------
 .../org/apache/jena/sparql/util/NodeUtils.java  |  14 +-
 .../jena/fuseki/servlets/ServiceRouter.java     |   2 +-
 .../jena/fuseki/embedded/FusekiServer.java      | 170 ++++++++++---------
 3 files changed, 99 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/08ef457a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
index 5dd1d6f..a505c8f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
@@ -18,7 +18,11 @@
 
 package org.apache.jena.sparql.util;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Objects;
 
 import org.apache.jena.atlas.lib.ListUtils;
 import org.apache.jena.atlas.lib.StrUtils ;
@@ -102,7 +106,7 @@ public class NodeUtils
         Iterator<String> conv = new MapFilterIterator<>(mapper, eIter) ;
         return conv ;
     }
-    
+
     /** Convert a collection of strings to a collection of {@link Node Nodes}. */ 
     public static Collection<Node> convertToNodes(Collection<String> namedGraphs) {
         List<Node> nodes = ListUtils.toList(
@@ -118,7 +122,7 @@ public class NodeUtils
             );
         return nodes;
     }
-    
+
     /** Compare two Nodes, based on their RDF terms forms, not value */
     public static int compareRDFTerms(Node node1, Node node2) {
         if ( node1 == null ) {
@@ -200,7 +204,7 @@ public class NodeUtils
      *  <li> Datatypes by URI
      *  </ol>
      */
-    
+
     private static int compareLiteralsBySyntax(Node node1, Node node2) {
         if ( node1 == null || !node1.isLiteral() || node2 == null || !node2.isLiteral() )
             throw new ARQInternalErrorException("compareLiteralsBySyntax called with non-literal: (" + node1 + "," + node2 + ")") ;
@@ -248,7 +252,7 @@ public class NodeUtils
         // Two datatypes.
         return StrUtils.strCompare(dt1, dt2) ;
     }
-    
+
     /**
      * A Node is a simple string if: 
      * <li>(RDF 1.0) No datatype and no language tag

http://git-wip-us.apache.org/repos/asf/jena/blob/08ef457a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
index c54a69b..9a3a2b2 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServiceRouter.java
@@ -124,7 +124,7 @@ public abstract class ServiceRouter extends ActionService {
          * Test whether there is a configuration that allows this action as the operation
          * given. Ignores the operation in the action which is set due to parsing - it
          * might be "quads" which is the generic operation when just the dataset is
-         * specificed.
+         * specified.
          */
         private boolean isEnabled(HttpAction action, Operation operation) {
             // Disregard the operation name of the action

http://git-wip-us.apache.org/repos/asf/jena/blob/08ef457a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index 9d68be0..3c84fd3 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -20,7 +20,11 @@ package org.apache.jena.fuseki.embedded;
 
 import static java.util.Objects.requireNonNull;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 import javax.servlet.Filter;
 import javax.servlet.ServletContext;
@@ -35,7 +39,11 @@ import org.apache.jena.fuseki.build.FusekiConfig;
 import org.apache.jena.fuseki.ctl.ActionPing;
 import org.apache.jena.fuseki.ctl.ActionStats;
 import org.apache.jena.fuseki.jetty.FusekiErrorHandler1;
-import org.apache.jena.fuseki.server.*;
+import org.apache.jena.fuseki.server.DataAccessPoint;
+import org.apache.jena.fuseki.server.DataAccessPointRegistry;
+import org.apache.jena.fuseki.server.DataService;
+import org.apache.jena.fuseki.server.FusekiVocab;
+import org.apache.jena.fuseki.server.Operation;
 import org.apache.jena.fuseki.servlets.ActionService;
 import org.apache.jena.fuseki.servlets.FusekiFilter;
 import org.apache.jena.fuseki.servlets.ServiceDispatchRegistry;
@@ -57,7 +65,7 @@ import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 
 /**
- * Embedded Fuseki server. This is a Fuseki server running with a preconfigured set of
+ * Embedded Fuseki server. This is a Fuseki server running with a pre-configured set of
  * datasets and services. There is no admin UI and no security.
  * <p>
  * To create a embedded sever, use {@link FusekiServer} ({@link #make} is a
@@ -65,7 +73,7 @@ import org.eclipse.jetty.servlet.ServletHolder;
  * responding to localhost only).
  * <p>
  * The application should call {@link #start()} to actually start the server
- * (it wil run in the background : see {@link #join}).
+ * (it will run in the background : see {@link #join}).
  * <p>Example:
  * <pre>
  *      DatasetGraph dsg = ...;
@@ -79,13 +87,13 @@ import org.eclipse.jetty.servlet.ServletHolder;
  * <pre>
  *    FusekiServer.make(1234, "/ds", dsg).start();
  * </pre>
- * 
+ *
  */
 public class FusekiServer {
     /** Construct a Fuseki server for one dataset.
-     * It only responds to localhost. 
-     * The returned server has not been started. 
-     */ 
+     * It only responds to localhost.
+     * The returned server has not been started.
+     */
     static public FusekiServer make(int port, String name, DatasetGraph dsg) {
         return create()
             .port(port)
@@ -93,60 +101,60 @@ public class FusekiServer {
             .add(name, dsg)
             .build();
     }
-    
+
     public static Builder create() {
         return new Builder();
     }
-    
+
     public final Server server;
     private int port;
-    
+
     private FusekiServer(int port, Server server) {
         this.server = server;
         // This should be the same.
         //this.port = ((ServerConnector)server.getConnectors()[0]).getPort();
         this.port = port;
     }
-    
-    /** 
-     * Return the port begin used.  
+
+    /**
+     * Return the port begin used.
      * This will be the give port, which defaults to 3330, or
      * the one actually allocated if the port was 0 ("choose a free port").
      */
     public int getPort() {
-        return port; 
+        return port;
     }
 
-    /** Get the underlying Jetty server which has also been set up. */ 
+    /** Get the underlying Jetty server which has also been set up. */
     public Server getJettyServer() {
-        return server; 
+        return server;
     }
-    
+
     /** Get the {@link ServletContext}.
      * Adding new servlets is possible with care.
-     */ 
+     */
     public ServletContext getServletContext() {
         return ((ServletContextHandler)server.getHandler()).getServletContext();
     }
 
     /** Get the {@link DataAccessPointRegistry}.
      * This method is intended for inspecting the registry.
-     */ 
+     */
     public DataAccessPointRegistry getDataAccessPointRegistry() {
         return DataAccessPointRegistry.get(getServletContext());
     }
 
     /** Get the {@link DataAccessPointRegistry}.
      * This method is intended for inspecting the registry.
-     */ 
+     */
     public ServiceDispatchRegistry getServiceDispatchRegistry() {
         return ServiceDispatchRegistry.get(getServletContext());
     }
 
     /** Start the server - the server continues to run after this call returns.
-     *  To synchronise with the server stopping, call {@link #join}.  
+     *  To synchronise with the server stopping, call {@link #join}.
      */
-    public FusekiServer start() { 
+    public FusekiServer start() {
         try { server.start(); }
         catch (Exception e) { throw new FusekiException(e); }
         if ( port == 0 )
@@ -156,18 +164,18 @@ public class FusekiServer {
     }
 
     /** Stop the server. */
-    public void stop() { 
+    public void stop() {
         Fuseki.serverLog.info("Stop Fuseki (port="+port+")");
         try { server.stop(); }
         catch (Exception e) { throw new FusekiException(e); }
     }
-    
+
     /** Wait for the server to exit. This call is blocking. */
     public void join() {
         try { server.join(); }
         catch (Exception e) { throw new FusekiException(e); }
     }
-    
+
     /** FusekiServer.Builder */
     public static class Builder {
         private DataAccessPointRegistry  dataAccessPoints   = new DataAccessPointRegistry();
@@ -188,39 +196,39 @@ public class FusekiServer {
         private Map<String, Object>      servletAttr        = new HashMap<>();
 
         /** Set the port to run on.
-         * @deprecated Use {@link #port}. 
+         * @deprecated Use {@link #port}.
          */
         @Deprecated
         public Builder setPort(int port) {
             return port(port);
         }
-        
-        /** Set the port to run on. */ 
+
+        /** Set the port to run on. */
         public Builder port(int port) {
             if ( port < 0 )
                 throw new IllegalArgumentException("Illegal port="+port+" : Port must be greater than or equal to zero.");
             this.port = port;
             return this;
         }
-        
+
         /** Context path to Fuseki.  If it's "/" then Fuseki URL look like
-         * "http://host:port/dataset/query" else "http://host:port/path/dataset/query" 
-         * @deprecated Use {@link #contextPath}. 
+         * "http://host:port/dataset/query" else "http://host:port/path/dataset/query"
+         * @deprecated Use {@link #contextPath}.
          */
         @Deprecated
         public Builder setContextPath(String path) {
             return contextPath(path);
         }
-        
+
         /** Context path to Fuseki.  If it's "/" then Fuseki URL look like
-         * "http://host:port/dataset/query" else "http://host:port/path/dataset/query" 
+         * "http://host:port/dataset/query" else "http://host:port/path/dataset/query"
          */
         public Builder contextPath(String path) {
             requireNonNull(path, "path");
             this.contextPath = path;
             return this;
         }
-        
+
         /** Restrict the server to only responding to the localhost interface.
          *  @deprecated Use {@link #loopback}.
          */
@@ -229,7 +237,7 @@ public class FusekiServer {
             return loopback(loopback);
         }
 
-        /** Restrict the server to only responding to the localhost interface. */ 
+        /** Restrict the server to only responding to the localhost interface. */
         public Builder loopback(boolean loopback) {
             this.loopback = loopback;
             return this;
@@ -242,8 +250,8 @@ public class FusekiServer {
         public Builder setStaticFileBase(String directory) {
             return staticFileBase(directory);
         }
-        
-        /** Set the location (filing system directory) to serve static file from. */ 
+
+        /** Set the location (filing system directory) to serve static file from. */
         public Builder staticFileBase(String directory) {
             requireNonNull(directory, "directory");
             this.staticContentDir = directory;
@@ -259,25 +267,25 @@ public class FusekiServer {
         public Builder setSecurityHandler(SecurityHandler securityHandler) {
             return securityHandler(securityHandler);
         }
-        
+
         /** Set a Jetty SecurityHandler.
          * <p>
          *  By default, the server runs with no security.
          *  This is more for using the basic server for testing.
          *  The full Fuseki server provides security with Apache Shiro
          *  and a defensive reverse proxy (e.g. Apache httpd) in front of the Jetty server
-         *  can also be used, which provides a wide variety of proven security options.   
+         *  can also be used, which provides a wide variety of proven security options.
          */
         public Builder securityHandler(SecurityHandler securityHandler) {
             requireNonNull(securityHandler, "securityHandler");
             this.securityHandler = securityHandler;
             return this;
         }
-        
 
-        /** Set verbose logging 
+        /** Set verbose logging
          *  @deprecated Use {@link #verbose(boolean)}.
          */
+        @Deprecated
         public Builder setVerbose(boolean verbose) {
             return verbose(verbose);
         }
@@ -290,57 +298,57 @@ public class FusekiServer {
 
         /** Add the "/$/stats" servlet that responds with stats about the server,
          * including counts of all calls made.
-         */ 
+         */
         public Builder enableStats(boolean withStats) {
             this.withStats = withStats;
             return this;
         }
 
         /** Add the "/$/ping" servlet that responds to HTTP very efficiently.
-         * This is useful for testing whether a server is alive, for example, from a load balancer.  
-         */ 
+         * This is useful for testing whether a server is alive, for example, from a load balancer.
+         */
         public Builder enablePing(boolean withPing) {
             this.withPing = withPing;
             return this;
         }
-        /** Add the dataset with given name and a default set of services including update */  
+        /** Add the dataset with given name and a default set of services including update */
         public Builder add(String name, Dataset dataset) {
             requireNonNull(name, "name");
             requireNonNull(dataset, "dataset");
             return add(name, dataset.asDatasetGraph());
         }
 
-        /** Add the dataset with given name and a default set of services including update */  
+        /** Add the dataset with given name and a default set of services including update */
         public Builder add(String name, DatasetGraph dataset) {
             requireNonNull(name, "name");
             requireNonNull(dataset, "dataset");
             return add(name, dataset, true);
         }
 
-        /** Add the dataset with given name and a default set of services. */  
+        /** Add the dataset with given name and a default set of services. */
         public Builder add(String name, Dataset dataset, boolean allowUpdate) {
             requireNonNull(name, "name");
             requireNonNull(dataset, "dataset");
             return add(name, dataset.asDatasetGraph(), allowUpdate);
         }
-        
-        /** Add the dataset with given name and a default set of services. */  
+
+        /** Add the dataset with given name and a default set of services. */
         public Builder add(String name, DatasetGraph dataset, boolean allowUpdate) {
             requireNonNull(name, "name");
             requireNonNull(dataset, "dataset");
-            DataService dSrv = FusekiBuilder.buildDataServiceStd(dataset, allowUpdate); 
+            DataService dSrv = FusekiBuilder.buildDataServiceStd(dataset, allowUpdate);
             return add(name, dSrv);
         }
-        
+
         /** Add a data service that includes dataset and service names.
          * A {@link DataService} allows for choices of the various endpoint names.
-         */  
+         */
         public Builder add(String name, DataService dataService) {
             requireNonNull(name, "name");
             requireNonNull(dataService, "dataService");
-            return add$(name, dataService); 
+            return add$(name, dataService);
         }
-        
+
         private Builder add$(String name, DataService dataService) {
             name = DataAccessPoint.canonical(name);
             if ( dataAccessPoints.isRegistered(name) )
@@ -354,18 +362,18 @@ public class FusekiServer {
          *  <p>
          *  The application is responsible for ensuring a correct classpath. For example,
          *  including a dependency on {@code jena-text} if the configuration file
-         *  includes a text index.     
+         *  includes a text index.
          */
         public Builder parseConfigFile(String filename) {
             requireNonNull(filename, "filename");
             Model model = AssemblerUtils.readAssemblerFile(filename);
-            
+
             // Process server context
             Resource server = GraphUtils.getResourceByType(model, FusekiVocab.tServer);
             if ( server != null )
                 AssemblerUtils.setContext(server, Fuseki.getContext()) ;
 
-            // Process services, whether via server ja:services or, if absent, by finding by type. 
+            // Process services, whether via server ja:services or, if absent, by finding by type.
             List<DataAccessPoint> x = FusekiConfig.servicesAndDatasets(model);
             // Unbundle so that they accumulate.
             x.forEach(dap->add(dap.getName(), dap.getDataService()));
@@ -383,11 +391,11 @@ public class FusekiServer {
             servlets.add(Pair.create(pathSpec, servlet));
             return this;
         }
-        
+
         /**
          * Add a servlet attribute. Pass a value of null to remove any existing binding.
          */
-        
+
         public Builder addServletAttribute(String attrName, Object value) {
             requireNonNull(attrName, "attrName");
             if ( value != null )
@@ -396,7 +404,7 @@ public class FusekiServer {
                 servletAttr.remove(attrName);
             return this;
         }
-        
+
         /**
          * Add a filter with the pathSpec.
          */
@@ -406,13 +414,13 @@ public class FusekiServer {
             filters.add(Pair.create(pathSpec, filter));
             return this;
         }
-        
+
         /**
          * Add an operation and handler to the server. This does not enable it for any dataset.
          * <p>
          * To associate an operation with a dataset, call {@link #addOperation} after adding the dataset.
-         * 
-         * @see #addOperation 
+         *
+         * @see #addOperation
          */
         public Builder registerOperation(Operation operation, ActionService handler) {
             registerOperation(operation, null, handler);
@@ -422,9 +430,9 @@ public class FusekiServer {
         /**
          * Add an operation to the server, together with its triggering Content-Type (may be null) and servlet handler.
          * <p>
-         * To associate an operation with a dataset, call {@link #addOperation} after adding the dataset. 
+         * To associate an operation with a dataset, call {@link #addOperation} after adding the dataset.
          *
-         * @see #addOperation 
+         * @see #addOperation
          */
         public Builder registerOperation(Operation operation, String contentType, ActionService handler) {
             Objects.requireNonNull(operation, "operation");
@@ -434,21 +442,21 @@ public class FusekiServer {
             serviceDispatch.register(operation, contentType, handler);
             return this;
         }
-        
-        /** 
-         * Create an endpoint on the dataset. 
+
+        /**
+         * Create an endpoint on the dataset.
          * The operation must already be registered with the builder.
-         * @see #registerOperation(Operation, ActionService) 
+         * @see #registerOperation(Operation, ActionService)
          */
         public Builder addOperation(String datasetName, String endpointName, Operation operation) {
             Objects.requireNonNull(datasetName, "datasetName");
             Objects.requireNonNull(endpointName, "endpointName");
-            
+
             String name = DataAccessPoint.canonical(datasetName);
-            
+
             if ( ! serviceDispatch.isRegistered(operation) )
                 throw new FusekiConfigException("Operation not registered: "+operation.getName());
-            
+
             if ( ! dataAccessPoints.isRegistered(name) )
                 throw new FusekiConfigException("Dataset not registered: "+datasetName);
             DataAccessPoint dap = dataAccessPoints.get(name);
@@ -465,16 +473,16 @@ public class FusekiServer {
             ServletContext cxt = handler.getServletContext();
             Fuseki.setVerbose(cxt, verbose);
             servletAttr.forEach((n,v)->cxt.setAttribute(n, v));
-            // Clone to isolate from any future changes. 
+            // Clone to isolate from any future changes.
             ServiceDispatchRegistry.set(cxt, new ServiceDispatchRegistry(serviceDispatch));
             DataAccessPointRegistry.set(cxt, new DataAccessPointRegistry(dataAccessPoints));
 
             // Start services.
             DataAccessPointRegistry.get(cxt).forEach((name, dap)->dap.getDataService().goActive());
-            
+
             setMimeTypes(handler);
             servlets(handler);
-            
+
             Server server = jettyServer(port, loopback);
             server.setHandler(handler);
             return new FusekiServer(port, server);
@@ -492,10 +500,10 @@ public class FusekiServer {
             context.setContextPath(contextPath);
             if ( securityHandler != null )
                 context.setSecurityHandler(securityHandler);
-            
+
             return context;
         }
-        
+
         private static void setMimeTypes(ServletContextHandler context) {
             MimeTypes mimeTypes = new MimeTypes();
             // RDF syntax
@@ -530,12 +538,12 @@ public class FusekiServer {
             // This goes as the filter at the end of any filter chaining.
             FusekiFilter ff = new FusekiFilter();
             addFilter(context, "/*", ff);
-            
+
             if ( withStats )
                 addServlet(context, "/$/stats", new ActionStats());
             if ( withPing )
                 addServlet(context, "/$/ping", new ActionPing());
-            
+
             servlets.forEach(p->addServlet(context, p.getLeft(), p.getRight()));
             filters.forEach (p-> addFilter(context, p.getLeft(), p.getRight()));
 
@@ -546,7 +554,7 @@ public class FusekiServer {
                 context.addServlet(staticContent, "/");
             }
         }
-        
+
         private static void addServlet(ServletContextHandler context, String pathspec, HttpServlet httpServlet) {
             ServletHolder sh = new ServletHolder(httpServlet);
             context.addServlet(sh, pathspec);


[08/19] jena git commit: Strings to Node_URIs.

Posted by an...@apache.org.
Strings to Node_URIs.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/cb6d9b5c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/cb6d9b5c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/cb6d9b5c

Branch: refs/heads/master
Commit: cb6d9b5c63e0cfcb5bb600c4e5af9948c77b41ec
Parents: caf572a
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 09:56:48 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 09:56:48 2018 +0100

----------------------------------------------------------------------
 .../jena/sparql/core/DynamicDatasets.java       |  5 ++--
 .../org/apache/jena/sparql/util/NodeUtils.java  | 29 ++++++++++++--------
 2 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/cb6d9b5c/jena-arq/src/main/java/org/apache/jena/sparql/core/DynamicDatasets.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DynamicDatasets.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DynamicDatasets.java
index a13769b..8b319c3 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DynamicDatasets.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DynamicDatasets.java
@@ -19,7 +19,6 @@
 package org.apache.jena.sparql.core;
 
 import java.util.Collection ;
-import java.util.Set ;
 
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -56,8 +55,8 @@ public class DynamicDatasets
     	if (description.isEmpty() )
     		return dsg;
     	
-        Set<Node> defaultGraphs = NodeUtils.convertToNodes(description.getDefaultGraphURIs()) ; 
-        Set<Node> namedGraphs = NodeUtils.convertToNodes(description.getNamedGraphURIs()) ;
+        Collection<Node> defaultGraphs = NodeUtils.convertToNodes(description.getDefaultGraphURIs()) ; 
+        Collection<Node> namedGraphs = NodeUtils.convertToNodes(description.getNamedGraphURIs()) ;
         return dynamicDataset(defaultGraphs, namedGraphs, dsg, defaultUnionGraph) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/cb6d9b5c/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
index 978cda1..5dd1d6f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java
@@ -18,12 +18,9 @@
 
 package org.apache.jena.sparql.util;
 
-import java.util.Collection ;
-import java.util.HashSet ;
-import java.util.Iterator ;
-import java.util.Objects;
-import java.util.Set ;
+import java.util.*;
 
+import org.apache.jena.atlas.lib.ListUtils;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
@@ -105,15 +102,23 @@ public class NodeUtils
         Iterator<String> conv = new MapFilterIterator<>(mapper, eIter) ;
         return conv ;
     }
-
-    /** Convert IRI String to Node */  
-    public static Set<Node> convertToNodes(Collection<String> uris) {
-        Set<Node> nodes = new HashSet<>() ;
-        for ( String x : uris )
-            nodes.add(NodeFactory.createURI(x)) ;
-        return nodes ;
+    
+    /** Convert a collection of strings to a collection of {@link Node Nodes}. */ 
+    public static Collection<Node> convertToNodes(Collection<String> namedGraphs) {
+        List<Node> nodes = ListUtils.toList(
+            namedGraphs.stream().map(NodeFactory::createURI)
+            );
+        return nodes;
     }
 
+    /** Convert strings to a collection of {@link Node Nodes}. */ 
+    public static Collection<Node> convertToNodes(String... namedGraphs) {
+        List<Node> nodes = ListUtils.toList(
+            Arrays.stream(namedGraphs).map(NodeFactory::createURI)
+            );
+        return nodes;
+    }
+    
     /** Compare two Nodes, based on their RDF terms forms, not value */
     public static int compareRDFTerms(Node node1, Node node2) {
         if ( node1 == null ) {


[04/19] jena git commit: Deprecate isBackedByTDB in favour of isTDB1

Posted by an...@apache.org.
Deprecate isBackedByTDB in favour of isTDB1


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d576e607
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d576e607
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d576e607

Branch: refs/heads/master
Commit: d576e607e6f578a57f7049a4e2dc6ad81d707ebc
Parents: 0335b26
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Aug 15 15:42:48 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Aug 15 21:34:46 2018 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/tdb/TDBFactory.java    | 21 ++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d576e607/jena-tdb/src/main/java/org/apache/jena/tdb/TDBFactory.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/TDBFactory.java b/jena-tdb/src/main/java/org/apache/jena/tdb/TDBFactory.java
index 1e1b45f..4c91032 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/TDBFactory.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/TDBFactory.java
@@ -99,13 +99,19 @@ public class TDBFactory
         TDBMaker.releaseLocation(location) ;
     }
 
-    /** Test whether a dataset is backed by TDB. */ 
+    /** Test whether a dataset is backed by TDB.
+     * @deprecated Use {@link #isTDB1(Dataset)}
+     */
+    @Deprecated
     public static boolean isBackedByTDB(Dataset dataset) {
         DatasetGraph dsg = dataset.asDatasetGraph() ;
         return isBackedByTDB(dsg) ;
     }
     
-    /** Test whether a dataset is backed by TDB. */ 
+    /** Test whether a dataset is backed by TDB.
+     * @deprecated Use {@link #isTDB1(DatasetGraph)} 
+     */
+    @Deprecated
     public static boolean isBackedByTDB(DatasetGraph datasetGraph) {
         if ( datasetGraph instanceof DatasetGraphTransaction )
             // The switching "connection" for TDB 
@@ -116,6 +122,17 @@ public class TDBFactory
         return false ;
     }
 
+    /** Test whether a dataset is backed by TDB. */ 
+    public static boolean isTDB1(Dataset dataset) {
+        DatasetGraph dsg = dataset.asDatasetGraph() ;
+        return isTDB1(dsg) ;
+    }
+    
+    /** Test whether a dataset is backed by TDB. */ 
+    public static boolean isTDB1(DatasetGraph datasetGraph) {
+        return TDBInternal.isTDB1(datasetGraph);
+    }
+
     /** Return the location of a dataset if it is backed by TDB, else null */
     public static Location location(Dataset dataset) {
         DatasetGraph dsg = dataset.asDatasetGraph() ;


[02/19] jena git commit: Fix javadoc.

Posted by an...@apache.org.
Fix javadoc.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/833cdb68
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/833cdb68
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/833cdb68

Branch: refs/heads/master
Commit: 833cdb686b6035fd63afbfb0b92bfe7f9c77e493
Parents: d576e60
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Aug 15 16:54:56 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Aug 15 21:34:46 2018 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/833cdb68/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
index fc0eccb..48eec5d 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/FusekiTestAuth.java
@@ -36,19 +36,19 @@ import org.junit.Assert;
 /**
  * Testing HTTP athentication.
  * <p>
- * {@code FusekiAuth} provides helper code for before/after (any of suite/class/test).
+ * {@code FusekiTestAuth} provides helper code for before/after (any of suite/class/test).
  * The pattern of usage is:
  * <pre>
  * 
  * &#64;BeforeClass
  * public static void beforeClassAuth() {
- *     SecurityHandler sh = FusekiAuth.makeSimpleSecurityHandler("/*", "USER", "PASSWORD");
- *     FusekiAuth.setupServer(true, sh);
+ *     SecurityHandler sh = FusekiTestAuth.makeSimpleSecurityHandler("/*", "USER", "PASSWORD");
+ *     FusekiTestAuth.setupServer(true, sh);
  * }
  * 
  * &#64;AfterClass
  * public static void afterClassAuth() {
- *     FusekiAuth.teardownServer();
+ *     FusekiTestAuth.teardownServer();
  *     // Clear up any pooled connections.
  *     HttpOp.setDefaultHttpClient(HttpOp.createPoolingHttpClient());
  * }


[13/19] jena git commit: Remove unused and out-of-date class.

Posted by an...@apache.org.
Remove unused and out-of-date class.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/aa3518ee
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/aa3518ee
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/aa3518ee

Branch: refs/heads/master
Commit: aa3518ee48d53a4bcd4d63c66b36cb8e0f3a93bd
Parents: ae74347
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 16:13:05 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 16:13:05 2018 +0100

----------------------------------------------------------------------
 .../TupleIndexRecordAsyncBulkAdd.java           | 263 -------------------
 1 file changed, 263 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/aa3518ee/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/tupletable/TupleIndexRecordAsyncBulkAdd.java
----------------------------------------------------------------------
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/tupletable/TupleIndexRecordAsyncBulkAdd.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/tupletable/TupleIndexRecordAsyncBulkAdd.java
deleted file mode 100644
index 536c935..0000000
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/tupletable/TupleIndexRecordAsyncBulkAdd.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb2.store.tupletable;
-
-import static java.lang.String.format ;
-import static org.apache.jena.tdb2.sys.SystemTDB.SizeOfNodeId;
-
-import java.util.Collection ;
-import java.util.Iterator ;
-import java.util.function.Predicate ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.NullIterator ;
-import org.apache.jena.atlas.iterator.SingletonIterator ;
-import org.apache.jena.atlas.lib.tuple.Tuple ;
-import org.apache.jena.atlas.lib.tuple.TupleMap ;
-import org.apache.jena.dboe.base.record.Record;
-import org.apache.jena.dboe.base.record.RecordFactory;
-import org.apache.jena.dboe.index.RangeIndex;
-import org.apache.jena.dboe.transaction.txn.Transaction;
-import org.apache.jena.tdb2.TDBException;
-import org.apache.jena.tdb2.lib.Async;
-import org.apache.jena.tdb2.lib.TupleLib;
-import org.apache.jena.tdb2.store.NodeId;
-import org.apache.jena.tdb2.store.NodeIdFactory;
-
-// Async addAll 
-public class TupleIndexRecordAsyncBulkAdd extends TupleIndexBase
-{
-    private static final boolean Check = false ;
-    private RangeIndex index ; 
-    private RecordFactory factory ;
-    
-    public TupleIndexRecordAsyncBulkAdd(int N,  TupleMap tupleMapping, String name, RecordFactory factory, RangeIndex index)
-    {
-        super(N, tupleMapping, name) ;
-        this.factory = factory ;
-        this.index = index ;
-        
-        if ( factory.keyLength() != N*SizeOfNodeId)
-            throw new TDBException(format("Mismatch: TupleIndex of length %d is not comparative with a factory for key length %d", N, factory.keyLength())) ;
-    }
-    
-    /** Insert a tuple */
-    @Override
-    protected void performAdd(Tuple<NodeId> tuple) {
-        switchToSync() ;
-        Record r = TupleLib.record(factory, tuple, tupleMap) ;
-        index.insert(r) ;
-    }
-    
-    /** Delete a tuple */
-    @Override
-    protected void performDelete(Tuple<NodeId> tuple) { 
-        switchToSync() ;
-        Record r = TupleLib.record(factory, tuple, tupleMap) ;
-        index.delete(r) ;
-    }
-    
-    private void switchToSync() {
-        async.completeAsyncOperations();
-    }
-
-    Async async = new Async(1,2) ;
-    Object lock = new Object() ;
-    
-    /** Insert tuples */
-    @Override
-    public void addAll(Collection<Tuple<NodeId>> tuples) {
-        Transaction txn = null ;
-        // pass into async block.
-        
-        async.execAsync(lock, () -> {
-            // Transaction?
-            
-            System.out.println(">>Async") ;
-            for ( Tuple<NodeId> t : tuples ) {
-                Record r = TupleLib.record(factory, t, tupleMap) ;
-                index.insert(r) ;
-            }
-            System.out.println("<<Async") ;
-        }) ;
-    }
-    
-    /** Delete tuples */
-    @Override
-    public void deleteAll(Collection<Tuple<NodeId>> tuples) {
-        tuples.stream().forEach(this::delete);
-    }
-    
-    /** Find all matching tuples - a slot of NodeId.NodeIdAny (or null) means match any.
-     *  Input pattern in natural order, not index order.
-     */
-    
-    @Override
-    protected Iterator<Tuple<NodeId>> performFind(Tuple<NodeId> pattern) {
-        switchToSync() ;
-        return findOrScan(pattern) ;
-    }
-
-    // Package visibility for testing.
-    final Iterator<Tuple<NodeId>> findOrScan(Tuple<NodeId> pattern) {
-        return findWorker(pattern, true, true) ;
-    }
-    
-    final Iterator<Tuple<NodeId>> findOrPartialScan(Tuple<NodeId> pattern) {
-        return findWorker(pattern, true, false) ;
-    }
-
-    final Iterator<Tuple<NodeId>> findByIndex(Tuple<NodeId> pattern) {
-        return findWorker(pattern, false, false) ;
-    }
-    
-    private Iterator<Tuple<NodeId>> findWorker(Tuple<NodeId> patternNaturalOrder, boolean partialScanAllowed, boolean fullScanAllowed) {
-        switchToSync();
-        if ( Check && tupleLength != patternNaturalOrder.len() )
-            throw new TDBException(String.format("Mismatch: tuple length %d / index for length %d", patternNaturalOrder.len(), tupleLength));
-
-        // Convert to index order.
-        Tuple<NodeId> pattern = tupleMap.map(patternNaturalOrder) ;
-        
-        // Canonical form.
-        int numSlots = 0 ;
-        int leadingIdx = -2;    // Index of last leading pattern NodeId.  Start less than numSlots-1
-        boolean leading = true ;
-        
-        // Records.
-        Record minRec = factory.createKeyOnly() ;
-        Record maxRec = factory.createKeyOnly() ;
-        
-        // Set the prefixes.
-        for ( int i = 0 ; i < pattern.len() ; i++ ) {
-            NodeId X = pattern.get(i) ;
-            if ( NodeId.isAny(X) ) {
-                X = null ;
-                // No longer setting leading key slots.
-                leading = false ;
-                continue ;
-            }
-
-            numSlots++ ;
-            if ( leading ) {
-                leadingIdx = i ;
-                NodeIdFactory.set(X, minRec.getKey(), i*SizeOfNodeId) ;
-                NodeIdFactory.set(X, maxRec.getKey(), i*SizeOfNodeId) ;
-            }
-        }
-        
-        // Is it a simple existence test?
-        if ( numSlots == pattern.len() ) {
-            if ( index.contains(minRec) )
-                return new SingletonIterator<>(pattern) ;
-            else
-                return new NullIterator<>() ;
-        }
-        
-        Iterator<Record> iter = null ;
-        
-        if ( leadingIdx < 0 ) {
-            if ( ! fullScanAllowed )
-                return null ;
-            //System.out.println("Full scan") ;
-            // Full scan necessary
-            iter = index.iterator() ;
-        } else {
-            // Adjust the maxRec.
-            NodeId X = pattern.get(leadingIdx) ;
-            // Set the max Record to the leading NodeIds, +1.
-            // Example, SP? inclusive to S(P+1)? exclusive where ? is zero. 
-            NodeIdFactory.setNext(X, maxRec.getKey(), leadingIdx*SizeOfNodeId) ;
-            iter = index.iterator(minRec, maxRec) ;
-        }
-        
-        Iterator<Tuple<NodeId>> tuples = Iter.map(iter, item -> TupleLib.tuple(item, tupleMap)) ;
-        
-        if ( leadingIdx < numSlots-1 ) {
-            if ( ! partialScanAllowed )
-                return null ;
-            // Didn't match all defined slots in request.  
-            // Partial or full scan needed.
-            //pattern.unmap(colMap) ;
-            tuples = scan(tuples, patternNaturalOrder) ;
-        }
-        
-        return tuples ;
-    }
-    
-    @Override
-    public Iterator<Tuple<NodeId>> all()
-    {
-        switchToSync() ;
-        Iterator<Record> iter = index.iterator() ;
-        return Iter.map(iter, item -> TupleLib.tuple(item, tupleMap)) ;
-    }
-    
-    private Iterator<Tuple<NodeId>> scan(Iterator<Tuple<NodeId>> iter, Tuple<NodeId> pattern) {
-        Predicate<Tuple<NodeId>> filter = (item) -> {
-            // Check on pattern and item (both in natural order)
-            for ( int i = 0 ; i < tupleLength ; i++ ) {
-                NodeId n = pattern.get(i) ;
-                // The pattern must be null/Any or match the tuple being tested.
-                if ( ! NodeId.isAny(n) )
-                    if ( ! item.get(i).equals(n) ) 
-                        return false ;
-            }
-            return true ;
-        } ;
-        
-        return Iter.filter(iter, filter) ;
-    }
-    
-    @Override
-    public void close() {
-        switchToSync() ;
-        index.close() ;
-    }
-
-    @Override
-    public void sync() {
-        switchToSync() ;
-        index.sync() ;
-    }
-
-    public final RangeIndex getRangeIndex() {
-        return index ;
-    }
-
-    //protected final RecordFactory getRecordFactory()        { return factory ; }
-    
-    @Override
-    public boolean isEmpty() {
-        switchToSync() ;
-        return index.isEmpty() ;
-    }
-
-    @Override
-    public void clear() {
-        switchToSync() ;
-        index.clear() ;
-    }
-
-    @Override
-    public long size() {
-        switchToSync() ;
-        return index.size() ;
-    }
-}


[19/19] jena git commit: Merge commit 'refs/pull/463/head' of https://github.com/apache/jena

Posted by an...@apache.org.
Merge commit 'refs/pull/463/head' of https://github.com/apache/jena

This closes #463.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0cb4374e
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0cb4374e
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0cb4374e

Branch: refs/heads/master
Commit: 0cb4374e4d67181d37dcf79a4299c51b8f7be74e
Parents: 09994d2 e7eea47
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Aug 20 08:38:34 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Aug 20 08:38:34 2018 +0100

----------------------------------------------------------------------
 .../org/apache/jena/riot/RDFParserBuilder.java  |   2 +-
 .../jena/riot/system/ErrorHandlerFactory.java   |   4 +-
 .../jena/sparql/core/DynamicDatasets.java       |   5 +-
 .../java/org/apache/jena/sparql/core/Quad.java  |   4 +-
 .../org/apache/jena/sparql/util/NodeUtils.java  |  33 ++-
 .../org/apache/jena/atlas/lib/ListUtils.java    | 110 ++++----
 .../java/org/apache/jena/tdb2/DatabaseMgr.java  |  13 +-
 .../java/org/apache/jena/tdb2/TDB2Factory.java  |  11 +-
 .../jena/tdb2/solver/StageMatchTuple.java       |   2 +-
 .../java/org/apache/jena/tdb2/store/NodeId.java |   2 +-
 .../apache/jena/tdb2/store/NodeIdFactory.java   |   9 +-
 .../TupleIndexRecordAsyncBulkAdd.java           | 263 ------------------
 .../apache/jena/fuseki/cmds/FusekiBasicCmd.java |  25 +-
 .../java/org/apache/jena/fuseki/Fuseki.java     |   8 +-
 .../fuseki/server/DataAccessPointRegistry.java  |   6 +-
 .../jena/fuseki/servlets/ActionService.java     |   3 +-
 .../jena/fuseki/servlets/SPARQL_Query.java      |  79 +++++-
 .../servlets/ServiceDispatchRegistry.java       |  24 +-
 .../jena/fuseki/servlets/ServiceRouter.java     |  18 +-
 .../jena/fuseki/embedded/FusekiServer.java      | 275 ++++++++++++-------
 .../jena/fuseki/embedded/FusekiTestAuth.java    |  12 +-
 .../jena/fuseki/embedded/FusekiTestServer.java  |   2 +-
 .../fuseki/embedded/TestEmbeddedFuseki.java     |  24 +-
 .../embedded/TestFusekiCustomOperation.java     |  12 +-
 .../fuseki/embedded/TestMultipleEmbedded.java   |  16 +-
 .../examples/ExtendFuseki_AddService_1.java     |   4 +-
 .../examples/ExtendFuseki_AddService_2.java     |   4 +-
 .../examples/ExtendFuseki_AddService_3.java     |   4 +-
 .../TestRDFConnectionFusekiBinary.java          |   2 +-
 .../rdfconnection/TestRDFConnectionRemote.java  |   2 +-
 .../java/org/apache/jena/tdb/TDBFactory.java    |  21 +-
 31 files changed, 474 insertions(+), 525 deletions(-)
----------------------------------------------------------------------



[12/19] jena git commit: Comments and internal rename.

Posted by an...@apache.org.
Comments and internal rename.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ae74347f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ae74347f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ae74347f

Branch: refs/heads/master
Commit: ae74347f3607427e88561c854f26903cc880f310
Parents: 99180e5
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Aug 16 16:12:44 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 16 16:12:44 2018 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/tdb2/solver/StageMatchTuple.java   | 2 +-
 .../src/main/java/org/apache/jena/tdb2/store/NodeId.java    | 2 +-
 .../main/java/org/apache/jena/tdb2/store/NodeIdFactory.java | 9 +++++----
 3 files changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/ae74347f/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/StageMatchTuple.java
----------------------------------------------------------------------
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/StageMatchTuple.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/StageMatchTuple.java
index 397a4d6..51d7981 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/StageMatchTuple.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/StageMatchTuple.java
@@ -85,7 +85,7 @@ public class StageMatchTuple extends RepeatApplyIterator<BindingNodeId>
     {
         // ---- Convert to NodeIds 
         NodeId ids[] = new NodeId[patternTuple.len()] ;
-        // Variables for this tuple after subsitution
+        // Variables for this tuple after substitution
         final Var[] var = new Var[patternTuple.len()] ;
 
         boolean b = prepare(nodeTupleTable.getNodeTable(), patternTuple, input, ids, var) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/ae74347f/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeId.java
----------------------------------------------------------------------
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeId.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeId.java
index be6f6a0..e4932b9 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeId.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeId.java
@@ -39,7 +39,7 @@ public class NodeId implements Comparable<NodeId>
     public static final NodeId NodeIdUndefined      = makeSpecial(0xA6);
     
     private static NodeId makeSpecial(long v) {
-        // Careful of an initialzer loop (create(type, v1, v2) looks at specials).
+        // Careful of an initializer loop (create(type, v1, v2) looks at specials).
         return NodeIdFactory.createValue(SPECIAL, v);
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/ae74347f/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
----------------------------------------------------------------------
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
index 8273474..4c58f7f 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
@@ -38,6 +38,7 @@ public class NodeIdFactory
     // In-memory - always int-long
     
     // XXX Chance for a cache?
+    // See also TupleIndexRecord.
 
     private static NodeId create(NodeIdType type, int v1, long v2) {
         if ( isSpecial(type) ) {
@@ -56,12 +57,13 @@ public class NodeIdFactory
         return createNew(type, v1, v2);
     }
     
+    /** Make a NodeId of type and value - the value is assumed to be the right format for the type. */
     public static NodeId createValue(NodeIdType type, long value) {
-        // 64 bit.
         return createNew(type, 0, value);
     }
     
     private static NodeId createNew(NodeIdType type, int v1, long v2) {
+        // Create general NodeId form.
         return NodeId.createRaw(type, v1, v2);
     }
 
@@ -76,7 +78,7 @@ public class NodeIdFactory
     // ---- Create from binary.
     
     // 64 bit create
-    private static NodeId create(long value2) {
+    private static NodeId create64(long value2) {
         if ( !BitsLong.isSet(value2, 63) )
             return createPtr(value2);
         // Inline.
@@ -94,7 +96,6 @@ public class NodeIdFactory
         return NodeId.createRaw(type, v2);
     }
     
-    // Long create.
     private static NodeId create(int v1, long v2) {
         if ( !BitsInt.isSet(v1, 32) )
             return createPtrLong(v1, v2);
@@ -130,7 +131,7 @@ public class NodeIdFactory
 
     // 64 bit version
     private static NodeId decode(long value2) {
-        return NodeIdFactory.create(value2);
+        return NodeIdFactory.create64(value2);
     }
 
     /** Not relative - set at position zero */