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 2019/12/11 14:56:20 UTC
[isis] branch master updated: ISIS-2221: reverse precedence order
of content negotiation services
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
The following commit(s) were added to refs/heads/master by this push:
new cf04473 ISIS-2221: reverse precedence order of content negotiation services
cf04473 is described below
commit cf044736a5c29167dbdd06f6486458f4701a0f09
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Dec 11 15:56:11 2019 +0100
ISIS-2221: reverse precedence order of content negotiation services
also fixes unintended http-session creation when retrieving the
servlet-context from a servlet-request
---
.../RepresentationServiceContentNegotiator.java | 24 ++++++++--------------
.../service/conneg/ContentNegotiationService.java | 8 --------
.../conneg/ContentNegotiationServiceAbstract.java | 14 -------------
...entNegotiationServiceForRestfulObjectsV1_0.java | 19 +++++------------
.../ContentNegotiationServiceOrgApacheIsisV1.java | 9 ++++----
.../ContentNegotiationServiceXRoDomainType.java | 9 +++-----
.../viewer/IsisModuleRestfulObjectsViewer.java | 5 ++---
.../AuthenticationSessionStrategyAbstract.java | 3 +--
8 files changed, 24 insertions(+), 67 deletions(-)
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
index 8124645..3d414c3 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
@@ -18,23 +18,20 @@
*/
package org.apache.isis.viewer.restfulobjects.rendering.service;
-import lombok.extern.log4j.Log4j2;
-
import java.util.List;
import java.util.function.Function;
-import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
-import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer.SelfLink;
@@ -46,21 +43,17 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationService;
import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationServiceForRestfulObjectsV1_0;
+import lombok.val;
+
@Service
@Named("isisRoRendering.RepresentationServiceContentNegotiator")
@Order(OrderPrecedence.HIGH)
@Primary
@Qualifier("ContentNegotiator")
-@Log4j2
public class RepresentationServiceContentNegotiator implements RepresentationService {
- @Inject List<ContentNegotiationService> contentNegotiationServices;
+ @Inject private List<ContentNegotiationService> contentNegotiationServices;
- @PostConstruct
- public void init() {
- }
-
-
@Override
public Response objectRepresentation(
final IResourceContext renderContext,
@@ -147,9 +140,10 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
* @param connegServiceBuildResponse - the function to ask of the {@link ContentNegotiationService}.
*/
ResponseBuilder buildResponse(
- final Function<ContentNegotiationService, ResponseBuilder> connegServiceBuildResponse) {
- for (final ContentNegotiationService contentNegotiationService : contentNegotiationServices) {
- final ResponseBuilder responseBuilder = connegServiceBuildResponse.apply(contentNegotiationService);
+ Function<ContentNegotiationService, ResponseBuilder> connegServiceBuildResponse) {
+
+ for (val contentNegotiationService : contentNegotiationServices) {
+ val responseBuilder = connegServiceBuildResponse.apply(contentNegotiationService);
if(responseBuilder != null) {
return responseBuilder;
}
@@ -158,7 +152,7 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
}
/**
- * Overriddable to allow further customization.
+ * Override to allow further customization.
*/
protected Response buildResponse(final ResponseBuilder responseBuilder) {
return responseBuilder.build();
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
index d4cf358..5148fb5 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.viewer.restfulobjects.rendering.service.conneg;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.ws.rs.core.Response;
import org.apache.isis.metamodel.spec.ManagedObject;
@@ -31,12 +29,6 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
public interface ContentNegotiationService {
- @PostConstruct
- public void init();
-
- @PreDestroy
- public void shutdown();
-
public Response.ResponseBuilder buildResponse(
IResourceContext renderContext,
ManagedObject objectAdapter);
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
index 749907c..c6fc435 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
@@ -21,8 +21,6 @@ package org.apache.isis.viewer.restfulobjects.rendering.service.conneg;
import java.util.List;
import java.util.Objects;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.bind.annotation.XmlRootElement;
@@ -42,15 +40,6 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
public abstract class ContentNegotiationServiceAbstract implements ContentNegotiationService {
@Override
-
- @PostConstruct
- public void init() {}
-
- @Override
- @PreDestroy
- public void shutdown() {}
-
- @Override
public Response.ResponseBuilder buildResponse(
final IResourceContext renderContext2,
final ManagedObject objectAdapter) {
@@ -65,7 +54,6 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
}
@Override
-
public Response.ResponseBuilder buildResponse(
final IResourceContext renderContext2,
final ObjectAndCollection objectAndCollection) {
@@ -73,7 +61,6 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
}
@Override
-
public Response.ResponseBuilder buildResponse(
final IResourceContext renderContext2,
final ObjectAndAction objectAndAction) {
@@ -81,7 +68,6 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
}
@Override
-
public Response.ResponseBuilder buildResponse(
final IResourceContext renderContext2,
final ObjectAndActionInvocation objectAndActionInvocation) {
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index 1840685..c43200a 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -23,13 +23,17 @@ import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Service;
+
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.domain.DomainObjectList;
import org.apache.isis.config.IsisConfiguration;
@@ -58,12 +62,7 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectCollectionReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectPropertyReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-import lombok.extern.log4j.Log4j2;
import lombok.val;
@Service
@@ -71,24 +70,16 @@ import lombok.val;
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("RestfulObjectsV1_0")
-@Log4j2
public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNegotiationService {
private boolean strictAcceptChecking;
- @Override
@PostConstruct
public void init() {
this.strictAcceptChecking = configuration.getViewer().getRestfulobjects().isStrictAcceptChecking();
}
@Override
- @PreDestroy
- public void shutdown() {
- }
-
-
- @Override
public ResponseBuilder buildResponse(
final IResourceContext resourceContext,
final ManagedObject objectAdapter) {
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
index 4065b48..4f929d9 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
@@ -26,12 +26,14 @@ import javax.inject.Named;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Service;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.client.SuppressionType;
+import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
@@ -49,16 +51,13 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCo
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectPropertyReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
-import org.springframework.stereotype.Service;
-import lombok.extern.log4j.Log4j2;
import lombok.val;
@Service
@Named("isisRoRendering.ContentNegotiationServiceOrgApacheIsisV1")
-@Order(OrderPrecedence.MIDPOINT + 200)
+@Order(OrderPrecedence.MIDPOINT - 200)
@Qualifier("OrgApacheIsisV1")
-@Log4j2
public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiationServiceAbstract {
/**
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
index bf97fcb..05e58b7 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.viewer.restfulobjects.rendering.service.conneg;
-import lombok.extern.log4j.Log4j2;
-
import java.util.List;
import javax.inject.Inject;
@@ -27,11 +25,11 @@ import javax.inject.Named;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.conmap.ContentMappingService;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -56,14 +54,13 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndAc
*/
@Service
@Named("isisRoRendering.ContentNegotiationServiceXRoDomainType")
-@Order(OrderPrecedence.MIDPOINT + 100)
+@Order(OrderPrecedence.MIDPOINT - 100)
@Qualifier("XRoDomainType")
-@Log4j2
public class ContentNegotiationServiceXRoDomainType extends ContentNegotiationServiceAbstract {
public static final String X_RO_DOMAIN_TYPE = "x-ro-domain-type";
- @Inject List<ContentMappingService> contentMappingServices;
+ @Inject private List<ContentMappingService> contentMappingServices;
/**
* search for an accept header in form <code>application/xml;profile=urn:org.restfulobjects:repr-types/object;x-ro-domain-type=todoapp.dto.module.todoitem.ToDoItemDto</code>
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisModuleRestfulObjectsViewer.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisModuleRestfulObjectsViewer.java
index 0b3b77b..34061de 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisModuleRestfulObjectsViewer.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisModuleRestfulObjectsViewer.java
@@ -19,12 +19,11 @@
package org.apache.isis.viewer.restfulobjects.viewer;
-import org.apache.isis.viewer.restfulobjects.rendering.IsisModuleRestfulObjectsRendering;
-import org.apache.isis.viewer.restfulobjects.viewer.webmodule.WebModuleRestfulObjects;
-import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
+import org.apache.isis.viewer.restfulobjects.rendering.IsisModuleRestfulObjectsRendering;
+import org.apache.isis.viewer.restfulobjects.viewer.webmodule.WebModuleRestfulObjects;
import org.apache.isis.webapp.IsisModuleWebapp;
/**
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/auth/AuthenticationSessionStrategyAbstract.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/auth/AuthenticationSessionStrategyAbstract.java
index 0051cdd..7f5fc82 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/auth/AuthenticationSessionStrategyAbstract.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/auth/AuthenticationSessionStrategyAbstract.java
@@ -51,8 +51,7 @@ public abstract class AuthenticationSessionStrategyAbstract implements Authentic
}
protected ServletContext getServletContext(ServletRequest servletRequest) {
- val httpSession = getHttpSession(servletRequest);
- return httpSession.getServletContext();
+ return servletRequest.getServletContext();
}