You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/02/06 15:20:50 UTC
svn commit: r618997 -
/incubator/sling/trunk/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java
Author: fmeschbe
Date: Wed Feb 6 06:20:49 2008
New Revision: 618997
URL: http://svn.apache.org/viewvc?rev=618997&view=rev
Log:
SLING-227 do not actually use the resolved resource just use it to
test whether a SyntheticResource must be created or not. Finally
retrieve the RequestDispatcher with the resource or the path
depending on what is available.
Modified:
incubator/sling/trunk/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java
Modified: incubator/sling/trunk/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java?rev=618997&r1=618996&r2=618997&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java (original)
+++ incubator/sling/trunk/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java Wed Feb 6 06:20:49 2008
@@ -71,30 +71,31 @@
// check for resource otherwise resolve from path
RequestDispatcherOptions opts = null;
+ if (resourceType != null) {
+ opts = new RequestDispatcherOptions();
+ opts.put(RequestDispatcherOptions.OPT_FORCE_RESOURCE_TYPE, resourceType);
+ }
+
+ // ensure the path (if set) is absolute and normalized
+ if (path != null) {
+ if (!path.startsWith("/")) {
+ path = request.getResource().getPath() + "/" + path;
+ }
+ path = JcrResourceUtil.normalize(path);
+ }
+
+ // check the resource
if (resource == null) {
if (path == null) {
+ // neither resource nor path is defined, use current resource
resource = request.getResource();
} else {
- if (!path.startsWith("/")) {
- path = request.getResource().getPath() + "/" + JcrResourceUtil.normalize(this.path);
+ // check whether the path (would) resolve, else SyntheticRes.
+ Resource tmp = request.getResourceResolver().resolve(path);
+ if (tmp == null && resourceType != null) {
+ opts = null; // not needed
+ resource = new SyntheticResource(path, resourceType);
}
- resource = request.getResourceResolver().getResource(path);
- }
- }
-
- // if resource could not be resolved, create synthetic one
- if (resource == null) {
- if (resourceType == null) {
- TagUtil.log(log, pageContext, "unable to include path " + path
- + ". Resource not found and no resource type given.", null);
- return EVAL_PAGE;
- }
- resource = new SyntheticResource(path, resourceType);
- } else {
- // overwrite resource type if desired
- if (resourceType != null && !resourceType.equals(resource.getResourceType())) {
- opts = new RequestDispatcherOptions();
- opts.put(RequestDispatcherOptions.OPT_FORCE_RESOURCE_TYPE, resourceType);
}
}
@@ -104,8 +105,15 @@
// might throw an IOException of course
pageContext.getOut().flush();
}
- // include the rendered content
- RequestDispatcher dispatcher = request.getRequestDispatcher(resource, opts);
+
+ // create a dispatcher for the resource or path
+ RequestDispatcher dispatcher;
+ if (resource != null) {
+ dispatcher = request.getRequestDispatcher(resource, opts);
+ } else {
+ dispatcher = request.getRequestDispatcher(path, opts);
+ }
+
if (dispatcher != null) {
SlingHttpServletResponse response = new JspSlingHttpServletResponseWrapper(
pageContext);