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 027464a16c ISIS-3167: refactors shared title utils into their own class
027464a16c is described below

commit 027464a16c2bdb9fd67733ff90b8811fb5249791
Author: Andi Huber <[email protected]>
AuthorDate: Sat Aug 27 15:43:58 2022 +0200

    ISIS-3167: refactors shared title utils into their own class
---
 .../isis/core/metamodel/object/ManagedObject.java  | 14 +----
 .../isis/core/metamodel/object/ManagedObjects.java | 20 -------
 .../isis/core/metamodel/object/MmTitleUtil.java    | 66 ++++++++++++++++++++++
 .../core/metamodel/object/PackedManagedObject.java |  3 +
 .../core/metamodel/object/_InternalTitleUtil.java  | 32 ++---------
 .../runtimeservices/memento/_ObjectMemento.java    |  3 +-
 .../javafx/ui/components/object/ObjectViewFx.java  |  3 +-
 .../vaadin/ui/components/object/ObjectViewVaa.java |  4 +-
 .../commons/model/action/ActionFormUiModel.java    |  3 +-
 .../components/scalars/markup/MarkupComponent.java |  3 +-
 .../ui/components/value/StandaloneValuePanel.java  |  4 +-
 11 files changed, 90 insertions(+), 65 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
index f8f034039b..2f9b070143 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
@@ -32,7 +32,6 @@ import 
org.apache.isis.core.metamodel.context.HasMetaModelContext;
 import org.apache.isis.core.metamodel.facets.object.icon.ObjectIcon;
 import org.apache.isis.core.metamodel.facets.object.title.TitleRenderRequest;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 import lombok.NonNull;
@@ -40,8 +39,8 @@ import lombok.val;
 
 /**
  * Represents an instance of some element of the meta-model managed by the 
framework,
- * that is IoC-container provided beans, persistence-stack provided entities 
or view-models.
- *
+ * that is IoC-container provided beans, persistence-stack provided entities, 
view-models
+ * or instances of value types.
  */
 public interface ManagedObject extends HasMetaModelContext {
 
@@ -86,13 +85,6 @@ public interface ManagedObject extends HasMetaModelContext {
     @Deprecated
     void assertSpecIsInSyncWithPojo();
 
-    // -- HTML
-
-    public default String htmlString(
-            final @Nullable ObjectFeature feature) {
-        return _InternalTitleUtil.htmlString(this, feature);
-    }
-
     // -- TITLE
 
     public default String titleString(final 
UnaryOperator<TitleRenderRequest.TitleRenderRequestBuilder> onBuilder) {
@@ -122,7 +114,7 @@ public interface ManagedObject extends HasMetaModelContext {
     // -- SHORTCUT - TITLE
 
     default String getTitle() {
-        return ManagedObjects.titleOf(this);
+        return MmTitleUtil.titleOf(this);
     }
 
     // -- SHORTCUT - ICON
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
index 3667e0013b..98e5f6530a 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
@@ -344,23 +344,6 @@ public final class ManagedObjects {
         return input;
     }
 
-    // -- TITLE UTILITIES
-
-    public static String abbreviatedTitleOf(final ManagedObject adapter, final 
int maxLength, final String suffix) {
-        return abbreviated(titleOf(adapter), maxLength, suffix);
-    }
-
-    public static String titleOf(final ManagedObject adapter) {
-        return adapter!=null
-                ? adapter.titleString()
-                : "";
-    }
-
-    private static String abbreviated(final String str, final int maxLength, 
final String suffix) {
-        return str.length() < maxLength
-                ? str
-                : str.substring(0, maxLength - 3) + suffix;
-    }
 
     // -- COMMON SUPER TYPE FINDER
 
@@ -508,7 +491,4 @@ public final class ManagedObjects {
         viewmodel.refreshViewmodel(bookmarkSupplier);
     }
 
-    // -- TITLE UTILITIES
-
-
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/MmTitleUtil.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/MmTitleUtil.java
new file mode 100644
index 0000000000..9161c78ba7
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/MmTitleUtil.java
@@ -0,0 +1,66 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.core.metamodel.object;
+
+import org.springframework.lang.Nullable;
+
+import org.apache.isis.applib.value.semantics.Renderer;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+import lombok.val;
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+public class MmTitleUtil {
+
+    public String abbreviatedTitleOf(final ManagedObject adapter, final int 
maxLength, final String suffix) {
+        return _InternalTitleUtil.abbreviated(titleOf(adapter), maxLength, 
suffix);
+    }
+
+    public String titleOf(final ManagedObject adapter) {
+        return adapter!=null
+                ? adapter.titleString()
+                : "";
+    }
+
+    public String htmlStringForValueType(
+            final @Nullable ManagedObject adapter,
+            final @Nullable ObjectFeature feature) {
+
+        if(!ManagedObjects.isSpecified(adapter)) {
+            return "";
+        }
+
+        val spec = adapter.getSpecification();
+        val valueFacet = spec.valueFacet().orElse(null);
+
+        if(valueFacet==null) {
+            return String.format("missing ValueFacet %s", 
spec.getCorrespondingClass());
+        }
+
+        @SuppressWarnings("unchecked")
+        val renderer = (Renderer<Object>) 
valueFacet.selectRendererForFeature(feature).orElse(null);
+        if(renderer==null) {
+            return String.format("missing Renderer %s", 
spec.getCorrespondingClass());
+        }
+
+        return 
renderer.htmlPresentation(valueFacet.createValueSemanticsContext(feature), 
adapter.getPojo());
+    }
+
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
index 590c5ab8c0..ed3fd10b3d 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
@@ -21,6 +21,9 @@ package org.apache.isis.core.metamodel.object;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+/**
+ * 'Collection' of {@link ManagedObject}s.
+ */
 public interface PackedManagedObject
 extends ManagedObject {
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_InternalTitleUtil.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_InternalTitleUtil.java
index c0a8a98a98..3ee4d43c4a 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_InternalTitleUtil.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_InternalTitleUtil.java
@@ -20,12 +20,8 @@ package org.apache.isis.core.metamodel.object;
 
 import java.util.Optional;
 
-import org.springframework.lang.Nullable;
-
-import org.apache.isis.applib.value.semantics.Renderer;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleRenderRequest;
-import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 
 import lombok.NonNull;
 import lombok.val;
@@ -52,32 +48,14 @@ final class _InternalTitleUtil {
                 .trim();
     }
 
-    String htmlString(
-            final @Nullable ManagedObject adapter,
-            final @Nullable ObjectFeature feature) {
-
-        if(!ManagedObjects.isSpecified(adapter)) {
-            return "";
-        }
-
-        val spec = adapter.getSpecification();
-        val valueFacet = spec.valueFacet().orElse(null);
-
-        if(valueFacet==null) {
-            return String.format("missing ValueFacet %s", 
spec.getCorrespondingClass());
-        }
-
-        @SuppressWarnings("unchecked")
-        val renderer = (Renderer<Object>) 
valueFacet.selectRendererForFeature(feature).orElse(null);
-        if(renderer==null) {
-            return String.format("missing Renderer %s", 
spec.getCorrespondingClass());
-        }
+    // -- HELPER
 
-        return 
renderer.htmlPresentation(valueFacet.createValueSemanticsContext(feature), 
adapter.getPojo());
+    String abbreviated(final String str, final int maxLength, final String 
suffix) {
+        return str.length() < maxLength
+                ? str
+                : str.substring(0, maxLength - 3) + suffix;
     }
 
-    // -- HELPER
-
     private String objectTitleString(@NonNull final TitleRenderRequest 
titleRenderRequest) {
         val managedObject = titleRenderRequest.getObject();
         if (managedObject.getPojo() instanceof String) {
diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
index 7fa0e71fb4..3aa85515e4 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
@@ -41,6 +41,7 @@ import 
org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import 
org.apache.isis.core.metamodel.facets.object.value.ValueSerializer.Format;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 import org.apache.isis.core.metamodel.object.ManagedObjects;
+import org.apache.isis.core.metamodel.object.MmTitleUtil;
 import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -450,7 +451,7 @@ final class _ObjectMemento implements HasLogicalType, 
Serializable {
 
     private void init(final ManagedObject adapter) {
 
-        titleString = ManagedObjects.titleOf(adapter);
+        titleString = MmTitleUtil.titleOf(adapter);
 
         val spec = adapter.getSpecification();
 
diff --git 
a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
 
b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
index 306e4a1fda..d09a3a37c3 100644
--- 
a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
+++ 
b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
@@ -38,6 +38,7 @@ import 
org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 import org.apache.isis.core.metamodel.object.ManagedObjects;
+import org.apache.isis.core.metamodel.object.MmTitleUtil;
 import org.apache.isis.incubator.viewer.javafx.model.context.UiContextFx;
 import org.apache.isis.incubator.viewer.javafx.model.util._fx;
 import 
org.apache.isis.incubator.viewer.javafx.ui.components.UiComponentFactoryFx;
@@ -85,7 +86,7 @@ public class ObjectViewFx extends VBox {
         log.info("binding object interaction to owner {}", 
managedObject.getSpecification().getFeatureIdentifier());
         
_Assert.assertTrue(uiContext.getInteractionService().isInInteraction(), 
"requires an active interaction");
 
-        val objectTitle = ManagedObjects.titleOf(managedObject);
+        val objectTitle = MmTitleUtil.titleOf(managedObject);
 
         val uiGridLayout = UiGridLayout.bind(managedObject);
 
diff --git 
a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
 
b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
index 4f478d8839..54c456a814 100644
--- 
a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
+++ 
b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
@@ -49,7 +49,7 @@ import 
org.apache.isis.core.metamodel.interactions.managed.CollectionInteraction
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
 import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.object.ManagedObjects;
+import org.apache.isis.core.metamodel.object.MmTitleUtil;
 import org.apache.isis.incubator.viewer.vaadin.model.context.UiContextVaa;
 import org.apache.isis.incubator.viewer.vaadin.model.util._vaa;
 import 
org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa;
@@ -88,7 +88,7 @@ public class ObjectViewVaa extends VerticalLayout {
         log.info("binding object interaction to owner {}", 
managedObject.getSpecification().getFeatureIdentifier());
         
_Assert.assertTrue(uiContext.getInteractionService().isInInteraction(), 
"requires an active interaction");
 
-        val objectTitle = ManagedObjects.titleOf(managedObject);
+        val objectTitle = MmTitleUtil.titleOf(managedObject);
 
         val uiGridLayout = UiGridLayout.bind(managedObject);
 
diff --git 
a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/action/ActionFormUiModel.java
 
b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/action/ActionFormUiModel.java
index 168d4fb0a9..f25e5eadc5 100644
--- 
a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/action/ActionFormUiModel.java
+++ 
b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/action/ActionFormUiModel.java
@@ -27,6 +27,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.Veto;
 import org.apache.isis.core.metamodel.object.ManagedObjects;
+import org.apache.isis.core.metamodel.object.MmTitleUtil;
 import org.apache.isis.viewer.commons.model.feature.ParameterUiModel;
 import org.apache.isis.viewer.commons.model.mixin.HasTitle;
 
@@ -102,7 +103,7 @@ extends HasTitle, HasActionInteraction {
             if(buf.length() > 0) {
                 buf.append(",");
             }
-            buf.append(ManagedObjects.abbreviatedTitleOf(paramValue, 8, 
"..."));
+            buf.append(MmTitleUtil.abbreviatedTitleOf(paramValue, 8, "..."));
         });
         return owner.titleString() + "." + getFriendlyName()
             + (buf.length()>0
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
index f288f6df39..cb7999c416 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
@@ -30,6 +30,7 @@ import org.apache.wicket.model.IModel;
 
 import org.apache.isis.applib.value.semantics.Renderer.SyntaxHighlighter;
 import org.apache.isis.core.metamodel.object.ManagedObject;
+import org.apache.isis.core.metamodel.object.MmTitleUtil;
 import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.viewer.commons.model.feature.ParameterUiModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
@@ -105,7 +106,7 @@ public class MarkupComponent extends WebComponent {
         if(modelObject instanceof ManagedObject) {
             val adapter = (ManagedObject) modelObject;
             val feature = 
lookupObjectFeatureIn(getDefaultModel()).orElse(null);
-            val asHtml = adapter.htmlString(feature);
+            val asHtml = MmTitleUtil.htmlStringForValueType(adapter, feature);
             return asHtml != null
                 ? asHtml
                 : fallback;
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/value/StandaloneValuePanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/value/StandaloneValuePanel.java
index d56068a7b4..a91cfe9de4 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/value/StandaloneValuePanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/value/StandaloneValuePanel.java
@@ -24,6 +24,7 @@ import java.util.UUID;
 import 
org.apache.isis.applib.services.bookmark.idstringifiers.PredefinedSerializables;
 import org.apache.isis.applib.value.LocalResourcePath;
 import org.apache.isis.core.metamodel.object.ManagedObject;
+import org.apache.isis.core.metamodel.object.MmTitleUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.models.ValueModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
@@ -50,7 +51,8 @@ extends PanelAbstract<ManagedObject, ValueModel> {
         // (we probably need to remove StandaloneValuePanel and utilize the 
ScalarPanel for standalone values instead)
         
if(isProbablySimpleInlineHtml(valueModel.getObjectMember().getElementType())) {
             Wkt.markupAdd(this, ID_STANDALONE_VALUE, ()->
-                
getModel().getObject().htmlString(getModel().getObjectMember()));
+                MmTitleUtil.htmlStringForValueType(getModel().getObject(), 
getModel().getObjectMember())
+            );
         } else {
             // resort to (textual) title rendering
             Wkt.labelAdd(this, ID_STANDALONE_VALUE, ()->

Reply via email to