Author: rgodfrey
Date: Wed Jun 17 00:00:58 2015
New Revision: 1685922

URL: http://svn.apache.org/r1685922
Log:
QPID-6385 : For paths that are not mapped to anything, do not return the index 
page, instead send text indicating that the caller should visit the apidocs

Added:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java
      - copied, changed from r1685835, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java
Modified:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1685922&r1=1685921&r2=1685922&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
 Wed Jun 17 00:00:58 2015
@@ -67,6 +67,7 @@ import org.apache.qpid.server.management
 import 
org.apache.qpid.server.management.plugin.filter.RedirectingAuthorisationFilter;
 import org.apache.qpid.server.management.plugin.servlet.DefinedFileServlet;
 import org.apache.qpid.server.management.plugin.servlet.FileServlet;
+import org.apache.qpid.server.management.plugin.servlet.RootServlet;
 import org.apache.qpid.server.management.plugin.servlet.rest.ApiDocsServlet;
 import org.apache.qpid.server.management.plugin.servlet.rest.LogRecordsServlet;
 import 
org.apache.qpid.server.management.plugin.servlet.rest.LoggedOnUserPreferencesServlet;
@@ -323,7 +324,7 @@ public class HttpManagement extends Abst
         root.addServlet(new ServletHolder(new SaslServlet()), "/service/sasl");
 
         root.addServlet(new ServletHolder(new 
DefinedFileServlet("index.html")), HttpManagementUtil.ENTRY_POINT_PATH);
-        root.addServlet(new ServletHolder(new 
DefinedFileServlet("index.html")), "/");
+        root.addServlet(new ServletHolder(new 
RootServlet("/","/apidocs/","index.html")), "/");
         root.addServlet(new ServletHolder(new LogoutServlet()), "/logout");
 
         root.addServlet(new ServletHolder(new 
FileServlet(DojoHelper.getDojoPath(), true)), "/dojo/dojo/*");
@@ -338,7 +339,7 @@ public class HttpManagement extends Abst
         root.addServlet(new ServletHolder(new TimeZoneServlet()), 
"/service/timezones");
         // QPID-6516
 //        root.addServlet(new ServletHolder(new LogFileListingServlet()), 
"/service/logfilenames");
-//        root.addServlet(new ServletHolder(new LogFileServlet()), 
"/service/logfile");
+//        root.addServlet(new ServletHolder(new Log FileServlet()), 
"/service/logfile");
 
         final SessionManager sessionManager = 
root.getSessionHandler().getSessionManager();
         
sessionManager.getSessionCookieConfig().setName(JSESSIONID_COOKIE_PREFIX + 
lastPort);

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java?rev=1685922&r1=1685921&r2=1685922&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java
 Wed Jun 17 00:00:58 2015
@@ -19,6 +19,7 @@ package org.apache.qpid.server.managemen
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
@@ -32,17 +33,27 @@ public class DefinedFileServlet extends
 {
 
     private static final String FILENAME_INIT_PARAMETER = "filename";
+    private final String _expectedPath;
+    private final String _apiDocsPath;
 
     private String _filename;
 
     public DefinedFileServlet()
     {
-        super();
+        this(null);
     }
 
     public DefinedFileServlet(String filename)
     {
+        this(filename, null, null);
+    }
+
+
+    public DefinedFileServlet(String filename, String expectedPath, String 
apiDocsPath)
+    {
         _filename = filename;
+        _expectedPath = expectedPath;
+        _apiDocsPath = apiDocsPath;
     }
 
     @Override
@@ -59,26 +70,43 @@ public class DefinedFileServlet extends
     @Override
     protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException
     {
-        try (OutputStream output = HttpManagementUtil.getOutputStream(request, 
response))
+        final String path = request.getServletPath();
+        if(_expectedPath == null || _expectedPath.equals(path == null ? "" : 
path))
         {
-            try(InputStream fileInput = 
getClass().getResourceAsStream("/resources/" + _filename))
+            try (OutputStream output = 
HttpManagementUtil.getOutputStream(request, response))
             {
-                if (fileInput != null)
+                try (InputStream fileInput = 
getClass().getResourceAsStream("/resources/" + _filename))
                 {
-                    byte[] buffer = new byte[1024];
-                    response.setStatus(HttpServletResponse.SC_OK);
-                    int read = 0;
-
-                    while ((read = fileInput.read(buffer)) > 0)
+                    if (fileInput != null)
                     {
-                        output.write(buffer, 0, read);
+                        byte[] buffer = new byte[1024];
+                        response.setStatus(HttpServletResponse.SC_OK);
+                        int read = 0;
+
+                        while ((read = fileInput.read(buffer)) > 0)
+                        {
+                            output.write(buffer, 0, read);
+                        }
+                    }
+                    else
+                    {
+                        response.sendError(HttpServletResponse.SC_NOT_FOUND, 
"unknown file: " + _filename);
                     }
                 }
-                else
-                {
-                    response.sendError(HttpServletResponse.SC_NOT_FOUND, 
"unknown file: " + _filename);
-                }
             }
         }
+        else
+        {
+            try (OutputStream output = 
HttpManagementUtil.getOutputStream(request, response))
+            {
+                final String notFoundMessage = "Unknown path '"
+                                 + request.getServletPath()
+                                 + "'. Please read the api docs at "
+                                 + request.getScheme()
+                                 + "://" + request.getServerName() + ":" + 
request.getServerPort() + _apiDocsPath + "\n";
+                output.write(notFoundMessage.getBytes(StandardCharsets.UTF_8));
+            }
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+        }
     }
 }

Copied: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java
 (from r1685835, 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java)
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java?p2=qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java&p1=qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java&r1=1685835&r2=1685922&rev=1685922&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/DefinedFileServlet.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java
 Wed Jun 17 00:00:58 2015
@@ -19,8 +19,8 @@ package org.apache.qpid.server.managemen
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 
-import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -28,57 +28,68 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.qpid.server.management.plugin.HttpManagementUtil;
 
-public class DefinedFileServlet extends HttpServlet
+public class RootServlet extends HttpServlet
 {
 
-    private static final String FILENAME_INIT_PARAMETER = "filename";
+    private final String _expectedPath;
+    private final String _apiDocsPath;
+    private final String _filename;
 
-    private String _filename;
 
-    public DefinedFileServlet()
-    {
-        super();
-    }
-
-    public DefinedFileServlet(String filename)
+    public RootServlet(String expectedPath, String apiDocsPath, String 
filename)
     {
+        _expectedPath = expectedPath;
+        _apiDocsPath = apiDocsPath;
         _filename = filename;
     }
 
     @Override
     public void init() throws ServletException
     {
-        ServletConfig config = getServletConfig();
-        String fileName = config.getInitParameter(FILENAME_INIT_PARAMETER);
-        if (fileName != null && !"".equals(fileName))
-        {
-            _filename = fileName;
-        }
+
     }
 
     @Override
     protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException
     {
-        try (OutputStream output = HttpManagementUtil.getOutputStream(request, 
response))
+        final String path = request.getServletPath();
+        if(_expectedPath == null || _expectedPath.equals(path == null ? "" : 
path))
         {
-            try(InputStream fileInput = 
getClass().getResourceAsStream("/resources/" + _filename))
+            try (OutputStream output = 
HttpManagementUtil.getOutputStream(request, response))
             {
-                if (fileInput != null)
+                try (InputStream fileInput = 
getClass().getResourceAsStream("/resources/" + _filename))
                 {
-                    byte[] buffer = new byte[1024];
-                    response.setStatus(HttpServletResponse.SC_OK);
-                    int read = 0;
-
-                    while ((read = fileInput.read(buffer)) > 0)
+                    if (fileInput != null)
                     {
-                        output.write(buffer, 0, read);
+                        byte[] buffer = new byte[1024];
+                        response.setStatus(HttpServletResponse.SC_OK);
+                        int read = 0;
+
+                        while ((read = fileInput.read(buffer)) > 0)
+                        {
+                            output.write(buffer, 0, read);
+                        }
+                    }
+                    else
+                    {
+                        response.sendError(HttpServletResponse.SC_NOT_FOUND, 
"unknown file: " + _filename);
                     }
                 }
-                else
-                {
-                    response.sendError(HttpServletResponse.SC_NOT_FOUND, 
"unknown file: " + _filename);
-                }
             }
         }
+        else
+        {
+
+            try (OutputStream output = 
HttpManagementUtil.getOutputStream(request, response))
+            {
+                final String notFoundMessage = "Unknown path '"
+                                 + request.getServletPath()
+                                 + "'. Please read the api docs at "
+                                 + request.getScheme()
+                                 + "://" + request.getServerName() + ":" + 
request.getServerPort() + _apiDocsPath + "\n";
+                output.write(notFoundMessage.getBytes(StandardCharsets.UTF_8));
+            }
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+        }
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to