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.