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/07/08 07:25:58 UTC

[isis] branch master updated: ISIS-3049: improved MM tree view: indicate whether mixed-in in member-node titles

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 ade0b47043 ISIS-3049: improved MM tree view: indicate whether mixed-in in member-node titles
ade0b47043 is described below

commit ade0b470436a45460900df7282b42fdffcfbd7e4
Author: andi-huber <ah...@apache.org>
AuthorDate: Fri Jul 8 09:25:50 2022 +0200

    ISIS-3049: improved MM tree view: indicate whether mixed-in in
    member-node titles
---
 .../core/metamodel/inspect/model/ActionNode.java   | 33 +++++++----------
 .../metamodel/inspect/model/CollectionNode.java    | 29 +++++----------
 .../isis/core/metamodel/inspect/model/MMNode.java  |  1 +
 .../model/{PropertyNode.java => MemberNode.java}   | 42 ++++++++--------------
 .../core/metamodel/inspect/model/PropertyNode.java | 29 +++++----------
 5 files changed, 44 insertions(+), 90 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java
index 94162ac5d6..cd0b9d40ee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java
@@ -24,7 +24,6 @@ import javax.inject.Named;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.annotation.DomainObject;
@@ -33,6 +32,7 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.schema.metamodel.v2.Action;
+import org.apache.isis.schema.metamodel.v2.Member;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -46,44 +46,37 @@ import lombok.ToString;
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 @ToString
-public class ActionNode extends MMNode {
+public class ActionNode extends MemberNode {
 
     public static final String LOGICAL_TYPE_NAME = IsisModuleApplib.NAMESPACE + ".ActionNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private Action action;
 
-    @Getter @Setter private boolean mixedIn;
-
     @Override
     public String createTitle() {
-        return String.format("%s(...): %s", action.getId(), typeToString(action.getReturnType()));
-    }
-
-    @Override
-    protected String iconSuffix() {
-        return isMixedIn() ? "mixedin" : "";
+        return String.format("%s(...): %s%s",
+                action.getId(),
+                typeToString(action.getReturnType()),
+                titleSuffix());
     }
 
-    // -- TREE NODE STUFF
-
-    @Getter @Setter @XmlTransient
-    private TypeNode parentNode;
-
     @Override
     public Stream<MMNode> streamChildNodes() {
 
         return Stream.<MMNode>concat(
 
-                Stream.of(
-                        MMNodeFactory.facetGroup(action.getFacets(), this)),
+                super.streamChildNodes(),
 
-                action.getParams().getParam()
-                .stream()
-                .map(param->MMNodeFactory.param(param, this))
+                action.getParams().getParam().stream()
+                    .map(param->MMNodeFactory.param(param, this))
 
                 );
+    }
 
+    @Override
+    protected Member member() {
+        return action;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java
index 671df68fe3..48911029c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java
@@ -18,13 +18,10 @@
  */
 package org.apache.isis.core.metamodel.inspect.model;
 
-import java.util.stream.Stream;
-
 import javax.inject.Named;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.annotation.DomainObject;
@@ -33,6 +30,7 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.schema.metamodel.v2.Collection;
+import org.apache.isis.schema.metamodel.v2.Member;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -46,36 +44,25 @@ import lombok.ToString;
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 @ToString
-public class CollectionNode extends MMNode {
+public class CollectionNode extends MemberNode {
 
     public static final String LOGICAL_TYPE_NAME = IsisModuleApplib.NAMESPACE + ".CollectionNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private Collection collection;
 
-    @Getter @Setter private boolean mixedIn;
-
     @Override
     public String createTitle() {
-        return String.format("%s: %s", collection.getId(), typeToString(collection.getType()));
-    }
-
-    @Override
-    protected String iconSuffix() {
-        return isMixedIn() ? "mixedin" : "";
+        return String.format("%s: %s%s",
+                collection.getId(),
+                typeToString(collection.getType()),
+                titleSuffix());
     }
 
-    // -- TREE NODE STUFF
-
-    @Getter @Setter @XmlTransient
-    private TypeNode parentNode;
-
     @Override
-    public Stream<MMNode> streamChildNodes() {
-        return Stream.of(
-                MMNodeFactory.facetGroup(collection.getFacets(), this));
+    protected Member member() {
+        return collection;
     }
 
-
 }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java
index 2f41367263..005a85adb2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java
@@ -38,6 +38,7 @@ import org.apache.isis.schema.metamodel.v2.DomainClassDto;
 import lombok.Setter;
 
 @XmlSeeAlso({
+    MemberNode.class,
     ActionNode.class,
     CollectionNode.class,
     FacetAttrNode.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MemberNode.java
similarity index 54%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MemberNode.java
index 35ff89aa7e..56d1f5197b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MemberNode.java
@@ -20,60 +20,46 @@ package org.apache.isis.core.metamodel.inspect.model;
 
 import java.util.stream.Stream;
 
-import javax.inject.Named;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.isis.applib.IsisModuleApplib;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Introspection;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.schema.metamodel.v2.Member;
 
 import lombok.Getter;
 import lombok.Setter;
-import lombok.ToString;
+import lombok.experimental.Accessors;
 
-@Named(PropertyNode.LOGICAL_TYPE_NAME)
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        introspection = Introspection.ANNOTATION_REQUIRED)
-@XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
-@ToString
-public class PropertyNode extends MMNode {
+public abstract class MemberNode extends MMNode {
 
-    public static final String LOGICAL_TYPE_NAME = IsisModuleApplib.NAMESPACE + ".PropertyNode";
+    // -- MIXIN STUFF
 
-    @Property(hidden = Where.EVERYWHERE)
-    @Getter @Setter private org.apache.isis.schema.metamodel.v2.Property property;
-
-    @Getter @Setter private boolean mixedIn;
+    @Getter @Setter @Accessors(makeFinal = true)
+    private boolean mixedIn;
 
     @Override
-    public String createTitle() {
-        return String.format("%s: %s", property.getId(), typeToString(property.getType()));
+    protected final String iconSuffix() {
+        return isMixedIn() ? "mixedin" : "";
     }
 
-    @Override
-    protected String iconSuffix() {
-        return isMixedIn() ? "mixedin" : "";
+    protected final String titleSuffix() {
+        return isMixedIn() ? " (mixed in)" : "";
     }
 
     // -- TREE NODE STUFF
 
-    @Getter @Setter @XmlTransient
+    @XmlTransient
+    @Getter @Setter @Accessors(makeFinal = true)
     private TypeNode parentNode;
 
     @Override
     public Stream<MMNode> streamChildNodes() {
         return Stream.of(
-                MMNodeFactory.facetGroup(property.getFacets(), this));
+                MMNodeFactory.facetGroup(member().getFacets(), this));
     }
 
+    protected abstract Member member();
 
 }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
index 35ff89aa7e..41e596b3a3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
@@ -18,13 +18,10 @@
  */
 package org.apache.isis.core.metamodel.inspect.model;
 
-import java.util.stream.Stream;
-
 import javax.inject.Named;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.annotation.DomainObject;
@@ -32,6 +29,7 @@ import org.apache.isis.applib.annotation.Introspection;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.schema.metamodel.v2.Member;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -44,36 +42,25 @@ import lombok.ToString;
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 @ToString
-public class PropertyNode extends MMNode {
+public class PropertyNode extends MemberNode {
 
     public static final String LOGICAL_TYPE_NAME = IsisModuleApplib.NAMESPACE + ".PropertyNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private org.apache.isis.schema.metamodel.v2.Property property;
 
-    @Getter @Setter private boolean mixedIn;
-
     @Override
     public String createTitle() {
-        return String.format("%s: %s", property.getId(), typeToString(property.getType()));
-    }
-
-    @Override
-    protected String iconSuffix() {
-        return isMixedIn() ? "mixedin" : "";
+        return String.format("%s: %s%s",
+                property.getId(),
+                typeToString(property.getType()),
+                titleSuffix());
     }
 
-    // -- TREE NODE STUFF
-
-    @Getter @Setter @XmlTransient
-    private TypeNode parentNode;
-
     @Override
-    public Stream<MMNode> streamChildNodes() {
-        return Stream.of(
-                MMNodeFactory.facetGroup(property.getFacets(), this));
+    protected Member member() {
+        return property;
     }
 
-
 }