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/01/22 07:25:50 UTC
[isis] branch master updated: ISIS-2297: tiny readability
improvements on MixinFacetAbstract
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 6ba69c0 ISIS-2297: tiny readability improvements on MixinFacetAbstract
6ba69c0 is described below
commit 6ba69c059bea61d933bf5814d9b3b65181dae637
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 22 08:24:32 2021 +0100
ISIS-2297: tiny readability improvements on MixinFacetAbstract
---
.../facets/object/mixin/MixinFacetAbstract.java | 29 +++++++++++++---------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
index caff110..eecdca1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
@@ -38,7 +38,7 @@ extends SingleValueFacetAbstract<String>
implements MixinFacet {
private final Class<?> mixinType;
- private final Class<?> constructorType;
+ private final Class<?> holderType;
private final Constructor<?> constructor;
public static Class<? extends Facet> type() {
@@ -54,7 +54,8 @@ implements MixinFacet {
super(type(), value, holder);
this.mixinType = mixinType;
this.constructor = constructor;
- this.constructorType = constructor.getParameterTypes()[0];
+ // by mixin convention: first constructor argument is identified as the holder type
+ this.holderType = constructor.getParameterTypes()[0];
}
@Override
@@ -62,7 +63,7 @@ implements MixinFacet {
if (candidateDomainType == null) {
return false;
}
- return constructorType.isAssignableFrom(candidateDomainType);
+ return holderType.isAssignableFrom(candidateDomainType);
}
@Override
@@ -91,12 +92,8 @@ implements MixinFacet {
@Override
public boolean isCandidateForMain(Method method) {
- if (method.getName().equals(super.value())) {
- final Class<?> constructorDeclaringClass = constructor.getDeclaringClass();
- final Class<?> methodDeclaringClass = method.getDeclaringClass();
- if (methodDeclaringClass.isAssignableFrom(constructorDeclaringClass)) return true;
- }
- return false;
+ return method.getName().equals(getMainMethodName())
+ && method.getDeclaringClass().isAssignableFrom(constructor.getDeclaringClass());
}
@Override
@@ -105,22 +102,30 @@ implements MixinFacet {
val holderPojo = holderPojoFor(mixinPojo, policy);
return holderPojo!=null
? getObjectManager().adapt(holderPojo)
- : null;
+ : null;
}
@Override
public void appendAttributesTo(final Map<String, Object> attributeMap) {
super.appendAttributesTo(attributeMap);
attributeMap.put("mixinType", mixinType);
- attributeMap.put("constructorType", constructorType);
+ attributeMap.put("holderType", holderType);
}
+ /**
+ * The mixin's main method name.
+ * @implNote as stored in the SingleValueFacetAbstract's value field
+ */
+ public String getMainMethodName() {
+ return super.value();
+ }
+
// -- HELPER
private Object holderPojoFor(Object mixinPojo, Policy policy) {
val mixinFields = mixinType.getFields();
for (val mixinField : mixinFields) {
- if(mixinField.getType().isAssignableFrom(constructorType)) {
+ if(mixinField.getType().isAssignableFrom(holderType)) {
try {
val holderPojo = _Reflect.getFieldOn(mixinField, mixinPojo);
return holderPojo;