Fix broken stylesheet URL in XML based manager status output.
authorrjung <rjung@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 6 Apr 2011 21:31:25 +0000 (21:31 +0000)
committerrjung <rjung@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 6 Apr 2011 21:31:25 +0000 (21:31 +0000)
The URLs of the status base pages have a varying number
of path segments, so a relativ URL to the stylesheet
does no longer work.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1089638 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/manager/Constants.java
java/org/apache/catalina/manager/StatusManagerServlet.java
java/org/apache/catalina/manager/StatusTransformer.java
webapps/docs/changelog.xml

index c0b6842..1f644d9 100644 (file)
@@ -210,7 +210,7 @@ public class Constants {
         "<?xml version=\"1.0\" encoding=\""+CHARSET+"\"?>";
 
     public static final String XML_STYLE =
-        "<?xml-stylesheet type=\"text/xsl\" href=\"xform.xsl\" ?>";
+        "<?xml-stylesheet type=\"text/xsl\" href=\"{0}/xform.xsl\" ?>\n";
 
 }
 
index 4bf6051..092db09 100644 (file)
@@ -199,10 +199,12 @@ public class StatusManagerServlet
             completeStatus = true;
         }
         // use StatusTransformer to output status
-        StatusTransformer.writeHeader(writer,mode);
+        Object[] args = new Object[1];
+        args[0] = request.getContextPath();
+        StatusTransformer.writeHeader(writer,args,mode);
 
         // Body Header Section
-        Object[] args = new Object[2];
+        args = new Object[2];
         args[0] = request.getContextPath();
         if (completeStatus) {
             args[1] = sm.getString("statusServlet.complete");
index 4f84fb0..14265bf 100644 (file)
@@ -64,17 +64,18 @@ public class StatusTransformer {
      * Write an HTML or XML header.
      *
      * @param writer the PrintWriter to use
+     * @param args Path prefix for URLs
      * @param mode - 0 = HTML header, 1 = XML declaration
      *
      */
-    public static void writeHeader(PrintWriter writer, int mode) {
+    public static void writeHeader(PrintWriter writer, Object[] args, int mode) {
         if (mode == 0){
             // HTML Header Section
             writer.print(Constants.HTML_HEADER_SECTION);
         } else if (mode == 1){
             writer.write(Constants.XML_DECLARATION);
-            writer.write
-                (Constants.XML_STYLE);
+            writer.print(MessageFormat.format
+                     (Constants.XML_STYLE, args));
             writer.write("<status>");
         }
     }
index b525a40..1ce5c5d 100644 (file)
@@ -73,6 +73,9 @@
         conf/catalina.policy file when the documentation is built, rather
         than maintaining a copy of its content. (kkolinko)
       </update>
+      <fix>
+        Fix broken stylesheet URL in XML based manager status output. (rjung)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Other">