You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/05/06 11:53:40 UTC
[isis] branch master updated: ISIS-2361: supporting meth. shared
naming convention (extract the algorithm to be reused)
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
The following commit(s) were added to refs/heads/master by this push:
new 9ac6571 ISIS-2361: supporting meth. shared naming convention (extract the algorithm to be reused)
9ac6571 is described below
commit 9ac657125d28039bbe21b4be3ef789b38e60de94
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 6 10:29:55 2020 +0200
ISIS-2361: supporting meth. shared naming convention (extract the
algorithm to be reused)
---
.../core/metamodel/facets/MethodFinderUtils.java | 10 +--
.../metamodel/facets/MethodLiteralConstants.java | 75 +++++++++++++++++++-
.../MethodPrefixBasedFacetFactoryAbstract.java | 6 +-
.../ActionDefaultsFacetViaMethodFactory.java | 36 ++++------
.../ActionValidationFacetViaMethodFactory.java | 67 ++++--------------
.../DisableForContextFacetViaMethodFactory.java | 34 ++++-----
.../HideForContextFacetViaMethodFactory.java | 39 ++++++-----
.../method/ValidateObjectFacetMethodFactory.java | 11 +--
...ParameterAutoCompleteFacetViaMethodFactory.java | 10 ++-
.../method/ActionChoicesFacetViaMethodFactory.java | 40 ++++-------
...ctionParameterChoicesFacetViaMethodFactory.java | 19 ++---
...tionParameterDefaultsFacetViaMethodFactory.java | 15 ++--
.../ActionParameterDisabledFacetViaMethod.java | 6 +-
...tionParameterDisabledFacetViaMethodFactory.java | 23 +++---
...ActionParameterHiddenFacetViaMethodFactory.java | 15 ++--
.../validate/ActionParameterValidationFacet.java | 10 ++-
.../ActionParameterValidationFacetAbstract.java | 13 +++-
.../ActionParameterValidationFacetViaMethod.java | 28 ++++++--
...onParameterValidationFacetViaMethodFactory.java | 81 +++++++++++++---------
.../PropertyAutoCompleteFacetMethodFactory.java | 14 ++--
.../PropertyChoicesFacetViaMethodFactory.java | 13 ++--
.../PropertyDefaultFacetViaMethodFactory.java | 13 ++--
.../PropertyValidateFacetViaMethodFactory.java | 44 +++++-------
.../interactions/ActionArgValidityContext.java | 16 +++--
.../actions/ActionMethodsFacetFactoryTest.java | 4 +-
...pendentArgsActionDemo_useDefaultFixedPoint.java | 15 ++++
26 files changed, 359 insertions(+), 298 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
index dfce829..48b64ef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
@@ -121,24 +121,24 @@ public final class MethodFinderUtils {
}
public static Optional<Method> findNoArgMethod(final Class<?> type, final String name, final Class<?> returnType) {
- return streamMethods(type, name, returnType)
+ return streamMethods(type, Can.ofSingleton(name), returnType)
.filter(MethodUtil.Predicates.paramCount(0))
.findFirst();
}
public static Optional<Method> findSingleArgMethod(final Class<?> type, final String name, final Class<?> returnType) {
- return streamMethods(type, name, returnType)
+ return streamMethods(type, Can.ofSingleton(name), returnType)
.filter(MethodUtil.Predicates.paramCount(1))
.findFirst();
}
- public static Stream<Method> streamMethods(final Class<?> type, final String name, final Class<?> returnType) {
+ public static Stream<Method> streamMethods(final Class<?> type, final Can<String> names, final Class<?> returnType) {
try {
final Method[] methods = type.getMethods();
return Arrays.stream(methods)
.filter(MethodUtil::isPublic)
.filter(MethodUtil::isNotStatic)
- .filter(method -> method.getName().equals(name))
+ .filter(method -> names.contains(method.getName()))
.filter(method -> returnType == null ||
returnType.isAssignableFrom(method.getReturnType()))
;
@@ -279,7 +279,7 @@ public final class MethodFinderUtils {
final Class<?>[] paramTypes,
final Can<Class<?>> additionalParamTypes) {
- return streamMethods(type, name, returnType)
+ return streamMethods(type, Can.ofSingleton(name), returnType)
.filter(MethodUtil.Predicates.paramCount(additionalParamTypes.size()+1))
.filter(MethodUtil.Predicates.matchParamTypes(1, additionalParamTypes))
.map(method->MethodAndPpmCandidate.of(method, method.getParameterTypes()[0]))
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodLiteralConstants.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodLiteralConstants.java
index b1d3dd7..ff2f801 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodLiteralConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodLiteralConstants.java
@@ -18,6 +18,13 @@
*/
package org.apache.isis.core.metamodel.facets;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.util.function.IntFunction;
+import java.util.function.Supplier;
+
+import org.apache.isis.core.metamodel.commons.StringExtensions;
+
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -35,7 +42,6 @@ public final class MethodLiteralConstants {
public static final String AUTO_COMPLETE_PREFIX = "autoComplete";
public static final String HIDE_PREFIX = "hide";
-
public static final String DISABLE_PREFIX = "disable";
public static final String VALIDATE_PREFIX = "validate";
@@ -64,6 +70,73 @@ public final class MethodLiteralConstants {
public static final String ICON_NAME_PREFIX = "iconName";
public static final String LAYOUT_METHOD_NAME = "layout";
+ // -- SUPPORTING METHOD NAMING CONVENTION
+
+ public static enum SupportingMethodNamingConvention {
+
+ /** version 1.x classic eg. hideAct(...), hide0Act(...)*/
+ PREFIX_PARAMNUM_ACTION {
+
+ @Override
+ protected String getActionSupportingMethodName(Method actionMethod, String prefix) {
+ final String capitalizedName =
+ StringExtensions.asCapitalizedName(actionMethod.getName());
+ return prefix + capitalizedName;
+ }
+
+ @Override
+ protected String getParameterSupportingMethodName(Method actionMethod, String prefix, int paramNum) {
+ final String capitalizedName =
+ StringExtensions.asCapitalizedName(actionMethod.getName());
+ return prefix + paramNum + capitalizedName;
+ }
+
+ @Override
+ protected String getMemberSupportingMethodName(Member member, String prefix) {
+ if(member instanceof Method) {
+ final Method method = (Method)member;
+ if(method.getParameterCount()>0) {
+ // definitely an action not a getter
+ return getActionSupportingMethodName(method, prefix);
+ }
+ // either a no-arg action or a getter
+ final String capitalizedName =
+ StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(member.getName());
+ return prefix + capitalizedName;
+ }
+ // must be a field then
+ final String capitalizedName =
+ StringExtensions.asCapitalizedName(member.getName());
+ return prefix + capitalizedName;
+ }
+
+ }
+ ;
+
+ protected abstract String getActionSupportingMethodName(Method actionMethod, String prefix);
+ protected abstract String getParameterSupportingMethodName(Method actionMethod, String prefix, int paramNum);
+ /** automatically deals with properties getters and actions */
+ protected abstract String getMemberSupportingMethodName(Member member, String prefix);
+
+ /** paramNum to param-supporting-method name provider */
+ public IntFunction<String> providerForParam(Method actionMethod, String prefix) {
+ return paramNum->getParameterSupportingMethodName(
+ actionMethod, prefix, paramNum);
+ }
+
+ /** action-supporting-method name provider */
+ public Supplier<String> providerForAction(Method actionMethod, String prefix) {
+ return ()->getActionSupportingMethodName(actionMethod, prefix);
+ }
+
+ /** member-supporting-method name provider */
+ public Supplier<String> providerForMember(Member member, String prefix) {
+ return ()->getMemberSupportingMethodName(member, prefix);
+ }
+
+ }
+
+
// -- DEPRECATIONS
@Deprecated public static final String VALIDATE_ADD_TO_PREFIX = "validateAddTo";
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
index cd6cd0e..d5302ef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets;
import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.commons.collections.ImmutableEnumSet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.MethodLiteralConstants.SupportingMethodNamingConvention;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -34,7 +35,10 @@ import lombok.val;
public abstract class MethodPrefixBasedFacetFactoryAbstract
extends FacetFactoryAbstract
implements MethodPrefixBasedFacetFactory {
-
+
+ protected static final SupportingMethodNamingConvention PREFIX_BASED_NAMING =
+ SupportingMethodNamingConvention.PREFIX_PARAMNUM_ACTION;
+
@Getter(onMethod = @__(@Override))
private final Can<String> prefixes;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
index e2f0b99..90b331e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
@@ -24,33 +24,25 @@ import java.util.List;
import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.commons.internal._Constants;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import lombok.val;
+
/**
* Sets up all the {@link Facet}s for an action in a single shot.
*/
public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DEFAULT_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.DEFAULT_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public ActionDefaultsFacetViaMethodFactory() {
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
public void process(final ProcessMethodContext processMethodContext) {
@@ -70,19 +62,19 @@ public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetF
processMethodContext.removeMethod(defaultsMethod);
- final FacetHolder facetedMethod = processMethodContext.getFacetHolder();
- final ActionDefaultsFacetViaMethod facet = new ActionDefaultsFacetViaMethod(defaultsMethod, facetedMethod);
- super.addFacet(facet);
+ val facetedMethod = processMethodContext.getFacetHolder();
+ super.addFacet(new ActionDefaultsFacetViaMethod(defaultsMethod, facetedMethod));
}
- private static Method findDefaultsMethodReturning(final ProcessMethodContext processMethodContext, final Class<?> returnType) {
-
- final Method actionMethod = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
- final String name = MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName;
+ private static Method findDefaultsMethodReturning(
+ final ProcessMethodContext processMethodContext,
+ final Class<?> returnType) {
- final Class<?> cls = processMethodContext.getCls();
- return MethodFinderUtils.findMethod(cls, name, returnType, _Constants.emptyClasses);
+ val actionMethod = processMethodContext.getMethod();
+ val namingConvention = PREFIX_BASED_NAMING.providerForAction(actionMethod, PREFIX);
+ val cls = processMethodContext.getCls();
+ return MethodFinderUtils.findMethod(
+ cls, namingConvention.get(), returnType, NO_ARG);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
index a8e4a7c..cfd2e60 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
@@ -23,10 +23,7 @@ import java.lang.reflect.Method;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
-import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
@@ -35,25 +32,17 @@ import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFa
import lombok.val;
/**
- * Sets up {@link ActionValidationFacet}.
+ * Sets up {@link ActionValidationFacet} and {@link ActionParameterValidationFacetViaMethod}.
*/
-public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
+public class ActionValidationFacetViaMethodFactory
+extends MethodPrefixBasedFacetFactoryAbstract {
+
+ private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.VALIDATE_PREFIX);
-
-
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public ActionValidationFacetViaMethodFactory() {
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
public void process(final ProcessMethodContext processMethodContext) {
handleValidateAllArgsMethod(processMethodContext);
@@ -61,16 +50,17 @@ public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFace
private void handleValidateAllArgsMethod(final ProcessMethodContext processMethodContext) {
- final Class<?> cls = processMethodContext.getCls();
- final Method actionMethod = processMethodContext.getMethod();
- final IdentifiedHolder facetHolder = processMethodContext.getFacetHolder();
+ val cls = processMethodContext.getCls();
+ val actionMethod = processMethodContext.getMethod();
+ val facetHolder = processMethodContext.getFacetHolder();
- final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
- final Class<?>[] paramTypes = actionMethod.getParameterTypes();
+ val paramTypes = actionMethod.getParameterTypes();
+ val namingConvention = PREFIX_BASED_NAMING.providerForAction(actionMethod, PREFIX);
+
final Method validateMethod = MethodFinderUtils.findMethod_returningText(
cls,
- MethodLiteralConstants.VALIDATE_PREFIX + capitalizedName,
+ namingConvention.get(),
paramTypes);
if (validateMethod == null) {
return;
@@ -80,38 +70,11 @@ public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFace
final TranslationService translationService = getTranslationService();
// sadness: same as in TranslationFactory
final String translationContext = facetHolder.getIdentifier().toClassAndNameIdentityString();
- final ActionValidationFacetViaMethod facet = new ActionValidationFacetViaMethod(validateMethod, translationService, translationContext, facetHolder);
+ final ActionValidationFacetViaMethod facet =
+ new ActionValidationFacetViaMethod(validateMethod, translationService, translationContext, facetHolder);
super.addFacet(facet);
}
- @Override
- public void processParams(final ProcessParameterContext processParameterContext) {
-
- final Class<?> cls = processParameterContext.getCls();
- final Method actionMethod = processParameterContext.getMethod();
- final int paramNum = processParameterContext.getParamNum();
- val paramType = processParameterContext.getParameterType();
- final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
-
- final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-
- final String validateName = MethodLiteralConstants.VALIDATE_PREFIX + paramNum + capitalizedName;
- final Method validateMethod = MethodFinderUtils.findMethod_returningText(
- cls,
- validateName,
- new Class<?>[]{paramType});
- if (validateMethod == null) {
- return;
- }
-
- processParameterContext.removeMethod(validateMethod);
-
- final TranslationService translationService = getTranslationService();
- // sadness: same as in TranslationFactory
- final String translationContext = facetHolder.getIdentifier().toFullIdentityString();
- final Facet facet = new ActionParameterValidationFacetViaMethod(validateMethod, translationService, translationContext, facetHolder);
- super.addFacet(facet);
- }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
index f7659b1..5da2fb2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
@@ -23,8 +23,6 @@ import java.lang.reflect.Method;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
-import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
@@ -32,22 +30,17 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
+import lombok.val;
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DISABLE_PREFIX);
+public class DisableForContextFacetViaMethodFactory
+extends MethodPrefixBasedFacetFactoryAbstract {
+
+ private static final String PREFIX = MethodLiteralConstants.DISABLE_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public DisableForContextFacetViaMethodFactory() {
- super(FeatureType.MEMBERS, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.MEMBERS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
public void process(final ProcessMethodContext processMethodContext) {
attachDisabledFacetIfDisabledMethodIsFound(processMethodContext);
@@ -55,12 +48,13 @@ public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFac
private void attachDisabledFacetIfDisabledMethodIsFound(final ProcessMethodContext processMethodContext) {
- final Method method = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(method.getName());
+ val actionOrGetter = processMethodContext.getMethod();
- final Class<?> cls = processMethodContext.getCls();
+ val cls = processMethodContext.getCls();
Method disableMethod = null;
+
+ val namingConvention = PREFIX_BASED_NAMING.providerForMember(actionOrGetter, PREFIX);
boolean noParamsOnly = getConfiguration().getCore().getMetaModel().getValidator().isNoParamsOnly();
boolean searchExactMatch = !noParamsOnly;
@@ -68,15 +62,15 @@ public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFac
// search for exact match
disableMethod = MethodFinderUtils.findMethod_returningText(
cls,
- MethodLiteralConstants.DISABLE_PREFIX + capitalizedName,
- method.getParameterTypes());
+ namingConvention.get(),
+ actionOrGetter.getParameterTypes());
}
if (disableMethod == null) {
// search for no-arg version
disableMethod = MethodFinderUtils.findMethod_returningText(
cls,
- MethodLiteralConstants.DISABLE_PREFIX + capitalizedName,
- new Class<?>[0]);
+ namingConvention.get(),
+ NO_ARG);
}
if (disableMethod == null) {
return;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
index 45b08db..d1178db 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
@@ -22,8 +22,6 @@ package org.apache.isis.core.metamodel.facets.members.hidden.method;
import java.lang.reflect.Method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
-import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -31,22 +29,17 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
+import lombok.val;
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
+public class HideForContextFacetViaMethodFactory
+extends MethodPrefixBasedFacetFactoryAbstract {
+
+ private static final String PREFIX = MethodLiteralConstants.HIDE_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public HideForContextFacetViaMethodFactory() {
- super(FeatureType.MEMBERS, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.MEMBERS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
public void process(final ProcessMethodContext processMethodContext) {
attachHideFacetIfHideMethodIsFound(processMethodContext);
@@ -54,18 +47,26 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
private void attachHideFacetIfHideMethodIsFound(final ProcessMethodContext processMethodContext) {
- final Method getter = processMethodContext.getMethod();
- final String capitalizedName =
- StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getter.getName());
+ final Method actionOrGetter = processMethodContext.getMethod();
+
+ val namingConvention = PREFIX_BASED_NAMING.providerForMember(actionOrGetter, PREFIX);
- final Class<?> cls = processMethodContext.getCls();
- Method hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
+ val cls = processMethodContext.getCls();
+ Method hideMethod = MethodFinderUtils.findMethod(
+ cls,
+ namingConvention.get(),
+ boolean.class,
+ NO_ARG);
if (hideMethod == null) {
boolean noParamsOnly = getConfiguration().getCore().getMetaModel().getValidator().isNoParamsOnly();
boolean searchExactMatch = !noParamsOnly;
if(searchExactMatch) {
- hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, getter.getParameterTypes());
+ hideMethod = MethodFinderUtils.findMethod(
+ cls,
+ namingConvention.get(),
+ boolean.class,
+ actionOrGetter.getParameterTypes());
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index ca201b4..759e8a6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.object.validating.validateobject.m
import java.lang.reflect.Method;
-import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -31,12 +30,14 @@ import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import lombok.val;
+
public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.VALIDATE_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
public ValidateObjectFacetMethodFactory() {
- super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -49,9 +50,9 @@ public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFact
MethodLiteralConstants.VALIDATE_PREFIX,
NO_ARG);
if (method != null) {
- final TranslationService translationService = getTranslationService();
+ val translationService = getTranslationService();
// sadness: same as in TranslationFactory
- final String translationContext = ((IdentifiedHolder)facetHolder).getIdentifier().toClassIdentityString();
+ val translationContext = ((IdentifiedHolder)facetHolder).getIdentifier().toClassIdentityString();
FacetUtil.addFacet(new ValidateObjectFacetMethod(method, translationService, translationContext, facetHolder));
processClassContext.removeMethod(method);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index f5cba6c..fb1c2db 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.param.autocomplete.method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.exceptions.MetaModelException;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
@@ -33,10 +32,10 @@ import lombok.val;
public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.AUTO_COMPLETE_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.AUTO_COMPLETE_PREFIX;
public ActionParameterAutoCompleteFacetViaMethodFactory() {
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -52,14 +51,13 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
// attach ActionParameterChoicesFacet if autoCompleteNumMethod is found ...
val actionMethod = processMethodContext.getMethod();
- val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+ val namingConvention = PREFIX_BASED_NAMING.providerForParam(actionMethod, PREFIX);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
.returnType(ReturnType.NON_SCALAR)
.additionalParamType(String.class)
- .paramIndexToMethodName(paramIndex ->
- MethodLiteralConstants.AUTO_COMPLETE_PREFIX + paramIndex + capitalizedName)
+ .paramIndexToMethodName(namingConvention)
.build();
ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index 02e130d..6698a28 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -23,31 +23,22 @@ import java.lang.reflect.Method;
import java.util.Collection;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.commons.internal._Constants;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
-import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import lombok.val;
+
public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CHOICES_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.CHOICES_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public ActionChoicesFacetViaMethodFactory() {
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
public void process(final ProcessMethodContext processMethodContext) {
attachActionChoicesFacetIfParameterChoicesMethodIsFound(processMethodContext);
@@ -55,12 +46,12 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
private void attachActionChoicesFacetIfParameterChoicesMethodIsFound(final ProcessMethodContext processMethodContext) {
- final Method actionMethod = processMethodContext.getMethod();
+ val actionMethod = processMethodContext.getMethod();
if (actionMethod.getParameterCount() <= 0) {
return;
}
-
+
Method choicesMethod = null;
if (choicesMethod == null) {
choicesMethod = findChoicesMethodReturning(processMethodContext, Object[][].class);
@@ -78,24 +69,21 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
final Class<?> returnType = actionMethod.getReturnType();
final FacetHolder action = processMethodContext.getFacetHolder();
- final ActionChoicesFacetViaMethod facet = new ActionChoicesFacetViaMethod(choicesMethod, returnType, action);
- super.addFacet(facet);
+ super.addFacet(new ActionChoicesFacetViaMethod(choicesMethod, returnType, action));
}
protected Method findChoicesMethodReturning(
final ProcessMethodContext processMethodContext,
- final Class<?> returnType2) {
-
- Method choicesMethod;
- final Class<?> cls = processMethodContext.getCls();
-
- final Method actionMethod = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+ final Class<?> returnType) {
- final String name = MethodLiteralConstants.CHOICES_PREFIX + capitalizedName;
- choicesMethod = MethodFinderUtils.findMethod(cls, name, returnType2, _Constants.emptyClasses);
+ val cls = processMethodContext.getCls();
+ val actionMethod = processMethodContext.getMethod();
+ val namingConvention = PREFIX_BASED_NAMING.providerForAction(actionMethod, PREFIX);
+
+ Method choicesMethod =
+ MethodFinderUtils.findMethod(cls, namingConvention.get(), returnType, NO_ARG);
return choicesMethod;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index 745af6b..4c83fc6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -20,14 +20,12 @@
package org.apache.isis.core.metamodel.facets.param.choices.methodnum;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.exceptions.MetaModelException;
-import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.ParameterSupport;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
import lombok.val;
@@ -35,14 +33,10 @@ import lombok.val;
public class ActionParameterChoicesFacetViaMethodFactory
extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.empty();
+ private static final String PREFIX = MethodLiteralConstants.CHOICES_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public ActionParameterChoicesFacetViaMethodFactory() {
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
// ///////////////////////////////////////////////////////
@@ -62,13 +56,12 @@ extends MethodPrefixBasedFacetFactoryAbstract {
// attach ActionChoicesFacet if choicesNumMethod is found ...
val actionMethod = processMethodContext.getMethod();
- val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+ val namingConvention = PREFIX_BASED_NAMING.providerForParam(actionMethod, PREFIX);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
.returnType(ReturnType.NON_SCALAR)
- .paramIndexToMethodName(paramIndex ->
- MethodLiteralConstants.CHOICES_PREFIX + paramIndex + capitalizedName)
+ .paramIndexToMethodName(namingConvention)
.build();
ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index 04930ff..c69f4a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.param.defaults.methodnum;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.exceptions.MetaModelException;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -37,14 +36,10 @@ import lombok.val;
*/
public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.empty();
+ private static final String PREFIX = MethodLiteralConstants.DEFAULT_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public ActionParameterDefaultsFacetViaMethodFactory() {
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
// ///////////////////////////////////////////////////////
@@ -63,15 +58,13 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
// attach DefaultFacetForParameters if defaultNumMethod is found ...
- //val translationService = getMetaModelContext().getTranslationService();
val actionMethod = processMethodContext.getMethod();
- val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+ val namingConvention = PREFIX_BASED_NAMING.providerForParam(actionMethod, PREFIX);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
.returnType(ReturnType.SAME_AS_PARAMETER_TYPE)
- .paramIndexToMethodName(paramIndex ->
- MethodLiteralConstants.DEFAULT_PREFIX + paramIndex + capitalizedName)
+ .paramIndexToMethodName(namingConvention)
.build();
ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
index 4e9c379..b63caff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
@@ -74,11 +74,11 @@ implements ImperativeFacet {
@Override
public String disabledReason(
final ManagedObject owningAdapter,
- final Can<ManagedObject> argumentAdapters) {
+ final Can<ManagedObject> pendingArgs) {
final Object returnValue = ppmFactory.isPresent()
- ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, argumentAdapters)
- : ManagedObject.InvokeUtil.invokeAutofit(method, owningAdapter, argumentAdapters);
+ ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
+ : ManagedObject.InvokeUtil.invokeAutofit(method, owningAdapter, pendingArgs);
if(returnValue instanceof String) {
return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index dedb6c5..9c4666b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -20,13 +20,12 @@
package org.apache.isis.core.metamodel.facets.param.disable.method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.exceptions.MetaModelException;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.ParameterSupport;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.param.disable.ActionParameterDisabledFacet;
import lombok.val;
@@ -36,12 +35,11 @@ import lombok.val;
*/
public class ActionParameterDisabledFacetViaMethodFactory
extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DISABLE_PREFIX);
+
+ private static final String PREFIX = MethodLiteralConstants.DISABLE_PREFIX;
public ActionParameterDisabledFacetViaMethodFactory() {
- //super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -56,21 +54,19 @@ extends MethodPrefixBasedFacetFactoryAbstract {
// attach ActionParameterDisabledFacet if disableNumMethod is found ...
- val translationService = getMetaModelContext().getTranslationService();
val actionMethod = processMethodContext.getMethod();
- val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+ val namingConvention = PREFIX_BASED_NAMING.providerForParam(actionMethod, PREFIX);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
.returnType(ReturnType.TEXT)
- .paramIndexToMethodName(paramIndex ->
- MethodLiteralConstants.DISABLE_PREFIX + paramIndex + capitalizedName)
+ .paramIndexToMethodName(namingConvention)
.build();
ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
val disableMethod = searchResult.getSupportingMethod();
- val paramIndex = searchResult.getParamIndex();
+ val paramNum = searchResult.getParamIndex();
processMethodContext.removeMethod(disableMethod);
@@ -81,9 +77,10 @@ extends MethodPrefixBasedFacetFactoryAbstract {
}
// add facets directly to parameters, not to actions
- val paramAsHolder = parameters.get(paramIndex);
+ val paramAsHolder = parameters.get(paramNum);
val translationContext = paramAsHolder.getIdentifier().toFullIdentityString();
val ppmFactory = searchResult.getPpmFactory();
+ val translationService = getMetaModelContext().getTranslationService();
super.addFacet(
new ActionParameterDisabledFacetViaMethod(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index 9e1c4b3..16304d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -20,13 +20,12 @@
package org.apache.isis.core.metamodel.facets.param.hide.method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.exceptions.MetaModelException;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.ParameterSupport;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.param.hide.ActionParameterHiddenFacet;
import lombok.val;
@@ -36,11 +35,10 @@ import lombok.val;
*/
public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.HIDE_PREFIX;
public ActionParameterHiddenFacetViaMethodFactory() {
- //super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
- super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -56,13 +54,12 @@ public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBase
// attach ActionParameterHiddenFacet if hideNumMethod is found ...
val actionMethod = processMethodContext.getMethod();
- val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+ val namingConvention = PREFIX_BASED_NAMING.providerForParam(actionMethod, PREFIX);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
.returnType(ReturnType.BOOLEAN)
- .paramIndexToMethodName(paramIndex ->
- MethodLiteralConstants.HIDE_PREFIX + paramIndex + capitalizedName)
+ .paramIndexToMethodName(namingConvention)
.build();
ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacet.java
index d2e1e5c..475abff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacet.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.param.validate;
+import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
@@ -37,10 +38,15 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
*
* @see ActionInvocationFacet
*/
-public interface ActionParameterValidationFacet extends Facet, ValidatingInteractionAdvisor {
+public interface ActionParameterValidationFacet
+extends Facet, ValidatingInteractionAdvisor {
/**
* Reason why the validation has failed, or <tt>null</tt> if okay.
+ * @param can
*/
- public String invalidReason(ManagedObject target, ManagedObject arguments);
+ public String invalidReason(
+ ManagedObject target,
+ Can<ManagedObject> pendingArgs,
+ ManagedObject proposedArgument);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java
index d5f5c07..b18c365 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java
@@ -26,7 +26,11 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
import org.apache.isis.core.metamodel.interactions.ValidityContext;
-public abstract class ActionParameterValidationFacetAbstract extends FacetAbstract implements ActionParameterValidationFacet {
+import lombok.val;
+
+public abstract class ActionParameterValidationFacetAbstract
+extends FacetAbstract
+implements ActionParameterValidationFacet {
public static Class<? extends Facet> type() {
return ActionParameterValidationFacet.class;
@@ -41,7 +45,10 @@ public abstract class ActionParameterValidationFacetAbstract extends FacetAbstra
if (!(context instanceof ActionArgValidityContext)) {
return null;
}
- final ActionArgValidityContext actionArgValidityContext = (ActionArgValidityContext) context;
- return invalidReason(actionArgValidityContext.getTarget(), actionArgValidityContext.getProposed());
+ val actionArgValidityContext = (ActionArgValidityContext) context;
+ return invalidReason(
+ actionArgValidityContext.getTarget(),
+ actionArgValidityContext.getArgs(),
+ actionArgValidityContext.getProposed());
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
index 641f9ec..6e058fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
@@ -19,29 +19,42 @@
package org.apache.isis.core.metamodel.facets.param.validate.method;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import org.apache.isis.applib.services.i18n.TranslatableString;
import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacetAbstract;
import org.apache.isis.core.metamodel.spec.ManagedObject;
-public class ActionParameterValidationFacetViaMethod extends ActionParameterValidationFacetAbstract implements ImperativeFacet {
+public class ActionParameterValidationFacetViaMethod
+extends ActionParameterValidationFacetAbstract
+implements ImperativeFacet {
private final Method method;
private final TranslationService translationService;
private final String translationContext;
+ private final Optional<Constructor<?>> ppmFactory;
- public ActionParameterValidationFacetViaMethod(final Method method, final TranslationService translationService, final String translationContext, final FacetHolder holder) {
+ public ActionParameterValidationFacetViaMethod(
+ final Method method,
+ final TranslationService translationService,
+ final String translationContext,
+ final Optional<Constructor<?>> ppmFactory,
+ final FacetHolder holder) {
+
super(holder);
this.method = method;
this.translationService = translationService;
this.translationContext = translationContext;
+ this.ppmFactory = ppmFactory;
}
/**
@@ -59,8 +72,15 @@ public class ActionParameterValidationFacetViaMethod extends ActionParameterVali
}
@Override
- public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedArgumentAdapter) {
- final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedArgumentAdapter);
+ public String invalidReason(
+ final ManagedObject owningAdapter,
+ final Can<ManagedObject> pendingArgs,
+ final ManagedObject proposedArgument) {
+
+ final Object returnValue = ppmFactory.isPresent()
+ ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
+ : ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedArgument);
+
if(returnValue instanceof String) {
return (String) returnValue;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
index e33989a..a3bebb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
@@ -24,59 +24,78 @@ import java.lang.reflect.Method;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.metamodel.commons.StringExtensions;
+import org.apache.isis.core.metamodel.exceptions.MetaModelException;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.ParameterSupport;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
+import org.apache.isis.core.metamodel.facets.param.disable.ActionParameterDisabledFacet;
+import org.apache.isis.core.metamodel.facets.param.disable.method.ActionParameterDisabledFacetViaMethod;
import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacet;
import lombok.val;
/**
- * Sets up {@link ActionParameterValidationFacet}.
- */
+ * Sets up {@link ActionParameterValidationFacet}. */
public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.VALIDATE_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
- /**
- * Note that the {@link Facet}s registered are the generic ones from
- * noa-architecture (where they exist)
- */
public ActionParameterValidationFacetViaMethodFactory() {
- super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
- public void processParams(final ProcessParameterContext processParameterContext) {
-
- val cls = processParameterContext.getCls();
- val actionMethod = processParameterContext.getMethod();
- final int paramNum = processParameterContext.getParamNum();
- val paramType = processParameterContext.getParameterType();
- final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
-
- final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-
- final String validateName = MethodLiteralConstants.VALIDATE_PREFIX + paramNum + capitalizedName;
- final Method validateMethod = MethodFinderUtils.findMethod_returningText(
- cls,
- validateName,
- new Class<?>[]{paramType});
- if (validateMethod == null) {
+ public void process(final ProcessMethodContext processMethodContext) {
+
+ val facetedMethod = processMethodContext.getFacetHolder();
+ val parameters = facetedMethod.getParameters();
+
+ if (parameters.isEmpty()) {
return;
}
- processParameterContext.removeMethod(validateMethod);
-
- final TranslationService translationService = getMetaModelContext().getTranslationService();
- // sadness: same as in TranslationFactory
- final String translationContext = facetHolder.getIdentifier().toFullIdentityString();
- final Facet facet = new ActionParameterValidationFacetViaMethod(validateMethod, translationService, translationContext, facetHolder);
- super.addFacet(facet);
+ // attach ActionParameterValidationFacet if validateNumMethod is found ...
+
+ val actionMethod = processMethodContext.getMethod();
+ val namingConvention = PREFIX_BASED_NAMING.providerForParam(actionMethod, PREFIX);
+
+ val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
+ .processMethodContext(processMethodContext)
+ .returnType(ReturnType.TEXT)
+ .paramIndexToMethodName(namingConvention)
+ .build();
+
+ ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
+
+ val validateMethod = searchResult.getSupportingMethod();
+ val paramNum = searchResult.getParamIndex();
+
+ processMethodContext.removeMethod(validateMethod);
+
+ if (facetedMethod.containsNonFallbackFacet(ActionParameterValidationFacet.class)) {
+ val cls = processMethodContext.getCls();
+ throw new MetaModelException(cls + " uses both old and new 'validate' syntax - "
+ + "must use one or other");
+ }
+
+ // add facets directly to parameters, not to actions
+ val paramAsHolder = parameters.get(paramNum);
+ val translationContext = paramAsHolder.getIdentifier().toFullIdentityString();
+ val ppmFactory = searchResult.getPpmFactory();
+ val translationService = getMetaModelContext().getTranslationService();
+
+ super.addFacet(
+ new ActionParameterValidationFacetViaMethod(
+ validateMethod, translationService, translationContext, ppmFactory, paramAsHolder));
+
+ });
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 606635f..2e7bb6b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.properties.autocomplete.method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -32,11 +31,11 @@ import lombok.val;
public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.AUTO_COMPLETE_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.AUTO_COMPLETE_PREFIX;
public PropertyAutoCompleteFacetMethodFactory() {
// to also support properties from mixins, need to not only include properties but also actions
- super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -54,16 +53,17 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
}
val getterOrMixinMain = processMethodContext.getMethod();
- val capitalizedName = processMethodContext.isMixinMain()
- ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
- : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
+ val namingConvention = processMethodContext.isMixinMain()
+ ? PREFIX_BASED_NAMING.providerForAction(getterOrMixinMain, PREFIX)
+ : PREFIX_BASED_NAMING.providerForMember(getterOrMixinMain, PREFIX); // handles getters
+
val cls = processMethodContext.getCls();
val returnType = getterOrMixinMain.getReturnType();
val autoCompleteMethod = MethodFinderUtils
.findMethod(
cls,
- MethodLiteralConstants.AUTO_COMPLETE_PREFIX + capitalizedName,
+ namingConvention.get(),
NO_RETURN,
STRING_ARG);
if (autoCompleteMethod == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 7c61a25..c703074 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.properties.choices.method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -32,11 +31,11 @@ import lombok.val;
public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CHOICES_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.CHOICES_PREFIX;
public PropertyChoicesFacetViaMethodFactory() {
// to also support properties from mixins, need to not only include properties but also actions
- super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -53,16 +52,16 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
}
val getterOrMixinMain = processMethodContext.getMethod();
- val capitalizedName = processMethodContext.isMixinMain()
- ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
- : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
+ val namingConvention = processMethodContext.isMixinMain()
+ ? PREFIX_BASED_NAMING.providerForAction(getterOrMixinMain, PREFIX)
+ : PREFIX_BASED_NAMING.providerForMember(getterOrMixinMain, PREFIX); // handles getters
val cls = processMethodContext.getCls();
val returnType = getterOrMixinMain.getReturnType();
val choicesMethod = MethodFinderUtils
.findMethod(
cls,
- MethodLiteralConstants.CHOICES_PREFIX + capitalizedName,
+ namingConvention.get(),
NO_RETURN,
NO_ARG);
if (choicesMethod == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index 35e5e1a..612d218 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.properties.defaults.method;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -32,11 +31,11 @@ import lombok.val;
public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DEFAULT_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.DEFAULT_PREFIX;
public PropertyDefaultFacetViaMethodFactory() {
// to also support properties from mixins, need to not only include properties but also actions
- super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -53,16 +52,16 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
}
val getterOrMixinMain = processMethodContext.getMethod();
- val capitalizedName = processMethodContext.isMixinMain()
- ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
- : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
+ val namingConvention = processMethodContext.isMixinMain()
+ ? PREFIX_BASED_NAMING.providerForAction(getterOrMixinMain, PREFIX)
+ : PREFIX_BASED_NAMING.providerForMember(getterOrMixinMain, PREFIX); // handles getters
val cls = processMethodContext.getCls();
val returnType = getterOrMixinMain.getReturnType();
val method = MethodFinderUtils
.findMethod(
cls,
- MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName,
+ namingConvention.get(),
returnType,
NO_ARG);
if (method == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
index b2c2426..c572db0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
@@ -19,24 +19,20 @@
package org.apache.isis.core.metamodel.facets.properties.validating.method;
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.core.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import static org.apache.isis.core.metamodel.facets.MethodLiteralConstants.VALIDATE_PREFIX;
+import lombok.val;
public class PropertyValidateFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
- private static final Can<String> PREFIXES = Can.ofSingleton(VALIDATE_PREFIX);
+ private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
public PropertyValidateFacetViaMethodFactory() {
- super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
}
@Override
@@ -47,29 +43,27 @@ public class PropertyValidateFacetViaMethodFactory extends MethodPrefixBasedFace
private void attachValidateFacetIfValidateMethodIsFound(final ProcessMethodContext processMethodContext) {
- final Method getMethod = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
-
- final Class<?> returnType = getMethod.getReturnType();
- final Class<?>[] paramTypes = new Class[] { returnType };
+ val cls = processMethodContext.getCls();
+ val getterMethod = processMethodContext.getMethod();
+ val namingConvention = PREFIX_BASED_NAMING.providerForMember(getterMethod, PREFIX);
+ val returnType = getterMethod.getReturnType();
- final Class<?> cls = processMethodContext.getCls();
- final Method method = MethodFinderUtils.findMethod_returningText(
+ val validateMethod = MethodFinderUtils.findMethod_returningText(
cls,
- VALIDATE_PREFIX + capitalizedName,
- paramTypes);
- if (method == null) {
+ namingConvention.get(),
+ new Class[] { returnType });
+ if (validateMethod == null) {
return;
}
- processMethodContext.removeMethod(method);
-
- final FacetedMethod facetHolder = processMethodContext.getFacetHolder();
+ processMethodContext.removeMethod(validateMethod);
- final TranslationService translationService = getTranslationService();
+ val facetHolder = processMethodContext.getFacetHolder();
+ val translationService = getTranslationService();
// sadness: same as in TranslationFactory
- final String translationContext = facetHolder.getIdentifier().toClassAndNameIdentityString();
- final PropertyValidateFacetViaMethod facet = new PropertyValidateFacetViaMethod(method, translationService, translationContext, facetHolder);
- super.addFacet(facet);
+ val translationContext = facetHolder.getIdentifier().toClassAndNameIdentityString();
+ super.addFacet(
+ new PropertyValidateFacetViaMethod(
+ validateMethod, translationService, translationContext, facetHolder));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
index a4769c4..d819227 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
@@ -35,10 +35,12 @@ import lombok.Getter;
* See {@link InteractionContext} for overview; analogous to
* {@link ActionArgumentEvent}.
*/
-public class ActionArgValidityContext extends ValidityContext<ActionArgumentEvent> implements ProposedHolder, ActionInteractionContext {
+public class ActionArgValidityContext
+extends ValidityContext<ActionArgumentEvent>
+implements ProposedHolder, ActionInteractionContext {
@Getter(onMethod = @__(@Override)) private final ObjectAction objectAction;
- @Getter(onMethod = @__(@Override)) private final ManagedObject proposed;
+ @Getter(onMethod = @__(@Override)) private final ManagedObject proposed;
@Getter private final Can<ManagedObject> args;
@Getter private final int position;
@@ -50,7 +52,10 @@ public class ActionArgValidityContext extends ValidityContext<ActionArgumentEven
final int position,
final InteractionInitiatedBy interactionInitiatedBy) {
- super(InteractionContextType.ACTION_PROPOSED_ARGUMENT, targetAdapter, id, interactionInitiatedBy);
+ super(InteractionContextType.ACTION_PROPOSED_ARGUMENT,
+ targetAdapter,
+ id,
+ interactionInitiatedBy);
this.objectAction = objectAction;
this.args = args;
@@ -61,7 +66,10 @@ public class ActionArgValidityContext extends ValidityContext<ActionArgumentEven
@Override
public ActionArgumentEvent createInteractionEvent() {
return new ActionArgumentEvent(
- unwrapSingle(getTarget()), getIdentifier(), ManagedObject.unwrapMultipleAsArray(getArgs().toList()), getPosition());
+ unwrapSingle(getTarget()),
+ getIdentifier(),
+ ManagedObject.unwrapMultipleAsArray(getArgs().toList()),
+ getPosition());
}
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index 5ed1492..c409a23 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -131,12 +131,12 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
// mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
+ @SuppressWarnings("unused")
class Customer {
- @SuppressWarnings("unused")
+
public void someAction() {
}
- @SuppressWarnings("unused")
public String validateSomeAction() {
return null;
}
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
index e535e9e..6fccb64 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
@@ -92,6 +92,11 @@ public class DependentArgsActionDemo_useDefaultFixedPoint {
// -- PARAM 2
+ @Model
+ public int[] choices2Act(Parameters params) {
+ return new int[] {1,2,3,4};
+ }
+
// @Model
// public int default2Act(Parameters params) {
// _Probe.sysOut("p2: %d %d %d %d", params.a, params.b, params.c, params.d);
@@ -105,6 +110,16 @@ public class DependentArgsActionDemo_useDefaultFixedPoint {
_Probe.sysOut("p3: %d %d %d %d", params.a, params.b, params.c, params.d);
return params.c() + 1;
}
+
+ @Model
+ public String validate3Act(Parameters params) {
+
+ int cPlusD = params.c()+params.d();
+
+ return (cPlusD%2 == 1)
+ ? "c plus d must be even"
+ : null;
+ }