This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new cb6c132f69 CAUSEWAY-3402: properly lookup PageClassRegistry for 
ExceptionStackTracePanel
cb6c132f69 is described below

commit cb6c132f69b4489136650b340b9febdfc7012083
Author: andi-huber <[email protected]>
AuthorDate: Thu Apr 13 09:30:01 2023 +0200

    CAUSEWAY-3402: properly lookup PageClassRegistry for
    ExceptionStackTracePanel
---
 .../wicket/ui/errors/ExceptionStackTracePanel.java | 108 ++++++++++-----------
 .../accmngt/AccountManagementPageAbstract.java     |   5 +-
 .../viewer/wicket/ui/pages/error/ErrorPage.java    |   5 +-
 3 files changed, 60 insertions(+), 58 deletions(-)

diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
index 50a8274b3b..fe67a363fd 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
@@ -18,7 +18,7 @@
  */
 package org.apache.causeway.viewer.wicket.ui.errors;
 
-import javax.inject.Inject;
+import java.util.List;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.MarkupContainer;
@@ -29,7 +29,6 @@ import 
org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
 import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
@@ -40,24 +39,24 @@ import 
org.apache.causeway.viewer.wicket.model.models.UiObjectWkt;
 import 
org.apache.causeway.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
 import 
org.apache.causeway.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
 import org.apache.causeway.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.causeway.viewer.wicket.ui.panels.PanelBase;
 import org.apache.causeway.viewer.wicket.ui.util.Wkt;
 import org.apache.causeway.viewer.wicket.ui.util.WktComponents;
 import org.apache.causeway.viewer.wicket.ui.util.WktLinks;
 
-public class ExceptionStackTracePanel extends Panel {
+public class ExceptionStackTracePanel
+extends PanelBase<List<StackTraceDetail>> {
 
     private static final long serialVersionUID = 1L;
 
     private static final String ID_MAIN_MESSAGE = "mainMessage";
-
     private static final String ID_EXCEPTION_DETAIL_DIV = "exceptionDetailDiv";
-
     private static final String ID_TICKET_MARKUP = "ticketMarkup";
-
     private static final String ID_STACK_TRACE_ELEMENT = "stackTraceElement";
     private static final String ID_LINE = "stackTraceElementLine";
 
-    private static final JavaScriptResourceReference DIV_TOGGLE_JS = new 
JavaScriptResourceReference(ExceptionStackTracePanel.class, "div-toggle.js");
+    private static final JavaScriptResourceReference DIV_TOGGLE_JS =
+            new JavaScriptResourceReference(ExceptionStackTracePanel.class, 
"div-toggle.js");
 
 
     public class ExternalImageUrl extends WebComponent {
@@ -77,65 +76,64 @@ public class ExceptionStackTracePanel extends Panel {
         }
     }
 
-    public ExceptionStackTracePanel(final String id, final ExceptionModel 
exceptionModel) {
+    public ExceptionStackTracePanel(
+            final PageClassRegistry pageClassRegistry,
+            final String id, final ExceptionModel exceptionModel) {
         super(id, exceptionModel);
 
         final Ticket ticket = exceptionModel.getTicket();
         final String mainMessage =
-                ticket != null && ticket.getUserMessage() != null
-                ? ticket.getUserMessage()
+                ticket != null
+                    && ticket.getUserMessage() != null
+                        ? ticket.getUserMessage()
                         : exceptionModel.getMainMessage();
 
-                Wkt.labelAdd(this, ID_MAIN_MESSAGE, mainMessage);
-
-                // to avoid potential XSS attacks, no longer escape model 
strings
-                // (risk is low but could just happen: error message being 
rendered might accidentally or deliberately contain rogue JavaScript)
-                // label.setEscapeModelStrings(false);
-
-                final String ticketMarkup = ticket != null ? 
ticket.getMarkup(): null;
-                if(ticketMarkup == null) {
-                    WktComponents.permanentlyHide(this, ID_TICKET_MARKUP);
-                } else {
-                    Wkt.markupAdd(this, ID_TICKET_MARKUP, ticket.getMarkup());
-                }
+        Wkt.labelAdd(this, ID_MAIN_MESSAGE, mainMessage);
 
-                final boolean suppressExceptionDetail =
-                        exceptionModel.isAuthorizationException() ||
-                        exceptionModel.isRecognized() ||
-                        (ticket != null && ticket.getStackTracePolicy() == 
Ticket.StackTracePolicy.HIDE);
-                if(suppressExceptionDetail) {
-                    WktComponents.permanentlyHide(this, 
ID_EXCEPTION_DETAIL_DIV);
-                } else {
-                    MarkupContainer container = new 
WebMarkupContainer(ID_EXCEPTION_DETAIL_DIV) {
-                        private static final long serialVersionUID = 1L;
-                        @Override
-                        public void renderHead(final IHeaderResponse response) 
{
-                            
response.render(JavaScriptReferenceHeaderItem.forReference(DIV_TOGGLE_JS));
-                        }
-                    };
-                    container.add(new 
StackTraceListView(ID_STACK_TRACE_ELEMENT, ExceptionStackTracePanel.ID_LINE, 
exceptionModel.getStackTrace()));
-                    add(container);
-                }
+        final String ticketMarkup = ticket != null ? ticket.getMarkup(): null;
+        if(ticketMarkup == null) {
+            WktComponents.permanentlyHide(this, ID_TICKET_MARKUP);
+        } else {
+            Wkt.markupAdd(this, ID_TICKET_MARKUP, ticket.getMarkup());
+        }
 
-                final BreadcrumbModelProvider session = 
(BreadcrumbModelProvider) getSession();
-                final BreadcrumbModel breadcrumbModel = 
session.getBreadcrumbModel();
-                final UiObjectWkt entityModel = 
breadcrumbModel.getMostRecentlyVisited();
-
-                final Class<? extends Page> pageClass;
-                final PageParameters pageParameters;
-                if (entityModel != null) {
-                    pageClass = 
pageClassRegistry.getPageClass(PageType.ENTITY);
-                    pageParameters = entityModel.getPageParameters();
-                } else {
-                    pageClass = pageClassRegistry.getPageClass(PageType.HOME);
-                    pageParameters = null;
+        final boolean suppressExceptionDetail =
+                exceptionModel.isAuthorizationException() ||
+                exceptionModel.isRecognized() ||
+                (ticket != null && ticket.getStackTracePolicy() == 
Ticket.StackTracePolicy.HIDE);
+        if(suppressExceptionDetail) {
+            WktComponents.permanentlyHide(this, ID_EXCEPTION_DETAIL_DIV);
+        } else {
+            MarkupContainer container = new 
WebMarkupContainer(ID_EXCEPTION_DETAIL_DIV) {
+                private static final long serialVersionUID = 1L;
+                @Override
+                public void renderHead(final IHeaderResponse response) {
+                    
response.render(JavaScriptReferenceHeaderItem.forReference(DIV_TOGGLE_JS));
                 }
+            };
+            container.add(new StackTraceListView(
+                    ID_STACK_TRACE_ELEMENT,
+                    ExceptionStackTracePanel.ID_LINE,
+                    exceptionModel.getStackTrace()));
+            add(container);
+        }
 
-                final AbstractLink link = 
WktLinks.newBookmarkablePageLink("continueButton", pageParameters, pageClass);
-                add(link);
+        final BreadcrumbModelProvider session = (BreadcrumbModelProvider) 
getSession();
+        final BreadcrumbModel breadcrumbModel = session.getBreadcrumbModel();
+        final UiObjectWkt entityModel = 
breadcrumbModel.getMostRecentlyVisited();
+
+        final Class<? extends Page> pageClass;
+        final PageParameters pageParameters;
+        if (entityModel != null) {
+            pageClass = pageClassRegistry.getPageClass(PageType.ENTITY);
+            pageParameters = entityModel.getPageParameters();
+        } else {
+            pageClass = pageClassRegistry.getPageClass(PageType.HOME);
+            pageParameters = null;
+        }
 
+        final AbstractLink link = 
WktLinks.newBookmarkablePageLink("continueButton", pageParameters, pageClass);
+        add(link);
     }
 
-    @Inject PageClassRegistry pageClassRegistry;
-
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
index 74567a8770..7c0483a07f 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
@@ -38,6 +38,7 @@ import 
org.apache.causeway.viewer.wicket.ui.components.widgets.navbar.BrandName;
 import org.apache.causeway.viewer.wicket.ui.errors.ExceptionModel;
 import org.apache.causeway.viewer.wicket.ui.errors.ExceptionStackTracePanel;
 import org.apache.causeway.viewer.wicket.ui.pages.PageAbstract;
+import org.apache.causeway.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.causeway.viewer.wicket.ui.pages.WebPageBase;
 import org.apache.causeway.viewer.wicket.ui.util.Wkt;
 
@@ -54,7 +55,6 @@ public class AccountManagementPageAbstract extends 
WebPageBase {
 
     private static final String ID_PAGE_TITLE = "pageTitle";
     private static final String ID_APPLICATION_NAME = "applicationName";
-
     private static final String ID_EXCEPTION_STACK_TRACE = 
"exceptionStackTrace";
 
     /**
@@ -81,7 +81,8 @@ public class AccountManagementPageAbstract extends 
WebPageBase {
         addApplicationName(signInLink);
 
         if(exceptionModel != null) {
-            add(new ExceptionStackTracePanel(ID_EXCEPTION_STACK_TRACE, 
exceptionModel));
+            val pageClassRegistry = 
super.getServiceRegistry().lookupServiceElseFail(PageClassRegistry.class);
+            add(new ExceptionStackTracePanel(pageClassRegistry, 
ID_EXCEPTION_STACK_TRACE, exceptionModel));
         } else {
             add(new 
WebMarkupContainer(ID_EXCEPTION_STACK_TRACE).setVisible(false));
         }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
index c105d1b4b4..d215d94563 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
@@ -32,6 +32,7 @@ import 
org.apache.causeway.viewer.wicket.ui.errors.ExceptionModel;
 import org.apache.causeway.viewer.wicket.ui.errors.ExceptionStackTracePanel;
 import org.apache.causeway.viewer.wicket.ui.errors.StackTraceDetail;
 import org.apache.causeway.viewer.wicket.ui.pages.PageAbstract;
+import org.apache.causeway.viewer.wicket.ui.pages.PageClassRegistry;
 
 import lombok.val;
 
@@ -80,7 +81,9 @@ public class ErrorPage extends PageAbstract {
 
         }
 
-        themeDiv.add(new ExceptionStackTracePanel(ID_EXCEPTION_STACK_TRACE, 
exceptionModel));
+        val pageClassRegistry = 
super.getServiceRegistry().lookupServiceElseFail(PageClassRegistry.class);
+
+        themeDiv.add(new ExceptionStackTracePanel(pageClassRegistry, 
ID_EXCEPTION_STACK_TRACE, exceptionModel));
 
     }
 

Reply via email to