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 fedb6ac307 ISIS-3198: scalar model: make rendering hint immutable
fedb6ac307 is described below

commit fedb6ac307eab6fa442ae325f85f2b4c24358203
Author: Andi Huber <[email protected]>
AuthorDate: Thu Sep 15 13:57:06 2022 +0200

    ISIS-3198: scalar model: make rendering hint immutable
---
 .../pdfjs/wkt/ui/components/PdfJsViewerPanel.java  | 29 +++--------------
 .../PdfJsViewerPanelComponentFactory.java          |  2 +-
 .../ListeningMarkupPanelFactoriesForWicket.java    |  2 +-
 .../commons/model/hints/HasRenderingHints.java     | 21 ++++++++++--
 .../wicket/model/models/ChainingObjectModel.java   |  5 ---
 .../viewer/wicket/model/models/ScalarModel.java    | 37 ++--------------------
 .../viewer/wicket/model/models/UiObjectWkt.java    | 12 ++++++-
 .../ajaxtable/columns/GenericTitleColumn.java      | 12 +++----
 .../icontitle/EntityIconAndTitlePanelFactory.java  |  2 --
 9 files changed, 42 insertions(+), 80 deletions(-)

diff --git 
a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
 
b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
index d91de2b629..1c76b3a556 100644
--- 
a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
+++ 
b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
@@ -103,14 +103,7 @@ implements IRequestListener {
                 String newPageNum = 
RequestCycle.get().getRequest().getRequestParameters().getParameterValue("pageNum").toString();
                 try {
                     final int pageNum = Integer.parseInt(newPageNum);
-                    final Updater updater = new Updater() {
-                        @Override
-                        public void update(
-                                final PdfJsViewerAdvisor advisor,
-                                final PdfJsViewerAdvisor.InstanceKey 
renderKey) {
-                            advisor.pageNumChangedTo(renderKey, pageNum);
-                        }
-                    };
+                    final Updater updater = (advisor, renderKey) -> 
advisor.pageNumChangedTo(renderKey, pageNum);
                     updateAdvisors(updater);
                 } catch(Exception ex) {
                     // ignore
@@ -127,14 +120,7 @@ implements IRequestListener {
                 String newScale = 
RequestCycle.get().getRequest().getRequestParameters().getParameterValue("scale").toString();
                 try {
                     final Scale scale = Scale.forValue(newScale);
-                    final Updater updater = new Updater() {
-                        @Override
-                        public void update(
-                                final PdfJsViewerAdvisor advisor,
-                                final PdfJsViewerAdvisor.InstanceKey 
renderKey) {
-                            advisor.scaleChangedTo(renderKey, scale);
-                        }
-                    };
+                    final Updater updater = (advisor, renderKey) -> 
advisor.scaleChangedTo(renderKey, scale);
                     updateAdvisors(updater);
                 } catch(Exception ex) {
                     // ignore
@@ -152,14 +138,7 @@ implements IRequestListener {
                 String newHeight = 
RequestCycle.get().getRequest().getRequestParameters().getParameterValue("height").toString();
                 try {
                     final int height = Integer.parseInt(newHeight);
-                    final Updater updater = new Updater() {
-                        @Override
-                        public void update(
-                                final PdfJsViewerAdvisor advisor,
-                                final PdfJsViewerAdvisor.InstanceKey 
renderKey) {
-                            advisor.heightChangedTo(renderKey, height);
-                        }
-                    };
+                    final Updater updater = (advisor, renderKey) -> 
advisor.heightChangedTo(renderKey, height);
                     updateAdvisors(updater);
                 } catch(Exception ex) {
                     // ignore
@@ -208,7 +187,7 @@ implements IRequestListener {
         val regularFrame = new WebMarkupContainer(ID_SCALAR_IF_REGULAR);
 
         val pdfJsConfig =
-                scalarModel.lookupFacet(PdfJsViewerFacet.class)
+                scalarModel.getMetaModel().lookupFacet(PdfJsViewerFacet.class)
                 .map(pdfJsViewerFacet->pdfJsViewerFacet.configFor(buildKey()))
                 .orElseGet(PdfJsConfig::new)
                 .withDocumentUrl(urlFor(
diff --git 
a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanelComponentFactory.java
 
b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanelComponentFactory.java
index 6c8e70120f..a179374bc1 100644
--- 
a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanelComponentFactory.java
+++ 
b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/pdfjs/wkt/ui/components/PdfJsViewerPanelComponentFactory.java
@@ -50,7 +50,7 @@ public class PdfJsViewerPanelComponentFactory extends 
ComponentFactoryAbstract {
         }
 
         val scalarModel = (ScalarModel) model;
-        if(!scalarModel.containsFacet(PdfJsViewerFacet.class)) {
+        if(!scalarModel.getMetaModel().containsFacet(PdfJsViewerFacet.class)) {
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
 
diff --git 
a/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupPanelFactoriesForWicket.java
 
b/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupPanelFactoriesForWicket.java
index e778fa9f0e..4ed2ac8c88 100644
--- 
a/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupPanelFactoriesForWicket.java
+++ 
b/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupPanelFactoriesForWicket.java
@@ -60,7 +60,7 @@ public class ListeningMarkupPanelFactoriesForWicket {
         // -- HELPER
 
         private LocalResourcePath getEventStreamResource(final ScalarModel 
scalarModel) {
-            val observeFacet  = scalarModel.getFacet(SseObserveFacet.class);
+            val observeFacet  = 
scalarModel.getMetaModel().getFacet(SseObserveFacet.class);
             return observeFacet!=null
                     ? observeFacet.getEventStreamResource()
                     : null;
diff --git 
a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/hints/HasRenderingHints.java
 
b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/hints/HasRenderingHints.java
index ced2b1eab2..98b0bad556 100644
--- 
a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/hints/HasRenderingHints.java
+++ 
b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/hints/HasRenderingHints.java
@@ -1,7 +1,24 @@
+/*
+ *  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.viewer.commons.model.hints;
 
 import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
-import org.apache.isis.viewer.commons.model.hints.RenderingHint;
 
 public interface HasRenderingHints {
 
@@ -12,8 +29,6 @@ public interface HasRenderingHints {
     boolean isInlinePrompt();
 
     RenderingHint getRenderingHint();
-    @Deprecated// make immutable? - need to recreate any bound UI components 
anyway
-    void setRenderingHint(RenderingHint renderingHint);
 
     ScalarRepresentation getMode();
     @Deprecated// make immutable? - need to recreate any bound UI components 
anyway
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
index 90c22b7fd5..a4793aaaae 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ChainingObjectModel.java
@@ -64,11 +64,6 @@ implements ObjectAdapterModel {
         return scalarModel().getRenderingHint();
     }
 
-    @Override
-    public void setRenderingHint(final RenderingHint renderingHint) {
-        scalarModel().setRenderingHint(renderingHint);
-    }
-
     @Override
     public ObjectSpecification getTypeOfSpecification() {
         return scalarModel().getScalarTypeSpec();
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 4b0cb75f76..cd43080b11 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -33,7 +33,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.debug._Debug;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
-import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedValue;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 import org.apache.isis.core.metamodel.object.ManagedObjects;
@@ -73,12 +72,11 @@ implements HasRenderingHints, UiScalar, LinksProvider, 
FormExecutorContext {
 
     private final UiObjectWkt parentEntityModel;
 
-    @Getter(onMethod = @__(@Override))
-    @Setter(onMethod = @__(@Override))
+    @Getter(onMethod_={@Override})
+    @Setter(onMethod_={@Override})
     private ScalarRepresentation mode;
 
-    @Getter(onMethod = @__(@Override))
-    @Setter(onMethod = @__(@Override))
+    @Getter(onMethod_={@Override})
     private RenderingHint renderingHint;
 
     /**
@@ -155,11 +153,6 @@ implements HasRenderingHints, UiScalar, LinksProvider, 
FormExecutorContext {
         return parentEntityModel;
     }
 
-    @Override
-    public final ManagedObject getOwner() {
-        return getParentUiModel().getObject();
-    }
-
     public final boolean isEmpty() {
         return 
ManagedObjects.isNullOrUnspecifiedOrEmpty(proposedValue().getValue().getValue());
     }
@@ -185,30 +178,6 @@ implements HasRenderingHints, UiScalar, LinksProvider, 
FormExecutorContext {
 
     public abstract String validate(ManagedObject proposedAdapter);
 
-    /**
-     * Viewers should not use facets directly.
-     * However, viewer extensions that provide their own facet types, will 
have to.
-     */
-    public final <T extends Facet> boolean containsFacet(final Class<T> 
facetType) {
-        return getMetaModel().containsFacet(facetType);
-    }
-
-    /**
-     * Viewers should not use facets directly.
-     * However, viewer extensions that provide their own facet types, will 
have to.
-     */
-    public final <T extends Facet> T getFacet(final Class<T> facetType) {
-        return getMetaModel().getFacet(facetType);
-    }
-
-    /**
-     * Viewers should not use facets directly.
-     * However, viewer extensions that provide their own facet types, will 
have to.
-     */
-    public final <T extends Facet> Optional<T> lookupFacet(final Class<T> 
facetType) {
-        return getMetaModel().lookupFacet(facetType);
-    }
-
     /**
      * Additional links to render (if any)
      */
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
index 7ba1333452..741045196b 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
@@ -81,6 +81,15 @@ implements
                 ScalarRepresentation.VIEWING, RenderingHint.REGULAR);
     }
 
+    public static UiObjectWkt ofAdapterForCollection(
+            final MetaModelContext commonContext,
+            final ManagedObject adapter,
+            final @NonNull EntityCollectionModel.Variant variant) {
+        return new UiObjectWkt(BookmarkedObjectWkt.ofAdapter(commonContext, 
adapter),
+                ScalarRepresentation.VIEWING, 
variant.getColumnRenderingHint());
+    }
+
+
     public static UiObjectWkt ofBookmark(
             final @NonNull MetaModelContext commonContext,
             final @Nullable Bookmark bookmark) {
@@ -142,7 +151,6 @@ implements
     private ScalarRepresentation mode;
 
     @Getter(onMethod = @__(@Override))
-    @Setter(onMethod = @__(@Override))
     private RenderingHint renderingHint;
 
     @Override
@@ -272,4 +280,6 @@ implements
         return hintStore = 
getMetaModelContext().loadServiceIfAbsent(HintStore.class, hintStore);
     }
 
+
+
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericTitleColumn.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericTitleColumn.java
index d6b4b18b01..a7685491f9 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericTitleColumn.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericTitleColumn.java
@@ -29,7 +29,6 @@ import 
org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataRow;
 import org.apache.isis.core.metamodel.object.ManagedObjects;
 import org.apache.isis.viewer.commons.model.components.UiComponentType;
-import org.apache.isis.viewer.commons.model.hints.RenderingHint;
 import 
org.apache.isis.viewer.wicket.model.models.EntityCollectionModel.Variant;
 import org.apache.isis.viewer.wicket.model.models.UiObjectWkt;
 import org.apache.isis.viewer.wicket.model.models.ValueModel;
@@ -88,15 +87,12 @@ extends GenericColumnAbstract {
             return componentFactory.createComponent(id, valueModel);
         }
 
-        val entityModel = UiObjectWkt.ofAdapter(super.getMetaModelContext(), 
adapter);
-        entityModel.setRenderingHint(variant.isParented()
-                ? RenderingHint.PARENTED_TITLE_COLUMN
-                : RenderingHint.STANDALONE_TITLE_COLUMN);
-        entityModel.setContextBookmarkIfAny(contextBookmark);
+        val uiObject = 
UiObjectWkt.ofAdapterForCollection(super.getMetaModelContext(), adapter, 
variant);
+        uiObject.setContextBookmarkIfAny(contextBookmark);
 
         // will use EntityLinkSimplePanelFactory as model is an EntityModel
-        val componentFactory = 
findComponentFactory(UiComponentType.ENTITY_LINK, entityModel);
-        return componentFactory.createComponent(id, entityModel);
+        val componentFactory = 
findComponentFactory(UiComponentType.ENTITY_LINK, uiObject);
+        return componentFactory.createComponent(id, uiObject);
     }
 
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelFactory.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelFactory.java
index 0ba99d4bdf..f293798625 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelFactory.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelFactory.java
@@ -92,10 +92,8 @@ public class EntityIconAndTitlePanelFactory extends 
ComponentFactoryAbstract {
             objectAdapterModel = (ObjectAdapterModel) model;
         } else if (model instanceof ScalarModel) {
             val scalarModel = (ScalarModel) model;
-
             // effectively acts as an adapter from ScalarModel to 
ObjectAdapterModel
             objectAdapterModel = ChainingObjectModel.chain(scalarModel);
-            
objectAdapterModel.setRenderingHint(scalarModel.getRenderingHint());
         } else {
             throw _Exceptions.unexpectedCodeReach();
         }

Reply via email to