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 2019/12/18 17:19:32 UTC

[isis] branch master updated: ISIS-2226 consolidate Parameter-Facet-Factories to use DependendArgUtils

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 c5ca6c4  ISIS-2226 consolidate Parameter-Facet-Factories to use DependendArgUtils
c5ca6c4 is described below

commit c5ca6c42f271457055344062032ef25a987d0d60
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Dec 18 18:19:23 2019 +0100

    ISIS-2226 consolidate Parameter-Facet-Factories to use DependendArgUtils
    
    fixes dependent arg feature for DISABLE and HIDE
---
 .../isis/metamodel/facets/DependentArgUtils.java   |  88 +++++++++++--
 .../metamodel/facets/FacetedMethodParameter.java   |   8 +-
 .../isis/metamodel/facets/MethodFinderUtils.java   |  13 +-
 .../isis/metamodel/facets/TypedHolderDefault.java  |   5 +
 ...ParameterAutoCompleteFacetViaMethodFactory.java |  83 ++-----------
 ...ctionParameterChoicesFacetViaMethodFactory.java |  30 ++---
 .../ActionParameterDisabledFacetViaMethod.java     |   4 +-
 ...tionParameterDisabledFacetViaMethodFactory.java | 136 ++++++++++++++-------
 .../hide/ActionParameterHiddenFacetAbstract.java   |   4 +-
 ...ActionParameterHiddenFacetViaMethodFactory.java | 123 +++++++++++++------
 .../specimpl/ObjectActionParameterAbstract.java    |   6 +-
 .../handlers/DomainObjectInvocationHandler.java    |   3 +-
 .../components/actions/ActionParametersForm.java   |   3 +-
 .../DependentArgsActionDemo_useDisable.java        |   2 +-
 .../depargs/DependentArgsActionDemo_useHide.java   |   2 +-
 .../testdomain/model/good/ProperMemberSupport.java |  12 +-
 .../model/good/ProperMemberSupport_action.java     |   7 +-
 .../DomainModelTest_usingGoodDomain.java           |   2 +
 .../SupportingMethodValidatorRefinerFactory.java   |   2 +-
 19 files changed, 326 insertions(+), 207 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DependentArgUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DependentArgUtils.java
index 7ff5361..8ee8e17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DependentArgUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DependentArgUtils.java
@@ -22,30 +22,44 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.function.Consumer;
 import java.util.function.IntFunction;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nullable;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.metamodel.facets.FacetFactory.ProcessMethodContext;
 
+import lombok.Builder;
 import lombok.Getter;
+import lombok.NonNull;
 import lombok.Value;
 import lombok.val;
 import lombok.experimental.UtilityClass;
+import lombok.extern.log4j.Log4j2;
 
 /**
  * 
  * @since 2.0
  *
  */
-@UtilityClass
+@UtilityClass @Log4j2
 public class DependentArgUtils {
     
-    @Value(staticConstructor = "of")
+    @Value @Builder
     public static class ParamSupportingMethodSearchRequest {
-        ProcessMethodContext processMethodContext;
+        
+        public static enum ReturnType {
+            NON_SCALAR,
+            TEXT,
+            BOOLEAN
+        }
+        
+        @NonNull ProcessMethodContext processMethodContext;
+        @NonNull IntFunction<String> paramIndexToMethodName;
+        @NonNull ReturnType returnType;
         Class<?> additionalParamType;
-        IntFunction<String> paramIndexToMethodName;
         
         @Getter(lazy = true)
         Class<?>[] paramTypes = getProcessMethodContext().getMethod().getParameterTypes();
@@ -59,7 +73,7 @@ public class DependentArgUtils {
         Class<?> returnType;
     }
 
-    public void findParamSupportingMethods(
+    public static void findParamSupportingMethods(
             final DependentArgUtils.ParamSupportingMethodSearchRequest searchRequest, 
             final Consumer<DependentArgUtils.ParamSupportingMethodSearchResult> onMethodFound) {
         
@@ -70,6 +84,12 @@ public class DependentArgUtils {
 
             val paramIndex = i;
             val searchResult = findParamSupportingMethod(searchRequest, paramIndex);
+            
+            if(log.isDebugEnabled()) {
+                log.debug("search {}{}", 
+                        searchResult != null ? "FOUND " : "",
+                        toString(searchRequest, paramIndex));
+            }
 
             if (searchResult != null) {
                 onMethodFound.accept(searchResult);
@@ -91,29 +111,52 @@ public class DependentArgUtils {
         val methodName = searchRequest.getParamIndexToMethodName().apply(paramIndex);
         val paramType = paramTypes[paramIndex];
         val additionalParamType = searchRequest.getAdditionalParamType();
+        val additionalParamCount = additionalParamType!=null ? 1 : 0;
         
-        int paramsConsidered = paramTypes.length - 1; 
-        while(paramsConsidered>=0) {
+        int paramsConsideredCount = paramIndex + additionalParamCount; 
+        while(paramsConsideredCount>=0) {
         
-            val paramTypesToLookFor = concat(paramTypes, paramsConsidered, additionalParamType);
+            val paramTypesToLookFor = concat(paramTypes, paramsConsideredCount, additionalParamType);
             
-            val supportingMethod = MethodFinderUtils
+            final Method supportingMethod;
+            
+            switch(searchRequest.getReturnType()) {
+            case BOOLEAN:
+                supportingMethod = MethodFinderUtils
+                    .findMethod_returningBoolean(type, methodName, paramTypesToLookFor);
+                break;
+            case TEXT:
+                supportingMethod = MethodFinderUtils
+                    .findMethod_returningText(type, methodName, paramTypesToLookFor);
+                break;
+            case NON_SCALAR:
+                supportingMethod = MethodFinderUtils
                     .findMethod_returningNonScalar(type, methodName, paramType, paramTypesToLookFor);
+                break;
+            default:
+                supportingMethod = null;
+            }
+            
+            if(log.isDebugEnabled()) {
+                log.debug(". signature ({}) {}", 
+                        toString(paramTypesToLookFor),
+                        supportingMethod != null ? "found -> " + supportingMethod : "");
+            }
             
             if(supportingMethod != null) {
-                val searchResult = ParamSupportingMethodSearchResult.of(
-                        paramIndex, paramType, supportingMethod, supportingMethod.getReturnType());
+                val searchResult = ParamSupportingMethodSearchResult
+                        .of(paramIndex, paramType, supportingMethod, supportingMethod.getReturnType());
                 return searchResult;
             }
 
             // remove last, and search again
-            paramsConsidered--;
+            paramsConsideredCount--;
         }
 
         return null;
     }
     
-    public static Class<?>[] concat(
+    private static Class<?>[] concat(
             final Class<?>[] paramTypes,
             final int paramsConsidered,
             @Nullable final Class<?> additionalParamType) {
@@ -135,4 +178,23 @@ public class DependentArgUtils {
         return withAdditional;
     }
     
+    private String toString(
+            DependentArgUtils.ParamSupportingMethodSearchRequest searchRequest, 
+            int paramIndex) {
+        
+        return String.format("%s.%s(%s) : %s",
+                searchRequest.getProcessMethodContext().getCls().getSimpleName(),
+                searchRequest.getParamIndexToMethodName().apply(paramIndex),
+                toString(searchRequest.getParamTypes()),
+                searchRequest.getReturnType().name()
+                );
+    }
+    
+    private String toString(Class<?>[] types) {
+        return _NullSafe.stream(types)
+                .map(Class::getSimpleName)
+                .collect(Collectors.joining(","));
+    }
+    
+    
 }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetedMethodParameter.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetedMethodParameter.java
index 43b7de2..1a44e45 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetedMethodParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetedMethodParameter.java
@@ -24,7 +24,9 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 
-public class FacetedMethodParameter extends TypedHolderDefault implements IdentifiedHolder {
+public class FacetedMethodParameter 
+extends TypedHolderDefault 
+implements IdentifiedHolder {
 
     private final Identifier identifier;
 
@@ -33,8 +35,9 @@ public class FacetedMethodParameter extends TypedHolderDefault implements Identi
             final Class<?> declaringType,
             final Method method,
             final Class<?> type) {
+        
         super(featureType, type);
-
+        
         // best we can do...
         this.identifier = FeatureType.ACTION.identifierFor(declaringType, method);
     }
@@ -44,5 +47,4 @@ public class FacetedMethodParameter extends TypedHolderDefault implements Identi
         return identifier;
     }
 
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java
index e0b4563..343f277 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java
@@ -198,11 +198,20 @@ public final class MethodFinderUtils {
         return nullableMethod;
     }
 
+    // -- SHORTCUTS
     
+    private static final Class<?>[] BOOLEAN_TYPES = new Class<?>[]{
+        boolean.class};
+
     
-    // -- SHORTCUTS
+    public static Method findMethod_returningBoolean(
+            final Class<?> type,
+            final String name,
+            final Class<?>[] paramTypes) {
+        return findMethod_returningAnyOf(BOOLEAN_TYPES, type, name, paramTypes);
+    }
     
-    public static final Class<?>[] TEXT_TYPES = new Class<?>[]{
+    private static final Class<?>[] TEXT_TYPES = new Class<?>[]{
         String.class, 
         TranslatableString.class};
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/TypedHolderDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/TypedHolderDefault.java
index a946e35..014f866 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/TypedHolderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/TypedHolderDefault.java
@@ -49,5 +49,10 @@ public class TypedHolderDefault extends FacetHolderImpl implements TypedHolder {
     public void setType(final Class<?> type) {
         this.type = type;
     }
+    
+    @Override // as used for logging, not strictly required
+    public String toString() {
+        return type.getSimpleName();
+    }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index df7742e..cb73b63 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -19,17 +19,14 @@
 
 package org.apache.isis.metamodel.facets.param.autocomplete.method;
 
-import java.util.List;
-
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.exceptions.MetaModelException;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.DependentArgUtils;
-import org.apache.isis.metamodel.facets.FacetedMethod;
-import org.apache.isis.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.metamodel.facets.DependentArgUtils.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
 
 import lombok.val;
@@ -42,35 +39,28 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
         super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
     }
 
-    // ///////////////////////////////////////////////////////
-    // Actions
-    // ///////////////////////////////////////////////////////
-
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
 
-        final FacetedMethod facetedMethod = processMethodContext.getFacetHolder();
-        final List<FacetedMethodParameter> holderList = facetedMethod.getParameters();
-
-        attachAutoCompleteFacetForParametersIfAutoCompleteNumMethodIsFound(processMethodContext, holderList);
-
-    }
-    
-    private void attachAutoCompleteFacetForParametersIfAutoCompleteNumMethodIsFound(
-            final ProcessMethodContext processMethodContext, 
-            final List<FacetedMethodParameter> parameters) {
+        val facetedMethod = processMethodContext.getFacetHolder();
+        val parameters = facetedMethod.getParameters();
 
         if (parameters.isEmpty()) {
             return;
         }
 
+        // attach ActionParameterChoicesFacet if autoCompleteNumMethod is found ...
+        
         val actionMethod = processMethodContext.getMethod();
         val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
 
-        val searchRequest = DependentArgUtils.ParamSupportingMethodSearchRequest.of(
-                processMethodContext,
-                String.class,
-                paramIndex -> MethodLiteralConstants.AUTO_COMPLETE_PREFIX + paramIndex + capitalizedName);    
+        val searchRequest = DependentArgUtils.ParamSupportingMethodSearchRequest.builder()
+                .processMethodContext(processMethodContext)
+                .returnType(ReturnType.NON_SCALAR)
+                .additionalParamType(String.class)
+                .paramIndexToMethodName(paramIndex -> 
+                    MethodLiteralConstants.AUTO_COMPLETE_PREFIX + paramIndex + capitalizedName)
+                .build();
 
         DependentArgUtils.findParamSupportingMethods(searchRequest, searchResult -> {
             
@@ -80,7 +70,6 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
             
             processMethodContext.removeMethod(autoCompleteMethod);
 
-            val facetedMethod = processMethodContext.getFacetHolder();
             if (facetedMethod.containsNonFallbackFacet(ActionParameterAutoCompleteFacet.class)) {
                 val cls = processMethodContext.getCls();
                 throw new MetaModelException(cls + " uses both old and new autoComplete syntax - "
@@ -95,53 +84,5 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
         });
         
     }
-    
-// legacy of ...
-//    private void attachAutoCompleteFacetForParametersIfAutoCompleteNumMethodIsFound(
-//            final ProcessMethodContext processMethodContext, 
-//            final List<FacetedMethodParameter> parameters) {
-//
-//        if (parameters.isEmpty()) {
-//            return;
-//        }
-//
-//        val actionMethod = processMethodContext.getMethod();
-//        val paramTypes = actionMethod.getParameterTypes();
-//
-//        for (int i = 0; i < paramTypes.length; i++) {
-//
-//            final Class<?> paramType = paramTypes[i];
-//            final Class<?> arrayOfParamType = Array.newInstance(paramType, 0).getClass();
-//            final Class<?>[] returnTypes = { arrayOfParamType, List.class, Set.class, Collection.class };
-//            
-//            val autoCompleteMethod = findAutoCompleteNumMethodReturning(processMethodContext, i, returnTypes);
-//            if (autoCompleteMethod == null) {
-//                continue;
-//            }
-//            processMethodContext.removeMethod(autoCompleteMethod);
-//
-//            // add facets directly to parameters, not to actions
-//            final FacetedMethodParameter paramAsHolder = parameters.get(i);
-//            super.addFacet(
-//                    new ActionParameterAutoCompleteFacetViaMethod(
-//                            autoCompleteMethod, paramType, paramAsHolder));
-//        }
-//    }
-//
-//    private Method findAutoCompleteNumMethodReturning(
-//            final ProcessMethodContext processMethodContext,
-//            final int paramNum,
-//            final Class<?>[] returnTypes) {
-//
-//        final Class<?> cls = processMethodContext.getCls();
-//        final Method actionMethod = processMethodContext.getMethod();
-//        final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-//        final String name = MethodLiteralConstants.AUTO_COMPLETE_PREFIX + paramNum + capitalizedName;
-//        return MethodFinderUtils.findMethod_returningAnyOf(
-//                returnTypes,
-//                cls,
-//                name,
-//                STRING_ARG);
-//    }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index ea4ce37..1c60ebf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -19,18 +19,15 @@
 
 package org.apache.isis.metamodel.facets.param.choices.methodnum;
 
-import java.util.List;
-
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.exceptions.MetaModelException;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.DependentArgUtils;
-import org.apache.isis.metamodel.facets.FacetedMethod;
-import org.apache.isis.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.metamodel.facets.DependentArgUtils.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.metamodel.facets.param.choices.ActionChoicesFacet;
 
 import lombok.val;
@@ -55,28 +52,24 @@ extends MethodPrefixBasedFacetFactoryAbstract {
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
 
-        final FacetedMethod facetedMethod = processMethodContext.getFacetHolder();
-        final List<FacetedMethodParameter> holderList = facetedMethod.getParameters();
-
-        attachChoicesFacetForParametersIfChoicesNumMethodIsFound(processMethodContext, holderList);
-
-    }
-
-    private void attachChoicesFacetForParametersIfChoicesNumMethodIsFound(
-            final ProcessMethodContext processMethodContext, 
-            final List<FacetedMethodParameter> parameters) {
+        val facetedMethod = processMethodContext.getFacetHolder();
+        val parameters = facetedMethod.getParameters();
 
         if (parameters.isEmpty()) {
             return;
         }
+        
+        // attach ActionChoicesFacet if choicesNumMethod is found ...
 
         val actionMethod = processMethodContext.getMethod();
         val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
 
-        val searchRequest = DependentArgUtils.ParamSupportingMethodSearchRequest.of(
-                processMethodContext, 
-                null,
-                paramIndex -> MethodLiteralConstants.CHOICES_PREFIX + paramIndex + capitalizedName);    
+        val searchRequest = DependentArgUtils.ParamSupportingMethodSearchRequest.builder()
+                .processMethodContext(processMethodContext)
+                .returnType(ReturnType.NON_SCALAR)
+                .paramIndexToMethodName(paramIndex -> 
+                    MethodLiteralConstants.CHOICES_PREFIX + paramIndex + capitalizedName)
+                .build();
 
         DependentArgUtils.findParamSupportingMethods(searchRequest, searchResult -> {
             
@@ -86,7 +79,6 @@ extends MethodPrefixBasedFacetFactoryAbstract {
             
             processMethodContext.removeMethod(choicesMethod);
 
-            val facetedMethod = processMethodContext.getFacetHolder();
             if (facetedMethod.containsNonFallbackFacet(ActionChoicesFacet.class)) {
                 val cls = processMethodContext.getCls();
                 throw new MetaModelException(cls + " uses both old and new choices syntax - "
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
index 39e29ab..de35541 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
@@ -32,7 +32,9 @@ import org.apache.isis.metamodel.facets.ImperativeFacet;
 import org.apache.isis.metamodel.facets.param.disable.ActionParameterDisabledFacetAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class ActionParameterDisabledFacetViaMethod extends ActionParameterDisabledFacetAbstract implements ImperativeFacet {
+public class ActionParameterDisabledFacetViaMethod 
+extends ActionParameterDisabledFacetAbstract 
+implements ImperativeFacet {
 
     private final Method method;
     private final TranslationService translationService;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index a1ed4eb..b5d9619 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -19,17 +19,12 @@
 
 package org.apache.isis.metamodel.facets.param.disable.method;
 
-import java.lang.reflect.Method;
-import java.util.List;
-
-import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.commons.collections.Can;
-import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
-import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.exceptions.MetaModelException;
 import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.metamodel.facets.DependentArgUtils;
+import org.apache.isis.metamodel.facets.DependentArgUtils.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.param.disable.ActionParameterDisabledFacet;
@@ -39,55 +34,106 @@ import lombok.val;
 /**
  * Sets up {@link ActionParameterDisabledFacet}.
  */
-public class ActionParameterDisabledFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
+public class ActionParameterDisabledFacetViaMethodFactory 
+extends MethodPrefixBasedFacetFactoryAbstract  {
 
     private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DISABLE_PREFIX);
 
     public ActionParameterDisabledFacetViaMethodFactory() {
-        super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+        //super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+        super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
     }
 
-
     @Override
-    public void processParams(final ProcessParameterContext processParameterContext) {
-
-        final Class<?> cls = processParameterContext.getCls();
-        final Method actionMethod = processParameterContext.getMethod();
-        final int paramNum = processParameterContext.getParamNum();
-        final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
-
-        final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-        final List<Class<?>> paramTypes = ListExtensions.mutableCopy(actionMethod.getParameterTypes());
-
-        final String hideName = MethodLiteralConstants.DISABLE_PREFIX + paramNum + capitalizedName;
-
-        final int numParamTypes = paramTypes.size();
-
-        final TranslationService translationService = getMetaModelContext().getTranslationService();
+    public void process(final ProcessMethodContext processMethodContext) {
 
-        for(int i=0; i< numParamTypes+1; i++) {
-            val disableMethod = MethodFinderUtils.findMethod_returningText(
-                    cls,
-                    hideName,
-                    NO_ARG);
+        val facetedMethod = processMethodContext.getFacetHolder();
+        val parameters = facetedMethod.getParameters();
 
-            if (disableMethod != null) {
-                processParameterContext.removeMethod(disableMethod);
-
-                // sadness: same as in TranslationFactory
-                final String translationContext = facetHolder.getIdentifier().toFullIdentityString();
+        if (parameters.isEmpty()) {
+            return;
+        }
 
-                final Facet facet = new ActionParameterDisabledFacetViaMethod(disableMethod,
-                        translationService, translationContext, facetHolder);
-                super.addFacet(facet);
-                return;
+        // attach ActionParameterDisabledFacet if disableNumMethod is found ...
+        
+        val translationService = getMetaModelContext().getTranslationService();
+        val actionMethod = processMethodContext.getMethod();
+        val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+
+        val searchRequest = DependentArgUtils.ParamSupportingMethodSearchRequest.builder()
+                .processMethodContext(processMethodContext)
+                .returnType(ReturnType.TEXT)
+                .paramIndexToMethodName(paramIndex -> 
+                    MethodLiteralConstants.DISABLE_PREFIX + paramIndex + capitalizedName)
+                .build();
+        
+        DependentArgUtils.findParamSupportingMethods(searchRequest, searchResult -> {
+            
+            val disableMethod = searchResult.getSupportingMethod();
+            val paramIndex = searchResult.getParamIndex();
+            
+            processMethodContext.removeMethod(disableMethod);
+
+            if (facetedMethod.containsNonFallbackFacet(ActionParameterDisabledFacet.class)) {
+                val cls = processMethodContext.getCls();
+                throw new MetaModelException(cls + " uses both old and new 'disable' syntax - "
+                        + "must use one or other");
             }
+            
+            // add facets directly to parameters, not to actions
+            val paramAsHolder = parameters.get(paramIndex);
+            val translationContext = paramAsHolder.getIdentifier().toFullIdentityString();
+            
+            super.addFacet(
+                    new ActionParameterDisabledFacetViaMethod(
+                            disableMethod, translationService, translationContext, paramAsHolder));
+        });
+        
+    }
+    
 
-            // remove last, and search again
-            if(!paramTypes.isEmpty()) {
-                paramTypes.remove(paramTypes.size()-1);
-            }
-        }
+    @Override
+    public void processParams(final ProcessParameterContext processParameterContext) {
+
+        //FIXME remove
+        
+//        final Class<?> cls = processParameterContext.getCls();
+//        final Method actionMethod = processParameterContext.getMethod();
+//        final int paramNum = processParameterContext.getParamNum();
+//        final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
+//
+//        final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+//        final List<Class<?>> paramTypes = ListExtensions.mutableCopy(actionMethod.getParameterTypes());
+//
+//        final String hideName = MethodLiteralConstants.DISABLE_PREFIX + paramNum + capitalizedName;
+//
+//        final int numParamTypes = paramTypes.size();
+//
+//        val translationService = getMetaModelContext().getTranslationService();
+//
+//        for(int i=0; i< numParamTypes+1; i++) {
+//            val disableMethod = MethodFinderUtils.findMethod_returningText(
+//                    cls,
+//                    hideName,
+//                    NO_ARG);
+//
+//            if (disableMethod != null) {
+//                processParameterContext.removeMethod(disableMethod);
+//
+//                // sadness: same as in TranslationFactory
+//                final String translationContext = facetHolder.getIdentifier().toFullIdentityString();
+//
+//                final Facet facet = new ActionParameterDisabledFacetViaMethod(disableMethod,
+//                        translationService, translationContext, facetHolder);
+//                super.addFacet(facet);
+//                return;
+//            }
+//
+//            // remove last, and search again
+//            if(!paramTypes.isEmpty()) {
+//                paramTypes.remove(paramTypes.size()-1);
+//            }
+//        }
 
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java
index 1979696..9b4e2ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java
@@ -26,6 +26,8 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.interactions.ActionArgVisibilityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
 
+import lombok.val;
+
 public abstract class ActionParameterHiddenFacetAbstract 
 extends FacetAbstract 
 implements ActionParameterHiddenFacet {
@@ -43,7 +45,7 @@ implements ActionParameterHiddenFacet {
         if (!(context instanceof ActionArgVisibilityContext)) {
             return null;
         }
-        final ActionArgVisibilityContext actionArgVisibilityContext = (ActionArgVisibilityContext) context;
+        val actionArgVisibilityContext = (ActionArgVisibilityContext) context;
         return isHidden(
                 actionArgVisibilityContext.getTarget(), 
                 actionArgVisibilityContext.getArgs()) 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index b6b0b91..704c69e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -19,22 +19,18 @@
 
 package org.apache.isis.metamodel.facets.param.hide.method;
 
-import lombok.val;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
 import org.apache.isis.commons.collections.Can;
-import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
-import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.exceptions.MetaModelException;
 import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.metamodel.facets.DependentArgUtils;
+import org.apache.isis.metamodel.facets.DependentArgUtils.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.param.hide.ActionParameterHiddenFacet;
 
+import lombok.val;
+
 /**
  * Sets up {@link ActionParameterHiddenFacet}.
  */
@@ -43,46 +39,93 @@ public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBase
     private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
 
     public ActionParameterHiddenFacetViaMethodFactory() {
-        super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+        //super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+        super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
     }
 
-
     @Override
-    public void processParams(final ProcessParameterContext processParameterContext) {
-
-        final Class<?> cls = processParameterContext.getCls();
-        final Method actionMethod = processParameterContext.getMethod();
-        final int paramNum = processParameterContext.getParamNum();
-        final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
-
-        final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-        final List<Class<?>> paramTypes = ListExtensions.mutableCopy(actionMethod.getParameterTypes());
+    public void process(final ProcessMethodContext processMethodContext) {
 
-        final String hideName = MethodLiteralConstants.HIDE_PREFIX + paramNum + capitalizedName;
+        val facetedMethod = processMethodContext.getFacetHolder();
+        val parameters = facetedMethod.getParameters();
 
-        final int numParamTypes = paramTypes.size();
-
-        for(int i=0; i< numParamTypes+1; i++) {
-            val hideMethod = MethodFinderUtils.findMethod(
-                    cls,
-                    hideName,
-                    boolean.class,
-                    NO_ARG);
-
-            if (hideMethod != null) {
-                processParameterContext.removeMethod(hideMethod);
+        if (parameters.isEmpty()) {
+            return;
+        }
 
-                final Facet facet = new ActionParameterHiddenFacetViaMethod(hideMethod, facetHolder);
-                super.addFacet(facet);
-                return;
+        // attach ActionParameterHiddenFacet if hideNumMethod is found ...
+        
+        val actionMethod = processMethodContext.getMethod();
+        val capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+
+        val searchRequest = DependentArgUtils.ParamSupportingMethodSearchRequest.builder()
+                .processMethodContext(processMethodContext)
+                .returnType(ReturnType.BOOLEAN)
+                .paramIndexToMethodName(paramIndex -> 
+                    MethodLiteralConstants.HIDE_PREFIX + paramIndex + capitalizedName)
+                .build();
+        
+        DependentArgUtils.findParamSupportingMethods(searchRequest, searchResult -> {
+            
+            val hideMethod = searchResult.getSupportingMethod();
+            val paramIndex = searchResult.getParamIndex();
+            
+            processMethodContext.removeMethod(hideMethod);
+
+            if (facetedMethod.containsNonFallbackFacet(ActionParameterHiddenFacet.class)) {
+                val cls = processMethodContext.getCls();
+                throw new MetaModelException(cls + " uses both old and new 'hide' syntax - "
+                        + "must use one or other");
             }
+            
+            // add facets directly to parameters, not to actions
+            val paramAsHolder = parameters.get(paramIndex);
+            
+            super.addFacet(
+                    new ActionParameterHiddenFacetViaMethod(hideMethod, paramAsHolder));
+        });
+        
+    }
+    
 
-            // remove last, and search again
-            if(!paramTypes.isEmpty()) {
-                paramTypes.remove(paramTypes.size()-1);
-            }
-        }
+    @Override
+    public void processParams(final ProcessParameterContext processParameterContext) {
 
+      //FIXME remove
+        
+//        final Class<?> cls = processParameterContext.getCls();
+//        final Method actionMethod = processParameterContext.getMethod();
+//        final int paramNum = processParameterContext.getParamNum();
+//        final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
+//
+//        final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
+//        final List<Class<?>> paramTypes = ListExtensions.mutableCopy(actionMethod.getParameterTypes());
+//
+//        final String hideName = MethodLiteralConstants.HIDE_PREFIX + paramNum + capitalizedName;
+//
+//        final int numParamTypes = paramTypes.size();
+//
+//        for(int i=0; i< numParamTypes+1; i++) {
+//            val hideMethod = MethodFinderUtils.findMethod(
+//                    cls,
+//                    hideName,
+//                    boolean.class,
+//                    NO_ARG);
+//
+//            if (hideMethod != null) {
+//                processParameterContext.removeMethod(hideMethod);
+//
+//                final Facet facet = new ActionParameterHiddenFacetViaMethod(hideMethod, facetHolder);
+//                super.addFacet(facet);
+//                return;
+//            }
+//
+//            // remove last, and search again
+//            if(!paramTypes.isEmpty()) {
+//                paramTypes.remove(paramTypes.size()-1);
+//            }
+//        }
+//
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 9545022..783842c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -373,8 +373,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         final VisibilityContext<?> ic = createArgumentVisibilityContext(
-                targetAdapter, pendingArgs, getNumber(), interactionInitiatedBy
-                );
+                targetAdapter, pendingArgs, getNumber(), interactionInitiatedBy);
 
         final InteractionResult visibleResult = InteractionUtils.isVisibleResult(this, ic);
         return visibleResult.createConsent();
@@ -406,8 +405,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         final UsabilityContext<?> ic = createArgumentUsabilityContext(
-                targetAdapter, pendingArgs, getNumber(), interactionInitiatedBy
-                );
+                targetAdapter, pendingArgs, getNumber(), interactionInitiatedBy);
 
         final InteractionResult usableResult = InteractionUtils.isUsableResult(this, ic);
         return usableResult.createConsent();
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
index bd4735e..bb1b511 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -626,8 +626,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
                 if(contributeeMember instanceof ObjectActionContributee) {
                     val objectActionContributee = (ObjectActionContributee) contributeeMember;
                     val contributeeArgAdapters = asObjectAdaptersUnderlying(contributeeArgs);
-                    //TODO remove cast after refactored 
-                    checkValidity(contributeeAdapter, (ObjectAction) objectActionContributee, contributeeArgAdapters);
+                    checkValidity(contributeeAdapter, objectActionContributee, contributeeArgAdapters);
                 }
                 // nothing to do for contributed properties or collections
                 
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index aadc638..6f9340a 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -29,6 +29,7 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -88,7 +89,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
             val realTargetAdapter = actionModel.getActionMemento().getAction(getSpecificationLoader())
                     .realTargetAdapter(targetAdapter);
             final Consent consent = apm.getActionParameter(getSpecificationLoader())
-                    .isVisible(realTargetAdapter, null, InteractionInitiatedBy.USER);
+                    .isVisible(realTargetAdapter, Can.empty(), InteractionInitiatedBy.USER);
             final boolean allowed = consent.isAllowed();
             paramPanel.setVisible(allowed);
         }
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java
index f10e056..ebe512e 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java
@@ -62,7 +62,7 @@ public class DependentArgsActionDemo_useDisable {
 
     // -- PARAM 1 (String message)
 
-    //@Model //TODO waits for dep args to be implemented
+    @Model
     public String disable1$$(boolean disableMessageField) {
         return disableMessageField
                 ? "disabled by dependent argument"
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java
index 5cb5cf8..ddf5769 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java
@@ -62,7 +62,7 @@ public class DependentArgsActionDemo_useHide {
 
     // -- PARAM 1 (String message)
 
-    //@Model //TODO waits for dep args to be implemented
+    @Model
     public boolean hide1$$(boolean hideMessageField) {
         return hideMessageField;
     }
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport.java
index fce1563..06c679c 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport.java
@@ -64,11 +64,21 @@ public class ProperMemberSupport {
         return null;
     }
     
+    @Model // variant with dependent args
+    public String disable1MyAction(String p0) {
+        return null;
+    }
+    
     @Model
     public boolean hideMyAction() {
         return false;
     }
 
+    @Model // variant with dependent args
+    public boolean hide1MyAction(String p0) {
+        return false;
+    }
+    
     @Model
     public String validateMyAction(String p0, String p1) {
         return null;
@@ -94,7 +104,7 @@ public class ProperMemberSupport {
         return null;
     }
     
-// variant with dependent arg
+// variant with dependent args
 //    @Model
 //    public Set<String> choices1MyAction(String p0) {
 //        return null;
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport_action.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport_action.java
index d75edc7..d4b974d 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport_action.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberSupport_action.java
@@ -65,8 +65,13 @@ public class ProperMemberSupport_action {
         return null;
     }
     
+//    @Model
+//    public Set<String> autoComplete1Act(String p0, @MinLength(3) String search) {
+//        return null;
+//    }
+    
     @Model
-    public Set<String> choices0Act(String p0) {
+    public Set<String> choices0Act() {
         return null;
     }
 
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index 12dbed3..5abda28 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.config.presets.IsisPresets;
 import org.apache.isis.integtestsupport.validate.ValidateDomainModel;
+import org.apache.isis.metamodel.facets.DependentArgUtils;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.specimpl.IntrospectionState;
 import org.apache.isis.schema.metamodel.v1.DomainClassDto;
@@ -54,6 +55,7 @@ import lombok.val;
         properties = {
                 "isis.reflector.introspector.mode=FULL",
                 "isis.reflector.validator.explicitObjectType=FALSE", // does not override any of the imports
+                "logging.level.org.apache.isis.metamodel.facets.DependentArgUtils=DEBUG"
         })
 @TestPropertySource({
     //IsisPresets.DebugMetaModel,
diff --git a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
index 463c7ed..128fba0 100644
--- a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
+++ b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
@@ -64,7 +64,7 @@ implements MetaModelRefiner {
             val type = spec.getCorrespondingClass();
 
 //XXX for debugging ...            
-            if(spec.getSpecId().asString().contains("DependentArgsActionDemo_useDisable")) {
+            if(spec.getSpecId().asString().contains("ProperMemberSupport")) {
                 
                 val sb = new StringBuffer();