[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&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