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/11/01 20:04:06 UTC

[6/8] jena git commit: Simplify dump servlet; dft to not added to a server

Simplify dump servlet; dft to not added to a server


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

Branch: refs/heads/master
Commit: 59d1c0d6e17b4b39b8a17c36b3f60402f63665e3
Parents: 85be62d
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Oct 26 14:44:16 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Oct 27 16:36:39 2018 +0100

----------------------------------------------------------------------
 .../jena/fuseki/ctl/ActionDumpRequest.java      | 272 +++++++++++++++++
 .../org/apache/jena/fuseki/mgt/DumpServlet.java | 300 -------------------
 .../src/main/webapp/WEB-INF/web.xml             |  10 -
 3 files changed, 272 insertions(+), 310 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/59d1c0d6/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/ctl/ActionDumpRequest.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/ctl/ActionDumpRequest.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/ctl/ActionDumpRequest.java
new file mode 100644
index 0000000..88bbdc7
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/ctl/ActionDumpRequest.java
@@ -0,0 +1,272 @@
+/*
+ * 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.
+ */
+
+/** A servlet that dumps its request
+ */
+
+// Could be neater - much, much neater!
+
+package org.apache.jena.fuseki.ctl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.jena.atlas.io.IO;
+import org.apache.jena.ext.com.google.common.collect.Multimap;
+import org.apache.jena.fuseki.system.FusekiNetLib;
+
+/** Dump the HTTP request */
+public class ActionDumpRequest extends HttpServlet {
+    public ActionDumpRequest() {}
+
+    @Override
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
+        doPrintInformation(req, resp);
+    }
+    
+    @Override
+    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
+        doPrintInformation(req, resp);
+    }
+
+    public void doPrintInformation(HttpServletRequest req, HttpServletResponse resp) {
+        try {
+            PrintWriter out = resp.getWriter();
+            resp.setContentType("text/html");
+
+            String now = new Date().toString();
+
+            // HEAD
+            out.println("<html>");
+            out.println("<head>");
+            out.println("<Title>Dump @ " + now + "</Title>");
+            // Reduce the desire to cache it.
+            out.println("<meta CONTENT=now HTTP-EQUIV=expires>");
+            out.println("</head>");
+
+            // BODY
+            out.println("<body>");
+            out.println("<pre>");
+
+            out.println("Dump : " + now);
+            out.println();
+            out.println("==== Request");
+            out.println();
+            printRequest(out, req);
+            out.println();
+
+            out.println(">>>> Body");
+            out.println();
+            printBody(out, req);
+            out.println("<<<< Body");
+
+//            out.println("==== ServletContext");
+//            out.println();
+//            printServletContext(out, req);
+//            out.println();
+//
+//            out.println("==== Environment");
+//            out.println();
+//            printEnvironment(out, req);
+//            out.println();
+
+            out.println("</pre>");
+
+            out.println("</body>");
+            out.println("</html>");
+            out.flush();
+        } catch (IOException e) {}
+    }
+
+    // ---- Library of things to report on.
+    
+    static public void printRequest(PrintWriter pw, HttpServletRequest req) {
+        // ----Standard environment
+        pw.println("Method:                 " + req.getMethod());
+        pw.println("getContentLength:       " + Long.toString(req.getContentLengthLong()));
+        pw.println("getContentType:         " + req.getContentType());
+        pw.println("getRequestURI:          " + req.getRequestURI());
+        pw.println("getRequestURL:          " + req.getRequestURL());
+        pw.println("getContextPath:         " + req.getContextPath());
+        pw.println("getServletPath:         " + req.getServletPath());
+        pw.println("getPathInfo:            " + req.getPathInfo());
+        pw.println("getPathTranslated:      " + req.getPathTranslated());
+        pw.println("getQueryString:         " + req.getQueryString());
+        pw.println("getProtocol:            " + req.getProtocol());
+        pw.println("getScheme:              " + req.getScheme());
+        pw.println("getServerName:          " + req.getServerName());
+        pw.println("getServerPort:          " + req.getServerPort());
+        pw.println("getRemoteUser:          " + req.getRemoteUser());
+        pw.println("getRemoteAddr:          " + req.getRemoteAddr());
+        pw.println("getRemoteHost:          " + req.getRemoteHost());
+        pw.println("getRequestedSessionId:  " + req.getRequestedSessionId());
+    }
+    
+    // ---- Library of things to report on.
+    
+    static void printBody(PrintWriter pw, HttpServletRequest req) throws IOException {
+        // Destructive read of the request body.
+        BufferedReader in = req.getReader();
+        while (true) {
+            String x = in.readLine();
+            if ( x == null )
+                break;
+            x = x.replaceAll("&", "&amp;");
+            x = x.replaceAll("<", "&lt;");
+            x = x.replaceAll(">", "&gt;");
+            pw.println(x);
+        }
+    }
+
+    static void printCookies(PrintWriter pw, HttpServletRequest req) {
+        Cookie c[] = req.getCookies();
+        if ( c == null )
+            pw.println("getCookies:            <none>");
+        else {
+            for ( int i = 0 ; i < c.length ; i++ ) {
+                pw.println();
+                pw.println("Cookie:        " + c[i].getName());
+                pw.println("    value:     " + c[i].getValue());
+                pw.println("    version:   " + c[i].getVersion());
+                pw.println("    comment:   " + c[i].getComment());
+                pw.println("    domain:    " + c[i].getDomain());
+                pw.println("    maxAge:    " + c[i].getMaxAge());
+                pw.println("    path:      " + c[i].getPath());
+                pw.println("    secure:    " + c[i].getSecure());
+            }
+        }
+    }
+
+    static void printHeaders(PrintWriter pw, HttpServletRequest req) {
+        Enumeration<String> en = req.getHeaderNames();
+
+        for ( ; en.hasMoreElements() ; ) {
+            String name = en.nextElement();
+            String value = req.getHeader(name);
+            pw.println("Head: " + name + " = " + value);
+        }
+    }
+
+    // Note that doing this on a form causes the forms content (body) to be read
+    // and parsed as form variables.
+    static void printParameters(PrintWriter pw, HttpServletRequest req) {
+        Enumeration<String> en = req.getParameterNames() ;
+        for ( ; en.hasMoreElements() ; )
+        {
+            String name = en.nextElement() ;
+            String value = req.getParameter(name) ;
+            pw.println("Param: "+name + " = " + value) ;
+        }
+    }
+    
+    static void printQueryString(PrintWriter pw, HttpServletRequest req) {
+        Multimap<String, String> map = FusekiNetLib.parseQueryString(req) ;
+        for ( String name : map.keys() )
+            for ( String value : map.get(name) )
+                pw.println("Param: "+name + " = " + value) ;
+    }
+    
+    static void printLocales(PrintWriter pw, HttpServletRequest req) {
+        Enumeration<Locale> en = req.getLocales();
+        for ( ; en.hasMoreElements() ; ) {
+            String name = en.nextElement().toString();
+            pw.println("Locale: " + name);
+        }
+        pw.println();
+    }
+
+    /**
+     * <code>printEnvironment</code>
+     * 
+     * @return String that is the HTML of the System properties as name/value pairs. The
+     *         values are with single quotes independent of whether or not the value has
+     *         single quotes in it.
+     */
+    static public String printEnvironment() {
+        Properties properties = System.getProperties();
+        try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw);) {
+            Enumeration<Object> en = properties.keys();
+            while (en.hasMoreElements()) {
+                String key = en.nextElement().toString();
+                pw.println(key + ": '" + properties.getProperty(key) + "'");
+            }
+
+            pw.println();
+            return sw.toString();
+        } catch (IOException e) {
+            IO.exception(e);
+            return null;
+        }
+    }
+    
+    public String printServletContext() {
+        try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw);) {
+            ServletContext sc = getServletContext();
+            pw.println("majorVersion: '" + sc.getMajorVersion() + "'");
+            pw.println("minorVersion: '" + sc.getMinorVersion() + "'");
+            pw.println("contextName:  '" + sc.getServletContextName() + "'");
+            pw.println("servletInfo:  '" + getServletInfo() + "'");
+            pw.println("serverInfo:  '" + sc.getServerInfo() + "'");
+
+            {
+                Enumeration<String> en = sc.getInitParameterNames();
+                if ( en != null ) {
+                    pw.println("initParameters: ");
+                    while (en.hasMoreElements()) {
+                        String key = en.nextElement();
+                        pw.println(key + ": '" + sc.getInitParameter(key) + "'");
+                    }
+                }
+            }
+
+            {
+                Enumeration<String> en = sc.getAttributeNames();
+                if ( en != null ) {
+                    pw.println("attributes: ");
+                    while (en.hasMoreElements()) {
+                        String key = en.nextElement();
+                        pw.println(key + ": '" + sc.getAttribute(key) + "'");
+                    }
+                }
+            }
+            pw.println();
+
+            return sw.toString();
+        } catch (IOException e) {
+            IO.exception(e);
+            return null;
+        }
+    }
+
+    @Override
+    public String getServletInfo() {
+        return "Dump";
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/59d1c0d6/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/DumpServlet.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/DumpServlet.java b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/DumpServlet.java
deleted file mode 100644
index c9e679e..0000000
--- a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/DumpServlet.java
+++ /dev/null
@@ -1,300 +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.
- */
-
-/** A servlet that dumps its request
- */
-
-// Could be neater - much, much neater!
-package org.apache.jena.fuseki.mgt;
-
-import java.io.BufferedReader ;
-import java.io.IOException ;
-import java.io.PrintWriter ;
-import java.io.StringWriter ;
-import java.util.Date ;
-import java.util.Enumeration ;
-import java.util.Locale ;
-import java.util.Properties ;
-
-import javax.servlet.ServletContext ;
-import javax.servlet.http.Cookie ;
-import javax.servlet.http.HttpServlet ;
-import javax.servlet.http.HttpServletRequest ;
-import javax.servlet.http.HttpServletResponse ;
-
-import org.apache.jena.atlas.io.IO ;
-
-public class DumpServlet extends HttpServlet
-{
-    public DumpServlet() { }
-
-    @Override
-    public void doGet(HttpServletRequest req, HttpServletResponse resp)
-    {
-        try {
-            PrintWriter out = resp.getWriter() ;
-            resp.setContentType("text/html");
-
-            String now = new Date().toString() ;
-
-            // HEAD
-            out.println("<html>") ;
-            out.println("<head>") ;
-            out.println("<Title>Dump @ "+now+"</Title>") ;
-            // Reduce the desire to cache it.
-            out.println("<meta CONTENT=now HTTP-EQUIV=expires>") ;
-            out.println("</head>") ;
-
-            // BODY
-            out.println("<body>") ;
-            out.println("<pre>") ;
-
-            out.println("Dump : "+now);
-            out.println() ;
-            out.println("==== Request");
-            out.println() ;
-            out.print(dumpRequest(req)) ;
-            out.println() ;
-                        
-            out.println(">>>> Body");
-            out.println() ;
-            printBody(out, req) ;
-            out.println("<<<< Body");
-            
-            out.println("==== ServletContext");
-            out.println() ;
-            out.print(dumpServletContext());
-            out.println() ;
-
-            out.println("==== Environment");
-            out.println() ;
-            out.print(dumpEnvironment());
-            out.println() ;
-
-            out.println("</pre>") ;
-
-            out.println("</body>") ;
-            out.println("</html>") ;
-            out.flush() ;
-        } catch (IOException e)
-        { }
-    }
-
-    // This resets the input stream
-
-    static public String dumpRequest(HttpServletRequest req)
-    {
-        try ( StringWriter sw = new StringWriter() ;
-              PrintWriter pw = new PrintWriter(sw) ) {
-            // Standard environment
-            pw.println("Method:                 "+req.getMethod());
-            pw.println("getContentLength:       "+Long.toString(req.getContentLengthLong()));
-            pw.println("getContentType:         "+req.getContentType());
-            pw.println("getRequestURI:          "+req.getRequestURI());
-            pw.println("getRequestURL:          "+req.getRequestURL());
-            pw.println("getContextPath:         "+req.getContextPath());
-            pw.println("getServletPath:         "+req.getServletPath());
-            pw.println("getPathInfo:            "+req.getPathInfo());
-            pw.println("getPathTranslated:      "+req.getPathTranslated());
-            pw.println("getQueryString:         "+req.getQueryString());
-            pw.println("getProtocol:            "+req.getProtocol());
-            pw.println("getScheme:              "+req.getScheme());
-            pw.println("getServerName:          "+req.getServerName());
-            pw.println("getServerPort:          "+req.getServerPort());
-            pw.println("getRemoteUser:          "+req.getRemoteUser());
-            pw.println("getRemoteAddr:          "+req.getRemoteAddr());
-            pw.println("getRemoteHost:          "+req.getRemoteHost());
-            pw.println("getRequestedSessionId:  "+req.getRequestedSessionId());
-            {
-                Cookie c[] = req.getCookies() ;
-                if ( c == null )
-                    pw.println("getCookies:            <none>");
-                else
-                {
-                    for ( int i = 0 ; i < c.length ; i++ )            
-                    {
-                        pw.println("Cookie:        "+c[i].getName());
-                        pw.println("    value:     "+c[i].getValue());
-                        pw.println("    version:   "+c[i].getVersion());
-                        pw.println("    comment:   "+c[i].getComment());
-                        pw.println("    domain:    "+c[i].getDomain());
-                        pw.println("    maxAge:    "+c[i].getMaxAge());
-                        pw.println("    path:      "+c[i].getPath());
-                        pw.println("    secure:    "+c[i].getSecure());
-                        pw.println();
-                    }
-                }
-            }
-            
-            {
-                // To do: create a string for the output so can send to console and return it.
-                Enumeration<String> en = req.getHeaderNames() ;
-
-                for ( ; en.hasMoreElements() ; )
-                {
-                    String name = en.nextElement() ;
-                    String value = req.getHeader(name) ;
-                    pw.println("Head: "+name + " = " + value) ;
-                }
-            }
-            
-            Enumeration<String> en2 = req.getAttributeNames() ;
-            if ( en2.hasMoreElements() )
-                pw.println();
-            for ( ; en2.hasMoreElements() ; )
-            {
-                String name = en2.nextElement() ;
-                String value = req.getAttribute(name).toString() ;
-                pw.println("Attr: "+name + " = " + value) ;
-            }
-
-            // Note that doing this on a form causes the forms content (body) to be read
-            // and parsed as form variables.
-//            en = req.getParameterNames() ;
-//            if ( en.hasMoreElements() )
-//                pw.println();
-//            for ( ; en.hasMoreElements() ; )
-//            {
-//                String name = (String)en.nextElement() ;
-//                String value = req.getParameter(name) ;
-//                pw.println("Param: "+name + " = " + value) ;
-//            }
-
-
-            
-//            MultiMap<String, String> map = WebLib.parseQueryString(req) ;
-//            for ( String name : map.keys() )
-//                for ( String value : map.get(name) )
-//                    pw.println("Param: "+name + " = " + value) ;
-            
-            Enumeration<Locale> en = req.getLocales() ;
-            if ( en.hasMoreElements() )
-                pw.println();
-            for ( ; en.hasMoreElements() ; )
-            {
-                String name = en.nextElement().toString() ;
-                pw.println("Locale: "+name) ;
-            }
-
-            pw.println() ;
-            //printBody(pw, req) ;
-
-            return sw.toString() ;
-        } catch (IOException e) { return null ; }
-    }
-
-    static void printBody(PrintWriter pw, HttpServletRequest req) throws IOException
-    {
-        BufferedReader in = req.getReader() ;
-        if ( req.getContentLength() > 0 )
-            // Need +2 because last line may not have a CR/LF on it.
-            in.mark(req.getContentLength()+2) ;
-        else
-            // This is a dump - try to do something that works, even if inefficient.
-            in.mark(100*1024) ;
-
-        while(true)
-        {
-            String x = in.readLine() ;
-            if ( x == null )
-                break ;
-            x = x.replaceAll("&", "&amp;") ;
-            x = x.replaceAll("<", "&lt;") ;
-            x = x.replaceAll(">", "&gt;") ;
-            pw.println(x) ;
-        }
-        try { in.reset() ; } catch (IOException e) { System.out.println("DumpServlet: Reset of content failed: "+e) ; }
-    }
-    
-    /**
-     * <code>dumpEnvironment</code>
-     * @return String that is the HTML of the System properties as name/value pairs.
-     * The values are with single quotes independent of whether or not the value has
-     * single quotes in it.
-     */
-    static public String dumpEnvironment()
-    {
-        Properties properties = System.getProperties();
-        try ( StringWriter sw = new StringWriter() ;
-            PrintWriter pw = new PrintWriter(sw) ; ) {
-            Enumeration<Object> en = properties.keys();
-            while(en.hasMoreElements())
-            {
-                String key = en.nextElement().toString();
-                pw.println(key+": '"+properties.getProperty(key)+"'");
-            }
-
-            pw.println() ;
-            return sw.toString() ;
-        } catch (IOException e) { IO.exception(e); return null ; }
-    }
-
-    public String dumpServletContext()
-    {
-        try ( StringWriter sw = new StringWriter() ;
-              PrintWriter pw = new PrintWriter(sw) ; ) {
-            ServletContext sc =  getServletContext();
-            pw.println("majorVersion: '"+sc.getMajorVersion()+"'");
-            pw.println("minorVersion: '"+sc.getMinorVersion()+"'");
-            pw.println("contextName:  '"+sc.getServletContextName()+"'");
-            pw.println("servletInfo:  '"+getServletInfo()+"'");
-            pw.println("serverInfo:  '"+sc.getServerInfo()+"'");
-    
-            {
-                Enumeration<String> en = sc.getInitParameterNames();
-                if (en != null) {
-                    pw.println("initParameters: ");
-                    while(en.hasMoreElements())
-                    {
-                        String key = en.nextElement();
-                        pw.println(key+": '"+sc.getInitParameter(key)+"'");
-                    }
-                }
-            }
-            
-            {
-                Enumeration<String> en = sc.getAttributeNames();
-                if (en != null) {
-                    pw.println("attributes: ");
-                    while(en.hasMoreElements())
-                    {
-                        String key = en.nextElement();
-                        pw.println(key+": '"+sc.getAttribute(key)+"'");
-                    }
-                }
-            }
-            pw.println() ;
-         
-             return sw.toString() ;
-        } catch (IOException e) { IO.exception(e); return null ; }
-    }
-
-    
-    @Override
-    public void doPost(HttpServletRequest req, HttpServletResponse resp)
-    {
-        doGet(req, resp) ;
-    }
-
-
-    @Override
-    public String getServletInfo()
-    {
-        return "Dump";
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/59d1c0d6/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml b/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
index 0737e76..7de2f92 100644
--- a/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/jena-fuseki2/jena-fuseki-webapp/src/main/webapp/WEB-INF/web.xml
@@ -222,21 +222,11 @@
   <!-- Admin controls-->
 
   <servlet>
-    <servlet-name>DumpServlet</servlet-name>
-    <servlet-class>org.apache.jena.fuseki.mgt.DumpServlet</servlet-class>
-  </servlet>
-
-  <servlet>
     <servlet-name>ServerStatusServlet</servlet-name>
     <servlet-class>org.apache.jena.fuseki.mgt.ActionServerStatus</servlet-class>
   </servlet>
 
   <servlet-mapping>
-    <servlet-name>DumpServlet</servlet-name>
-    <url-pattern>/$/dump</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
     <servlet-name>ServerStatusServlet</servlet-name>
     <url-pattern>/$/server</url-pattern>
   </servlet-mapping>