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, ()->