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/08/18 12:50:25 UTC

[isis] 02/02: ISIS-3124: fixes running into not-serializable issues

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

commit a6c30cbd4177ad0de9a9f39a7a41325c5ee399f4
Author: andi-huber <ah...@apache.org>
AuthorDate: Thu Aug 18 14:50:14 2022 +0200

    ISIS-3124: fixes running into not-serializable issues
---
 .../core/metamodel/_testing/MetaModelContext_forTesting.java  |  4 ++++
 .../isis/core/metamodel/context/HasMetaModelContext.java      |  5 +++++
 .../apache/isis/core/metamodel/context/MetaModelContext.java  |  3 +++
 .../core/metamodel/context/MetaModelContext_usingIoc.java     | 11 +++++++++++
 .../widgets/entitysimplelink/EntityLinkSimplePanel.java       |  8 +++-----
 .../providers/ObjectAdapterMementoProviderAbstract.java       |  9 ++++-----
 .../org/apache/isis/viewer/wicket/ui/panels/PanelBase.java    | 11 +++--------
 7 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
index 819067aa0a..f21ae9781a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -40,6 +40,7 @@ import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.layout.LayoutService;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.placeholder.PlaceholderRenderService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
@@ -165,6 +166,9 @@ implements MetaModelContext {
 
     private IsisBeanTypeRegistry isisBeanTypeRegistry;
 
+    @Builder.Default
+    private PlaceholderRenderService placeholderRenderService = PlaceholderRenderService.fallback();
+
     //private Map<String, ManagedObject> serviceAdaptersById;
 
     @Singular
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
index 0ddc758d1b..5d148b16f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
 import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.placeholder.PlaceholderRenderService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
@@ -132,6 +133,10 @@ public interface HasMetaModelContext {
         return getMetaModelContext().getWrapperFactory();
     }
 
+    default PlaceholderRenderService getPlaceholderRenderService() {
+        return getMetaModelContext().getPlaceholderRenderService();
+    }
+
     default Optional<UserLocale> currentUserLocale() {
         return getInteractionProvider().currentInteractionContext()
                 .map(InteractionContext::getLocale);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
index 3bf2024b06..ee5ab7ad86 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.placeholder.PlaceholderRenderService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
@@ -103,6 +104,8 @@ public interface MetaModelContext {
 
     TransactionService getTransactionService();
 
+    PlaceholderRenderService getPlaceholderRenderService();
+
     ManagedObject getHomePageAdapter();
 
     // cannot move to ServiceRegistry, because applib does not know ManagedObject
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingIoc.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingIoc.java
index 8fb707d282..2b045a699e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingIoc.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingIoc.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.context;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -28,6 +29,7 @@ import org.apache.isis.applib.services.homepage.HomePageResolverService;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.placeholder.PlaceholderRenderService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
@@ -103,6 +105,11 @@ class MetaModelContext_usingIoc implements MetaModelContext {
     private final ObjectIconService objectIconService =
     getSingletonElseFail(ObjectIconService.class);
 
+    @Getter(lazy=true)
+    private final PlaceholderRenderService placeholderRenderService =
+            getDefault(PlaceholderRenderService.class)
+            .orElseGet(PlaceholderRenderService::fallback);
+
     @Getter(lazy=true)
     private final TitleService titleService =
     getSingletonElseFail(TitleService.class);
@@ -156,6 +163,10 @@ class MetaModelContext_usingIoc implements MetaModelContext {
         return iocContainer.getSingletonElseFail(type);
     }
 
+    private <T> Optional<T> getDefault(final Class<T> type) {
+        return iocContainer.select(type).getFirst();
+    }
+
     private final _Lazy<Map<String, ManagedObject>> objectAdaptersForBeansOfKnownSort =
             _Lazy.threadSafe(this::collectBeansOfKnownSort);
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
index 10fa23f559..01ec44c80f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
@@ -36,7 +36,6 @@ import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelH
 import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormComponentPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
-import lombok.Getter;
 import lombok.val;
 
 /**
@@ -120,10 +119,9 @@ implements CancelHintRequired  {
 
     // -- DEPENDENCIES
 
-    @Getter(lazy=true)
-    private final PlaceholderRenderService placeholderRenderService =
-        getCommonContext().lookupService(PlaceholderRenderService.class)
-            .orElseGet(PlaceholderRenderService::fallback);
+    private PlaceholderRenderService getPlaceholderRenderService() {
+        return getCommonContext().getPlaceholderRenderService();
+    }
 
     private IsisAppCommonContext getCommonContext() {
         return ((HasCommonContext)getModel()).getCommonContext();
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
index a2a909bd37..7efdc1940b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
@@ -158,13 +158,12 @@ extends ChoiceProvider<ObjectMemento> {
     /**
      * Translate without context: Tooltips, Button-Labels, etc.
      */
-    private final String translate(final String input) {
+    private String translate(final String input) {
         return getCommonContext().getTranslationService().translate(TranslationContext.empty(), input);
     }
 
-    @Getter(lazy=true)
-    private final PlaceholderRenderService placeholderRenderService =
-        getCommonContext().lookupService(PlaceholderRenderService.class)
-            .orElseGet(PlaceholderRenderService::fallback);
+    private PlaceholderRenderService getPlaceholderRenderService() {
+        return getCommonContext().getPlaceholderRenderService();
+    }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
index 6c1181a95c..88e8ea0a0f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
@@ -51,10 +51,6 @@ import org.apache.isis.viewer.wicket.ui.pages.EmailVerificationUrlService;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.experimental.Accessors;
-
 /**
  * Provides the <em>common context</em> for all implementing sub-classes.
  * @since 2.0
@@ -145,10 +141,9 @@ implements HasCommonContext {
         return pageNavigationService = computeIfAbsent(PageNavigationService.class, pageNavigationService);
     }
 
-    @Getter(lazy=true, value = AccessLevel.PROTECTED) @Accessors(makeFinal = true)
-    private final PlaceholderRenderService placeholderRenderService =
-        getCommonContext().lookupService(PlaceholderRenderService.class)
-            .orElseGet(PlaceholderRenderService::fallback);
+    protected PlaceholderRenderService getPlaceholderRenderService() {
+        return getCommonContext().getPlaceholderRenderService();
+    }
 
     protected MessageBroker getMessageBroker() {
         return getCommonContext().getMessageBroker()