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/15 17:36:26 UTC

[isis] branch master updated (7ea0197 -> 5fd9114)

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 7ea0197  ISIS-1792: adds documentation for new DtoMappingHelper service
     new b24b2fe  ISIS-1765: fixes issue where non-referenced action was associated with a different menubar to the menubar of the owning service
     new 4135ae4  ISIS-1782: overloads for calling persona fixture scripts
     new fa900a2  ISIS-1795: fixes heading color for error page
     new 5fd9114  ISIS-1796: extends the error details

The 4 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:
 .../isis/applib/fixturescripts/FixtureScript.java  | 20 ++++++++++++----
 .../isis/applib/services/error/ErrorDetails.java   | 25 +++++++++++++++----
 .../core/runtime/headless/HeadlessAbstract.java    |  5 ++++
 .../wicket/model/models/ServiceActionsModel.java   |  3 ++-
 .../serviceactions/ServiceActionUtil.java          |  5 +++-
 .../viewer/wicket/ui/errors/ExceptionModel.java    | 28 ++++++++++++++++++----
 .../wicket/ui/errors/ExceptionStackTracePanel.html |  2 +-
 .../viewer/wicket/ui/pages/error/ErrorPage.java    | 24 +++++++++++++------
 8 files changed, 89 insertions(+), 23 deletions(-)

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

[isis] 02/04: ISIS-1782: overloads for calling persona fixture scripts

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 4135ae4d67213c4674694f5b84d95ab3c05836da
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 15 17:30:12 2017 +0000

    ISIS-1782: overloads for calling persona fixture scripts
---
 .../isis/applib/fixturescripts/FixtureScript.java    | 20 ++++++++++++++++----
 .../isis/core/runtime/headless/HeadlessAbstract.java |  5 +++++
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
index 4536427..a9b9725 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
@@ -541,6 +541,13 @@ public abstract class FixtureScript
             return fixtureResultList.lookup(key, cls);
         }
 
+        @Programmatic
+        public void executeChild(
+                final FixtureScript callingFixtureScript,
+                final PersonaWithBuilderScript<?, ?> personaWithBuilderScript) {
+            executeChildren(callingFixtureScript, personaWithBuilderScript);
+        }
+
         /**
          * Executes a child {@link FixtureScript fixture script}, injecting services into it first, and (for any results
          * that are {@link org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext#addResult(FixtureScript, Object)} added),
@@ -552,20 +559,25 @@ public abstract class FixtureScript
         }
 
         @Programmatic
-        public void executeChildren(final FixtureScript callingFixtureScript, final PersonaWithBuilderScript<?,?>... personaWithBuilderScripts) {
+        public void executeChildren(
+                final FixtureScript callingFixtureScript,
+                final PersonaWithBuilderScript<?, ?>... personaWithBuilderScripts) {
             for (PersonaWithBuilderScript<?, ?> builder : personaWithBuilderScripts) {
                 executeChild(callingFixtureScript, builder.builder());
             }
         }
 
         @Programmatic
-        public <T extends Enum<?> & PersonaWithBuilderScript<?,?>> void executeChildren(
-                final FixtureScript callingFixtureScript, final Class<T> personaClass) {
+        public <T extends Enum<?> & PersonaWithBuilderScript<?, ?>> void executeChildren(
+                final FixtureScript callingFixtureScript,
+                final Class<T> personaClass) {
             executeChildren(callingFixtureScript, personaClass.getEnumConstants());
         }
 
         @Programmatic
-        public void executeChildren(final FixtureScript callingFixtureScript, final FixtureScript... fixtureScripts) {
+        public void executeChildren(
+                final FixtureScript callingFixtureScript,
+                final FixtureScript... fixtureScripts) {
             for (FixtureScript fixtureScript : fixtureScripts) {
                 executeChild(callingFixtureScript, fixtureScript);
             }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessAbstract.java
index d8978d1..834258b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessAbstract.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.fixtures.FixtureClock;
 import org.apache.isis.applib.fixturescripts.BuilderScriptAbstract;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
+import org.apache.isis.applib.fixturescripts.PersonaWithBuilderScript;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.metamodel.MetaModelService4;
@@ -56,6 +57,10 @@ public abstract class HeadlessAbstract {
         return this.fixtureScripts.runBuilderScript(fixtureScript);
     }
 
+    protected <P extends PersonaWithBuilderScript<T,F>, T,F extends BuilderScriptAbstract<T,F>> T runBuilderScript(final P persona) {
+        return runBuilderScript(persona.builder());
+    }
+
 
     /**
      * For convenience of subclasses, remove some boilerplate

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

[isis] 04/04: ISIS-1796: extends the error details

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 5fd91143d1e69bdb772742e27de3e130815552ad
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 15 17:33:32 2017 +0000

    ISIS-1796: extends the error details
---
 .../isis/applib/services/error/ErrorDetails.java   | 25 +++++++++++++++----
 .../viewer/wicket/ui/errors/ExceptionModel.java    | 28 ++++++++++++++++++----
 .../viewer/wicket/ui/pages/error/ErrorPage.java    | 24 +++++++++++++------
 3 files changed, 61 insertions(+), 16 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java b/core/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java
index 2ce4211..9acfcc3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java
@@ -33,17 +33,20 @@ public class ErrorDetails {
     private final String mainMessage;
     private final boolean recognized;
     private final boolean authorizationCause;
-    private final List<String> stackTraceDetailList;
+    private final List<String> stackTraceDetailListCombined;
+    private final List<List<String>> stackDetailListPerCause;
 
     public ErrorDetails(
             final String mainMessage,
             final boolean recognized,
             final boolean authorizationCause,
-            final List<String> stackTraceDetailList) {
+            final List<String> stackTraceDetailListCombined,
+            final List<List<String>> stackDetailListPerCause) {
         this.mainMessage = mainMessage;
         this.recognized = recognized;
         this.authorizationCause = authorizationCause;
-        this.stackTraceDetailList = stackTraceDetailList;
+        this.stackTraceDetailListCombined = stackTraceDetailListCombined;
+        this.stackDetailListPerCause = stackDetailListPerCause;
     }
 
     public String getMainMessage() {
@@ -58,8 +61,22 @@ public class ErrorDetails {
         return authorizationCause;
     }
 
+    /**
+     * @deprecated  - renamed to {@link #getStackTraceDetailCombined()}.
+     */
+    @Deprecated
     public List<String> getStackTraceDetailList() {
-        return stackTraceDetailList;
+        return stackTraceDetailListCombined;
     }
 
+    public List<String> getStackTraceDetailCombined() {
+        return stackTraceDetailListCombined;
+    }
+
+    /**
+     * One per exception cause.
+     */
+    public List<List<String>> getStackTraceDetailPerCause() {
+        return stackDetailListPerCause;
+    }
 }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionModel.java
index e4e620f..3e14faa 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionModel.java
@@ -38,6 +38,7 @@ public class ExceptionModel extends ModelAbstract<List<StackTraceDetail>> {
     private static final String MAIN_MESSAGE_IF_NOT_RECOGNIZED = "Sorry, an unexpected error occurred.";
     
     private List<StackTraceDetail> stackTraceDetailList;
+    private List<List<StackTraceDetail>> stackTraceDetailLists;
     private boolean recognized;
     private boolean authorizationCause;
 
@@ -75,6 +76,7 @@ public class ExceptionModel extends ModelAbstract<List<StackTraceDetail>> {
             }
         }
         stackTraceDetailList = asStackTrace(ex);
+        stackTraceDetailLists = asStackTraces(ex);
     }
 
 
@@ -135,6 +137,9 @@ public class ExceptionModel extends ModelAbstract<List<StackTraceDetail>> {
     public List<StackTraceDetail> getStackTrace() {
         return stackTraceDetailList;
     }
+    public List<List<StackTraceDetail>> getStackTraces() {
+        return stackTraceDetailLists;
+    }
 
     private static List<StackTraceDetail> asStackTrace(Throwable ex) {
         List<StackTraceDetail> stackTrace = Lists.newArrayList();
@@ -148,15 +153,28 @@ public class ExceptionModel extends ModelAbstract<List<StackTraceDetail>> {
             } else {
                 firstTime = false;
             }
-            stackTrace.add(StackTraceDetail.exceptionClassName(cause));
-            stackTrace.add(StackTraceDetail.exceptionMessage(cause));
-            addStackTraceElements(cause, stackTrace);
+            append(cause, stackTrace);
         }
         return stackTrace;
     }
 
-    private static void addStackTraceElements(Throwable ex, List<StackTraceDetail> stackTrace) {
-        for (StackTraceElement el : ex.getStackTrace()) {
+    private static List<List<StackTraceDetail>> asStackTraces(Throwable ex) {
+        List<List<StackTraceDetail>> stackTraces = Lists.newArrayList();
+
+        List<Throwable> causalChain = Throwables.getCausalChain(ex);
+        boolean firstTime = true;
+        for(Throwable cause: causalChain) {
+            List<StackTraceDetail> stackTrace = Lists.newArrayList();
+            append(cause, stackTrace);
+            stackTraces.add(stackTrace);
+        }
+        return stackTraces;
+    }
+
+    private static void append(final Throwable cause, final List<StackTraceDetail> stackTrace) {
+        stackTrace.add(StackTraceDetail.exceptionClassName(cause));
+        stackTrace.add(StackTraceDetail.exceptionMessage(cause));
+        for (StackTraceElement el : cause.getStackTrace()) {
             stackTrace.add(StackTraceDetail.element(el));
         }
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/error/ErrorPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/error/ErrorPage.java
index 6824c8b..e5c2973 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/error/ErrorPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/error/ErrorPage.java
@@ -62,14 +62,16 @@ public class ErrorPage extends PageAbstract {
             final boolean authorizationException = exceptionModel.isAuthorizationException();
 
             final List<StackTraceDetail> stackTrace = exceptionModel.getStackTrace();
-            final List<String> stackDetails = Lists.transform(stackTrace, new Function<StackTraceDetail, String>() {
-                @Nullable @Override public String apply(final StackTraceDetail stackTraceDetail) {
-                    return stackTraceDetail.getLine();
-                }
-            });
+            final List<String> stackDetailList = transform(stackTrace);
 
-            final ErrorDetails errorDetails = new ErrorDetails(mainMessage, recognized, authorizationException,
-                    stackDetails);
+            final List<List<StackTraceDetail>> stackTraces = exceptionModel.getStackTraces();
+            final List<List<String>> stackDetailLists = Lists.newArrayList();
+            for (List<StackTraceDetail> trace : stackTraces) {
+                stackDetailLists.add(transform(trace));
+            }
+
+            final ErrorDetails errorDetails =
+                    new ErrorDetails(mainMessage, recognized, authorizationException, stackDetailList, stackDetailLists);
 
             final Ticket ticket = errorReportingService.reportError(errorDetails);
 
@@ -83,4 +85,12 @@ public class ErrorPage extends PageAbstract {
 
     }
 
+    protected List<String> transform(final List<StackTraceDetail> stackTrace) {
+        return Lists.transform(stackTrace, new Function<StackTraceDetail, String>() {
+                    @Nullable @Override public String apply(final StackTraceDetail stackTraceDetail) {
+                        return stackTraceDetail.getLine();
+                    }
+                });
+    }
+
 }

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

[isis] 01/04: ISIS-1765: fixes issue where non-referenced action was associated with a different menubar to the menubar of the owning service

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 b24b2fe8b7eb6c20025cfbe254d73abf00a41772
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 15 17:25:12 2017 +0000

    ISIS-1765: fixes issue where non-referenced action was associated with a different menubar to the menubar of the owning service
    
    resulting in an NPE
---
 .../apache/isis/viewer/wicket/model/models/ServiceActionsModel.java  | 3 ++-
 .../ui/components/actionmenu/serviceactions/ServiceActionUtil.java   | 5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java
index d0bcc36..666b690 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ServiceActionsModel.java
@@ -61,7 +61,8 @@ public class ServiceActionsModel extends ModelAbstract<List<ObjectAdapter>> {
             public boolean apply(ObjectAdapter input) {
                 final DomainServiceLayoutFacet facet = input.getSpecification().getFacet
                         (DomainServiceLayoutFacet.class);
-                return facet != null && facet.getMenuBar() == menuBar;
+                return (facet != null && facet.getMenuBar() == menuBar) ||
+                       (facet == null && menuBar == DomainServiceLayout.MenuBar.PRIMARY);
             }
         };
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index c7736a6..0ba7e42 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -49,6 +49,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.runtime.system.IsisSystem;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -206,7 +207,9 @@ public final class ServiceActionUtil {
         // TODO: remove hard-coded dependency on BS3
         final BS3MenuBar menuBar = (BS3MenuBar) menuBars.menuBarFor(serviceActionsModel.getMenuBar());
 
-        final List<ObjectAdapter> serviceAdapters = serviceActionsModel.getObject();
+        // we no longer use ServiceActionsModel#getObject() because the model only holds the services for the
+        // menuBar in question, whereas the "Other" menu may reference a service which is defined for some other menubar
+        final List<ObjectAdapter> serviceAdapters = IsisContext.getSessionFactory().getCurrentSession().getPersistenceSession().getServices();
         final ImmutableMap<ObjectAdapter, String> oidByServiceAdapter = FluentIterable.from(serviceAdapters)
                 .toMap(new Function<ObjectAdapter, String>() {
                     @Override

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

[isis] 03/04: ISIS-1795: fixes heading color for 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 fa900a23ce2bcc50a19850e5deab9b4490b893ff
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 15 17:31:41 2017 +0000

    ISIS-1795: fixes heading color for error page
---
 .../apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.html   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 79a39af..9cb573f 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
@@ -27,7 +27,7 @@
             <div class="exceptionStackTracePanel">
                 <div class="errorInfo clear">
                     <div class="panel">
-                        <div class="panel-heading">
+                        <div>
                             <h2 class="mainMessage">
                                 <span class="fa fa-fw fa-warning fontAwesomeIcon" style="color:#C9302C;"></span>
                                 <span wicket:id="mainMessage">[main message text]</span>

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