You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/12/20 13:27:08 UTC

[isis] branch master updated (e5bdbd4 -> f24d271)

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

danhaywood pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from e5bdbd4  ISIS-1791 and ISIS-1794: refactorings of ClockFixture and TickingClockFixture.
     new 2c93a54  ISIS-1798: suppresses stack trace unless Ticket explicitly indicates that it should be shown
     new f24d271  ISIS-1797: adds a 'Continue' button to the error page

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/isis/applib/services/error/Ticket.java  | 23 ++++++++++++++
 .../widgets/breadcrumbs/BreadcrumbModel.java       | 17 +++++++++-
 .../wicket/ui/errors/ExceptionStackTracePanel.html |  7 ++++-
 .../wicket/ui/errors/ExceptionStackTracePanel.java | 36 ++++++++++++++++++++--
 .../isis/viewer/wicket/ui/pages/home/HomePage.java |  6 ++++
 5 files changed, 85 insertions(+), 4 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].

[isis] 02/02: ISIS-1797: adds a 'Continue' button to the error page

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f24d27178f87ef539f4cdfeefdfff17cc3689260
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 20 13:22:41 2017 +0000

    ISIS-1797: adds a 'Continue' button to the error page
---
 .../widgets/breadcrumbs/BreadcrumbModel.java       | 17 +++++++++++-
 .../wicket/ui/errors/ExceptionStackTracePanel.html |  7 ++++-
 .../wicket/ui/errors/ExceptionStackTracePanel.java | 30 ++++++++++++++++++++++
 .../isis/viewer/wicket/ui/pages/home/HomePage.java |  6 +++++
 4 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index 3466a58..47e2a36 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -54,15 +54,30 @@ public class BreadcrumbModel implements Serializable {
         return Collections.unmodifiableList(entityModels);
     }
 
+    /**
+     * May be null if called for a view model or for home page.
+     */
+    private String mostRecentlyVisitedOidStr;
+
+    public void visitedHomePage() {
+        mostRecentlyVisitedOidStr = null;
+    }
+
+    public EntityModel getMostRecentlyVisited() {
+        return mostRecentlyVisitedOidStr != null ? lookup(mostRecentlyVisitedOidStr) : null;
+    }
+
     public void visited(final EntityModel entityModel) {
 
         // ignore view models
         if(entityModel.getTypeOfSpecification().isViewModel()) {
+            mostRecentlyVisitedOidStr = null;
             return;
         }
 
         final String oidStr = oidStrFrom(entityModel);
-        
+        mostRecentlyVisitedOidStr = oidStr;
+
         remove(oidStr);
         addToStart(oidStr, entityModel);
         
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.html
index 9cb573f..6879141 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.html
@@ -39,11 +39,16 @@
                         <div class="panel-body" wicket:id="ticketReferenceDiv">
                             <h4>Please quote reference: <span wicket:id="ticketReference">[ticket reference]</span></h4>
                         </div>
+                        <div class="panel-body">
+                            <div class="form-group">
+                                <button type="submit" wicket:id="continueButton" class="btn btn-primary">Continue</button>
+                            </div>
+                        </div>
                     </div>
                     <br/>
                     <div class="errorDetail panel panel-default" wicket:id="exceptionDetailDiv">
                         <div class="heading panel-heading">
-                            <a class="btn btn-primary" href="#" role="button">Exception details</a>
+                            <a class="btn btn-info" href="#" role="button">Exception details</a>
                             <span class="panel-title"></span>
                         </div>
                         <div class="content panel-body">
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
index a4cde1e..f6af258 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
@@ -20,17 +20,27 @@
 package org.apache.isis.viewer.wicket.ui.errors;
 
 import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.basic.MultiLineLabel;
+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;
 
 import org.apache.isis.applib.services.error.Ticket;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.PageType;
+import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
+import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.home.HomePage;
 import org.apache.isis.viewer.wicket.ui.util.Components;
+import org.apache.isis.viewer.wicket.ui.util.Links;
 
 public class ExceptionStackTracePanel extends Panel {
 
@@ -104,6 +114,26 @@ public class ExceptionStackTracePanel extends Panel {
             container.add(new StackTraceListView(ID_STACK_TRACE_ELEMENT, ExceptionStackTracePanel.ID_LINE, exceptionModel.getStackTrace()));
             add(container);
         }
+
+        final BreadcrumbModelProvider session = (BreadcrumbModelProvider) getSession();
+        final BreadcrumbModel breadcrumbModel = session.getBreadcrumbModel();
+        final EntityModel entityModel = breadcrumbModel.getMostRecentlyVisited();
+
+        final Class<? extends Page> pageClass;
+        final PageParameters pageParameters;
+        if (entityModel != null) {
+            pageClass = pageClassRegistry.getPageClass(PageType.ENTITY);
+            pageParameters = entityModel.getPageParameters();
+        } else {
+            pageParameters = null;
+            pageClass = HomePage.class;
+        }
+        final AbstractLink link = Links.newBookmarkablePageLink("continueButton", pageParameters, pageClass);
+        add(link);
+
     }
 
+    @com.google.inject.Inject
+    PageClassRegistry pageClassRegistry;
+
 }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/home/HomePage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/home/HomePage.java
index 4d8aeed..a1c20bd 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/home/HomePage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/home/HomePage.java
@@ -36,6 +36,8 @@ import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.actions.ActionFormExecutorStrategy;
+import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
 import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault;
 import org.apache.isis.viewer.wicket.ui.util.Components;
@@ -69,6 +71,10 @@ public class HomePage extends PageAbstract {
             Components.permanentlyHide(themeDiv, ComponentType.ACTION_PROMPT);
             getComponentFactoryRegistry().addOrReplaceComponent(themeDiv, ComponentType.WELCOME, null);
         }
+
+        final BreadcrumbModelProvider session = (BreadcrumbModelProvider) getSession();
+        final BreadcrumbModel breadcrumbModel = session.getBreadcrumbModel();
+        breadcrumbModel.visitedHomePage();
     }
 
     private static class ObjectAndAction {

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.

[isis] 01/02: ISIS-1798: suppresses stack trace unless Ticket explicitly indicates that it should be shown

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 2c93a54390499de2e89846b575e03998e681a296
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 20 13:22:08 2017 +0000

    ISIS-1798: suppresses stack trace unless Ticket explicitly indicates that it should be shown
---
 .../apache/isis/applib/services/error/Ticket.java  | 23 ++++++++++++++++++++++
 .../wicket/ui/errors/ExceptionStackTracePanel.java |  6 ++++--
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java b/core/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java
index ec8d465..4f9a6d7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java
@@ -36,11 +36,22 @@ public class Ticket implements Serializable {
     private final String reference;
     private final String userMessage;
     private final String details;
+    private final StackTracePolicy stackTracePolicy;
+
+    public enum StackTracePolicy {
+        SHOW,
+        HIDE
+    }
 
     public Ticket(final String reference, final String userMessage, final String details) {
+        this(reference, userMessage, details, StackTracePolicy.HIDE);
+    }
+
+    public Ticket(final String reference, final String userMessage, final String details, final StackTracePolicy stackTracePolicy) {
         this.reference = reference;
         this.userMessage = userMessage;
         this.details = details;
+        this.stackTracePolicy = stackTracePolicy;
     }
 
     /**
@@ -77,4 +88,16 @@ public class Ticket implements Serializable {
     public String getDetails() {
         return details;
     }
+
+    /**
+     * Whether the stack trace for the exception should be displayed or be hidden.
+     *
+     * <p>
+     *     The default is to hide it on the basis that the reporting service will have reported the stack trace to
+     *     the support team, meaning there's no need to expose this info to the end-user.
+     * </p>
+     */
+    public StackTracePolicy getStackTracePolicy() {
+        return stackTracePolicy;
+    }
 }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
index a5e9526..a4cde1e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
@@ -87,11 +87,13 @@ public class ExceptionStackTracePanel extends Panel {
             add(panel);
         }
 
-        final boolean suppressExceptionDetail = exceptionModel.isAuthorizationException() || exceptionModel.isRecognized();
+        final boolean suppressExceptionDetail =
+                exceptionModel.isAuthorizationException() ||
+                exceptionModel.isRecognized() ||
+                (ticket != null && ticket.getStackTracePolicy() == Ticket.StackTracePolicy.HIDE);
         if(suppressExceptionDetail) {
             Components.permanentlyHide(this, ID_EXCEPTION_DETAIL_DIV);
         } else {
-
                 MarkupContainer container = new WebMarkupContainer(ID_EXCEPTION_DETAIL_DIV) {
                 private static final long serialVersionUID = 1L;
                 @Override

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.