Author: rgodfrey
Date: Tue Jul  7 23:36:36 2015
New Revision: 1689776

URL: http://svn.apache.org/r1689776
Log:
QPID-6626 : Address review comments by [~k-wall]

Added:
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/RewriteServlet.java
   (with props)
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
    
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.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=1689776&r1=1689775&r2=1689776&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
 Tue Jul  7 23:36:36 2015
@@ -305,10 +305,13 @@ public class HttpManagement extends Abst
         addRestServlet(root, Broker.class);
 
         ServletHolder apiDocsServlet = new ServletHolder(new 
ApiDocsServlet(getModel(), Collections.<String>emptyList()));
-        root.addServlet(apiDocsServlet, "/apidocs");
-        root.addServlet(apiDocsServlet, "/apidocs/");
-        root.addServlet(apiDocsServlet, "/apidocs/latest");
-        root.addServlet(apiDocsServlet, "/apidocs/latest/");
+        final ServletHolder rewriteSerlvet = new ServletHolder(new 
RewriteServlet("^(.*)$", "$1/"));
+        for(String path : new String[]{"/apidocs", "/apidocs/latest", 
"/apidocs/"+getLatestSupportedVersion()})
+        {
+            root.addServlet(rewriteSerlvet, path);
+            root.addServlet(apiDocsServlet, path + "/");
+        }
+
         root.addServlet(new ServletHolder(new UserPreferencesServlet()), 
"/service/userpreferences/*");
         root.addServlet(new ServletHolder(new 
LoggedOnUserPreferencesServlet()), "/service/preferences");
         root.addServlet(new ServletHolder(new StructureServlet()), 
"/service/structure");
@@ -519,7 +522,13 @@ public class HttpManagement extends Abst
 
     private List<String> getSupportedRestApiVersions()
     {
-        return 
Collections.singletonList(String.valueOf(BrokerModel.MODEL_MAJOR_VERSION));
+        // TODO - actually support multiple versions and add those versions to 
the list
+        return Collections.singletonList(getLatestSupportedVersion());
+    }
+
+    private String getLatestSupportedVersion()
+    {
+        return "v"+String.valueOf(BrokerModel.MODEL_MAJOR_VERSION);
     }
 
     private void logOperationalListenMessages(Collection<Port<?>> ports)

Added: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/RewriteServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/RewriteServlet.java?rev=1689776&view=auto
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/RewriteServlet.java
 (added)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/RewriteServlet.java
 Tue Jul  7 23:36:36 2015
@@ -0,0 +1,53 @@
+/*
+ *
+ * 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.qpid.server.management.plugin;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class RewriteServlet extends HttpServlet
+{
+    private final String _pattern;
+    private final String _replacement;
+
+    public RewriteServlet(final String pattern, final String replacement)
+    {
+        _pattern = pattern;
+        _replacement = replacement;
+
+    }
+
+    @Override
+    protected void service(final HttpServletRequest req, final 
HttpServletResponse resp)
+            throws ServletException, IOException
+    {
+        String location = req.getRequestURI().replaceAll(_pattern, 
_replacement);
+        if(req.getQueryString() != null)
+        {
+            location += "?" + req.getQueryString();
+        }
+        resp.sendRedirect(location);
+    }
+}

Propchange: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/RewriteServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1689776&r1=1689775&r2=1689776&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
 Tue Jul  7 23:36:36 2015
@@ -97,6 +97,7 @@ public class DefinedFileServlet extends
         }
         else
         {
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
             try (OutputStream output = 
HttpManagementUtil.getOutputStream(request, response))
             {
                 final String notFoundMessage = "Unknown path '"
@@ -106,7 +107,6 @@ public class DefinedFileServlet extends
                                  + "://" + request.getServerName() + ":" + 
request.getServerPort() + _apiDocsPath + "\n";
                 output.write(notFoundMessage.getBytes(StandardCharsets.UTF_8));
             }
-            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
         }
     }
 }

Modified: 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.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?rev=1689776&r1=1689775&r2=1689776&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/RootServlet.java
 Tue Jul  7 23:36:36 2015
@@ -80,6 +80,7 @@ public class RootServlet extends HttpSer
         else
         {
 
+            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
             try (OutputStream output = 
HttpManagementUtil.getOutputStream(request, response))
             {
                 final String notFoundMessage = "Unknown path '"
@@ -89,7 +90,6 @@ public class RootServlet extends HttpSer
                                  + "://" + 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