You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/12/15 14:16:41 UTC
[isis] 02/02: ISIS-2228: fixes property specific facets with mixins
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 45873d390e74299a45a67148cbcb3a1ddc5ecedb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Dec 15 15:16:29 2019 +0100
ISIS-2228: fixes property specific facets with mixins
---
.../metamodel/facets/FacetFactoryAbstract.java | 4 ++-
.../metamodel/facets/MethodLiteralConstants.java | 16 +++++++-----
.../MethodPrefixBasedFacetFactoryAbstract.java | 8 ++++++
.../HideForContextFacetViaMethodFactory.java | 10 ++------
.../callbacks/CreatedCallbackFacetFactory.java | 2 +-
.../object/callbacks/LoadCallbackFacetFactory.java | 4 +--
.../callbacks/PersistCallbackFacetFactory.java | 4 +--
.../PersistCallbackViaSaveMethodFacetFactory.java | 4 +--
.../callbacks/RemoveCallbackFacetFactory.java | 4 +--
.../RemoveCallbackViaDeleteMethodFacetFactory.java | 4 +--
.../callbacks/UpdateCallbackFacetFactory.java | 4 +--
.../method/CssClassFacetMethodFactory.java | 2 +-
.../method/HiddenObjectFacetViaMethodFactory.java | 2 +-
.../object/icon/method/IconFacetMethodFactory.java | 2 +-
.../facets/object/layout/LayoutFacetFactory.java | 2 +-
.../title/methods/TitleFacetViaMethodsFactory.java | 2 +-
.../method/ValidateObjectFacetMethodFactory.java | 2 +-
...ParameterAutoCompleteFacetViaMethodFactory.java | 2 +-
...tionParameterDisabledFacetViaMethodFactory.java | 2 +-
...ActionParameterHiddenFacetViaMethodFactory.java | 2 +-
.../PropertyAutoCompleteFacetMethodFactory.java | 30 ++++++++++++----------
.../PropertyChoicesFacetViaMethodFactory.java | 29 +++++++++++++++------
.../PropertyDefaultFacetViaMethodFactory.java | 29 +++++++++++++++------
.../update/PropertySetAndClearFacetFactory.java | 2 +-
.../PropertyMethodsFacetFactoryTest.java | 17 +++++++-----
.../DomainModelTest_usingGoodDomain.java | 2 +-
26 files changed, 115 insertions(+), 76 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
index 8ce0048..ddb88c6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
@@ -63,7 +63,9 @@ implements FacetFactory, MetaModelContextAware, MetaModelContext.Delegating {
// -- METHOD UTILITITES
- protected static final Class<?>[] NO_PARAMETERS_TYPES = new Class<?>[0];
+ protected static final Class<?> NO_RETURN = (Class<?>)null;
+ protected static final Class<?>[] NO_ARG = new Class<?>[0];
+ protected static final Class<?>[] STRING_ARG = new Class<?>[] {String.class};
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
index fa6f7a0..eb37661 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
@@ -29,10 +29,6 @@ public final class MethodLiteralConstants {
public static final String GET_PREFIX = "get";
public static final String IS_PREFIX = "is";
public static final String SET_PREFIX = "set";
- public static final String CLEAR_PREFIX = "clear";
- public static final String MODIFY_PREFIX = "modify";
- public static final String ADD_TO_PREFIX = "addTo";
- public static final String REMOVE_FROM_PREFIX = "removeFrom";
public static final String DEFAULT_PREFIX = "default";
public static final String CHOICES_PREFIX = "choices";
@@ -43,9 +39,6 @@ public final class MethodLiteralConstants {
public static final String DISABLE_PREFIX = "disable";
public static final String VALIDATE_PREFIX = "validate";
- public static final String VALIDATE_ADD_TO_PREFIX = "validateAddTo";
- public static final String VALIDATE_REMOVE_FROM_PREFIX = "validateRemoveFrom";
-
public static final String CREATED_PREFIX = "created";
public static final String LOADED_PREFIX = "loaded";
public static final String LOADING_PREFIX = "loading";
@@ -71,5 +64,14 @@ public final class MethodLiteralConstants {
public static final String ICON_NAME_PREFIX = "iconName";
public static final String LAYOUT_METHOD_NAME = "layout";
+ // -- DEPRECATIONS
+
+ @Deprecated public static final String VALIDATE_ADD_TO_PREFIX = "validateAddTo";
+ @Deprecated public static final String VALIDATE_REMOVE_FROM_PREFIX = "validateRemoveFrom";
+ @Deprecated public static final String CLEAR_PREFIX = "clear";
+ @Deprecated public static final String MODIFY_PREFIX = "modify";
+ @Deprecated public static final String ADD_TO_PREFIX = "addTo";
+ @Deprecated public static final String REMOVE_FROM_PREFIX = "removeFrom";
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
index ddc75a3..59ec8af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
@@ -106,4 +106,12 @@ implements MethodPrefixBasedFacetFactory {
});
}
+ protected boolean isPropertyOrMixinMain(ProcessMethodContext processMethodContext) {
+ return processMethodContext.isMixinMain()
+ || (
+ processMethodContext.getFeatureType()!=null // yet to support some JUnit tests
+ && processMethodContext.getFeatureType().isProperty()
+ );
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
index 0fd5f33..7980d8f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
@@ -31,8 +31,6 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
import org.apache.isis.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import lombok.val;
-
public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
@@ -57,12 +55,8 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
private void attachHideFacetIfHideMethodIsFound(final ProcessMethodContext processMethodContext) {
final Method getter = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getter.getName());
-
- val getterName = getter.toString();
- if(getterName.contains("ProperMemberSupport")) {
- System.out.println("#hide# " + getter);
- }
+ final String capitalizedName =
+ StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getter.getName());
final Class<?> cls = processMethodContext.getCls();
Method hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
index 9bd3ff7..2381722 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
@@ -40,7 +40,7 @@ public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
val cls = processClassContext.getCls();
val facetHolder = processClassContext.getFacetHolder();
- val method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ val method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_ARG);
if (method != null) {
super.addFacet(new CreatedCallbackFacetViaMethod(method, facetHolder));
processClassContext.removeMethod(method);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
index da1131b..dc6f771 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
@@ -48,13 +48,13 @@ public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstr
val facetHolder = processClassContext.getFacetHolder();
Method method = null;
- method = MethodFinderUtils.findMethod(cls, LOADING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, LOADING_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
super.addFacet(new LoadingCallbackFacetViaMethod(method, facetHolder));
}
- method = MethodFinderUtils.findMethod(cls, LOADED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, LOADED_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
super.addFacet(new LoadedCallbackFacetViaMethod(method, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
index b1f1f45..0b99dd2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
@@ -50,7 +50,7 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
val facets = new ArrayList<Facet>();
Method method = null;
- method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTING_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(PersistingCallbackFacet.class);
@@ -61,7 +61,7 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
}
}
- method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTED_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(PersistedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
index 97ed2bc..6c6e976 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
@@ -50,7 +50,7 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
val facets = new ArrayList<Facet>();
Method method = null;
- method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVING_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(PersistingCallbackFacet.class);
@@ -61,7 +61,7 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
}
}
- method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVED_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(PersistedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
index 1d8fa23..8e9047d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
@@ -53,7 +53,7 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
Method method = MethodFinderUtils
.findMethod(cls, REMOVING_PREFIX, void.class,
- NO_PARAMETERS_TYPES);
+ NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(RemovingCallbackFacet.class);
@@ -64,7 +64,7 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
}
}
- method = MethodFinderUtils.findMethod(cls, REMOVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, REMOVED_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(RemovedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
index 0024dab..174b731 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
@@ -53,7 +53,7 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
val facets = new ArrayList<Facet>();
Method method = null;
- method = MethodFinderUtils.findMethod(cls, DELETING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, DELETING_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
final RemovingCallbackFacet facet = facetHolder.getFacet(RemovingCallbackFacet.class);
@@ -64,7 +64,7 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
}
}
- method = MethodFinderUtils.findMethod(cls, DELETED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, DELETED_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
val facet = facetHolder.getFacet(RemovedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
index a64428d..6967839 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
@@ -50,13 +50,13 @@ public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
val facets = new ArrayList<Facet>();
Method method = null;
- method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATING_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
facets.add(new UpdatingCallbackFacetViaMethod(method, facetHolder));
}
- method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+ method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATED_PREFIX, void.class, NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
facets.add(new UpdatedCallbackFacetViaMethod(method, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
index 21d0301..d6a0ea1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
@@ -42,7 +42,7 @@ public class CssClassFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbs
final FacetHolder facetHolder = processClassContext.getFacetHolder();
final Method method = MethodFinderUtils.findMethod(
- cls, MethodLiteralConstants.CSS_CLASS_PREFIX, String.class, NO_PARAMETERS_TYPES);
+ cls, MethodLiteralConstants.CSS_CLASS_PREFIX, String.class, NO_ARG);
if (method == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
index 0ee479a..a7c859a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
@@ -78,7 +78,7 @@ public class HiddenObjectFacetViaMethodFactory extends MethodPrefixBasedFacetFac
final FacetHolder facetHolder = processClassContext.getFacetHolder();
final Method method = MethodFinderUtils.findMethod(
- cls, MethodLiteralConstants.HIDDEN_PREFIX, returnType, NO_PARAMETERS_TYPES);
+ cls, MethodLiteralConstants.HIDDEN_PREFIX, returnType, NO_ARG);
if (method == null) {
return false;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
index be1159e..abf5a04 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
@@ -43,7 +43,7 @@ public class IconFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstrac
final FacetHolder facetHolder = processClassContext.getFacetHolder();
final Method method = MethodFinderUtils.findMethod(
- cls, MethodLiteralConstants.ICON_NAME_PREFIX, String.class, NO_PARAMETERS_TYPES);
+ cls, MethodLiteralConstants.ICON_NAME_PREFIX, String.class, NO_ARG);
if (method == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
index e65cb43..d5fc851 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
@@ -42,7 +42,7 @@ public class LayoutFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
final FacetHolder facetHolder = processClassContext.getFacetHolder();
final Method method = MethodFinderUtils.findMethod(
- cls, MethodLiteralConstants.LAYOUT_METHOD_NAME, String.class, NO_PARAMETERS_TYPES);
+ cls, MethodLiteralConstants.LAYOUT_METHOD_NAME, String.class, NO_ARG);
final LayoutFacet facet;
if (method == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
index 5051f55..da2bcfd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
@@ -58,7 +58,7 @@ public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAb
Method method = MethodFinderUtils.findMethod_returningText(
cls,
TITLE,
- NO_PARAMETERS_TYPES);
+ NO_ARG);
if (method != null) {
processClassContext.removeMethod(method);
final TranslationService translationService = getTranslationService();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index 98efe80..addc9bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
@@ -48,7 +48,7 @@ public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFact
final Method method = MethodFinderUtils.findMethod_returningText(
cls,
VALIDATE_PREFIX,
- NO_PARAMETERS_TYPES);
+ NO_ARG);
if (method != null) {
final TranslationService translationService = getTranslationService();
// sadness: same as in TranslationFactory
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 0debc33..cbba636 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -99,7 +99,7 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
returnTypes,
cls,
name,
- new Class[]{String.class});
+ STRING_ARG);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index a0eefe0..a1ed4eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -69,7 +69,7 @@ public class ActionParameterDisabledFacetViaMethodFactory extends MethodPrefixBa
val disableMethod = MethodFinderUtils.findMethod_returningText(
cls,
hideName,
- NO_PARAMETERS_TYPES);
+ NO_ARG);
if (disableMethod != null) {
processParameterContext.removeMethod(disableMethod);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index aecaf64..b6b0b91 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -67,7 +67,7 @@ public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBase
cls,
hideName,
boolean.class,
- NO_PARAMETERS_TYPES);
+ NO_ARG);
if (hideMethod != null) {
processParameterContext.removeMethod(hideMethod);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 41bb625..2d127ee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -19,8 +19,6 @@
package org.apache.isis.metamodel.facets.properties.autocomplete.method;
-import java.lang.reflect.Method;
-
import org.apache.isis.commons.collections.Can;
import org.apache.isis.metamodel.commons.StringExtensions;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -37,7 +35,8 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.AUTO_COMPLETE_PREFIX);
public PropertyAutoCompleteFacetMethodFactory() {
- super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ // to also support properties from mixins, need to not only include properties but also actions
+ super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
}
@Override
@@ -48,22 +47,25 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
private void attachPropertyAutoCompleteFacetIfChoicesMethodIsFound(
final ProcessMethodContext processMethodContext) {
-
- final Method getter = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asJavaBaseName(getter.getName());
-
- val getterName = getter.toString();
- if(getterName.contains("ProperMemberSupport")) {
- System.out.println("#autoComplete# " + getter);
+
+ // optimization step, not strictly required
+ if(!super.isPropertyOrMixinMain(processMethodContext)) {
+ return;
}
+
+ val getterOrMixinMain = processMethodContext.getMethod();
+ val capitalizedName = processMethodContext.isMixinMain()
+ ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
+ : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
- final Class<?> cls = processMethodContext.getCls();
- final Class<?> returnType = getter.getReturnType();
- final Method autoCompleteMethod = MethodFinderUtils
+ val cls = processMethodContext.getCls();
+ val returnType = getterOrMixinMain.getReturnType();
+ val autoCompleteMethod = MethodFinderUtils
.findMethod(
cls,
MethodLiteralConstants.AUTO_COMPLETE_PREFIX + capitalizedName,
- (Class<?>)null, new Class[]{String.class});
+ NO_RETURN,
+ STRING_ARG);
if (autoCompleteMethod == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 368e8dc..789d518 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -19,8 +19,6 @@
package org.apache.isis.metamodel.facets.properties.choices.method;
-import java.lang.reflect.Method;
-
import org.apache.isis.commons.collections.Can;
import org.apache.isis.metamodel.commons.StringExtensions;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -30,12 +28,15 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
import org.apache.isis.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import lombok.val;
+
public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CHOICES_PREFIX);
public PropertyChoicesFacetViaMethodFactory() {
- super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ // to also support properties from mixins, need to not only include properties but also actions
+ super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
}
@Override
@@ -46,12 +47,24 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
private void attachPropertyChoicesFacetIfChoicesMethodIsFound(final ProcessMethodContext processMethodContext) {
- final Method getMethod = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
+ // optimization step, not strictly required
+ if(!super.isPropertyOrMixinMain(processMethodContext)) {
+ return;
+ }
+
+ val getterOrMixinMain = processMethodContext.getMethod();
+ val capitalizedName = processMethodContext.isMixinMain()
+ ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
+ : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
- final Class<?> cls = processMethodContext.getCls();
- final Class<?> returnType = getMethod.getReturnType();
- final Method choicesMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CHOICES_PREFIX + capitalizedName, (Class<?>)null, NO_PARAMETERS_TYPES);
+ val cls = processMethodContext.getCls();
+ val returnType = getterOrMixinMain.getReturnType();
+ val choicesMethod = MethodFinderUtils
+ .findMethod(
+ cls,
+ MethodLiteralConstants.CHOICES_PREFIX + capitalizedName,
+ NO_RETURN,
+ NO_ARG);
if (choicesMethod == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index d9298a0..052010b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -19,8 +19,6 @@
package org.apache.isis.metamodel.facets.properties.defaults.method;
-import java.lang.reflect.Method;
-
import org.apache.isis.commons.collections.Can;
import org.apache.isis.metamodel.commons.StringExtensions;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -30,12 +28,15 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
import org.apache.isis.metamodel.facets.MethodLiteralConstants;
import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import lombok.val;
+
public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DEFAULT_PREFIX);
public PropertyDefaultFacetViaMethodFactory() {
- super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+ // to also support properties from mixins, need to not only include properties but also actions
+ super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
}
@Override
@@ -46,12 +47,24 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
private void attachPropertyDefaultFacetIfDefaultMethodIsFound(final ProcessMethodContext processMethodContext) {
- final Method getMethod = processMethodContext.getMethod();
- final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
+ // optimization step, not strictly required
+ if(!super.isPropertyOrMixinMain(processMethodContext)) {
+ return;
+ }
+
+ val getterOrMixinMain = processMethodContext.getMethod();
+ val capitalizedName = processMethodContext.isMixinMain()
+ ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
+ : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
- final Class<?> cls = processMethodContext.getCls();
- final Class<?> returnType = getMethod.getReturnType();
- final Method method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName, returnType, NO_PARAMETERS_TYPES);
+ val cls = processMethodContext.getCls();
+ val returnType = getterOrMixinMain.getReturnType();
+ val method = MethodFinderUtils
+ .findMethod(
+ cls,
+ MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName,
+ returnType,
+ NO_ARG);
if (method == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
index 1d7ab0b..38e1982 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
@@ -95,7 +95,7 @@ public class PropertySetAndClearFacetFactory extends MethodPrefixBasedFacetFacto
final FacetHolder property = processMethodContext.getFacetHolder();
final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
- final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_PARAMETERS_TYPES);
+ final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_ARG);
if (clearMethod == null) {
return null;
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index 04eaf1d..23d4314 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -19,11 +19,12 @@
package org.apache.isis.metamodel.facets.properties;
-import lombok.val;
-
import java.lang.reflect.Method;
+import org.jmock.auto.Mock;
+
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FeatureType;
import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.metamodel.facets.members.disabled.DisabledFacet;
@@ -63,7 +64,8 @@ import org.apache.isis.metamodel.facets.properties.validating.method.PropertyVal
import org.apache.isis.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethodFactory;
import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.jmock.auto.Mock;
+
+import lombok.val;
public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -362,7 +364,8 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
final Method propertyChoicesMethod = findMethod(Customer.class, "choicesFirstName");
- facetFactory.process(new ProcessMethodContext(Customer.class, null, propertyAccessorMethod, methodRemover, facetedMethod));
+ facetFactory.process(new ProcessMethodContext(
+ Customer.class, FeatureType.PROPERTY, propertyAccessorMethod, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(PropertyChoicesFacet.class);
assertNotNull(facet);
@@ -403,7 +406,8 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
final Method propertyAutoCompleteMethod = findMethod(Customer.class, "autoCompleteFirstName", new Class[]{String.class});
- facetFactory.process(new ProcessMethodContext(Customer.class, null, propertyAccessorMethod, methodRemover, facetedMethod));
+ facetFactory.process(new ProcessMethodContext(
+ Customer.class, FeatureType.PROPERTY, propertyAccessorMethod, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(PropertyAutoCompleteFacet.class);
assertNotNull(facet);
@@ -432,7 +436,8 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
final Method propertyDefaultMethod = findMethod(Customer.class, "defaultFirstName");
- facetFactory.process(new ProcessMethodContext(Customer.class, null, propertyAccessorMethod, methodRemover, facetedMethod));
+ facetFactory.process(new ProcessMethodContext(
+ Customer.class, FeatureType.PROPERTY, propertyAccessorMethod, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(PropertyDefaultFacet.class);
assertNotNull(facet);
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index de6ce62..12dbed3 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -91,7 +91,7 @@ class DomainModelTest_usingGoodDomain {
@Test
void goodDomain_shouldPassValidation() {
- debug();
+ //debug();
assertFalse(specificationLoader.snapshotSpecifications().isEmpty());
val validateDomainModel = new ValidateDomainModel(specificationLoader);