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("&", "&");
+ x = x.replaceAll("<", "<");
+ x = x.replaceAll(">", ">");
+ 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("&", "&") ;
- x = x.replaceAll("<", "<") ;
- x = x.replaceAll(">", ">") ;
- 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>