You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/06/11 07:18:44 UTC

[isis] 01/02: ISIS-2726: removes RuntimeContext, just use MetaModelContext instead

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2726
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 964c1da84ea4b33332d929a2e6cca079746b6c4c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 11 08:15:56 2021 +0100

    ISIS-2726: removes RuntimeContext, just use MetaModelContext instead
    
    as was suggested in its comment, simplifying an abstraction introduced in ISIS-2033
---
 .../isis/core/runtime/context/RuntimeContext.java  | 47 ----------------------
 .../core/runtime/context/RuntimeContextBase.java   | 38 +++--------------
 .../restfulobjects/rendering/IResourceContext.java |  5 ---
 .../rendering/ReprRendererAbstract.java            |  2 +-
 .../viewer/restfulobjects/rendering/Responses.java |  2 +-
 ...entNegotiationServiceForRestfulObjectsV1_0.java |  2 +-
 .../viewer/context/ResourceContext.java            | 16 ++++----
 .../viewer/resources/DomainResourceHelper.java     |  2 +-
 .../viewer/resources/HomePageReprRenderer.java     |  4 +-
 .../viewer/resources/JsonParserHelper.java         |  2 +-
 .../viewer/resources/UserResourceServerside.java   | 20 ++++++++-
 11 files changed, 39 insertions(+), 101 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContext.java
deleted file mode 100644
index ed366df..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContext.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.runtime.context;
-
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-/**
- * TODO [2033] this was introduced when refactoring, maybe use MetaModelContext instead if possible
- *
- * @since 2.0
- *
- */
-public interface RuntimeContext {
-
-    MetaModelContext getMetaModelContext();
-
-    InteractionLayerTracker getInteractionTracker();
-    IsisConfiguration getConfiguration();
-    SpecificationLoader getSpecificationLoader();
-    ServiceInjector getServiceInjector();
-    ServiceRegistry getServiceRegistry();
-
-    void logoutFromSession();
-
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java
index a3b36ba..6348fc0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java
@@ -23,34 +23,27 @@ import java.util.function.Supplier;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
 import org.apache.isis.applib.services.iactnlayer.InteractionService;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 
 import lombok.Getter;
+import lombok.val;
 
 /**
  *
  * @since 2.0
  *
  */
-public abstract class RuntimeContextBase implements RuntimeContext {
+public abstract class RuntimeContextBase {
 
     // -- FINAL FIELDS
 
-    @Getter(onMethod = @__(@Override)) protected final MetaModelContext metaModelContext;
-    @Getter(onMethod = @__(@Override)) protected final IsisConfiguration configuration;
-    @Getter(onMethod = @__(@Override)) protected final ServiceInjector serviceInjector;
-    @Getter(onMethod = @__(@Override)) protected final ServiceRegistry serviceRegistry;
-    @Getter(onMethod = @__(@Override)) protected final SpecificationLoader specificationLoader;
-    @Getter(onMethod = @__(@Override)) protected final InteractionLayerTracker interactionLayerTracker;
+    @Getter protected final MetaModelContext metaModelContext;
 
+    @Getter protected final InteractionLayerTracker interactionLayerTracker;
     @Getter protected final InteractionService interactionService;
     @Getter protected final AuthenticationManager authenticationManager;
     @Getter protected final TransactionService transactionService;
@@ -61,10 +54,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     protected RuntimeContextBase(MetaModelContext mmc) {
         this.metaModelContext= mmc;
-        this.configuration = mmc.getConfiguration();
-        this.serviceInjector = mmc.getServiceInjector();
-        this.serviceRegistry = mmc.getServiceRegistry();
-        this.specificationLoader = mmc.getSpecificationLoader();
+        val serviceRegistry = mmc.getServiceRegistry();
         this.objectManager = mmc.getObjectManager();
         this.transactionService = mmc.getTransactionService();
         this.homePageSupplier = mmc::getHomePageAdapter;
@@ -79,22 +69,4 @@ public abstract class RuntimeContextBase implements RuntimeContext {
         return interactionLayerTracker;
     }
 
-    @Override
-    public void logoutFromSession() {
-        // we do the logout (removes this session from those valid)
-        // similar code in wicket viewer (AuthenticatedWebSessionForIsis#onInvalidate())
-
-        interactionLayerTracker
-        .currentInteractionContext()
-        .ifPresent(authentication->{
-
-            authenticationManager.closeSession(authentication);
-            interactionService.closeInteractionLayers();
-
-        });
-
-
-    }
-
-
 }
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
index 55c3342..d25f160 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
@@ -27,8 +27,6 @@ import javax.ws.rs.core.MediaType;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -97,10 +95,7 @@ public interface IResourceContext {
     RepresentationService.Intent getIntent();
 
     InteractionProvider getInteractionProvider();
-    SpecificationLoader getSpecificationLoader();
     MetaModelContext getMetaModelContext();
-    ServiceRegistry getServiceRegistry();
-    IsisConfiguration getConfiguration();
 
     // -- UTILITY
 
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
index 7a17e67..388aab9 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
@@ -60,7 +60,7 @@ implements ReprRenderer<R, T> {
             final RepresentationType representationType,
             final JsonRepresentation representation) {
         this.resourceContext = resourceContext;
-        this.jsonValueEncoder = resourceContext.getServiceRegistry()
+        this.jsonValueEncoder = resourceContext.getMetaModelContext().getServiceRegistry()
                 .lookupServiceElseFail(JsonValueEncoder.class);
 
         this.linkFollower = asProvidedElseCreate(linkFollower);
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
index c9e74aa..019aca8 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/Responses.java
@@ -88,7 +88,7 @@ public final class Responses {
 
     private static Date now(ReprRenderer<?, ?> renderer) {
         if(renderer instanceof ReprRendererAbstract) {
-            ((ReprRendererAbstract<?, ?>)renderer).getResourceContext().getServiceRegistry()
+            ((ReprRendererAbstract<?, ?>)renderer).getResourceContext().getMetaModelContext().getServiceRegistry()
             .lookupServiceElseFail(ClockService.class).getClock().javaUtilDate();
         }
         return new Date();
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index 62392e2..869ab27 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -214,7 +214,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
                 final String actionArguments = actionArgumentsFrom(objectAndActionInvocation);
                 final DomainObjectList list = domainObjectListFrom(collectionAdapters, elementSpec, actionOwnerSpec, actionId, actionArguments);
 
-                val listAdapter = ManagedObject.lazy(resourceContext.getSpecificationLoader(), list);
+                val listAdapter = ManagedObject.lazy(resourceContext.getMetaModelContext().getSpecificationLoader(), list);
                 return responseBuilder(
                         buildResponse(
                                 resourceContext,
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
index 83228ff..a30eb71 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
@@ -229,42 +229,42 @@ implements IResourceContext {
 
     @Override
     public boolean honorUiHints() {
-        return getConfiguration().getViewer().getRestfulobjects().isHonorUiHints();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isHonorUiHints();
     }
 
     @Override
     public boolean objectPropertyValuesOnly() {
-        return getConfiguration().getViewer().getRestfulobjects().isObjectPropertyValuesOnly();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isObjectPropertyValuesOnly();
     }
 
     @Override
     public boolean suppressDescribedByLinks() {
-        return getConfiguration().getViewer().getRestfulobjects().isSuppressDescribedByLinks();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isSuppressDescribedByLinks();
     }
 
     @Override
     public boolean suppressUpdateLink() {
-        return getConfiguration().getViewer().getRestfulobjects().isSuppressUpdateLink();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isSuppressUpdateLink();
     }
 
     @Override
     public boolean suppressMemberId() {
-        return getConfiguration().getViewer().getRestfulobjects().isSuppressMemberId();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isSuppressMemberId();
     }
 
     @Override
     public boolean suppressMemberLinks() {
-        return getConfiguration().getViewer().getRestfulobjects().isSuppressMemberLinks();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isSuppressMemberLinks();
     }
 
     @Override
     public boolean suppressMemberExtensions() {
-        return getConfiguration().getViewer().getRestfulobjects().isSuppressMemberExtensions();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isSuppressMemberExtensions();
     }
 
     @Override
     public boolean suppressMemberDisabledReason() {
-        return getConfiguration().getViewer().getRestfulobjects().isSuppressMemberDisabledReason();
+        return getMetaModelContext().getConfiguration().getViewer().getRestfulobjects().isSuppressMemberDisabledReason();
     }
 
     @Override
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
index 9826738..3fb2521 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
@@ -304,7 +304,7 @@ class DomainResourceHelper {
     // //////////////////////////////////////
 
     private <T> T lookupService(Class<T> serviceType) {
-        return resourceContext.getServiceRegistry().lookupServiceElseFail(serviceType);
+        return resourceContext.getMetaModelContext().getServiceRegistry().lookupServiceElseFail(serviceType);
     }
 
 }
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
index 98da262..3ac0f69 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageReprRenderer.java
@@ -62,7 +62,7 @@ public class HomePageReprRenderer extends ReprRendererAbstract<HomePageReprRende
         addLinkToMenuBars();
         addLinkToServices(metaModelContext.streamServiceAdapters());
         addLinkToVersion();
-        addLinkToDomainTypes(getResourceContext().getSpecificationLoader().snapshotSpecifications());
+        addLinkToDomainTypes(getResourceContext().getMetaModelContext().getSpecificationLoader().snapshotSpecifications());
 
         // inks and extensions
         representation.mapPut("extensions", JsonRepresentation.newMap());
@@ -192,4 +192,4 @@ public class HomePageReprRenderer extends ReprRendererAbstract<HomePageReprRende
         getLinks().arrayAdd(link);
     }
 
-}
\ No newline at end of file
+}
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
index bde22b8..cc66d3e 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
@@ -49,7 +49,7 @@ public class JsonParserHelper {
     public JsonParserHelper(IResourceContext resourceContext, ObjectSpecification objectSpecification) {
         this.objectSpec = objectSpecification;
         this.resourceContext = resourceContext;
-        this.jsonValueEncoder = resourceContext.getServiceRegistry()
+        this.jsonValueEncoder = resourceContext.getMetaModelContext().getServiceRegistry()
                 .lookupServiceElseFail(JsonValueEncoder.class);
     }
 
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
index 6befc61..647ac0b 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
@@ -41,6 +42,7 @@ import org.apache.isis.viewer.restfulobjects.rendering.Caching;
 import org.apache.isis.viewer.restfulobjects.rendering.Responses;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
+import org.apache.isis.viewer.restfulobjects.viewer.context.ResourceContext;
 import org.apache.isis.viewer.restfulobjects.viewer.webmodule.IsisRestfulObjectsInteractionFilter;
 
 import lombok.val;
@@ -99,7 +101,7 @@ public class UserResourceServerside extends ResourceAbstract implements UserReso
         final HomePageReprRenderer renderer = new HomePageReprRenderer(resourceContext, null, JsonRepresentation.newMap());
         renderer.includesSelf();
 
-        resourceContext.logoutFromSession();
+        logout(resourceContext);
 
         // we also redirect to home page with special query string; this allows the session filter
         // to clear out any cookies/headers (eg if BASIC auth in use).
@@ -111,4 +113,20 @@ public class UserResourceServerside extends ResourceAbstract implements UserReso
         }
     }
 
+    private void logout(ResourceContext resourceContext) {
+
+        val interactionService = resourceContext.getInteractionService();
+        val interactionLayerTracker = resourceContext.getInteractionLayerTracker();
+        val authenticationManager = resourceContext.getMetaModelContext().getServiceRegistry().lookupServiceElseFail(AuthenticationManager.class);
+
+        interactionLayerTracker
+        .currentInteractionContext()
+        .ifPresent(interactionContext->{
+
+            authenticationManager.closeSession(interactionContext);
+            interactionService.closeInteractionLayers();
+
+        });
+    }
+
 }