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 2021/09/07 11:04:27 UTC
[isis] 02/02: ISIS-2774: more rigorous member prefix declarations
(use enums)
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit c975099f57e7c02a26dd27c60b255afcb7550b50
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 13:04:14 2021 +0200
ISIS-2774: more rigorous member prefix declarations (use enums)
also removes object support method String/TranslatableString validate()
---
.../org/apache/isis/commons/collections/Can.java | 14 ++
.../progmodel/ProgrammingModelConstants.java | 24 ++-
.../method/ActionDefaultsFacetViaMethod.java | 82 --------
.../ActionDefaultsFacetViaMethodFactory.java | 86 ---------
.../ActionValidationFacetViaMethodFactory.java | 14 +-
.../DescribedAsFacetForMemberViaMethodFactory.java | 14 +-
.../DisableForContextFacetViaMethodFactory.java | 18 +-
.../HideForContextFacetViaMethodFactory.java | 18 +-
.../NamedFacetForMemberViaMethodFactory.java | 19 +-
.../validateobject/ValidateObjectFacet.java | 54 ------
.../ValidateObjectFacetAbstract.java | 49 -----
.../method/ValidateObjectFacetMethod.java | 72 -------
.../method/ValidateObjectFacetMethodFactory.java | 69 -------
...ParameterAutoCompleteFacetViaMethodFactory.java | 14 +-
.../method/ActionChoicesFacetViaMethod.java | 102 ----------
.../method/ActionChoicesFacetViaMethodFactory.java | 100 ----------
...ctionParameterChoicesFacetViaMethodFactory.java | 14 +-
...tionParameterDefaultsFacetViaMethodFactory.java | 15 +-
...tionParameterDisabledFacetViaMethodFactory.java | 14 +-
...ActionParameterHiddenFacetViaMethodFactory.java | 14 +-
...onParameterValidationFacetViaMethodFactory.java | 16 +-
.../PropertyAutoCompleteFacetMethodFactory.java | 20 +-
.../PropertyChoicesFacetViaMethodFactory.java | 22 +--
.../PropertyDefaultFacetViaMethodFactory.java | 20 +-
.../PropertyValidateFacetViaMethodFactory.java | 19 +-
.../methods/MemberSupportFacetFactoryAbstract.java | 42 ++++
.../MethodPrefixBasedFacetFactoryAbstract.java | 8 +-
.../dflt/ProgrammingModelFacetsJava11.java | 6 -
.../specloader/specimpl/FacetedMethodsBuilder.java | 29 ---
.../actions/ActionMethodsFacetFactoryTest.java | 215 ---------------------
.../ObjectValidMethodFacetFactoryTest.java | 65 -------
.../facets/param/name/ParameterNameFacetTest.java | 2 +-
32 files changed, 172 insertions(+), 1098 deletions(-)
diff --git a/commons/src/main/java/org/apache/isis/commons/collections/Can.java b/commons/src/main/java/org/apache/isis/commons/collections/Can.java
index a6f4566..5c1e293 100644
--- a/commons/src/main/java/org/apache/isis/commons/collections/Can.java
+++ b/commons/src/main/java/org/apache/isis/commons/collections/Can.java
@@ -410,6 +410,20 @@ extends Iterable<T>, Comparable<Can<T>>, Serializable {
return _CanFactory.ofNonNullElements(nonNullMappedElements);
}
+ default <R> Can<R> flatMap(final @NonNull Function<? super T, ? extends Can<? extends R>> mapper) {
+
+ if(isEmpty()) {
+ return empty();
+ }
+
+ return
+ stream()
+ .map(mapper)
+ .filter(_NullSafe::isPresent)
+ .flatMap(Can::stream)
+ .collect(Can.toCan());
+ }
+
// -- CONCATENATION
/**
diff --git a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
index e5e83c8..c13ea0b 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
@@ -174,17 +174,25 @@ public final class ProgrammingModelConstants {
// -- MEMBER SUPPORT PREFIXES
- public static final String DEFAULT_PREFIX = "default";
- public static final String CHOICES_PREFIX = "choices";
- public static final String AUTO_COMPLETE_PREFIX = "autoComplete";
+ @Getter
+ public static enum MemberSupportPrefix {
+ DEFAULT("default"),
+ CHOICES("choices"),
+ AUTO_COMPLETE("autoComplete"),
+ HIDE("hide"),
+ DISABLE("disable"),
+ VALIDATE("validate"),
+ NAMED("named"), // imperative naming
+ DESCRIBED("described"); // imperative naming
+ MemberSupportPrefix(
+ final String ...methodNamePrefixes) {
+ this.methodNamePrefixes = Can.of(methodNamePrefixes);
+ }
+ private final Can<String> methodNamePrefixes;
+ }
- public static final String HIDE_PREFIX = "hide";
- public static final String DISABLE_PREFIX = "disable";
public static final String VALIDATE_PREFIX = "validate";
- public static final String NAMED_PREFIX = "named"; // dynamic naming
- public static final String DESCRIBED_PREFIX = "described"; // dynamic description
-
// -- OTHER LITERALS
public static final String TO_STRING = "toString";
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java
deleted file mode 100644
index 5a210d5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.actions.defaults.method;
-
-import java.lang.reflect.Method;
-import java.util.function.BiConsumer;
-
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
-import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract;
-import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ManagedObjects;
-
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.val;
-
-public class ActionDefaultsFacetViaMethod
-extends ActionDefaultsFacetAbstract
-implements ImperativeFacet {
-
- @Getter(onMethod_ = {@Override}) private final @NonNull Can<Method> methods;
-
- @SuppressWarnings("unused")
- private final Method actionMethod;
-
- public ActionDefaultsFacetViaMethod(final Method method, final FacetHolder holder) {
- super(holder);
- this.methods = ImperativeFacet.singleMethod(method);
- this.actionMethod = determineActionMethod(holder);
- }
-
- private static Method determineActionMethod(final FacetHolder holder) {
- Method method2;
- final Facet actionInvocationFacet = holder.getFacet(ActionInvocationFacet.class);
- if (actionInvocationFacet instanceof ActionInvocationFacetForDomainEventAbstract) {
- final ActionInvocationFacetForDomainEventAbstract facetViaMethod = (ActionInvocationFacetForDomainEventAbstract) actionInvocationFacet;
- method2 = facetViaMethod.getMethods().getFirstOrFail();
- } else {
- method2 = null;
- }
- return method2;
- }
-
- @Override
- public Intent getIntent(final Method method) {
- return Intent.DEFAULTS;
- }
-
- @Override
- public Object[] getDefaults(final ManagedObject owningAdapter) {
- val method = methods.getFirstOrFail();
- return (Object[]) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
- }
-
- @Override
- public void visitAttributes(final BiConsumer<String, Object> visitor) {
- super.visitAttributes(visitor);
- ImperativeFacet.visitAttributes(this, visitor);
- }
-
-}
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
deleted file mode 100644
index 8c23a80..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.actions.defaults.method;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.methods.MethodFinder;
-import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.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 String PREFIX = ProgrammingModelConstants.DEFAULT_PREFIX;
-
- @Inject
- public ActionDefaultsFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
- }
-
- @Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- attachActionDefaultsFacetIfParameterDefaultsMethodIsFound(processMethodContext);
- }
-
- private void attachActionDefaultsFacetIfParameterDefaultsMethodIsFound(
- final ProcessMethodContext processMethodContext) {
-
- Method defaultsMethod = findDefaultsMethodReturning(processMethodContext, Object[].class);
- if (defaultsMethod == null) {
- defaultsMethod = findDefaultsMethodReturning(processMethodContext, List.class);
- }
- if (defaultsMethod == null) {
- return;
- }
-
- processMethodContext.removeMethod(defaultsMethod);
-
- val facetedMethod = processMethodContext.getFacetHolder();
- addFacet(new ActionDefaultsFacetViaMethod(defaultsMethod, facetedMethod));
- }
-
- private static Method findDefaultsMethodReturning(
- final ProcessMethodContext processMethodContext,
- final Class<?> returnType) {
-
- val cls = processMethodContext.getCls();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
- return MethodFinder.findMethod(
- MethodFinderOptions
- .memberSupport(processMethodContext.getIntrospectionPolicy()),
- cls, methodNameCandidates, returnType, NO_ARG)
- .findFirst()
- .orElse(null);
- }
-
-}
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 4b4a97f..1fb5cdb 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
@@ -24,15 +24,14 @@ import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.ActionSupport;
import org.apache.isis.core.metamodel.facets.ActionSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFacet;
import org.apache.isis.core.metamodel.facets.param.validate.method.ActionParameterValidationFacetViaMethod;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
@@ -40,13 +39,11 @@ import lombok.val;
* Sets up {@link ActionValidationFacet} and {@link ActionParameterValidationFacetViaMethod}.
*/
public class ActionValidationFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionValidationFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.VALIDATE);
}
@Override
@@ -58,7 +55,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
val facetHolder = processMethodContext.getFacetHolder();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val searchRequest = ActionSupport.ActionSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
index f68aceb..61f009f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
@@ -20,25 +20,22 @@ package org.apache.isis.core.metamodel.facets.members.described.method;
import javax.inject.Inject;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
public class DescribedAsFacetForMemberViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.DESCRIBED_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public DescribedAsFacetForMemberViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.MEMBERS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.MEMBERS, MemberSupportPrefix.DESCRIBED);
}
@Override
@@ -52,7 +49,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
val cls = processMethodContext.getCls();
//val actionOrGetter = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val describedMethod = MethodFinder.findMethod_returningText(
MethodFinderOptions
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 31ded65..9c28ebd 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,32 +23,25 @@ import java.lang.reflect.Method;
import javax.inject.Inject;
import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
public class DisableForContextFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.DISABLE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public DisableForContextFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.MEMBERS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.MEMBERS, MemberSupportPrefix.DISABLE);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- attachDisabledFacetIfDisabledMethodIsFound(processMethodContext);
- }
-
- private void attachDisabledFacetIfDisabledMethodIsFound(final ProcessMethodContext processMethodContext) {
val actionOrGetter = processMethodContext.getMethod();
@@ -56,7 +49,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
Method disableMethod = null;
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
boolean noParamsOnly = getConfiguration().getCore().getMetaModel().getValidator().isNoParamsOnly();
boolean searchExactMatch = !noParamsOnly;
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 7858715..9e9662b 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,38 +22,32 @@ import java.lang.reflect.Method;
import javax.inject.Inject;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
public class HideForContextFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.HIDE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public HideForContextFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.MEMBERS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.MEMBERS, MemberSupportPrefix.HIDE);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- attachHideFacetIfHideMethodIsFound(processMethodContext);
- }
-
- private void attachHideFacetIfHideMethodIsFound(final ProcessMethodContext processMethodContext) {
final Method actionOrGetter = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val cls = processMethodContext.getCls();
Method hideMethod = MethodFinder.findMethod(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java
index 6dd91f8..85df7fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java
@@ -20,39 +20,32 @@ package org.apache.isis.core.metamodel.facets.members.named.method;
import javax.inject.Inject;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
public class NamedFacetForMemberViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.NAMED_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public NamedFacetForMemberViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.MEMBERS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.MEMBERS, MemberSupportPrefix.NAMED);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- addNamedFacetIfNamedMethodIsFound(processMethodContext);
- }
-
- private void addNamedFacetIfNamedMethodIsFound(
- final ProcessMethodContext processMethodContext) {
val cls = processMethodContext.getCls();
//val actionOrGetter = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val namedMethod = MethodFinder.findMethod_returningText(
MethodFinderOptions
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java
deleted file mode 100644
index c5978c8..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.validating.validateobject;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
-import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-/**
- * Mechanism for determining whether this object is in a valid state, for
- * example so that it can be persisted or updated.
- *
- * <p>
- * Even though all the properties of an object may themselves be valid, there
- * could be inter-property dependencies which are invalid. For example
- * <tt>fromDate</tt> > <tt>toDate</tt> would probably represent an invalid
- * state.
- *
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to the
- * <tt>validate</tt> method.
- *
- * @see PersistingCallbackFacet
- * @see UpdatingCallbackFacet
- */
-public interface ValidateObjectFacet extends Facet, ValidatingInteractionAdvisor {
-
- /**
- * The reason the object is invalid.
- *
- * <p>
- * . If the object is actually valid, should return <tt>null</tt>.
- */
- public String invalidReason(ManagedObject adapter);
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
deleted file mode 100644
index 2de2397..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.validating.validateobject;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
-import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public abstract class ValidateObjectFacetAbstract
-extends FacetAbstract
-implements ValidateObjectFacet {
-
- private static final Class<? extends Facet> type() {
- return ValidateObjectFacet.class;
- }
-
- public ValidateObjectFacetAbstract(final FacetHolder holder) {
- super(type(), holder);
- }
-
- @Override
- public String invalidates(final ValidityContext vc) {
- if (!(vc instanceof ObjectValidityContext)) {
- return null;
- }
- final ManagedObject toValidate = vc.getTarget();
- return toValidate != null ? invalidReason(toValidate) : null;
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
deleted file mode 100644
index 8b7328b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.validating.validateobject.method;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.services.i18n.TranslatableString;
-import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.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.object.validating.validateobject.ValidateObjectFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ManagedObjects;
-
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.val;
-
-public class ValidateObjectFacetMethod
-extends ValidateObjectFacetAbstract
-implements ImperativeFacet {
-
- @Getter(onMethod_ = {@Override}) private final @NonNull Can<Method> methods;
- private final TranslationService translationService;
- private final TranslationContext translationContext;
-
- public ValidateObjectFacetMethod(final Method method, final TranslationService translationService,
- final TranslationContext translationContext, final FacetHolder holder) {
- super(holder);
- this.methods = ImperativeFacet.singleMethod(method);
- this.translationService = translationService;
- this.translationContext = translationContext;
- }
-
- @Override
- public Intent getIntent(final Method method) {
- return Intent.CHECK_IF_VALID;
- }
-
- @Override
- public String invalidReason(final ManagedObject owningAdapter) {
- val method = methods.getFirstOrFail();
- final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
- if(returnValue instanceof String) {
- return (String) returnValue;
- }
- if(returnValue instanceof TranslatableString) {
- final TranslatableString ts = (TranslatableString) returnValue;
- return ts.translate(translationService, translationContext);
- }
- return null;
- }
-
-}
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
deleted file mode 100644
index 96fdea8..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.validating.validateobject.method;
-
-import java.lang.reflect.Method;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodFinderUtils;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
-
-import lombok.val;
-
-public class ValidateObjectFacetMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
-
- @Inject
- public ValidateObjectFacetMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
- final Method method = MethodFinderUtils.findMethod_returningText(
- MethodFinderOptions
- .objectSupport(processClassContext.getIntrospectionPolicy()),
- cls,
- PREFIX,
- NO_ARG);
- if (method != null) {
- val translationService = getTranslationService();
- // sadness: same as in TranslationFactory
- val translationContext = TranslationContext.forTranslationContextHolder(
- facetHolder.getFeatureIdentifier());
- 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 4c8f2d6..dd5da4d 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
@@ -23,26 +23,23 @@ import java.util.EnumSet;
import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
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.ParameterSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
public class ActionParameterAutoCompleteFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.AUTO_COMPLETE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionParameterAutoCompleteFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.AUTO_COMPLETE);
}
@Override
@@ -57,7 +54,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
// attach ActionParameterChoicesFacet if autoCompleteNumMethod is found ...
- val methodNameCandidates = processMethodContext.parameterSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::parameterSupportCandidates);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
deleted file mode 100644
index ac59ac9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.param.choices.method;
-
-import java.lang.reflect.Method;
-import java.util.function.BiConsumer;
-
-import org.apache.isis.applib.exceptions.unrecoverable.DomainModelException;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.collections.CanVector;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ManagedObjects;
-
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.val;
-
-public class ActionChoicesFacetViaMethod
-extends ActionChoicesFacetAbstract
-implements ImperativeFacet {
-
- @Getter(onMethod_ = {@Override}) private final @NonNull Can<Method> methods;
- private final Class<?> choicesType;
-
- public ActionChoicesFacetViaMethod(
- final Method method,
- final Class<?> choicesType,
- final FacetHolder holder) {
-
- super(holder);
- this.methods = ImperativeFacet.singleMethod(method);
- this.choicesType = choicesType;
- }
-
- @Override
- public Intent getIntent(final Method method) {
- return Intent.CHOICES_OR_AUTOCOMPLETE;
- }
-
- @Override
- public CanVector<ManagedObject> getChoices(
- final ManagedObject owningAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
-
- val method = methods.getFirstOrFail();
- final Object objectOrCollection = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
- if (!(objectOrCollection instanceof Object[])) {
- throw new DomainModelException(String.format(
- "Expected an array of collections (Object[]) containing choices for all parameters, "
- + "but got %s instead. Perhaps the parameter number is missing?",
- objectOrCollection));
- }
- final Object[] options = (Object[]) objectOrCollection;
-
- val choicesVector = new CanVector<ManagedObject>(options.length);
- val parameterTypes = method.getParameterTypes();
-
- for (int i = 0; i < choicesVector.size(); i++) {
- choicesVector.set(i, handleResults(options[i], parameterTypes[i], interactionInitiatedBy));
- }
- return choicesVector;
- }
-
- private Can<ManagedObject> handleResults(
- final Object collectionOrArray,
- final Class<?> parameterType,
- final InteractionInitiatedBy interactionInitiatedBy) {
-
- val elementSpec = specForTypeElseFail(parameterType);
- val visibleChoices = ManagedObjects
- .adaptMultipleOfTypeThenAttachThenFilterByVisibility(
- elementSpec, collectionOrArray, interactionInitiatedBy);
- return visibleChoices;
- }
-
- @Override
- public void visitAttributes(final BiConsumer<String, Object> visitor) {
- super.visitAttributes(visitor);
- ImperativeFacet.visitAttributes(this, visitor);
- visitor.accept("choicesType", choicesType);
- }
-}
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
deleted file mode 100644
index 1cc8ef9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.param.choices.method;
-
-import java.lang.reflect.Method;
-import java.util.Collection;
-
-import javax.inject.Inject;
-
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.methods.MethodFinder;
-import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
-
-import lombok.val;
-
-public class ActionChoicesFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.CHOICES_PREFIX;
-
- @Inject
- public ActionChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
- }
-
- @Override
- public void process(final ProcessMethodContext processMethodContext) {
- attachActionChoicesFacetIfParameterChoicesMethodIsFound(processMethodContext);
- }
-
- private void attachActionChoicesFacetIfParameterChoicesMethodIsFound(final ProcessMethodContext processMethodContext) {
-
- val actionMethod = processMethodContext.getMethod();
-
- if (actionMethod.getParameterCount() <= 0) {
- return;
- }
-
- Method choicesMethod = null;
- if (choicesMethod == null) {
- choicesMethod = findChoicesMethodReturning(processMethodContext, Object[][].class);
- }
- if (choicesMethod == null) {
- choicesMethod = findChoicesMethodReturning(processMethodContext, Object[].class);
- }
- if (choicesMethod == null) {
- choicesMethod = findChoicesMethodReturning(processMethodContext, Collection.class);
- }
- if (choicesMethod == null) {
- return;
- }
- processMethodContext.removeMethod(choicesMethod);
-
- final Class<?> returnType = actionMethod.getReturnType();
- final FacetHolder action = processMethodContext.getFacetHolder();
-
- addFacet(new ActionChoicesFacetViaMethod(choicesMethod, returnType, action));
-
- }
-
- protected Method findChoicesMethodReturning(
- final ProcessMethodContext processMethodContext,
- final Class<?> returnType) {
-
- val cls = processMethodContext.getCls();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
-
- Method choicesMethod =
- MethodFinder.findMethod(
- MethodFinderOptions
- .memberSupport(processMethodContext.getIntrospectionPolicy()),
- cls, methodNameCandidates, returnType, NO_ARG)
- .findFirst()
- .orElse(null);
- 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 3cf48d5..85949dc 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
@@ -23,26 +23,23 @@ import java.util.EnumSet;
import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
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.ParameterSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
public class ActionParameterChoicesFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.CHOICES_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionParameterChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.CHOICES);
}
// ///////////////////////////////////////////////////////
@@ -61,7 +58,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
// attach ActionChoicesFacet if choicesNumMethod is found ...
- val methodNameCandidates = processMethodContext.parameterSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::parameterSupportCandidates);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
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 7c9476b..530030e 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
@@ -23,8 +23,7 @@ import java.util.EnumSet;
import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -32,20 +31,19 @@ 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.ParameterSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
/**
* Sets up all the {@link Facet}s for an action in a single shot.
*/
-public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.DEFAULT_PREFIX;
+public class ActionParameterDefaultsFacetViaMethodFactory
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionParameterDefaultsFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.DEFAULT);
}
// ///////////////////////////////////////////////////////
@@ -65,7 +63,8 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
// attach DefaultFacetForParameters if defaultNumMethod is found ...
val actionMethod = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.parameterSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::parameterSupportCandidates);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
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 a64d5fe..1f36297 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
@@ -24,15 +24,14 @@ import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
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.ParameterSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.param.disable.ActionParameterDisabledFacet;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
@@ -40,13 +39,11 @@ import lombok.val;
* Sets up {@link ActionParameterDisabledFacet}.
*/
public class ActionParameterDisabledFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.DISABLE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionParameterDisabledFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.DISABLE);
}
@Override
@@ -61,7 +58,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
// attach ActionParameterDisabledFacet if disableNumMethod is found ...
- val methodNameCandidates = processMethodContext.parameterSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::parameterSupportCandidates);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
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 e90eea9..262437f 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
@@ -23,15 +23,14 @@ import java.util.EnumSet;
import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
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.ParameterSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.param.hide.ActionParameterHiddenFacet;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
@@ -39,13 +38,11 @@ import lombok.val;
* Sets up {@link ActionParameterHiddenFacet}.
*/
public class ActionParameterHiddenFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.HIDE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionParameterHiddenFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.HIDE);
}
@Override
@@ -60,7 +57,8 @@ extends MethodPrefixBasedFacetFactoryAbstract {
// attach ActionParameterHiddenFacet if hideNumMethod is found ...
- val methodNameCandidates = processMethodContext.parameterSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::parameterSupportCandidates);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
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 eb2fe94..8325212 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,30 +24,27 @@ import javax.inject.Inject;
import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
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.ParameterSupport.SearchAlgorithm;
import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacet;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import lombok.val;
/**
* Sets up {@link ActionParameterValidationFacet}. */
-public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
+public class ActionParameterValidationFacetViaMethodFactory
+extends MemberSupportFacetFactoryAbstract {
@Inject
public ActionParameterValidationFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.VALIDATE);
}
-
@Override
public void process(final ProcessMethodContext processMethodContext) {
@@ -61,7 +58,8 @@ public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefix
// attach ActionParameterValidationFacet if validateNumMethod is found ...
// in any case single-arg, either same as param-type or PPM style
- val methodNameCandidates = processMethodContext.parameterSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::parameterSupportCandidates);
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
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 4b2b371..b921b5a 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,45 +20,37 @@ package org.apache.isis.core.metamodel.facets.properties.autocomplete.method;
import javax.inject.Inject;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
public class PropertyAutoCompleteFacetMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.AUTO_COMPLETE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public PropertyAutoCompleteFacetMethodFactory(final MetaModelContext mmc) {
// to also support properties from mixins, need to not only include properties but also actions
- super(mmc, FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.PROPERTIES_AND_ACTIONS, MemberSupportPrefix.AUTO_COMPLETE);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- attachPropertyAutoCompleteFacetIfChoicesMethodIsFound(processMethodContext);
- }
-
- private void attachPropertyAutoCompleteFacetIfChoicesMethodIsFound(
- final ProcessMethodContext processMethodContext) {
-
// optimization step, not strictly required
if(!super.isPropertyOrMixinMain(processMethodContext)) {
return;
}
val getterOrMixinMain = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val cls = processMethodContext.getCls();
val returnType = getterOrMixinMain.getReturnType();
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 a196c8b..ef07005 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,43 +20,37 @@ package org.apache.isis.core.metamodel.facets.properties.choices.method;
import javax.inject.Inject;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
-public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.CHOICES_PREFIX;
+public class PropertyChoicesFacetViaMethodFactory
+extends MemberSupportFacetFactoryAbstract {
@Inject
public PropertyChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
- // to also support properties from mixins, need to not only include properties but also actions
- super(mmc, FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ // to also support properties from mixins, need to not only include properties but also actions
+ super(mmc, FeatureType.PROPERTIES_AND_ACTIONS, MemberSupportPrefix.CHOICES);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- attachPropertyChoicesFacetIfChoicesMethodIsFound(processMethodContext);
- }
-
- private void attachPropertyChoicesFacetIfChoicesMethodIsFound(final ProcessMethodContext processMethodContext) {
-
// optimization step, not strictly required
if(!super.isPropertyOrMixinMain(processMethodContext)) {
return;
}
val getterOrMixinMain = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val cls = processMethodContext.getCls();
val returnType = getterOrMixinMain.getReturnType();
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 cab1894..5ece0ad 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,43 +20,37 @@ package org.apache.isis.core.metamodel.facets.properties.defaults.method;
import javax.inject.Inject;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
-public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.DEFAULT_PREFIX;
+public class PropertyDefaultFacetViaMethodFactory
+extends MemberSupportFacetFactoryAbstract {
@Inject
public PropertyDefaultFacetViaMethodFactory(final MetaModelContext mmc) {
// to also support properties from mixins, need to not only include properties but also actions
- super(mmc, FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.PROPERTIES_AND_ACTIONS, MemberSupportPrefix.DEFAULT);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- attachPropertyDefaultFacetIfDefaultMethodIsFound(processMethodContext);
- }
-
- private void attachPropertyDefaultFacetIfDefaultMethodIsFound(final ProcessMethodContext processMethodContext) {
-
// optimization step, not strictly required
if(!super.isPropertyOrMixinMain(processMethodContext)) {
return;
}
val getterOrMixinMain = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val cls = processMethodContext.getCls();
val returnType = getterOrMixinMain.getReturnType();
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 b8a1bdb..575dab9 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
@@ -21,38 +21,31 @@ package org.apache.isis.core.metamodel.facets.properties.validating.method;
import javax.inject.Inject;
import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
import lombok.val;
public class PropertyValidateFacetViaMethodFactory
-extends MethodPrefixBasedFacetFactoryAbstract {
-
- private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
+extends MemberSupportFacetFactoryAbstract {
@Inject
public PropertyValidateFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, Can.ofSingleton(PREFIX));
+ super(mmc, FeatureType.PROPERTIES_ONLY, MemberSupportPrefix.VALIDATE);
}
@Override
public void process(final ProcessMethodContext processMethodContext) {
- attachValidateFacetIfValidateMethodIsFound(processMethodContext);
- }
-
- private void attachValidateFacetIfValidateMethodIsFound(final ProcessMethodContext processMethodContext) {
-
val cls = processMethodContext.getCls();
val getterMethod = processMethodContext.getMethod();
- val methodNameCandidates = processMethodContext.memberSupportCandidates(PREFIX);
+ val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
+ .flatMap(processMethodContext::memberSupportCandidates);
val returnType = getterMethod.getReturnType();
val validateMethod = MethodFinder.findMethod_returningText(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MemberSupportFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MemberSupportFacetFactoryAbstract.java
new file mode 100644
index 0000000..09b0d98
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MemberSupportFacetFactoryAbstract.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.methods;
+
+import org.apache.isis.commons.collections.ImmutableEnumSet;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+
+import lombok.NonNull;
+
+public abstract class MemberSupportFacetFactoryAbstract
+extends MethodPrefixBasedFacetFactoryAbstract {
+
+ protected final MemberSupportPrefix memberSupportPrefix;
+
+ protected MemberSupportFacetFactoryAbstract(
+ final @NonNull MetaModelContext mmc,
+ final @NonNull ImmutableEnumSet<FeatureType> featureTypes,
+ final @NonNull MemberSupportPrefix memberSupportPrefix) {
+ super(mmc, featureTypes, OrphanValidation.VALIDATE,
+ memberSupportPrefix.getMethodNamePrefixes());
+ this.memberSupportPrefix = memberSupportPrefix;
+ }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java
index 55ae272..877457c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java
@@ -20,7 +20,7 @@ package org.apache.isis.core.metamodel.methods;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.collections.ImmutableEnumSet;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
@@ -114,9 +114,9 @@ implements MethodPrefixBasedFacetFactory {
val explanation =
objectAction.getParameterCount() > 0
&& noParamsOnly
- && (ProgrammingModelConstants.HIDE_PREFIX.equals(prefix)
- || ProgrammingModelConstants.DISABLE_PREFIX.equals(prefix))
- ? " (such methods must have no parameters, '"
+ && (MemberSupportPrefix.HIDE.getMethodNamePrefixes().contains(prefix)
+ || MemberSupportPrefix.DISABLE.getMethodNamePrefixes().contains(prefix))
+ ? " (such methods must not have parameters, '"
+ "isis.core.meta-model.validator.no-params-only"
+ "' config property)"
: "";
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index 02d20de..cd2839a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -22,7 +22,6 @@ import org.apache.isis.core.metamodel.facets.actions.action.ActionAnnotationShou
import org.apache.isis.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory;
import org.apache.isis.core.metamodel.facets.actions.action.ActionOverloadingValidator;
import org.apache.isis.core.metamodel.facets.actions.contributing.derived.ContributingFacetDerivedFromMixinFacetFactory;
-import org.apache.isis.core.metamodel.facets.actions.defaults.method.ActionDefaultsFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.actions.homepage.annotation.HomePageFacetAnnotationFactory;
import org.apache.isis.core.metamodel.facets.actions.layout.ActionLayoutFacetFactory;
import org.apache.isis.core.metamodel.facets.actions.notinservicemenu.derived.NotInServiceMenuFacetDerivedFromDomainServiceFacetFactory;
@@ -61,11 +60,9 @@ import org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.Object
import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetFactory;
import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactory;
import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.validating.validateobject.method.ValidateObjectFacetMethodFactory;
import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetAnnotationOrConfigurationFactory;
import org.apache.isis.core.metamodel.facets.param.autocomplete.method.ActionParameterAutoCompleteFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.param.choices.method.ActionChoicesFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.disable.method.ActionParameterDisabledFacetViaMethodFactory;
@@ -212,10 +209,8 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionParameterDisabledFacetViaMethodFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionValidationFacetViaMethodFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionParameterValidationFacetViaMethodFactory(mmc));
- addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionChoicesFacetViaMethodFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionParameterChoicesFacetViaMethodFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionParameterAutoCompleteFacetViaMethodFactory(mmc));
- addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionDefaultsFacetViaMethodFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ActionParameterDefaultsFacetViaMethodFactory(mmc));
// members in general
@@ -226,7 +221,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new CallbackFacetFactory(mmc));
- addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ValidateObjectFacetMethodFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ObjectValidPropertiesFacetImplFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new BookmarkPolicyFacetFallbackFactory(mmc));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
index 88d248c..25eac00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
@@ -43,7 +43,6 @@ import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.reflection._Annotations;
import org.apache.isis.commons.internal.reflection._ClassCache;
import org.apache.isis.commons.internal.reflection._Reflect;
-import org.apache.isis.core.metamodel.commons.CanBeVoid;
import org.apache.isis.core.metamodel.commons.MethodUtil;
import org.apache.isis.core.metamodel.commons.ToString;
import org.apache.isis.core.metamodel.context.HasMetaModelContext;
@@ -510,34 +509,6 @@ implements HasMetaModelContext {
// ////////////////////////////////////////////////////////////////////////////
/**
- *
- * @param prefix
- * @param returnType
- * @param paramCount
- * @param onRemoved - collecting parameter
- */
- private void findAndRemovePrefixedNonVoidMethods(
- final String prefix,
- final Class<?> returnType,
- final int paramCount,
- final Consumer<Method> onRemoved) {
-
- findAndRemovePrefixedMethods(prefix, returnType, CanBeVoid.FALSE, paramCount, onRemoved);
- }
-
- private void findAndRemovePrefixedMethods(
- final String prefix,
- final Class<?> returnType,
- final CanBeVoid canBeVoid,
- final int paramCount,
- final Consumer<Method> onMatch) {
-
- val filter = MethodUtil.Predicates.prefixed(prefix, returnType, canBeVoid, paramCount);
- methodRemover.removeMethods(filter, onMatch);
-
- }
-
- /**
* In case this inspected type is a mixin, returns whether given method can be identified
* as this mixin's main method.
*
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 cd4f7b3..a5d5840 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
@@ -27,26 +27,19 @@ import java.util.Set;
import org.jmock.Expectations;
-import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
-import org.apache.isis.core.metamodel.facets.actions.defaults.method.ActionDefaultsFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.actions.defaults.method.ActionDefaultsFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFacet;
import org.apache.isis.core.metamodel.facets.actions.validate.method.ActionValidationFacetViaMethod;
import org.apache.isis.core.metamodel.facets.actions.validate.method.ActionValidationFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
import org.apache.isis.core.metamodel.facets.param.autocomplete.method.ActionParameterAutoCompleteFacetViaMethod;
import org.apache.isis.core.metamodel.facets.param.autocomplete.method.ActionParameterAutoCompleteFacetViaMethodFactory;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
-import org.apache.isis.core.metamodel.facets.param.choices.method.ActionChoicesFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.param.choices.method.ActionChoicesFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod;
import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet;
@@ -169,119 +162,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(validateMethod));
}
- public void testInstallsParameterDefaultsMethodNoArgsFacetAndRemovesMethod() {
- val facetFactory = new ActionDefaultsFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- class Customer {
- @SuppressWarnings("unused")
- public void someAction(final int x, final Long y) {
- }
-
- @SuppressWarnings("unused")
- public Object[] defaultSomeAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, Long.class });
- final Method defaultMethod = findMethod(Customer.class, "defaultSomeAction", new Class[] {});
-
- facetFactory.process(ProcessMethodContext
- .forTesting(Customer.class, FeatureType.ACTION, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(ActionDefaultsFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof ActionDefaultsFacetViaMethod);
- final ActionDefaultsFacetViaMethod actionDefaultFacetViaMethod = (ActionDefaultsFacetViaMethod) facet;
- assertEquals(defaultMethod, actionDefaultFacetViaMethod.getMethods().getFirstOrFail());
-
- assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(defaultMethod));
- }
-
- public void testInstallsParameterDefaultsMethodSomeArgsIsIgnored() {
- val facetFactory = new ActionDefaultsFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- class Customer {
- @SuppressWarnings("unused")
- public void someAction(final int x, final Long y) {
- }
-
- @SuppressWarnings("unused")
- public Object[] defaultSomeAction(final int x, final Long y) {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, Long.class });
-
- facetFactory.process(ProcessMethodContext
- .forTesting(Customer.class, FeatureType.ACTION, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(ActionDefaultsFacet.class);
- assertNull(facet);
- }
-
- public void testInstallsParameterChoicesMethodNoArgsFacetAndRemovesMethod() {
- val facetFactory = new ActionChoicesFacetViaMethodFactory(metaModelContext);
-
- class Customer {
- @SuppressWarnings("unused")
- public void someAction(final int x, final Long y) {
- }
-
- @SuppressWarnings("unused")
- public Object[] choicesSomeAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, Long.class });
- final Method choicesMethod = findMethod(Customer.class, "choicesSomeAction", new Class[] {});
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- facetFactory.process(ProcessMethodContext
- .forTesting(Customer.class, FeatureType.ACTION, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(ActionChoicesFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof ActionChoicesFacetViaMethod);
- final ActionChoicesFacetViaMethod actionChoicesFacetViaMethod = (ActionChoicesFacetViaMethod) facet;
- assertEquals(choicesMethod, actionChoicesFacetViaMethod.getMethods().getFirstOrFail());
-
- assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(choicesMethod));
- }
-
- public void testInstallsParameterChoicesMethodSomeArgsIsIgnored() {
- val facetFactory = new ActionChoicesFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- class Customer {
- @SuppressWarnings("unused")
- public void someAction(final int x, final Long y) {
- }
-
- @SuppressWarnings("unused")
- public Object[] choicesSomeAction(final int x, final Long y) {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, Long.class });
-
- facetFactory.process(ProcessMethodContext
- .forTesting(Customer.class, FeatureType.ACTION, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(ActionChoicesFacet.class);
- assertNull(facet);
- }
-
-
-
public void testInstallsParameterDefaultsMethodAndRemovesMethod() {
val facetFactory = new ActionParameterDefaultsFacetViaMethodFactory(metaModelContext);
@@ -431,100 +311,5 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(autoComplete0Method));
}
- public void testBothChoicesMethodCausesException() {
-
- val facetFactory = new ActionChoicesFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- final ActionParameterChoicesFacetViaMethodFactory facetFactoryForParams =
- new ActionParameterChoicesFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
-
- class Customer {
- @SuppressWarnings("unused")
- public void someAction(final int x, final long y) {
- }
-
- @SuppressWarnings("unused")
- public int[] choices0SomeAction() {
- return new int[0];
- }
-
- @SuppressWarnings("unused")
- public long[] choices1SomeAction() {
- return new long[0];
- }
-
- @SuppressWarnings("unused")
- public Object[][] choicesSomeAction() {
- return null;
- }
- }
-
- final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, long.class });
- final FacetedMethod facetHolderWithParms = FacetedMethod
- .createForAction(metaModelContext, Customer.class, actionMethod);
-
- final ProcessMethodContext processMethodContext = ProcessMethodContext
- .forTesting(Customer.class, FeatureType.ACTION, actionMethod, methodRemover, facetHolderWithParms);
- facetFactory.process(processMethodContext);
- try {
- facetFactoryForParams.process(processMethodContext);
- fail("exception expected");
- } catch (final MetaModelException expected) {
- // ignore
- }
- }
-
- public void testBothDefaultMethodCausesException() {
- val facetFactory = new ActionDefaultsFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- final ActionParameterDefaultsFacetViaMethodFactory facetFactoryForParams =
- new ActionParameterDefaultsFacetViaMethodFactory(metaModelContext);
-
- // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec);
- allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec);
-
- class Customer {
- @SuppressWarnings("unused")
- public void someAction(final int x, final long y) {
- }
-
- @SuppressWarnings("unused")
- public int default0SomeAction() {
- return 0;
- }
-
- @SuppressWarnings("unused")
- public long default1SomeAction() {
- return 0;
- }
-
- @SuppressWarnings("unused")
- public Object[] defaultSomeAction() {
- return null;
- }
- }
-
- final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class, long.class });
- final FacetedMethod facetHolderWithParms = FacetedMethod
- .createForAction(metaModelContext, Customer.class, actionMethod);
-
- final ProcessMethodContext processMethodContext = ProcessMethodContext
- .forTesting(Customer.class, FeatureType.ACTION, actionMethod, methodRemover, facetHolderWithParms);
- facetFactory.process(processMethodContext);
- try {
- facetFactoryForParams.process(processMethodContext);
- fail("exception expected");
- } catch (final MetaModelException expected) {
-
- }
- }
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java
deleted file mode 100644
index bedea7c..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ObjectValidMethodFacetFactoryTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.validating.validateobject;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.validating.validateobject.method.ValidateObjectFacetMethod;
-import org.apache.isis.core.metamodel.facets.object.validating.validateobject.method.ValidateObjectFacetMethodFactory;
-
-public class ObjectValidMethodFacetFactoryTest extends AbstractFacetFactoryTest {
-
- private ValidateObjectFacetMethodFactory facetFactory;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- facetFactory = new ValidateObjectFacetMethodFactory(metaModelContext);
- }
-
- @Override
- protected void tearDown() throws Exception {
- facetFactory = null;
- super.tearDown();
- }
-
- public void testValidateMethodPickedUpAndMethodRemoved() {
- class Customer {
- @SuppressWarnings("unused")
- public String validate() {
- return null;
- }
- }
- final Method validateMethod = findMethod(Customer.class, "validate");
-
- final ProcessClassContext processClassContext = ProcessClassContext
- .forTesting(Customer.class, methodRemover, facetHolder);
- facetFactory.process(processClassContext);
-
- final Facet facet = facetHolder.getFacet(ValidateObjectFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof ValidateObjectFacetMethod);
-
- assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(validateMethod));
- }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index 2a4c41a..345ee36 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -67,7 +67,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void verifyProgrammingModelNumberOfFactories() {
- assertEquals(108, programmingModel.streamFactories().count());
+ assertEquals(105, programmingModel.streamFactories().count());
}
@Test //verify we have the javac -parameter flag set when compiling this class