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 2013/12/14 19:37:39 UTC

svn commit: r1550963 - in /jena/branches/jena-fuseki-new-ui: ./ src-dev/dev/ src-dev/webapp/ src/main/java/org/apache/jena/fuseki/server/ src/main/java/org/apache/jena/fuseki/servlets/

Author: andy
Date: Sat Dec 14 18:37:38 2013
New Revision: 1550963

URL: http://svn.apache.org/r1550963
Log:
Pull material for webapp deployment into main codebase.

Added:
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java
      - copied, changed from r1550786, jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberFilter.java
Removed:
    jena/branches/jena-fuseki-new-ui/src-dev/webapp/
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberFilter.java
Modified:
    jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
    jena/branches/jena-fuseki-new-ui/war-web.xml

Modified: jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java (original)
+++ jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java Sat Dec 14 18:37:38 2013
@@ -32,5 +32,6 @@ public class PROJECT {
     // JENA-201 - WAR Fuseki.
     //   WEB.xml
     //   ContextPath in uber dispatch.
+    //   FusekiServletContextListener
 }
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java Sat Dec 14 18:37:38 2013
@@ -18,26 +18,56 @@
 
 package org.apache.jena.fuseki.server;
 
+import javax.servlet.ServletContext ;
 import javax.servlet.ServletContextEvent ;
 import javax.servlet.ServletContextListener ;
 
+import org.apache.jena.fuseki.Fuseki ;
+import org.slf4j.Logger ;
+
 public class FusekiServletContextListener implements ServletContextListener {
+    private static Logger confLog = Fuseki.configLog ; 
+
     // This could do the initialization. 
     private final SPARQLServer sparqlServer ;
+    
+    // Embedded version.
     public FusekiServletContextListener(SPARQLServer sparqlServer) {
         this.sparqlServer = sparqlServer ;
     }
 
+    // web.xml version.
+    public FusekiServletContextListener() { sparqlServer = null ; }
+    
+    // Default.
+    static public String rootDirectory     = "/usr/share/fuseki" ;
+//    static public String staticContentDir  = rootDirectory + "/pages" ;
+    static public String configurationFile = rootDirectory + "/config-fuseki.ttl" ;
+
+    static public ServerConfig serverConfig = null ;
+    static Boolean initialized = false ;
+
     @Override
     public void contextInitialized(ServletContextEvent sce) {
-//        Fuseki.serverLog.info("contextInitialized") ;
-//        for ( DatasetRef dsRef : sparqlServer.getDatasets() )
-//            Fuseki.serverLog.info("Dataset: "+dsRef.getName()) ;
+        //confLog.info("contextInitialized");
+        ServletContext cxt = sce.getServletContext() ;
+        confLog.info(cxt.getServletContextName()) ;
+        init() ;
     }
 
     @Override
-    public void contextDestroyed(ServletContextEvent sce) {
-//        Fuseki.serverLog.info("contextDestroyed") ;
+    public void contextDestroyed(ServletContextEvent sce) {}
+
+    public static void init() {
+        if ( initialized )
+            return ;
+        synchronized(initialized)
+        {
+            if ( initialized )
+                return ;
+            Fuseki.init() ;
+            confLog.error("Unconverted code - need to find configuration");
+        }
     }
 }
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java Sat Dec 14 18:37:38 2013
@@ -32,8 +32,8 @@ import org.apache.jena.fuseki.FusekiConf
 import org.apache.jena.fuseki.FusekiException ;
 import org.apache.jena.fuseki.HttpNames ;
 import org.apache.jena.fuseki.mgt.MgtFunctions ;
+import org.apache.jena.fuseki.servlets.FusekiFilter ;
 import org.apache.jena.fuseki.servlets.SPARQL_QueryGeneral ;
-import org.apache.jena.fuseki.servlets.SPARQL_UberFilter ;
 import org.apache.jena.fuseki.servlets.SimpleVelocityServlet ;
 import org.apache.jena.fuseki.validation.DataValidator ;
 import org.apache.jena.fuseki.validation.IRIValidator ;
@@ -107,7 +107,7 @@ public class SPARQLServer {
         // registered, active datasets to the all purpose service dispatch servlet
         // SPARQL_UberServlet.
 
-        FilterHolder f = new FilterHolder(new SPARQL_UberFilter()) ;
+        FilterHolder f = new FilterHolder(new FusekiFilter()) ;
         EnumSet<DispatcherType> es = EnumSet.allOf(DispatcherType.class) ; 
         context.addFilter(f, "/*", es);
     }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java Sat Dec 14 18:37:38 2013
@@ -28,6 +28,7 @@ import javax.servlet.ServletException ;
 import javax.servlet.http.HttpServletRequest ;
 import javax.servlet.http.HttpServletResponse ;
 
+import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.HttpNames ;
 import org.apache.jena.web.HttpSC ;
@@ -47,6 +48,13 @@ public abstract class ActionBase extends
         this.log = log ;
     }
     
+    @Override 
+    public void init() {
+        Log.info(this, getServletContext().getServletContextName()) ;
+        //super.init() ;
+    }
+   
+    
     // Common framework for handling HTTP requests
     protected void doCommon(HttpServletRequest request, HttpServletResponse response)
     //throws ServletException, IOException

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java Sat Dec 14 18:37:38 2013
@@ -104,6 +104,33 @@ public class ActionLib {
         return sb.toString() ;
     }
 
+    /* 
+     * The context path can be:
+     * "" for the root context
+     * "/webapp" for named contexts
+     * so:
+     * "/dataset/server" becomes "/dataset/server"
+     * "/webapp/dataset/server" becomes "/dataset/server"
+     */
+    public static String removeContextPath(HttpAction action) {
+//        Log.info(this, "URI                     = '"+action.request.getRequestURI()) ;
+//        Log.info(this, "Context path            = '"+action.request.getContextPath()+"'") ;
+//        Log.info(this, "Servlet path            = '"+action.request.getServletPath()+"'") ;
+//        ServletContext cxt = this.getServletContext() ;
+//        Log.info(this, "ServletContext path     = '"+cxt.getContextPath()+"'") ;
+
+        String uri = action.request.getRequestURI() ;
+        String contextPath = action.request.getServletContext().getContextPath() ;
+        if ( contextPath == null )
+            return uri ;
+        if ( contextPath.isEmpty())
+            return uri ;
+        String x = uri ;
+        if ( uri.startsWith(contextPath) )
+            x = uri.substring(contextPath.length()) ;
+        //log.info("removeContext: uri = "+uri+" contextPath="+contextPath+ "--> x="+x) ;
+        return x ;
+    }
 
 }
 

Copied: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java (from r1550786, jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberFilter.java)
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java?p2=jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java&p1=jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberFilter.java&r1=1550786&r2=1550963&rev=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberFilter.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java Sat Dec 14 18:37:38 2013
@@ -31,9 +31,8 @@ import org.slf4j.Logger ;
 /** Look at all requests and see if they match a registered dataset name; 
  * if they do, pass down to the uber servlet, which can dispatch any request
  * for any service. 
- *  
  */
-public class SPARQL_UberFilter implements Filter {
+public class FusekiFilter implements Filter {
     private static Logger log = Fuseki.requestLog ; //LoggerFactory.getLogger(SomeFilter.class) ;
     private static SPARQL_UberServlet überServlet = new SPARQL_UberServlet.AccessByConfig() ;
     
@@ -41,12 +40,15 @@ public class SPARQL_UberFilter implement
     public void init(FilterConfig filterConfig) throws ServletException {}
 
     @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+        throws IOException, ServletException {
         try {
             // See SPARQL_Servlet.execCommonWorker
             HttpServletRequest req = (HttpServletRequest)request ;
             HttpServletResponse resp = (HttpServletResponse)response ;
 
+            // XXX Context path
+            
             String uri = req.getRequestURI() ;
             String datasetUri = ActionLib.mapRequestToDataset(uri) ;
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java Sat Dec 14 18:37:38 2013
@@ -122,10 +122,10 @@ public abstract class SPARQL_UberServlet
      */
     @Override
     protected String mapRequestToDataset(HttpAction action) {
-        return ActionLib.mapRequestToDatasetLongest$(action.request.getRequestURI()) ;
+        String uri = ActionLib.removeContextPath(action) ;
+        return ActionLib.mapRequestToDatasetLongest$(uri) ;
     }
     
-
     /** 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.
@@ -133,6 +133,7 @@ public abstract class SPARQL_UberServlet
     @Override
     protected void executeAction(HttpAction action)
     {
+        // XXX Worry about context path.
         long id = action.id ;
         HttpServletRequest request = action.request ;
         HttpServletResponse response = action.response ;
@@ -305,7 +306,7 @@ public abstract class SPARQL_UberServlet
         return true ;
     }
 
-    /** Find the graph (direct naming) or service name */ 
+    /** 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() )

Modified: jena/branches/jena-fuseki-new-ui/war-web.xml
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/war-web.xml?rev=1550963&r1=1550962&r2=1550963&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/war-web.xml (original)
+++ jena/branches/jena-fuseki-new-ui/war-web.xml Sat Dec 14 18:37:38 2013
@@ -11,6 +11,20 @@
     <listener-class>webapp.ServerInit</listener-class>
   </listener>
 
+  <filter>
+    <filter-name>FusekiFilter</filter-name>
+    <filter-class>org.apache.jena.fuseki.servlets.SPARQ_UberFilter</filter-class>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>FusekiFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+    <dispatcher>INCLUDE</dispatcher>
+    <dispatcher>ERROR</dispatcher>
+  </filter-mapping>
+
   <servlet>
     <servlet-name>FusekiServlet</servlet-name>
     <servlet-class>webapp.FusekiServlet</servlet-class>