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/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new b9dcd781b6 CAUSEWAY-3697: optimizations and cleanups
b9dcd781b6 is described below

commit b9dcd781b661b4ed8e035895dd35b577ca9f7697
Author: Andi Huber <[email protected]>
AuthorDate: Thu Mar 14 12:06:54 2024 +0100

    CAUSEWAY-3697: optimizations and cleanups
---
 .../core/metamodel/context/HasMetaModelContext.java     | 14 ++++++++++++--
 .../menubars/bootstrap/MenuBarsServiceBootstrap.java    |  9 ++-------
 .../commons/services/menu/MenuUiServiceDefault.java     |  2 +-
 .../restfulobjects/rendering/ReprRendererAbstract.java  |  6 ------
 .../restfulobjects/viewer/context/ResourceContext.java  |  7 +++++++
 .../resources/DomainServiceResourceServerside.java      | 17 +++--------------
 .../resources/DomainServicesListReprRenderer.java       | 14 ++++++++------
 .../viewer/resources/HomePageReprRenderer.java          |  2 +-
 8 files changed, 34 insertions(+), 37 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/HasMetaModelContext.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/HasMetaModelContext.java
index 9b6e17bf58..ed7893779a 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/HasMetaModelContext.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/HasMetaModelContext.java
@@ -22,11 +22,10 @@ import java.util.Optional;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
-import org.apache.causeway.applib.services.ascii.AsciiIdentifierService;
-
 import org.springframework.lang.Nullable;
 
 import org.apache.causeway.applib.locale.UserLocale;
+import org.apache.causeway.applib.services.ascii.AsciiIdentifierService;
 import org.apache.causeway.applib.services.factory.FactoryService;
 import org.apache.causeway.applib.services.i18n.TranslationService;
 import org.apache.causeway.applib.services.iactnlayer.InteractionContext;
@@ -44,6 +43,7 @@ import org.apache.causeway.core.config.CausewayConfiguration;
 import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
 import org.apache.causeway.core.config.viewer.web.WebAppContextPath;
 import org.apache.causeway.core.metamodel.execution.MemberExecutorService;
+import 
org.apache.causeway.core.metamodel.facets.object.domainservice.DomainServiceFacet;
 import org.apache.causeway.core.metamodel.facets.object.icon.ObjectIconService;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.ObjectManager;
@@ -210,4 +210,14 @@ public interface HasMetaModelContext {
         return getMetaModelContext().streamServiceAdapters();
     }
 
+    default Stream<ManagedObject> streamServicesContributingToWebApi() {
+        return streamServiceAdapters()
+                
.filter(object->DomainServiceFacet.contributingToWebApi().test(object.getSpecification()));
+    }
+
+    default Stream<ManagedObject> streamServicesContributingToUi() {
+        return streamServiceAdapters()
+                
.filter(object->DomainServiceFacet.contributingToUi().test(object.getSpecification()));
+    }
+
 }
diff --git 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.java
 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.java
index f3b10cf09f..e3a757d4d1 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.java
@@ -60,7 +60,6 @@ import 
org.apache.causeway.core.metamodel.facets.actions.layout.MemberNamedFacet
 import org.apache.causeway.core.metamodel.facets.all.i8n.staatic.HasStaticText;
 import org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet;
 import 
org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet;
-import 
org.apache.causeway.core.metamodel.facets.object.domainservice.DomainServiceFacet;
 import 
org.apache.causeway.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.services.grid.GridServiceDefault;
@@ -264,7 +263,7 @@ implements MenuBarsService {
     private BSMenuBars menuBarsFromAnnotationsOnly() {
         final BSMenuBars menuBars = new BSMenuBars();
 
-        val visibleServiceAdapters = metaModelContext.streamServiceAdapters()
+        val visibleServiceAdapters = 
metaModelContext.streamServicesContributingToUi()
                 .filter(this::isVisibleAdapterForMenu)
                 .collect(Can.toCan());
 
@@ -428,12 +427,8 @@ implements MenuBarsService {
     private Stream<ServiceAndAction> streamServiceActions(
             final ManagedObject serviceAdapter,
             final ActionScope actionType) {
-        final ObjectSpecification serviceSpec = 
serviceAdapter.getSpecification();
-
-        if (!DomainServiceFacet.contributingToUi().test(serviceSpec)) {
-            return Stream.empty();
-        }
 
+        final ObjectSpecification serviceSpec = 
serviceAdapter.getSpecification();
         final Stream<ObjectAction> objectActions = 
serviceSpec.streamDeclaredActions(actionType, MixedIn.INCLUDED);
 
         return objectActions
diff --git 
a/viewers/commons/services/src/main/java/org/apache/causeway/viewer/commons/services/menu/MenuUiServiceDefault.java
 
b/viewers/commons/services/src/main/java/org/apache/causeway/viewer/commons/services/menu/MenuUiServiceDefault.java
index 7b34e4499c..358c6351a5 100644
--- 
a/viewers/commons/services/src/main/java/org/apache/causeway/viewer/commons/services/menu/MenuUiServiceDefault.java
+++ 
b/viewers/commons/services/src/main/java/org/apache/causeway/viewer/commons/services/menu/MenuUiServiceDefault.java
@@ -79,7 +79,7 @@ implements MenuUiService {
     // -- HELPER
 
     private List<String> select(final DomainServiceLayout.MenuBar 
menuBarSelect) {
-        return metaModelContext.streamServiceAdapters()
+        return metaModelContext.streamServicesContributingToUi()
                 .filter(with(menuBarSelect))
                 .map(ManagedObject::getSpecification)
                 .map(ObjectSpecification::getLogicalTypeName)
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/ReprRendererAbstract.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/ReprRendererAbstract.java
index 04fb1defca..5a22f0d6c8 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/ReprRendererAbstract.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/ReprRendererAbstract.java
@@ -20,7 +20,6 @@ package org.apache.causeway.viewer.restfulobjects.rendering;
 
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Stream;
 
 import javax.ws.rs.core.MediaType;
 
@@ -203,9 +202,4 @@ implements ReprRenderer<T> {
         }
     }
 
-    protected Stream<ManagedObject> streamServiceAdapters() {
-        val metaModelContext = resourceContext.getMetaModelContext();
-        return metaModelContext.streamServiceAdapters();
-    }
-
 }
diff --git 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
index 5c01c04389..45b89f4f92 100644
--- 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
+++ 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -39,6 +40,7 @@ import org.apache.causeway.commons.internal.collections._Sets;
 import org.apache.causeway.commons.internal.primitives._Ints;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
+import 
org.apache.causeway.core.metamodel.facets.object.domainservice.DomainServiceFacet;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.object.ManagedObjects;
 import org.apache.causeway.viewer.restfulobjects.applib.JsonRepresentation;
@@ -253,4 +255,9 @@ implements IResourceContext {
     @Setter //(onMethod = @__(@Override))
     private ObjectAdapterLinkTo objectAdapterLinkTo;
 
+    public final Stream<ManagedObject> streamServicesEnabledForWebApi() {
+        return metaModelContext.streamServiceAdapters()
+                
.filter(object->DomainServiceFacet.contributingToWebApi().test(object.getSpecification()));
+    }
+
 }
diff --git 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
index c23d74f8d6..64b048feb4 100644
--- 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
+++ 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
@@ -19,7 +19,6 @@
 package org.apache.causeway.viewer.restfulobjects.viewer.resources;
 
 import java.io.InputStream;
-import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import javax.ws.rs.Consumes;
@@ -38,7 +37,6 @@ import org.springframework.stereotype.Component;
 
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.io.UrlUtils;
-import 
org.apache.causeway.core.metamodel.facets.object.domainservice.DomainServiceFacet;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.causeway.viewer.restfulobjects.applib.RepresentationType;
@@ -63,13 +61,6 @@ public class DomainServiceResourceServerside
 extends ResourceAbstract
 implements DomainServiceResource {
 
-    private static final Predicate<ManagedObject> NATURE_REST = (final 
ManagedObject input) -> {
-        var isContributingToWebApi = 
input.getSpecification().lookupFacet(DomainServiceFacet.class)
-                .map(DomainServiceFacet::isContributingToWebApi)
-                .orElse(false);
-        return isContributingToWebApi;
-    };
-
     public DomainServiceResourceServerside() {
         super();
         log.debug("<init>");
@@ -87,12 +78,10 @@ implements DomainServiceResource {
         val resourceContext = createResourceContext(
                 RepresentationType.LIST, Where.STANDALONE_TABLES, 
RepresentationService.Intent.NOT_APPLICABLE);
 
-        val metaModelContext = resourceContext.getMetaModelContext();
-
-        final Stream<ManagedObject> serviceAdapters = 
metaModelContext.streamServiceAdapters()
-                .filter(NATURE_REST);
+        final Stream<ManagedObject> serviceAdapters = 
resourceContext.streamServicesContributingToWebApi();
 
-        final DomainServicesListReprRenderer renderer = new 
DomainServicesListReprRenderer(resourceContext, null, 
JsonRepresentation.newMap());
+        final DomainServicesListReprRenderer renderer = new 
DomainServicesListReprRenderer(
+                resourceContext, null, JsonRepresentation.newMap());
         renderer.usingLinkToBuilder(new DomainServiceLinkTo())
         .includesSelf()
         .with(serviceAdapters);
diff --git 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServicesListReprRenderer.java
 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServicesListReprRenderer.java
index 00cf8031f4..5c6525cae6 100644
--- 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServicesListReprRenderer.java
+++ 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/DomainServicesListReprRenderer.java
@@ -28,11 +28,13 @@ import 
org.apache.causeway.viewer.restfulobjects.rendering.domainobjects.ListRep
 
 public class DomainServicesListReprRenderer extends ListReprRenderer {
 
-    public DomainServicesListReprRenderer(final IResourceContext 
resourceContext, final LinkFollowSpecs linkFollower, final JsonRepresentation 
representation) {
+    public DomainServicesListReprRenderer(
+            final IResourceContext resourceContext,
+            final LinkFollowSpecs linkFollower,
+            final JsonRepresentation representation) {
         super(resourceContext, linkFollower, representation);
     }
 
-
     @Override
     public JsonRepresentation render() {
         super.render();
@@ -44,17 +46,17 @@ public class DomainServicesListReprRenderer extends 
ListReprRenderer {
         return representation;
     }
 
-
     private void addLinkToSelf() {
-        final JsonRepresentation link = 
LinkBuilder.newBuilder(getResourceContext(), Rel.SELF.getName(), 
RepresentationType.LIST, "services").build();
+        final JsonRepresentation link = LinkBuilder.newBuilder(
+                getResourceContext(), Rel.SELF.getName(), 
RepresentationType.LIST, "services")
+                .build();
 
         final LinkFollowSpecs linkFollower = 
getLinkFollowSpecs().follow("links");
         if (linkFollower.matches(link)) {
             final DomainServicesListReprRenderer renderer = new 
DomainServicesListReprRenderer(getResourceContext(), linkFollower, 
JsonRepresentation.newMap());
-            renderer.with(streamServiceAdapters());
+            
renderer.with(resourceContext.streamServicesContributingToWebApi());
             link.mapPutJsonRepresentation("value", renderer.render());
         }
-
         getLinks().arrayAdd(link);
     }
 
diff --git 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
index 58f584f0cb..fb769ea784 100644
--- 
a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
+++ 
b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
@@ -72,7 +72,7 @@ extends ReprRendererAbstract<Void> {
         
addLinkToUser(getResourceContext().getInteractionService().currentInteractionContextElseFail());
         addLinksToApplicationLogos();
         addLinkToMenuBars();
-        addLinkToServices(metaModelContext.streamServiceAdapters());
+        
addLinkToServices(metaModelContext.streamServicesContributingToWebApi());
         addLinkToVersion();
         
addLinkToDomainTypes(getResourceContext().getMetaModelContext().getSpecificationLoader().snapshotSpecifications());
 

Reply via email to