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/02 17:48:31 UTC

[isis] branch master updated: ISIS-2902: remove ManagedMember.MemberType (replace by Identifier.Type)

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 b462a821ad ISIS-2902: remove ManagedMember.MemberType (replace by Identifier.Type)
b462a821ad is described below

commit b462a821ad3b00a1330877e461c9af5fe32dd289
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon May 2 19:48:24 2022 +0200

    ISIS-2902: remove ManagedMember.MemberType (replace by Identifier.Type)
---
 .../interactions/managed/ManagedAction.java        |  9 ++--
 .../interactions/managed/ManagedCollection.java    |  7 +--
 .../interactions/managed/ManagedMember.java        | 53 +++++-----------------
 .../interactions/managed/ManagedProperty.java      |  7 +--
 4 files changed, 24 insertions(+), 52 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java
index c0a21c9708..f331310b36 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedAction.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 
 import org.springframework.lang.Nullable;
 
+import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -64,7 +65,7 @@ public final class ManagedAction extends ManagedMember {
             final @NonNull String memberId,
             final @NonNull Where where) {
 
-        return ManagedMember.<ObjectAction>lookup(owner, MemberType.ACTION, memberId)
+        return ManagedMember.<ObjectAction>lookup(owner, Identifier.Type.ACTION, memberId)
         .map(objectAction -> of(owner, objectAction, where));
     }
 
@@ -74,7 +75,7 @@ public final class ManagedAction extends ManagedMember {
             final @NonNull Where where,
             final @NonNull MultiselectChoices multiselectChoices) {
 
-        return ManagedMember.<ObjectAction>lookup(owner, MemberType.ACTION, memberId)
+        return ManagedMember.<ObjectAction>lookup(owner, Identifier.Type.ACTION, memberId)
                 .map(objectAction -> new ManagedAction(owner, objectAction, where, multiselectChoices));
     }
 
@@ -117,8 +118,8 @@ public final class ManagedAction extends ManagedMember {
     }
 
     @Override
-    public MemberType getMemberType() {
-        return MemberType.ACTION;
+    public Identifier.Type getMemberType() {
+        return Identifier.Type.ACTION;
     }
 
     // -- INTERACTION
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java
index 5bda4764a7..22d0c67d21 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.interactions.managed;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -50,7 +51,7 @@ public final class ManagedCollection extends ManagedMember {
             final @NonNull String memberId,
             final @NonNull Where where) {
 
-        return ManagedMember.<OneToManyAssociation>lookup(owner, MemberType.COLLECTION, memberId)
+        return ManagedMember.<OneToManyAssociation>lookup(owner, Identifier.Type.COLLECTION, memberId)
         .map(objectAction -> of(owner, objectAction, where));
     }
 
@@ -73,8 +74,8 @@ public final class ManagedCollection extends ManagedMember {
     }
 
     @Override
-    public MemberType getMemberType() {
-        return MemberType.COLLECTION;
+    public Identifier.Type getMemberType() {
+        return Identifier.Type.COLLECTION;
     }
 
     public Can<ObjectAction> getAssociatedActions() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
index 56b1edd8ad..76b72217e0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
@@ -19,7 +19,6 @@
 package org.apache.isis.core.metamodel.interactions.managed;
 
 import java.util.Optional;
-import java.util.function.BiFunction;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -29,10 +28,7 @@ import org.apache.isis.core.metamodel.consent.Veto;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 import lombok.Getter;
 import lombok.NonNull;
@@ -46,39 +42,6 @@ import lombok.extern.log4j.Log4j2;
 public abstract class ManagedMember
 implements ManagedFeature {
 
-    // only used to create failure messages
-    @RequiredArgsConstructor
-    public static enum MemberType {
-        PROPERTY(OneToOneAssociation.class, (spec, propertyId)->
-            spec.getProperty(propertyId)),
-
-        COLLECTION(OneToManyAssociation.class, (spec, collectionId)->
-            spec.getCollection(collectionId)),
-
-        ACTION(ObjectAction.class, (spec, actionId)->
-            spec.getAction(actionId));
-
-        @Getter private final Class<? extends ObjectMember> memberType;
-        private final BiFunction<
-                ObjectSpecification,
-                String,
-                Optional<? extends ObjectMember>> memberProvider;
-
-        public <T extends ObjectMember> Optional<T> lookup(
-                final @NonNull ManagedObject owner,
-                final @NonNull String memberId) {
-            val onwerSpec = owner.getSpecification();
-            val member = memberProvider.apply(onwerSpec, memberId);
-            return _Casts.uncheckedCast(member);
-        }
-
-        public boolean isPropertyOrCollection() {
-            return this == PROPERTY
-                    || this == COLLECTION;
-        }
-
-    }
-
     /**
      * Some representations may vary according to whether the member is to be represented for read
      * (render the state of the property or collection) or for write (render additional hypermedia controls to allow
@@ -121,7 +84,7 @@ implements ManagedFeature {
     @Override
     public abstract ObjectMember getMetaModel();
 
-    public abstract MemberType getMemberType();
+    public abstract Identifier.Type getMemberType();
 
     @Override
     public ObjectSpecification getElementType() {
@@ -200,11 +163,17 @@ implements ManagedFeature {
 
     protected static <T extends ObjectMember> Optional<T> lookup(
             final @NonNull ManagedObject owner,
-            final @NonNull MemberType memberType,
+            final @NonNull Identifier.Type memberType,
             final @NonNull String memberId) {
-        return memberType.lookup(owner, memberId);
-    }
-
 
+        val onwerSpec = owner.getSpecification();
+        switch (memberType) {
+        case ACTION:     return _Casts.uncheckedCast(onwerSpec.getAction(memberId));
+        case PROPERTY:   return _Casts.uncheckedCast(onwerSpec.getProperty(memberId));
+        case COLLECTION: return _Casts.uncheckedCast(onwerSpec.getCollection(memberId));
+        default:
+            return Optional.empty();
+        }
+    }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
index d517a099aa..3d17fd6121 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
@@ -22,6 +22,7 @@ import java.util.Optional;
 
 import org.springframework.lang.Nullable;
 
+import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.binding.Observable;
 import org.apache.isis.commons.collections.Can;
@@ -56,7 +57,7 @@ extends ManagedMember {
             final @NonNull String memberId,
             final @NonNull Where where) {
 
-        return ManagedMember.<OneToOneAssociation>lookup(owner, MemberType.PROPERTY, memberId)
+        return ManagedMember.<OneToOneAssociation>lookup(owner, Identifier.Type.PROPERTY, memberId)
         .map(objectAction -> of(owner, objectAction, where));
     }
 
@@ -84,8 +85,8 @@ extends ManagedMember {
     }
 
     @Override
-    public MemberType getMemberType() {
-        return MemberType.PROPERTY;
+    public Identifier.Type getMemberType() {
+        return Identifier.Type.PROPERTY;
     }
 
     public Can<ObjectAction> getAssociatedActions() {