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/04/13 13:20:35 UTC

jena git commit: Delete code now new Fuseki dispatch has been released.

Repository: jena
Updated Branches:
  refs/heads/master d30b3c041 -> 77b313d50


Delete code now new Fuseki dispatch has been released.

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

Branch: refs/heads/master
Commit: 77b313d50946299c4d0d95b07c4bf193cf190144
Parents: d30b3c0
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Apr 13 14:20:18 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Apr 13 14:20:18 2018 +0100

----------------------------------------------------------------------
 .../jena/fuseki/servlets/ActionService.java     |  10 -
 .../servlets/SPARQL_UberServlet_Original.java   | 408 -------------------
 2 files changed, 418 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/77b313d5/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 cc247ba..230c5fd 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
@@ -74,16 +74,6 @@ public abstract class ActionService extends ActionBase {
         action.setRequest(dataAccessPoint, dSrv);
         String endpointName = mapRequestToOperation(action, dataAccessPoint);
 
-        if ( false ) {
-            // DELETE when SPARQL_UberServlet goes.
-            // Old dispatch via SPARQL_UberServlet.executeAction override.
-            SPARQL_UberServlet_Original dummy = null;
-            Endpoint op = dSrv.getEndpoint(endpointName);
-            action.setEndpoint(op, endpointName);
-            executeAction(action);
-            return;
-        }
-
         // ServiceRouter dispatch
         Operation operation = null;
         if ( !endpointName.isEmpty() ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/77b313d5/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet_Original.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet_Original.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet_Original.java
deleted file mode 100644
index 142ba0c..0000000
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet_Original.java
+++ /dev/null
@@ -1,408 +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.fuseki.servlets;
-
-import static java.lang.String.format ;
-import static org.apache.jena.riot.WebContent.contentTypeSPARQLQuery ;
-import static org.apache.jena.riot.WebContent.contentTypeSPARQLUpdate ;
-
-import java.io.IOException ;
-import java.util.List ;
-
-import javax.servlet.ServletException ;
-import javax.servlet.http.HttpServletRequest ;
-import javax.servlet.http.HttpServletResponse ;
-
-import org.apache.jena.atlas.web.MediaType ;
-import org.apache.jena.fuseki.DEF ;
-import org.apache.jena.fuseki.Fuseki ;
-import org.apache.jena.fuseki.FusekiException ;
-import org.apache.jena.fuseki.conneg.ConNeg ;
-import org.apache.jena.fuseki.server.* ;
-import org.apache.jena.riot.web.HttpNames ;
-
-// NOT USED
-//   Retained during migration to the new router servlet.
-//   Delete when that is stable.
-
-/** This servlet can 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 dataset and
- *  ?query and ?update directly on a dataset.)
- */
-public abstract class SPARQL_UberServlet_Original extends ActionService
-{
-    protected abstract boolean allowQuery(HttpAction action) ;
-    protected abstract boolean allowUpdate(HttpAction action) ;
-    protected abstract boolean allowREST_R(HttpAction action) ;
-    protected abstract boolean allowREST_W(HttpAction action) ;
-    protected abstract boolean allowQuadsR(HttpAction action) ;
-    protected abstract boolean allowQuadsW(HttpAction action) ;
-
-    public static class ReadOnly extends SPARQL_UberServlet_Original
-    {
-        public ReadOnly()    { super() ; }
-        @Override protected boolean allowQuery(HttpAction action)    { return true ; }
-        @Override protected boolean allowUpdate(HttpAction action)   { return false ; }
-        @Override protected boolean allowREST_R(HttpAction action)   { return true ; }
-        @Override protected boolean allowREST_W(HttpAction action)   { return false ; }
-        @Override protected boolean allowQuadsR(HttpAction action)   { return true ; }
-        @Override protected boolean allowQuadsW(HttpAction action)   { return false ; }
-    }
-
-    public static class ReadWrite extends SPARQL_UberServlet_Original
-    {
-        public ReadWrite()    { super() ; }
-        @Override protected boolean allowQuery(HttpAction action)    { return true ; }
-        @Override protected boolean allowUpdate(HttpAction action)   { return true ; }
-        @Override protected boolean allowREST_R(HttpAction action)   { return true ; }
-        @Override protected boolean allowREST_W(HttpAction action)   { return true ; }
-        @Override protected boolean allowQuadsR(HttpAction action)   { return true ; }
-        @Override protected boolean allowQuadsW(HttpAction action)   { return true ; }
-    }
-
-    public static class AccessByConfig extends SPARQL_UberServlet_Original
-    {
-        public AccessByConfig()    { super() ; }
-        @Override protected boolean allowQuery(HttpAction action)    { return isEnabled(action, Operation.Query) ; }
-        @Override protected boolean allowUpdate(HttpAction action)   { return isEnabled(action, Operation.Update) ; }
-        @Override protected boolean allowREST_R(HttpAction action)   { return isEnabled(action, Operation.GSP_R) || isEnabled(action, Operation.GSP_RW) ; }
-        @Override protected boolean allowREST_W(HttpAction action)   { return isEnabled(action, Operation.GSP_RW) ; }
-        @Override protected boolean allowQuadsR(HttpAction action)   { return isEnabled(action, Operation.Quads_R) || isEnabled(action, Operation.Quads_RW) ; }
-        @Override protected boolean allowQuadsW(HttpAction action)   { 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.
-        private boolean isEnabled(HttpAction action, Operation operation) {
-            // Disregard the operation name of the action
-            DataService dSrv = action.getDataService() ;
-            if ( dSrv == null )
-                return false;
-            return ! dSrv.getEndpoints(operation).isEmpty() ;
-        }
-    }
-
-    /* This can be used for a single servlet for everything (über-servlet)
-     *
-     * It can check for a request that looks like a service request and passes it on.
-     * This takes precedence over direct naming.
-     */
-
-    private final ActionService queryServlet    = new SPARQL_QueryDataset() ;
-    private final ActionService updateServlet   = new SPARQL_Update() ;
-    private final ActionService uploadServlet   = new SPARQL_Upload() ;
-    private final ActionService gspServlet_R    = new SPARQL_GSP_R() ;
-    private final ActionService gspServlet_RW   = new SPARQL_GSP_RW() ;
-    private final ActionService restQuads_R     = new REST_Quads_R() ;
-    private final ActionService restQuads_RW    = new REST_Quads_RW() ;
-
-    public SPARQL_UberServlet_Original() { super(); }
-
-    private String getEPName(String dsname, List<String> endpoints) {
-        if (endpoints == null || endpoints.size() == 0)
-            return null ;
-        String x = endpoints.get(0) ;
-        if ( ! dsname.endsWith("/") )
-            x = dsname+"/"+x ;
-        else
-            x = dsname+x ;
-        return x ;
-    }
-
-    // These calls should not happen because we hook in at executeAction
-    @Override protected void validate(HttpAction action) { throw new FusekiException("Call to SPARQL_UberServlet.validate") ; }
-    @Override protected void perform(HttpAction action)  { throw new FusekiException("Call to SPARQL_UberServlet.perform") ; }
-
-    /** Map request to uri in the registry.
-     *  null means no mapping done
-     */
-    @Override
-    protected String mapRequestToDataset(HttpAction action) {
-        String uri = ActionLib.removeContextPath(action) ;
-        return ActionLib.mapRequestToDatasetLongest$(uri, action.getDataAccessPointRegistry()) ;
-    }
-
-    /** Intercept the processing cycle at the point where the action has been set up,
-     *  the dataset target decided but no validation or execution has been done,
-     *  nor any stats have been done.
-     */
-    @Override
-    protected void executeAction(HttpAction action) {
-        
-        // DEBUG: DataAccessPointRegistry.print("UberServlet ");
-        
-        long id = action.id ;
-        HttpServletRequest request = action.request ;
-        HttpServletResponse response = action.response ;
-        String actionURI = action.getActionURI() ;            // No context path
-        String method = request.getMethod() ;
-
-        DataAccessPoint desc = action.getDataAccessPoint() ;
-        DataService dSrv = action.getDataService() ;
-
-//        if ( ! dSrv.isActive() )
-//            ServletOps.error(HttpSC.SERVICE_UNAVAILABLE_503, "Dataset not currently active");
-
-        // Part after the DataAccessPoint (dataset) name.
-        String trailing = findTrailing(actionURI, desc.getName()) ;
-        String qs = request.getQueryString() ;
-
-        boolean hasParams = request.getParameterMap().size() > 0 ;
-
-        // Is it a query or update because of a ?query= , ?request= parameter? 
-        // Test for parameters - includes HTML forms.
-        boolean isQuery           = request.getParameter(HttpNames.paramQuery) != null ;
-        // Include old name "request="
-        boolean isUpdate          = request.getParameter(HttpNames.paramUpdate) != null || request.getParameter(HttpNames.paramRequest) != null ;
-
-        boolean hasParamGraph           = request.getParameter(HttpNames.paramGraph) != null ;
-        boolean hasParamGraphDefault    = request.getParameter(HttpNames.paramGraphDefault) != null ;
-
-        boolean hasTrailing = ( trailing.length() != 0 ) ;
-        
-        String ct = request.getContentType() ;
-        String charset = request.getCharacterEncoding() ;
-
-        MediaType mt = null ;
-        if ( ct != null ) {
-            // Parse it.
-            mt = MediaType.create(ct, charset) ;
-            // Another way to send queries and updates is with the content-type. 
-            if ( contentTypeSPARQLQuery.equalsIgnoreCase(ct) )
-                isQuery = true ;
-            else if ( contentTypeSPARQLUpdate.equalsIgnoreCase(ct) )
-                isUpdate = true ;
-        }
-            
-        if (action.log.isInfoEnabled() ) {
-            //String cxt = action.getContextPath() ;
-            action.log.info(format("[%d] %s %s :: '%s' :: %s ? %s", id, method, desc.getName(), trailing, (mt==null?"<none>":mt), (qs==null?"":qs))) ;
-        }
-        
-        if ( !hasTrailing ) {
-            // Nothing after the DataAccessPoint i.e. Dataset by name.
-            // Action on the dataset itself. This can be:
-            //
-            //   http://localhost:3030/ds?query=
-            //   http://localhost:3030/ds and a content type of "applicatiopn/sparql-query"
-            //
-            //   http://localhost:3030/ds?update=
-            //   http://localhost:3030/ds and a content type of "applicatiopn/sparql-update"
-            //
-            //   http://localhost:3030/ds?default ?graph=  GSP
-            //
-            //   http://localhost:3030/ds   REST quads action on the dataset itself.
-            if ( isQuery ) {
-                if ( !allowQuery(action) )
-                    ServletOps.errorMethodNotAllowed("SPARQL query : "+method) ;
-                executeRequest(action, queryServlet) ;
-                return ;
-            }
-
-            if ( isUpdate ) {
-                // SPARQL Update
-                if ( !allowUpdate(action) )
-                    ServletOps.errorMethodNotAllowed("SPARQL update : "+method) ;
-                // This will deal with using GET.
-                executeRequest(action, updateServlet) ;
-                return ;
-            }
-
-            // ?graph=, ?default
-            if ( hasParamGraph || hasParamGraphDefault ) {
-                doGraphStoreProtocol(action) ;
-                return ;
-            }
-
-            if ( hasParams ) {
-                // Unrecognized ?key=value
-                ServletOps.errorBadRequest("Malformed request") ;
-            }
-            
-            // REST dataset.
-            boolean isGET = method.equals(HttpNames.METHOD_GET) ;
-            boolean isHEAD = method.equals(HttpNames.METHOD_HEAD) ;
-
-            // Check enabled.
-            if ( isGET || isHEAD ) {
-                if ( allowQuadsR(action) )
-                    restQuads_R.executeLifecycle(action) ;
-                else
-                    ServletOps.errorMethodNotAllowed(method) ;
-                return ;
-            }
-            
-            if ( allowQuadsW(action) )
-                restQuads_RW.executeLifecycle(action) ;
-            else
-                ServletOps.errorMethodNotAllowed("Read-only dataset : "+method) ;
-            return ;
-        }
-
-        // Has trailing path name => service or direct naming GSP.
-        
-        final boolean checkForPossibleService = true ;
-        if ( checkForPossibleService && action.getEndpoint() != null ) {
-            // There is a trailing part.
-            // Check it's not the same name as a registered service.
-            // If so, dispatch to that service.
-            if ( serviceDispatch(action, Operation.Query, queryServlet) ) return ;
-            if ( serviceDispatch(action, Operation.Update, updateServlet) ) return ;
-            if ( serviceDispatch(action, Operation.Upload, uploadServlet) ) return ;
-            if ( hasParams ) {
-                if ( serviceDispatch(action, Operation.GSP_R, gspServlet_R) ) return ;
-                if ( serviceDispatch(action, Operation.GSP_RW, gspServlet_RW) ) return ;
-            } else {
-                // No parameters - do as a quads operation on the dataset.
-                if ( serviceDispatch(action, Operation.GSP_R, restQuads_R) ) return ;
-                if ( serviceDispatch(action, Operation.GSP_RW, restQuads_RW) ) return ;
-            }
-            if ( serviceDispatch(action, Operation.Quads_RW, restQuads_RW) ) return ;
-            if ( serviceDispatch(action, Operation.Quads_R, restQuads_R) ) return ;
-        }
-        // There is a trailing part - params are illegal by this point.
-        if ( hasParams )
-            // ?? Revisit to include query-on-one-graph
-            //errorBadRequest("Can't invoke a query-string service on a direct named graph") ;
-            ServletOps.errorNotFound("Not found: dataset='"+printName(desc.getName())+
-                                     "' service='"+printName(trailing)+
-                                     "' query string=?"+qs);
-
-        // There is a trailing part - not a service, no params ==> GSP direct naming.
-        if ( ! Fuseki.GSP_DIRECT_NAMING )
-            ServletOps.errorNotFound("Not found: dataset='"+printName(desc.getName())+"' service='"+printName(trailing)+"'");
-
-        doGraphStoreProtocol(action);
-    }
-
-    /** See if the operation is enabled for this setup.
-     * Return true if dispatched
-     */
-    private boolean serviceDispatch(HttpAction action, Operation operation, ActionService servlet) {
-        Endpoint endpoint = action.getEndpoint() ;
-        if ( endpoint == null )
-            return false ;
-        if ( ! endpoint.isType(operation) )
-            return false ;
-        // Handle OPTIONS specially.
-//        if ( action.getRequest().getMethod().equals(HttpNames.METHOD_OPTIONS) ) {
-//            // See also ServletBase.CORS_ENABLED
-//            //action.log.info(format("[%d] %s", action.id, action.getMethod())) ;
-//            setCommonHeadersForOptions(action.getResponse()) ;
-//            ServletOps.success(action);
-//            return true ;
-//        }
-        executeRequest(action, servlet) ;
-        return true ;
-    }
-    private String printName(String x) {
-        if ( x.startsWith("/") )
-            return x.substring(1) ;
-        return x ;
-    }
-
-    private void doGraphStoreProtocol(HttpAction action) {
-        // The GSP servlets handle direct and indirect naming.
-        Endpoint operation = action.getEndpoint() ;
-        String method = action.request.getMethod() ;
-
-        // Try to route to read service.
-
-        if ( HttpNames.METHOD_GET.equalsIgnoreCase(method) ||
-            HttpNames.METHOD_HEAD.equalsIgnoreCase(method) )
-        {
-            // Graphs Store Protocol, indirect naming, read operations
-            // Try to send to the R service, else drop through to RW service dispatch.
-            if ( ! allowREST_R(action))
-                ServletOps.errorForbidden("Forbidden: SPARQL Graph Store Protocol : Read operation : "+method) ;
-            executeRequest(action, gspServlet_R) ;
-            return ;
-        }
-
-        // Graphs Store Protocol, indirect naming, write (or read, though actually handled above)
-        // operations on the RW service.
-        if ( ! allowREST_W(action))
-            ServletOps.errorForbidden("Forbidden: SPARQL Graph Store Protocol : "+method) ;
-        executeRequest(action, gspServlet_RW) ;
-        return ;
-    }
-
-    private void executeRequest(HttpAction action, ActionService servlet) {
-        if ( true ) {
-            // Execute an ActionService.
-            // Bypasses HttpServlet.service to doMethod dispatch.
-            servlet.executeLifecycle(action) ;
-            return ;
-        }
-        if ( false )  {
-            // Execute by calling the whole servlet mechanism.
-            // This causes HttpServlet.service to call the appropriate doMethod.
-            // but the action, and the id, are not passed on and a ne one is created.
-            try { servlet.service(action.request, action.response) ; }
-            catch (ServletException | IOException e) {
-                ServletOps.errorOccurred(e);
-            }
-        }
-    }
-
-    protected static MediaType contentNegotationQuads(HttpAction action) {
-        MediaType mt = ConNeg.chooseContentType(action.request, DEF.quadsOffer, DEF.acceptNQuads) ;
-        if ( mt == null )
-            return null ;
-        if ( mt.getContentType() != null )
-            action.response.setContentType(mt.getContentType());
-        if ( mt.getCharset() != null )
-        action.response.setCharacterEncoding(mt.getCharset()) ;
-        return mt ;
-    }
-
-    /** Find part after the dataset name: service name or the graph (direct naming) */
-    protected String findTrailing(String uri, String dsname) {
-        if ( dsname.length() >= uri.length() )
-            return "" ;
-        return uri.substring(dsname.length()+1) ;   // Skip the separating "/"
-    }
-
-    // Route everything to "doCommon"
-    @Override
-    protected void doHead(HttpServletRequest request, HttpServletResponse response)
-    { doCommon(request, response) ; }
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response)
-    { doCommon(request, response) ; }
-
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response)
-    { doCommon(request, response) ; }
-
-    @Override
-    protected void doOptions(HttpServletRequest request, HttpServletResponse response)
-    { doCommon(request, response) ; }
-
-    @Override
-    protected void doPut(HttpServletRequest request, HttpServletResponse response)
-    { doCommon(request, response) ; }
-
-    @Override
-    protected void doDelete(HttpServletRequest request, HttpServletResponse response)
-    { doCommon(request, response) ; }
-}