You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2018/05/03 19:08:14 UTC
[sling-whiteboard] branch master updated: Fixing an issue where the
user was not showing a Sling CMS Page when the first accessed the
application
This is an automated email from the ASF dual-hosted git repository.
dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
The following commit(s) were added to refs/heads/master by this push:
new dc3df36 Fixing an issue where the user was not showing a Sling CMS Page when the first accessed the application
dc3df36 is described below
commit dc3df362dc7cb14976213b9bc0992757cf67a32d
Author: Dan Klco <dk...@apache.org>
AuthorDate: Thu May 3 15:08:08 2018 -0400
Fixing an issue where the user was not showing a Sling CMS Page when the
first accessed the application
---
cms/builder/src/main/provisioning/repoinit.txt | 5 ++
.../apache/sling/cms/core/models/ErrorHandler.java | 56 +++++++++++++++-------
.../sling-cms/errorhandling/401.json} | 4 +-
.../sling-cms/errorhandling/403.json} | 4 +-
.../sling-cms}/errorhandling/404.json | 0
.../sling-cms}/errorhandling/default.json | 0
.../libs/sling/servlet/errorhandler/default.jsp | 4 +-
7 files changed, 50 insertions(+), 23 deletions(-)
diff --git a/cms/builder/src/main/provisioning/repoinit.txt b/cms/builder/src/main/provisioning/repoinit.txt
index 9e1227b..f7f439a 100644
--- a/cms/builder/src/main/provisioning/repoinit.txt
+++ b/cms/builder/src/main/provisioning/repoinit.txt
@@ -29,6 +29,11 @@
set ACL for everyone
allow jcr:read on /content
end
+
+ create path (sling:OrderedFolder) /etc/clientlibs
+ set ACL for everyone
+ allow jcr:read on /etc/clientlibs
+ end
# sling-mapping
create service user sling-mapping
diff --git a/cms/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java b/cms/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
index bceb46c..6d470ce 100644
--- a/cms/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
+++ b/cms/core/src/main/java/org/apache/sling/cms/core/models/ErrorHandler.java
@@ -16,8 +16,11 @@
*/
package org.apache.sling.cms.core.models;
+import java.io.IOException;
+
import javax.annotation.PostConstruct;
import javax.inject.Named;
+import javax.servlet.http.HttpServletResponse;
import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.SlingHttpServletRequest;
@@ -27,6 +30,7 @@ import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.Optional;
import org.apache.sling.models.annotations.injectorspecific.RequestAttribute;
+import org.apache.sling.models.annotations.injectorspecific.SlingObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,13 +54,16 @@ public class ErrorHandler {
private SlingHttpServletRequest slingRequest;
private Resource handler;
+
+ @SlingObject
+ private HttpServletResponse response;
public ErrorHandler(SlingHttpServletRequest slingRequest) {
this.slingRequest = slingRequest;
}
@PostConstruct
- public void init() {
+ public void init() throws IOException {
Resource resource = slingRequest.getResource();
ResourceResolver resolver = slingRequest.getResourceResolver();
@@ -67,34 +74,49 @@ public class ErrorHandler {
log.warn("Handing exception of type " + errorCode,
slingRequest.getAttribute(SlingConstants.ERROR_EXCEPTION));
}
- SiteManager siteMgr = resource.adaptTo(SiteManager.class);
- if (siteMgr != null && siteMgr.getSite() != null) {
- Site site = siteMgr.getSite();
- log.debug("Checking for error pages in the site {}", site.getPath());
-
- handler = site.getResource().getChild("errors/" + errorCode.toString());
- if (handler == null) {
- handler = site.getResource().getChild("errors/default");
- }
-
- if (handler != null) {
- log.debug("Using error handler {}", handler);
- } else {
- log.debug("No error page defined for site {}", site.getPath());
+
+
+ try {
+ SiteManager siteMgr = resource.adaptTo(SiteManager.class);
+ if (siteMgr != null && siteMgr.getSite() != null) {
+ Site site = siteMgr.getSite();
+ log.debug("Checking for error pages in the site {}", site.getPath());
+
+ handler = site.getResource().getChild("errors/" + errorCode.toString());
+ if (handler == null) {
+ handler = site.getResource().getChild("errors/default");
+ }
+
+ if (handler != null) {
+ log.debug("Using error handler {}", handler);
+ } else {
+ log.debug("No error page defined for site {}", site.getPath());
+ }
}
+ } catch (Exception e) {
+ log.debug("Failed to retrieve current site, using default error handling");
}
if (handler == null) {
log.debug("Using Sling CMS default error pages");
- handler = resolver.getResource("/libs/sling-cms/content/errorhandling/" + errorCode.toString());
+ handler = resolver.getResource("/content/sling-cms/errorhandling/" + errorCode.toString());
if (handler == null) {
- handler = resolver.getResource("/libs/sling-cms/content/errorhandling/default");
+ handler = resolver.getResource("/content/sling-cms/errorhandling/default");
}
log.debug("Using Sling CMS error handler {}", handler);
}
+
+ log.debug("Sending error {}",errorCode);
+ response.sendError(errorCode);
+
+ log.debug("Error handler initialized successfully!");
}
public Resource getHandler() {
return handler;
}
+
+ public int getErrorCode() {
+ return errorCode;
+ }
}
diff --git a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json b/cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json
similarity index 71%
copy from cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json
copy to cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json
index 0518c56..804e702 100644
--- a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json
+++ b/cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json
@@ -2,7 +2,7 @@
"jcr:primaryType": "sling:Page",
"jcr:content": {
"sling:resourceType": "sling-cms/components/pages/error",
- "jcr:title": "Not Found",
+ "jcr:title": "Unauthorized",
"jcr:primaryType": "nt:unstructured",
"container": {
"jcr:primaryType": "nt:unstructured",
@@ -10,7 +10,7 @@
"richtext": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "sling-cms/components/general/richtext",
- "text": "<h3>Not Found</h3><p>The requested content was not found.</p>"
+ "text": "<h3>Unauthorized</h3><p>You cannot access the requested resource.</p><p><a href=\"/system/sling/form/login\">Login?</a>"
}
}
}
diff --git a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json b/cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json
similarity index 72%
copy from cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json
copy to cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json
index 0518c56..fd97e16 100644
--- a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json
+++ b/cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json
@@ -2,7 +2,7 @@
"jcr:primaryType": "sling:Page",
"jcr:content": {
"sling:resourceType": "sling-cms/components/pages/error",
- "jcr:title": "Not Found",
+ "jcr:title": "Forbidden",
"jcr:primaryType": "nt:unstructured",
"container": {
"jcr:primaryType": "nt:unstructured",
@@ -10,7 +10,7 @@
"richtext": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "sling-cms/components/general/richtext",
- "text": "<h3>Not Found</h3><p>The requested content was not found.</p>"
+ "text": "<h3>Forbidden</h3><p>You cannot access the requested resource.</p><p><a href=\"/system/sling/form/login\">Login?</a>"
}
}
}
diff --git a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json b/cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/404.json
similarity index 100%
rename from cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/404.json
rename to cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/404.json
diff --git a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/default.json b/cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/default.json
similarity index 100%
rename from cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/errorhandling/default.json
rename to cms/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/default.json
diff --git a/cms/ui/src/main/resources/jcr_root/libs/sling/servlet/errorhandler/default.jsp b/cms/ui/src/main/resources/jcr_root/libs/sling/servlet/errorhandler/default.jsp
index 92e0d12..317c9a4 100644
--- a/cms/ui/src/main/resources/jcr_root/libs/sling/servlet/errorhandler/default.jsp
+++ b/cms/ui/src/main/resources/jcr_root/libs/sling/servlet/errorhandler/default.jsp
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/ --%>
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%@include file="/libs/sling-cms/global.jsp"%>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@include file="/libs/sling-cms/global.jsp"%>
<sling:adaptTo var="errorHandler" adaptable="${slingRequest}" adaptTo="org.apache.sling.cms.core.models.ErrorHandler" />
<sling:include path="${sling:getRelativeResource(errorHandler.handler,'jcr:content').path}.html" resourceType="${sling:getRelativeResource(errorHandler.handler,'jcr:content').resourceType}" />
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
dklco@apache.org.