You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2009/06/09 16:42:25 UTC
svn commit: r783017 - in
/incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl:
DefaultGetServlet.java JsonQueryServlet.java
Author: cziegeler
Date: Tue Jun 9 14:42:24 2009
New Revision: 783017
URL: http://svn.apache.org/viewvc?rev=783017&view=rev
Log:
SLING-994 : If the request is included, do not use sendError but throw an exception if no renderer is found
Modified:
incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java
Modified: incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java?rev=783017&r1=783016&r2=783017&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java (original)
+++ incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java Tue Jun 9 14:42:24 2009
@@ -26,6 +26,7 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
+import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.ResourceNotFoundException;
@@ -43,7 +44,7 @@
/**
* A SlingSafeMethodsServlet that renders the current Resource as simple HTML
- *
+ *
* @scr.component name="org.apache.sling.servlets.get.DefaultGetServlet"
* immediate="true" label="%servlet.get.name"
* description="%servlet.get.description"
@@ -156,17 +157,17 @@
setupServlet(rendererMap, PlainTextRendererServlet.EXT_TXT,
new PlainTextRendererServlet());
}
-
+
if (enableJson) {
setupServlet(rendererMap, JsonRendererServlet.EXT_JSON,
new JsonRendererServlet());
}
-
+
if (enableXml) {
setupServlet(rendererMap, XMLRendererServlet.EXT_XML,
new XMLRendererServlet());
}
-
+
// use the servlet for rendering StreamRendererServlet.EXT_RES as the
// streamer servlet
streamerServlet = rendererMap.get(StreamRendererServlet.EXT_RES);
@@ -204,7 +205,7 @@
// cannot handle the request for missing resources
if (ResourceUtil.isNonExistingResource(request.getResource())) {
throw new ResourceNotFoundException(
- request.getResource().getPath(), "No Resource found");
+ request.getResource().getPath(), "No resource found");
}
Servlet rendererServlet;
@@ -218,7 +219,13 @@
// fail if we should not just stream or we cannot support the ext.
if (rendererServlet == null) {
request.getRequestProgressTracker().log(
- "No Renderer for extension " + ext);
+ "No renderer for extension " + ext);
+ final boolean isIncluded = request.getAttribute(SlingConstants.ATTR_REQUEST_SERVLET) != null;
+ // if this is an included request, sendError() would fail
+ // as the response is already committed, in this case we throw an exception
+ if ( isIncluded ) {
+ throw new ServletException("No renderer found for extensions " + ext);
+ }
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return;
}
Modified: incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java?rev=783017&r1=783016&r2=783017&view=diff
==============================================================================
--- incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java (original)
+++ incubator/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java Tue Jun 9 14:42:24 2009
@@ -39,7 +39,6 @@
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.io.JSONWriter;
import org.apache.sling.jcr.resource.JcrResourceUtil;
-import org.apache.sling.servlets.get.impl.helpers.JsonRendererServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,10 +47,10 @@
*
* @scr.component immediate="true" metatype="no"
* @scr.service interface="javax.servlet.Servlet"
- *
+ *
* @scr.property name="service.description" value="Default Query Servlet"
* @scr.property name="service.vendor" value="The Apache Software Foundation"
- *
+ *
* Use this as the default query servlet for json get requests for Sling
* @scr.property name="sling.servlet.resourceTypes"
* value="sling/servlet/default"