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 <[email protected]> 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()
