[Yanel-commits] rev 20940 - in public/yanel/trunk/src: core/java/org/wyona/yanel/servlet webapp/xslt

michi at wyona.com michi at wyona.com
Sat Dec 16 17:22:01 CET 2006


Author: michi
Date: 2006-12-16 17:21:59 +0100 (Sat, 16 Dec 2006)
New Revision: 20940

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
   public/yanel/trunk/src/webapp/xslt/xmlInfo2xhtml.xsl
Log:
xml format for page info and error pages

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java	2006-12-16 00:45:27 UTC (rev 20939)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java	2006-12-16 16:21:59 UTC (rev 20940)
@@ -223,7 +223,7 @@
             Element exceptionElement = (Element) rootElement.appendChild(doc.createElement("exception"));
             exceptionElement.appendChild(doc.createTextNode(message));
 
-            setYanelOutput(response, doc);
+            setYanelOutput(request, response, doc);
             response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             return;
         }
@@ -240,7 +240,7 @@
                 Element exceptionElement = (Element) rootElement.appendChild(doc.createElement("exception"));
                 exceptionElement.appendChild(doc.createTextNode(message));
 
-                setYanelOutput(response, doc);
+                setYanelOutput(request, response, doc);
                 response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                 return;
             }
@@ -272,7 +272,7 @@
                             exceptionElement.appendChild(doc.createTextNode(message));
                             exceptionElement.setAttribute("status", "404");
                             response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
-                            setYanelOutput(response, doc);
+                            setYanelOutput(request, response, doc);
                             return;
                         } catch(Exception e) {
                             log.error(e.getMessage(), e);
@@ -282,7 +282,7 @@
                             exceptionElement.appendChild(doc.createTextNode(message));
                             exceptionElement.setAttribute("status", "500");
                             response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                            setYanelOutput(response, doc);
+                            setYanelOutput(request, response, doc);
                             return;
                         }
                     } else if (ResourceAttributeHelper.hasAttributeImplemented(res, "Viewable", "2")) {
@@ -326,7 +326,7 @@
                 String message = e.toString();
                 Element exceptionElement = (Element) rootElement.appendChild(doc.createElement("exception"));
                 exceptionElement.appendChild(doc.createTextNode(message));
-                setYanelOutput(response, doc);
+                setYanelOutput(request, response, doc);
                 response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                 return;
             }
@@ -353,7 +353,7 @@
                 log.error("DEBUG: Show all meta");
             }
             response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK);
-            setYanelOutput(response, doc);
+            setYanelOutput(request, response, doc);
             return;
         }
 
@@ -384,7 +384,7 @@
 
                     Element exceptionElement = (Element) rootElement.appendChild(doc.createElement("exception"));
                     exceptionElement.appendChild(doc.createTextNode(message));
-                    setYanelOutput(response, doc);
+                    setYanelOutput(request, response, doc);
                     response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                     return;
                 }
@@ -413,7 +413,7 @@
             exceptionElement.appendChild(doc.createTextNode(message));
         }
 
-        setYanelOutput(response, doc);
+        setYanelOutput(request, response, doc);
         response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
         return;
     }
@@ -1215,19 +1215,20 @@
     /**
      *
      */
-    private void setYanelOutput(HttpServletResponse response, Document doc) throws ServletException {
-        response.setContentType("application/xml");
+    private void setYanelOutput(HttpServletRequest request, HttpServletResponse response, Document doc) throws ServletException {
         try {
-            File xsltFile = org.wyona.commons.io.FileUtil.file(config.getServletContext().getRealPath("/"), "xslt" + File.separator + "xmlInfo2xhtml.xsl");
-            Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xsltFile));
-            transformer.transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(response.getWriter()));
-             
-/*
-            OutputStream out = response.getOutputStream();
-            javax.xml.transform.TransformerFactory.newInstance().newTransformer().transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(out));
-            out.close();
-*/
-
+            String yanelFormat = request.getParameter("yanel.format");
+            if(yanelFormat != null && yanelFormat.equals("xml")) {
+                response.setContentType("application/xml");
+                OutputStream out = response.getOutputStream();
+                javax.xml.transform.TransformerFactory.newInstance().newTransformer().transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(out));
+                out.close();
+            } else {
+                response.setContentType("application/xhtml+xml");
+                File xsltFile = org.wyona.commons.io.FileUtil.file(config.getServletContext().getRealPath("/"), "xslt" + File.separator + "xmlInfo2xhtml.xsl");
+                Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xsltFile));
+                transformer.transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(response.getWriter()));
+            }
         } catch (Exception e) {
             log.error(e.getMessage(), e);
             throw new ServletException(e.getMessage());

Modified: public/yanel/trunk/src/webapp/xslt/xmlInfo2xhtml.xsl
===================================================================
--- public/yanel/trunk/src/webapp/xslt/xmlInfo2xhtml.xsl	2006-12-16 00:45:27 UTC (rev 20939)
+++ public/yanel/trunk/src/webapp/xslt/xmlInfo2xhtml.xsl	2006-12-16 16:21:59 UTC (rev 20940)
@@ -8,29 +8,59 @@
 >
 
   <xsl:output method="xhtml" encoding="UTF-8"/>
-  
+
   <xsl:template match="/">
-    <html>
-      <head>
-        <title>
-          Yanel 
-          <xsl:if test="child::node()/exception">
-            <i18n:text>- An error occurred</i18n:text>
-          </xsl:if>
-      </title>
-      </head>      
-      <body>
-        <xsl:if test="child::node()/exception">
-          <h1>Yanel: An error occurred</h1>
-          <h2>Debugging Information</h2>
-        </xsl:if>
-        <p>
-          <h4>Servlet Context Real Path</h4>
-          <xsl:value-of select="child::node()/@servlet-context-real-path"/>
-        </p>
-        <xsl:apply-templates select="child::node()"/>
-      </body>
-      </html>
+        <html>
+          <head>
+            <title>
+              Yanel
+              <xsl:choose>
+                <xsl:when test="child::node()/exception">
+                  <i18n:text>- An error occurred</i18n:text>
+                </xsl:when>
+                <xsl:otherwise>
+                  <i18n:text>- Page Info</i18n:text>
+                </xsl:otherwise>
+              </xsl:choose>
+            </title>
+          </head>
+          <body>
+
+              <h1>Yanel
+              <xsl:choose>
+                <xsl:when test="child::node()/exception">
+                  <i18n:text>- An error occurred</i18n:text>
+                </xsl:when>
+                <xsl:otherwise>
+                  <i18n:text>- Page Info</i18n:text>
+                </xsl:otherwise>
+              </xsl:choose>
+              </h1>
+
+              <xsl:choose>
+                <xsl:when test="child::node()/exception">
+                  <p><a href="?yanel.format=xml">Show XML source</a> </p>
+                </xsl:when>
+                <xsl:otherwise>
+                  <p><a href="?yanel.resource.meta&amp;yanel.format=xml">Show XML source</a> </p>
+                </xsl:otherwise>
+              </xsl:choose>
+
+              <xsl:apply-templates select="child::node()/exception"/>
+
+            <p>
+              <h4>Servlet Context Real Path</h4>
+              <xsl:value-of select="child::node()/@servlet-context-real-path"/>
+            </p>
+
+            <xsl:apply-templates select="child::node()/request"/>
+            <xsl:apply-templates select="child::node()/session"/>
+            <xsl:apply-templates select="child::node()/resource-type-identifier"/>
+            <xsl:apply-templates select="child::node()/no-resource-type-identifier"/>
+            <xsl:apply-templates select="child::node()/resource"/>
+            <xsl:apply-templates select="child::node()/revisions"/>
+          </body>
+        </html>
   </xsl:template>
   
   <xsl:template match="request">
@@ -116,4 +146,4 @@
     </p>
   </xsl:template> 
 
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>




More information about the Yanel-commits mailing list