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 2021/01/24 17:25:29 UTC

[isis] branch master updated (fe3d0f6 -> 1337e95)

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 fe3d0f6  ISIS-2444: more mig. notes
     new 79b4a31  ISIS-2495: moves classes out of core.runtimeservices, to applib or demoapp
     new 1337e95  ISIS-2496: improves logic, checks if actual vs expected parameter types actually are incompatible.

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:
 .../isis/applib/services}/error/SimpleTicket.java  |  2 +-
 .../metamodel/commons/CanonicalParameterUtil.java  | 44 ++++++++++++----------
 .../error/service/DemoErrorReportingService.java   |  4 +-
 .../core/errorreportingservice}/EmailTicket.java   |  3 +-
 4 files changed, 30 insertions(+), 23 deletions(-)
 rename {core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices => api/applib/src/main/java/org/apache/isis/applib/services}/error/SimpleTicket.java (98%)
 rename {core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error => examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice}/EmailTicket.java (97%)


[isis] 01/02: ISIS-2495: moves classes out of core.runtimeservices, to applib or demoapp

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 79b4a313628c948aa51c6cdef106c25aac6ad55f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jan 24 12:53:37 2021 +0000

    ISIS-2495: moves classes out of core.runtimeservices, to applib or demoapp
---
 .../java/org/apache/isis/applib/services}/error/SimpleTicket.java     | 2 +-
 .../demoapp/dom/misc/error/service/DemoErrorReportingService.java     | 4 ++--
 .../demoapp/dom/services/core/errorreportingservice}/EmailTicket.java | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error/SimpleTicket.java b/api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java
similarity index 98%
rename from core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error/SimpleTicket.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java
index ee17691..b1fa8ba 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error/SimpleTicket.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.runtimeservices.error;
+package org.apache.isis.applib.services.error;
 
 import java.io.Serializable;
 import java.util.function.UnaryOperator;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/misc/error/service/DemoErrorReportingService.java b/examples/demo/domain/src/main/java/demoapp/dom/misc/error/service/DemoErrorReportingService.java
index 0f367ff..6dd1930 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/misc/error/service/DemoErrorReportingService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/misc/error/service/DemoErrorReportingService.java
@@ -27,8 +27,8 @@ import org.apache.isis.applib.services.error.ErrorDetails;
 import org.apache.isis.applib.services.error.ErrorReportingService;
 import org.apache.isis.applib.services.error.Ticket;
 import org.apache.isis.applib.services.error.Ticket.StackTracePolicy;
-import org.apache.isis.core.runtimeservices.error.EmailTicket;
-import org.apache.isis.core.runtimeservices.error.EmailTicket.MailTo;
+import demoapp.dom.services.core.errorreportingservice.EmailTicket;
+import demoapp.dom.services.core.errorreportingservice.EmailTicket.MailTo;
 
 import lombok.val;
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error/EmailTicket.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/EmailTicket.java
similarity index 97%
rename from core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error/EmailTicket.java
rename to examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/EmailTicket.java
index 04fa525..9d19771 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/error/EmailTicket.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/EmailTicket.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.runtimeservices.error;
+package demoapp.dom.services.core.errorreportingservice;
 
 import java.io.Serializable;
 import java.util.List;
@@ -24,6 +24,7 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.applib.services.error.ErrorDetails;
 import org.apache.isis.applib.services.error.ErrorReportingService;
+import org.apache.isis.applib.services.error.SimpleTicket;
 
 import static org.apache.isis.commons.internal.base._NullSafe.stream;
 


[isis] 02/02: ISIS-2496: improves logic, checks if actual vs expected parameter types actually are incompatible.

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 1337e959d59ed4d0ce2d8b7b0c586408a607081e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jan 24 14:35:38 2021 +0000

    ISIS-2496: improves logic, checks if actual vs expected parameter types actually are incompatible.
---
 .../metamodel/commons/CanonicalParameterUtil.java  | 44 ++++++++++++----------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
index 3bd36ed..65a7b48 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
@@ -53,13 +53,13 @@ public final class CanonicalParameterUtil {
 
     public static <T> T construct(Constructor<T> constructor, Object[] executionParameters) {
         val adaptedExecutionParameters = preprocess(constructor, executionParameters);
-        
+
         // supports effective private constructors as well
         return _Reflect.invokeConstructor(constructor, adaptedExecutionParameters)
         .mapFailure(ex->toVerboseException(constructor.getParameterTypes(), adaptedExecutionParameters, ex))
         .orElseFail();
     }
-    
+
     public static Object invoke(Method method, Object targetPojo, Object[] executionParameters)
             throws IllegalAccessException, InvocationTargetException {
 
@@ -70,7 +70,7 @@ public final class CanonicalParameterUtil {
         .mapFailure(ex->toVerboseException(method.getParameterTypes(), adaptedExecutionParameters, ex))
         .nullableOrElseFail();
     }
-    
+
     private static Object[] preprocess(Executable executable, Object[] executionParameters) {
         if (isEmpty(executionParameters)) {
             return executionParameters;
@@ -100,11 +100,11 @@ public final class CanonicalParameterUtil {
         if(obj==null) {
             return null;
         }
-        
+
         if(obj instanceof Can) {
-            obj = ((Can<?>)obj).toList();            
+            obj = ((Can<?>)obj).toList();
         }
-        
+
         if(_Arrays.isArrayType(parameterType)) {
             final Class<?> componentType = _Arrays.inferComponentTypeIfAny(parameterType);
             if(componentType==null) {
@@ -137,22 +137,21 @@ public final class CanonicalParameterUtil {
         return obj;
     }
 
-    private static IllegalArgumentException toVerboseException(
-            Class<?>[] parameterTypes, 
+    private static Throwable toVerboseException(
+            Class<?>[] parameterTypes,
             Object[] adaptedExecutionParameters,
             Throwable e) {
 
-        val sb = new StringBuilder();
-        
         final int expectedParamCount = _NullSafe.size(parameterTypes);
         final int actualParamCount = _NullSafe.size(adaptedExecutionParameters);
         if(expectedParamCount!=actualParamCount) {
-            sb.append(String.format("param-count mismatch: expected %d, got %d\n", 
-                    expectedParamCount, actualParamCount));
-        } else {
-            sb.append("expected param type mismatch\n");
+            return new IllegalArgumentException(String.format(
+                    "param-count mismatch: expected %d, got %d\n",
+                    expectedParamCount, actualParamCount), e);
         }
-        
+
+        boolean paramTypeMismatchEncountered = false;
+        val sb = new StringBuilder();
         for(int j=0;j<parameterTypes.length;++j) {
             final Class<?> parameterType = parameterTypes[j];
             final String parameterValueTypeLiteral = _Arrays.get(adaptedExecutionParameters, j)
@@ -160,13 +159,20 @@ public final class CanonicalParameterUtil {
                     .map(Class::getName)
                     .orElse("missing or null");
 
-            sb.append(String.format("param-type[%d]: '%s', got '%s'\n", 
-                    j, parameterType.getName(), parameterValueTypeLiteral));
+            final String expected = parameterType.getName();
+            final String actual = parameterValueTypeLiteral;
+            paramTypeMismatchEncountered = paramTypeMismatchEncountered || !(expected.equals(actual));
+            sb.append(String.format("param-type[%d]: '%s', got '%s'\n",
+                    j, expected, actual));
+        }
+
+        if(paramTypeMismatchEncountered) {
+            sb.insert(0, "expected param type mismatch\n");
+            return new IllegalArgumentException(sb.toString(), e);
         }
-        
 
         // re-throw more verbose
-        return new IllegalArgumentException(sb.toString(), e);
+        return e;
     }