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