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 2022/05/25 04:01:53 UTC

[isis] 01/01: ISIS-3063: don't use anonymous facet classes in OneToManyAssociationMixedIn

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 19163f5f6a71ded3987f6213fada964b4ac6a0e8
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 25 06:01:15 2022 +0200

    ISIS-3063: don't use anonymous facet classes in
    OneToManyAssociationMixedIn
    
    - use concrete facet classes instead
    
    - also turns on the MetaModelRegressionTest
---
 .../facets/actcoll/typeof/TypeOfFacetAbstract.java  |   2 +-
 .../typeof/TypeOfFacetFromActionReturn.java}        |  10 +++++-----
 .../memserexcl/SnapshotExcludeFacetAbstract.java    |   4 +++-
 .../update/PropertySetterFacetFactory.java          |   4 ++--
 ...=> SnapshotExcludeFacetFromImmutableMember.java} |   5 +++--
 .../specimpl/OneToManyAssociationMixedIn.java       |   8 ++++----
 .../domainmodel/MetaModelRegressionTest.java        |   8 +++++---
 .../src/test/resources/metamodel.xml.zip            | Bin 90534 -> 88056 bytes
 8 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
index 9e4bab5297..92dfe36199 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetAbstract.java
@@ -30,7 +30,7 @@ implements TypeOfFacet {
         return TypeOfFacet.class;
     }
 
-    public TypeOfFacetAbstract(final Class<?> type, final FacetHolder holder) {
+    protected TypeOfFacetAbstract(final Class<?> type, final FacetHolder holder) {
         super(type(), holder, type);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetInferred.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetFromActionReturn.java
similarity index 73%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetInferred.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetFromActionReturn.java
index c452a6691d..7b414cbb51 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetInferred.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacetFromActionReturn.java
@@ -16,15 +16,15 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.metamodel.facets.properties.update;
+package org.apache.isis.core.metamodel.facets.actcoll.typeof;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.propcoll.memserexcl.SnapshotExcludeFacetAbstract;
 
-public class SnapshotExcludeFacetInferred extends SnapshotExcludeFacetAbstract {
+public class TypeOfFacetFromActionReturn
+extends TypeOfFacetAbstract {
 
-    public SnapshotExcludeFacetInferred(final FacetHolder holder) {
-        super(holder);
+    public TypeOfFacetFromActionReturn(final Class<?> type, final FacetHolder holder) {
+        super(type, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/memserexcl/SnapshotExcludeFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/memserexcl/SnapshotExcludeFacetAbstract.java
index 79080fdb98..7674078a75 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/memserexcl/SnapshotExcludeFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/memserexcl/SnapshotExcludeFacetAbstract.java
@@ -22,7 +22,9 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
-public abstract class SnapshotExcludeFacetAbstract extends FacetAbstract implements SnapshotExcludeFacet {
+public abstract class SnapshotExcludeFacetAbstract
+extends FacetAbstract
+implements SnapshotExcludeFacet {
 
     private static final Class<? extends Facet> type() {
         return SnapshotExcludeFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
index 40b304b5ce..01971f48c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
@@ -40,7 +40,7 @@ import lombok.val;
 /**
  * Sets up the {@link PropertySetterFacetViaSetterMethod} to invoke the
  * property's setter if available, but if none then marks the property as
- * {@link SnapshotExcludeFacetInferred not-persistable}.
+ * {@link SnapshotExcludeFacetFromImmutableMember not-persistable}.
  */
 public class PropertySetterFacetFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
@@ -79,7 +79,7 @@ extends MethodPrefixBasedFacetFactoryAbstract {
             });
 
         } else {
-            addFacet(new SnapshotExcludeFacetInferred(property));
+            addFacet(new SnapshotExcludeFacetFromImmutableMember(property));
 
             // previously we also added the DisabledFacetAlwaysEverywhere facet here.
             // however, the PropertyModifyFacetFactory (which comes next) might install a PropertySetterFacet instead.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetInferred.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetFromImmutableMember.java
similarity index 86%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetInferred.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetFromImmutableMember.java
index c452a6691d..9242a8e6f7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetInferred.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/SnapshotExcludeFacetFromImmutableMember.java
@@ -21,9 +21,10 @@ package org.apache.isis.core.metamodel.facets.properties.update;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.memserexcl.SnapshotExcludeFacetAbstract;
 
-public class SnapshotExcludeFacetInferred extends SnapshotExcludeFacetAbstract {
+public class SnapshotExcludeFacetFromImmutableMember
+extends SnapshotExcludeFacetAbstract {
 
-    public SnapshotExcludeFacetInferred(final FacetHolder holder) {
+    public SnapshotExcludeFacetFromImmutableMember(final FacetHolder holder) {
         super(holder);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 2b33d494ec..fae5884b82 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -28,12 +28,12 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetFromActionReturn;
 import org.apache.isis.core.metamodel.facets.all.named.MemberNamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetForContributee;
-import org.apache.isis.core.metamodel.facets.propcoll.memserexcl.SnapshotExcludeFacetAbstract;
+import org.apache.isis.core.metamodel.facets.properties.update.SnapshotExcludeFacetFromImmutableMember;
 import org.apache.isis.core.metamodel.interactions.InteractionHead;
 import org.apache.isis.core.metamodel.services.publishing.ExecutionPublisher;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -108,9 +108,9 @@ implements MixedInMember {
         //
         // ensure the mixedIn collection cannot be modified, and derive its TypeOfFaccet
         //
-        FacetUtil.addFacet(new SnapshotExcludeFacetAbstract(this) {});
+        FacetUtil.addFacet(new SnapshotExcludeFacetFromImmutableMember(this));
         FacetUtil.addFacet(disabledFacet());
-        FacetUtil.addFacet(new TypeOfFacetAbstract(getElementType().getCorrespondingClass(), this) {});
+        FacetUtil.addFacet(new TypeOfFacetFromActionReturn(getElementType().getCorrespondingClass(), this));
 
         // adjust name if necessary
         val isExplicitlyNamed = lookupNonFallbackFacet(MemberNamedFacet.class)
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/MetaModelRegressionTest.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/MetaModelRegressionTest.java
index 1a84ccb216..e5e0912508 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/MetaModelRegressionTest.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/MetaModelRegressionTest.java
@@ -76,9 +76,12 @@ class MetaModelRegressionTest {
 
         val url = _Resources.getResourceUrl(getClass(), "/metamodel.xml.zip");
         if(url==null) {
-            //createReferenceMetaModelFile(new File("/???/metamodel.xml.zip"));
+            //createReferenceMetaModelFile(new File("/<path to resources>/metamodel.xml.zip"));
             _Exceptions.throwNotImplemented();
         }
+
+        //for maintenance
+        //createReferenceMetaModelFile(new File("d:/tmp/_scratch/metamodel.xml.zip"));
     }
 
     @Test
@@ -88,7 +91,7 @@ class MetaModelRegressionTest {
                 factoryService.mixin(MetaModelServiceMenu.downloadMetaModelDiff.class, metaModelServiceMenu);
         val metamodelExport =
                 downloadMetaModelDiff.act("metamodel.xml", namespaces(), true,
-                        currentMetaModelAsZippedBlob())
+                        referenceMetaModelAsZippedBlob())
                 .unZip(CommonMimeType.XML)
                 .toClob(StandardCharsets.UTF_8);
 
@@ -101,7 +104,6 @@ class MetaModelRegressionTest {
             System.err.printf("%s%n", diff);
             fail("Reference meta-model and current do differ.");
         }
-
     }
 
     // -- HELPER
diff --git a/regressiontests/stable-domainmodel/src/test/resources/metamodel.xml.zip b/regressiontests/stable-domainmodel/src/test/resources/metamodel.xml.zip
index 89b24cb824..085038772c 100644
Binary files a/regressiontests/stable-domainmodel/src/test/resources/metamodel.xml.zip and b/regressiontests/stable-domainmodel/src/test/resources/metamodel.xml.zip differ