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;
}