This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 7a31405933a6ecf3824306c6dba70b69c926ede9 Author: andi-huber <[email protected]> AuthorDate: Thu Mar 12 09:22:52 2026 +0100 CAUSEWAY-2297: refactors service class to record (homepage resolver) --- .../homepage/HomePageResolverServiceDefault.java | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/homepage/HomePageResolverServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/homepage/HomePageResolverServiceDefault.java index 53c0b225c04..dfc7b379cf6 100644 --- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/homepage/HomePageResolverServiceDefault.java +++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/homepage/HomePageResolverServiceDefault.java @@ -20,7 +20,6 @@ import java.util.Optional; -import jakarta.annotation.PostConstruct; import jakarta.inject.Inject; import jakarta.inject.Named; @@ -30,6 +29,7 @@ import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.services.factory.FactoryService; import org.apache.causeway.applib.services.homepage.HomePageResolverService; +import org.apache.causeway.commons.internal.base._Lazy; import org.apache.causeway.core.config.beans.CausewayBeanTypeRegistry; import org.apache.causeway.core.metamodel.commons.ClassExtensions; import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices; @@ -38,10 +38,8 @@ * Default implementation of {@link HomePageResolverService}, which uses the view model annotated with * {@link HomePage} as the home page. * - * <p> - * If there is more than one such view model so annotated, then the one chosen is not defined - * (in effect, can be considered is randomly chosen). - * </p> + * <p>If there is more than one such view model so annotated, then the one chosen is not defined + * (in effect, can be considered is randomly chosen). * * @since 2.0 {@index} */ @@ -51,9 +49,7 @@ public class HomePageResolverServiceDefault implements HomePageResolverService { private final FactoryService factoryService; - private final CausewayBeanTypeRegistry causewayBeanTypeRegistry; - - private Optional<Class<?>> viewModelTypeForHomepage; + private final _Lazy<Optional<Class<?>>> viewModelTypeForHomepage; @Inject public HomePageResolverServiceDefault( @@ -61,17 +57,12 @@ public HomePageResolverServiceDefault( final CausewayBeanTypeRegistry causewayBeanTypeRegistry) { this.factoryService = factoryService; - this.causewayBeanTypeRegistry = causewayBeanTypeRegistry; - } - - @PostConstruct - public void init() { - viewModelTypeForHomepage = causewayBeanTypeRegistry.findHomepageViewmodel(); + this.viewModelTypeForHomepage = _Lazy.threadSafe(causewayBeanTypeRegistry::findHomepageViewmodel); } @Override public Object getHomePage() { - return viewModelTypeForHomepage + return viewModelTypeForHomepage.get() .map(ClassExtensions::newInstance) .map(factoryService::viewModel) .orElse(null);
