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());