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/06/25 07:09:59 UTC

[isis] branch master updated: ISIS-1720: add ManagedObject#getTitle()

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 bb5ebae  ISIS-1720: add ManagedObject#getTitle()
bb5ebae is described below

commit bb5ebae2cfc61428867513113dfced2752e54581
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 25 09:09:46 2021 +0200

    ISIS-1720: add ManagedObject#getTitle()
    
    so clients can use that, instead of directly interacting with facets
---
 .../isis/core/metamodel/spec/ManagedObject.java    | 11 ++++-
 .../isis/core/metamodel/spec/ManagedObjects.java   | 17 ++++----
 .../domainobjects/DomainObjectReprRenderer.java    | 17 ++++----
 .../domainobjects/ObjectPropertyReprRenderer.java  | 47 ++++++++++++----------
 4 files changed, 54 insertions(+), 38 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index 3ef625e..41c0de8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -28,6 +28,7 @@ import javax.annotation.Nullable;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.commons.internal.functions._Predicates;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facets.object.icon.ObjectIcon;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
@@ -71,7 +72,7 @@ public interface ManagedObject {
     // -- TITLE
 
     public default String titleString() {
-        return titleString(__->false);
+        return titleString(_Predicates.alwaysFalse());
     }
 
     default String titleString(final @NonNull Predicate<ManagedObject> isContextAdapter) {
@@ -101,6 +102,12 @@ public interface ManagedObject {
         return getSpecification().getElementSpecification();
     }
 
+    // -- SHORTCUT - TITLE
+
+    default String getTitle() {
+        return ManagedObjects.titleOf(this);
+    }
+
     // -- SHORTCUT - ICON
 
     /**
@@ -287,4 +294,6 @@ public interface ManagedObject {
 
 
 
+
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index a7a9ac1..020f69b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -454,8 +454,8 @@ public final class ManagedObjects {
             }
 
             if (managedObject.getSpecification().isParentedOrFreeCollection()) {
-                final CollectionFacet facet = managedObject.getSpecification().getFacet(CollectionFacet.class);
-                return collectionTitleString(managedObject, facet);
+                val collectionFacet = managedObject.getSpecification().getFacet(CollectionFacet.class);
+                return collectionTitleString(managedObject, collectionFacet);
             } else {
                 return objectTitleString(managedObject, isContextAdapter);
             }
@@ -474,8 +474,9 @@ public final class ManagedObjects {
 
         private String collectionTitleString(final ManagedObject managedObject, final CollectionFacet facet) {
             final int size = facet.size(managedObject);
-            final ObjectSpecification elementSpecification = managedObject.getElementSpecification().orElse(null);
-            if (elementSpecification == null || elementSpecification.getFullIdentifier().equals(Object.class.getName())) {
+            val elementSpec = managedObject.getElementSpecification().orElse(null);
+            if (elementSpec == null
+                    || elementSpec.getFullIdentifier().equals(Object.class.getName())) {
                 switch (size) {
                 case -1:
                     return "Objects";
@@ -489,13 +490,13 @@ public final class ManagedObjects {
             } else {
                 switch (size) {
                 case -1:
-                    return elementSpecification.getPluralName();
+                    return elementSpec.getPluralName();
                 case 0:
-                    return "No " + elementSpecification.getPluralName();
+                    return "No " + elementSpec.getPluralName();
                 case 1:
-                    return "1 " + elementSpecification.getSingularName();
+                    return "1 " + elementSpec.getSingularName();
                 default:
-                    return size + " " + elementSpecification.getPluralName();
+                    return size + " " + elementSpec.getPluralName();
                 }
             }
         }
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index 2d869d4..232c398 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -26,7 +26,6 @@ import java.util.stream.Stream;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet;
-import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedCollection;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
@@ -457,20 +456,22 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
     }
 
 
-    public static Object valueOrRef(final IResourceContext context, final JsonValueEncoder jsonValueEncoder, final ManagedObject adapter) {
+    public static Object valueOrRef(
+            final IResourceContext context,
+            final JsonValueEncoder jsonValueEncoder,
+            final ManagedObject domainObject) {
 
-        val spec = adapter.getSpecification();
+        val spec = domainObject.getSpecification();
         if(spec.isValue()) {
             String format = null; // TODO
-            return jsonValueEncoder.asObject(adapter, format);
+            return jsonValueEncoder.asObject(domainObject, format);
         }
-        val titleFacet = spec.getFacet(TitleFacet.class);
-        final String title = titleFacet.title(adapter);
+
         return DomainObjectReprRenderer.newLinkToBuilder(
                 context,
                 Rel.VALUE,
-                adapter)
-                .withTitle(title)
+                domainObject)
+                .withTitle(domainObject.getTitle())
                 .build();
     }
 
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index b8aefbb..2725185 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -28,7 +28,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet;
-import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
 import org.apache.isis.core.metamodel.facets.value.biginteger.BigIntegerValueFacet;
@@ -47,7 +46,7 @@ import lombok.val;
 public class ObjectPropertyReprRenderer
 extends AbstractObjectMemberReprRenderer<ObjectPropertyReprRenderer, OneToOneAssociation> {
 
-    public ObjectPropertyReprRenderer(IResourceContext context) {
+    public ObjectPropertyReprRenderer(final IResourceContext context) {
         this(context, null, null, JsonRepresentation.newMap());
     }
 
@@ -87,7 +86,9 @@ extends AbstractObjectMemberReprRenderer<ObjectPropertyReprRenderer, OneToOneAss
         val valueAdapterIfAny = objectMember.get(objectAdapter, getInteractionInitiatedBy());
 
         // use the runtime type if we have a value, else the compile time type of the member otherwise
-        val spec = valueAdapterIfAny != null? valueAdapterIfAny.getSpecification(): objectMember.getSpecification();
+        val spec = valueAdapterIfAny != null
+                ? valueAdapterIfAny.getSpecification()
+                : objectMember.getSpecification();
 
         val valueFacet = spec.getFacet(ValueFacet.class);
         if (valueFacet != null) {
@@ -125,34 +126,38 @@ extends AbstractObjectMemberReprRenderer<ObjectPropertyReprRenderer, OneToOneAss
             final NullNode value = NullNode.getInstance();
             representation.mapPut("value", value);
             return value;
-        } else {
-            final TitleFacet titleFacet = spec.getFacet(TitleFacet.class);
-            final String title = titleFacet.title(valueAdapterIfAny);
-
-            final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.VALUE, valueAdapterIfAny).withTitle(title);
-            if(eagerlyRender) {
-                final DomainObjectReprRenderer renderer =
-                        new DomainObjectReprRenderer(resourceContext, linkFollower, JsonRepresentation.newMap());
-                renderer.with(valueAdapterIfAny);
-                if(mode.isEventSerialization()) {
-                    renderer.asEventSerialization();
-                }
+        }
+
+        val valueAdapter = valueAdapterIfAny;
 
-                valueLinkBuilder.withValue(renderer.render());
+        final String title = valueAdapter.getTitle();
+
+        final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer
+                .newLinkToBuilder(resourceContext, Rel.VALUE, valueAdapterIfAny).withTitle(title);
+        if(eagerlyRender) {
+            final DomainObjectReprRenderer renderer =
+                    new DomainObjectReprRenderer(resourceContext, linkFollower, JsonRepresentation.newMap());
+            renderer.with(valueAdapter);
+            if(mode.isEventSerialization()) {
+                renderer.asEventSerialization();
             }
 
-            final JsonRepresentation valueJsonRepr = valueLinkBuilder.build();
-            representation.mapPut("value", valueJsonRepr);
-            return valueJsonRepr;
+            valueLinkBuilder.withValue(renderer.render());
         }
+
+        final JsonRepresentation valueJsonRepr = valueLinkBuilder.build();
+        representation.mapPut("value", valueJsonRepr);
+        return valueJsonRepr;
+
     }
 
     private boolean renderEagerly() {
         final DefaultViewFacet defaultViewFacet = objectMember.getFacet(DefaultViewFacet.class);
-        return defaultViewFacet != null && Objects.equals(defaultViewFacet.value(), "table");
+        return defaultViewFacet != null
+                && Objects.equals(defaultViewFacet.value(), "table");
     }
 
-    private static <T extends Facet> T getFacet(Class<T> facetType, FacetHolder... holders) {
+    private static <T extends Facet> T getFacet(final Class<T> facetType, final FacetHolder... holders) {
         for (FacetHolder holder : holders) {
             if(holder == null) {
                 continue;