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/isis.git

commit 3bc8e4fcbc706f6fe65dc87bdb7f2ee754d1e1f2
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Fri Apr 27 14:48:16 2018 +0200

    ISIS-1940 uses the invocation-preprocessor for support method validation
---
 .../apache/isis/core/commons/lang/MethodExtensions.java  |  2 +-
 .../lang/MethodInvocationPreprocessor.java}              | 16 +++++++++++-----
 .../ActionInvocationFacetForDomainEventAbstract.java     |  5 +++--
 .../specloader/specimpl/ObjectActionDefault.java         |  1 +
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
index 7215a47..6341054 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
@@ -41,7 +41,7 @@ public class MethodExtensions {
     public static Object invoke(final Method method, final Object object, 
final Object[] arguments) {
         try {
             Object[] defaultAnyPrimitive = 
defaultAnyPrimitive(method.getParameterTypes(), arguments);
-            return method.invoke(object, defaultAnyPrimitive);
+            return MethodInvocationPreprocessor.invoke(method, object, 
defaultAnyPrimitive);
         } catch (Exception e) {
                return ThrowableExtensions.handleInvocationException(e, 
method.getName());
                } 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodInvocationPreprocessor.java
similarity index 85%
rename from 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
rename to 
core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodInvocationPreprocessor.java
index 52dc432..aba3707 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodInvocationPreprocessor.java
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.core.metamodel.facets.actions.action.invocation;
+package org.apache.isis.core.commons.lang;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -32,12 +32,18 @@ import org.apache.isis.applib.internal.collections._Arrays;
 import org.apache.isis.applib.internal.collections._Collections;
 
 /**
- * Package private utility for method invocation pre-processing. 
- * Adapts supported collection parameter types List, Set, SortedSet, 
Collection and Arrays.
+ * Utility for method invocation pre-processing.
+ * <p>
+ * For a given array of parameters, we intercept and adapt those, 
+ * that are not compatible with the expected target parameter type.
+ * </p>
+ * <p>
+ * By now we do this for collection parameter types List, Set, SortedSet, 
Collection and Arrays.
+ * </p>
  */
-class RelaxedMethodInvoker {
+public class MethodInvocationPreprocessor {
 
-       static Object invoke(Method method, Object targetPojo, Object[] 
executionParameters) 
+       public static Object invoke(Method method, Object targetPojo, Object[] 
executionParameters) 
                        throws IllegalAccessException, 
InvocationTargetException {
 
                if (_NullSafe.isEmpty(executionParameters)) {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 5f987d1..a071efe 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -51,6 +51,7 @@ import 
org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ArrayExtensions;
+import org.apache.isis.core.commons.lang.MethodInvocationPreprocessor;
 import org.apache.isis.core.commons.lang.ThrowableExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -389,11 +390,11 @@ public abstract class 
ActionInvocationFacetForDomainEventAbstract
             final QueryResultsCache queryResultsCache = getQueryResultsCache();
             final Object[] targetPojoPlusExecutionParameters = 
ArrayExtensions.appendT(executionParameters, targetPojo);
             return queryResultsCache.execute(
-                       ()->RelaxedMethodInvoker.invoke(method, targetPojo, 
executionParameters),
+                       ()->MethodInvocationPreprocessor.invoke(method, 
targetPojo, executionParameters),
                        targetPojo.getClass(), method.getName(), 
targetPojoPlusExecutionParameters);
 
         } else {
-            return RelaxedMethodInvoker.invoke(method, targetPojo, 
executionParameters);
+            return MethodInvocationPreprocessor.invoke(method, targetPojo, 
executionParameters);
         }
     }
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 586963f..e0bf780 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.InvokedOn;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.internal._Constants;
+import org.apache.isis.applib.internal.collections._Lists;
 
 import com.google.common.base.Predicate;
 import org.apache.isis.applib.services.command.Command;

-- 
To stop receiving notification emails like this one, please contact
ahu...@apache.org.

Reply via email to