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/11/15 20:14:48 UTC

[isis] branch master updated: ISIS-2894: don't remove getters, even if synthetic

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 7a6332c  ISIS-2894: don't remove getters, even if synthetic
7a6332c is described below

commit 7a6332ce8204fa5984488068927ddaeeae7ba32e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Nov 15 21:14:38 2021 +0100

    ISIS-2894: don't remove getters, even if synthetic
---
 .../object/ignore/javalang/RemoveMethodsFacetFactory.java     | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java
index 91d14fa..ebb18cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.reflection._Annotations;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.commons.ClassExtensions;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -89,14 +90,21 @@ public class RemoveMethodsFacetFactory extends FacetFactoryAbstract {
         .forEach(method->{
             // remove synthetic methods (except when is a mixin)
             // (it seems that javac marks methods synthetic in the context of non-static inner classes)
+
             if (!isConcreteMixin
-                    && method.isSynthetic()) {
+                    //FIXME[ISIS-2894] method.isSynthetic() seems a bad indicator for nested inner,
+                    // perhaps find a better way
+                    && method.isSynthetic()
+                    // workaround ... don't remove getters, even if synthetic
+                    && !ProgrammingModelConstants.AccessorPrefix.isGetter(method)) {
                 processClassContext.removeMethod(method);
+                return;
             }
 
             // removeJavaLangComparable(processClassContext);
             if(method.getName().equals("compareTo")) {
                 processClassContext.removeMethod(method);
+                return;
             }
 
             // remove property setter, if has not explicitly an @Action annotation
@@ -108,6 +116,7 @@ public class RemoveMethodsFacetFactory extends FacetFactoryAbstract {
 
                 if(!_Annotations.synthesize(method, Action.class).isPresent()) {
                     processClassContext.removeMethod(method);
+                    return;
                 }
             }
         });