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/02/09 20:50:38 UTC
[isis] branch 2033-IoC updated: ISIS-2033: moves some
responsibility from IsisSessionFactory to IsisSession
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2033-IoC
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/2033-IoC by this push:
new b331d73 ISIS-2033: moves some responsibility from IsisSessionFactory to IsisSession
b331d73 is described below
commit b331d736ac5ee38c1fd55b2eb12024749ac22305
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Feb 9 21:50:32 2019 +0100
ISIS-2033: moves some responsibility from IsisSessionFactory to
IsisSession
Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
.../commons/components/SessionScopedComponent.java | 36 ----------
.../runtime/managed/ManagedObjectContextBase.java | 24 +++++--
.../isis/core/runtime/system/SystemConstants.java | 4 ++
.../core/runtime/system/context/IsisContext.java | 2 +-
.../system/persistence/PersistenceSession.java | 7 +-
.../ObjectAdapterContext_OidProviders.java | 3 +-
.../core/runtime/system/session/IsisSession.java | 83 +++++++++++-----------
.../runtime/system/session/IsisSessionFactory.java | 5 +-
.../system/session/IsisSessionFactoryDefault.java | 28 +++-----
.../system/transaction/IsisTransactionManager.java | 10 +--
.../resources/MenuBarsResourceServerside.java | 4 +-
.../wicket/AuthenticatedWebSessionForIsis.java | 26 ++++---
.../viewer/wicket/model/models/ModelAbstract.java | 8 +--
13 files changed, 98 insertions(+), 142 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/components/SessionScopedComponent.java b/core/commons/src/main/java/org/apache/isis/core/commons/components/SessionScopedComponent.java
deleted file mode 100644
index 7b4fdc4..0000000
--- a/core/commons/src/main/java/org/apache/isis/core/commons/components/SessionScopedComponent.java
+++ /dev/null
@@ -1,36 +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.commons.components;
-
-/**
- * Indicate that the implementing component is scoped at the session level (for
- * a single user) and might also need to be "opened" or "closed" at the
- * start/end of the session.
- *
- * <p>
- * Analogous to Hibernate's <tt>Session</tt>.
- *
- * @see ApplicationScopedComponent
- * @see TransactionScopedComponent
- */
-public interface SessionScopedComponent extends Component {
-
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/managed/ManagedObjectContextBase.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/managed/ManagedObjectContextBase.java
index 0347f9a..7f851d9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/managed/ManagedObjectContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/managed/ManagedObjectContextBase.java
@@ -14,23 +14,33 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.security.authentication.AuthenticationSession;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
/**
*
* @since 2.0.0-M3
*
*/
+@RequiredArgsConstructor
public abstract class ManagedObjectContextBase implements ManagedObjectContext {
// -- FINAL FIELDS
- @Getter protected final IsisConfiguration configuration = IsisContext.getConfiguration();
- @Getter protected final ServiceInjector serviceInjector = IsisContext.getServiceInjector();
- @Getter protected final ServiceRegistry serviceRegistry = IsisContext.getServiceRegistry();
- @Getter protected final SpecificationLoader specificationLoader = IsisContext.getSpecificationLoader();
- @Getter protected final AuthenticationSession authenticationSession =
- IsisContext.getAuthenticationSession()
- .orElse(null);
+ @Getter protected final IsisConfiguration configuration;
+ @Getter protected final ServiceInjector serviceInjector;
+ @Getter protected final ServiceRegistry serviceRegistry;
+ @Getter protected final SpecificationLoader specificationLoader;
+ @Getter protected final AuthenticationSession authenticationSession;
+
+ // -- NO ARG CONSTRUCTOR
+
+ protected ManagedObjectContextBase() {
+ configuration = IsisContext.getConfiguration();
+ serviceInjector = IsisContext.getServiceInjector();
+ serviceRegistry = IsisContext.getServiceRegistry();
+ specificationLoader = IsisContext.getSpecificationLoader();
+ authenticationSession = IsisContext.getAuthenticationSession().orElse(null);
+ }
// -- OBJECT ADAPTER SUPPORT
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
index 94d997b..0e3cf54 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
@@ -47,6 +47,10 @@ public final class SystemConstants {
public static final String LOCALE_KEY = ConfigurationConstants.ROOT + "locale";
+
+ // -- SERVICE ID SUPPORT
+
+ public static final String SERVICE_IDENTIFIER = "1";
private SystemConstants() {
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index d5be144..17fbe06 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -179,7 +179,7 @@ public interface IsisContext {
* @throws IllegalStateException - if IsisSessionFactory not resolvable
*/
public static Optional<IsisSession> getCurrentIsisSession() {
- return Optional.ofNullable(getSessionFactory().getCurrentSession());
+ return Optional.ofNullable(IsisSession.current());
}
/**
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 32d6a74..5fc658f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -22,7 +22,6 @@ import java.util.Map;
import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.config.IsisConfiguration;
-import org.apache.isis.core.commons.components.SessionScopedComponent;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterByIdProvider;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
@@ -36,8 +35,7 @@ public interface PersistenceSession
extends
ObjectAdapterProvider.Delegating,
ObjectAdapterByIdProvider.Delegating,
- TransactionalResource,
- SessionScopedComponent {
+ TransactionalResource {
// -------------------------------------------------------------------------------------------------
// -- STABLE API (DRAFT)
@@ -147,9 +145,6 @@ extends
// -- API NOT STABLE YET - SUBJECT TO REFACTORING
// -------------------------------------------------------------------------------------------------
- // -- SERVICE SUPPORT
-
- static final String SERVICE_IDENTIFIER = "1";
// -- FIXTURE SUPPORT
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_OidProviders.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_OidProviders.java
index 699b4d6..235b522 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_OidProviders.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_OidProviders.java
@@ -31,6 +31,7 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.runtime.contextmanger.ContextManager;
import org.apache.isis.core.runtime.contextmanger.ManagedObjectResolver;
+import org.apache.isis.core.runtime.system.SystemConstants;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.persistence.adaptermanager.factories.OidFactory.OidProvider;
@@ -65,7 +66,7 @@ class ObjectAdapterContext_OidProviders {
@Override
public RootOid oidFor(ManagedObject managedObject) {
- final String identifier = PersistenceSession.SERVICE_IDENTIFIER;
+ final String identifier = SystemConstants.SERVICE_IDENTIFIER;
return Oid.Factory.persistentOf(managedObject.getSpecification().getSpecId(), identifier);
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
index 8e5418f..3471f7c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
@@ -19,13 +19,18 @@
package org.apache.isis.core.runtime.system.session;
-import org.apache.isis.core.commons.components.SessionScopedComponent;
+import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.core.commons.util.ToString;
+import org.apache.isis.core.runtime.managed.ManagedObjectContextBase;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.security.authentication.AuthenticationSession;
+import lombok.Getter;
+
/**
* Analogous to (and in essence a wrapper for) a JDO <code>PersistenceManager</code>;
* holds the current set of components for a specific execution context (such as on a thread).
@@ -35,29 +40,43 @@ import org.apache.isis.core.security.authentication.AuthenticationSession;
*
* @see IsisSessionFactory
*/
-public class IsisSession implements SessionScopedComponent {
-
- // private static final Logger LOG = LoggerFactory.getLogger(IsisSession.class);
-
- // -- constructor, fields
-
- private final AuthenticationSession authenticationSession;
- private PersistenceSession persistenceSession; // only non-final so can be replaced in tests.
-
- public IsisSession(
- final AuthenticationSession authenticationSession,
- final PersistenceSession persistenceSession) {
-
- this.authenticationSession = authenticationSession;
- this.persistenceSession = persistenceSession;
- }
-
-
- // -- open, close
+public class IsisSession extends ManagedObjectContextBase {
+
+ @Deprecated //TODO [2033] avoid extensions to ManagedObjectContext
+ @Getter private final PersistenceSession persistenceSession;
+
+ public IsisSession(
+ final AuthenticationSession authenticationSession,
+ final PersistenceSessionFactory persistenceSessionFactory) {
+
+ super(IsisContext.getConfiguration(),
+ IsisContext.getServiceInjector(),
+ IsisContext.getServiceRegistry(),
+ IsisContext.getSpecificationLoader(),
+ authenticationSession);
+
+ this.persistenceSession =
+ persistenceSessionFactory.createPersistenceSession(authenticationSession);
+
+
+ }
+
+ // -- CURRENT
+
+ public static IsisSession current() {
+ return _Context.threadLocalGetIfAny(IsisSession.class);
+ }
+
+ // -- OPEN
+
+
void open() {
+ _Context.threadLocalPut(IsisSession.class, this);
persistenceSession.open();
}
+ // -- CLOSE
+
/**
* Closes session.
*/
@@ -65,31 +84,9 @@ public class IsisSession implements SessionScopedComponent {
if(persistenceSession != null) {
persistenceSession.close();
}
+ _Context.cleanupThread();
}
-
-
-
- // -- AuthenticationSession
- /**
- * Returns the {@link AuthenticationSession} representing this user for this
- * {@link IsisSession}.
- */
- public AuthenticationSession getAuthenticationSession() {
- return authenticationSession;
- }
-
-
- // -- Persistence Session
- /**
- * The {@link PersistenceSession} within this {@link IsisSession}.
- */
- public PersistenceSession getPersistenceSession() {
- return persistenceSession;
- }
-
-
-
// -- transaction
/**
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index c4d2e0a..9f9ea2e 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -53,7 +53,10 @@ public interface IsisSessionFactory {
public IsisSession openSession(final AuthenticationSession authenticationSession);
public void closeSession();
- public IsisSession getCurrentSession();
+ @Deprecated //TODO [2033] replace with IsisSession.current()
+ default public IsisSession getCurrentSession() {
+ return IsisSession.current();
+ }
/**
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
index 91c9f50..ea84e52 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.title.TitleService;
import org.apache.isis.commons.internal.base._Blackhole;
+import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
@@ -40,7 +41,6 @@ import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
import org.apache.isis.core.runtime.system.MessageRegistry;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.internal.InitialisationSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManagerException;
@@ -48,6 +48,8 @@ import org.apache.isis.core.security.authentication.AuthenticationSession;
import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
+import lombok.val;
+
/**
* Is the factory of {@link IsisSession}s, also holding a reference to the current session using
* a thread-local.
@@ -217,40 +219,26 @@ public class IsisSessionFactoryDefault implements IsisSessionFactory {
specificationLoader.shutdown();
}
- // -- openSession, closeSession, currentSession, inSession
+ // --
- /**
- * Inheritable... allows to have concurrent computations utilizing the ForkJoinPool.
- * see {@link IsisContext#compute(java.util.function.Supplier)}
- */
- private final InheritableThreadLocal<IsisSession> currentSession = new InheritableThreadLocal<>();
-
@Override
public IsisSession openSession(final AuthenticationSession authenticationSession) {
closeSession();
- final PersistenceSession persistenceSession =
- persistenceSessionFactory.createPersistenceSession(authenticationSession);
- IsisSession session = new IsisSession(authenticationSession, persistenceSession);
- currentSession.set(session);
- session.open();
- return session;
+ val isisSession = new IsisSession(authenticationSession, persistenceSessionFactory);
+ isisSession.open();
+ return isisSession;
}
@Override
public void closeSession() {
final IsisSession existingSessionIfAny = getCurrentSession();
if (existingSessionIfAny == null) {
+ _Context.cleanupThread(); // just in case, to have a well defined post condition here
return;
}
existingSessionIfAny.close();
- currentSession.set(null);
- }
-
- @Override
- public IsisSession getCurrentSession() {
- return currentSession.get();
}
private IsisTransactionManager getCurrentSessionTransactionManager() {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
index 974749c..da72cda 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
@@ -22,21 +22,19 @@ package org.apache.isis.core.runtime.system.transaction;
import java.util.UUID;
import java.util.function.Supplier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.isis.applib.services.command.Command;
import org.apache.isis.applib.services.command.CommandContext;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactn.InteractionContext;
import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.core.commons.components.SessionScopedComponent;
import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.session.IsisSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-public class IsisTransactionManager implements SessionScopedComponent {
+public class IsisTransactionManager {
private static final Logger LOG = LoggerFactory.getLogger(IsisTransactionManager.class);
@@ -52,7 +50,6 @@ public class IsisTransactionManager implements SessionScopedComponent {
// -- constructor, fields
private final PersistenceSession persistenceSession;
- //private final AuthenticationSession authenticationSession;
private final ServiceInjector servicesInjector;
private final CommandContext commandContext;
@@ -60,7 +57,6 @@ public class IsisTransactionManager implements SessionScopedComponent {
public IsisTransactionManager(
final PersistenceSession persistenceSession,
- /*final AuthenticationSession authenticationSession,*/
final ServiceInjector servicesInjector) {
this.persistenceSession = persistenceSession;
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/MenuBarsResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/MenuBarsResourceServerside.java
index 7a1b923..d5b7f97 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/MenuBarsResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/MenuBarsResourceServerside.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
import org.apache.isis.applib.layout.links.Link;
import org.apache.isis.applib.layout.menubars.MenuBars;
import org.apache.isis.applib.services.menu.MenuBarsService;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.SystemConstants;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
@@ -73,7 +73,7 @@ public class MenuBarsResourceServerside extends ResourceAbstract implements Menu
final String objectType = actionLayoutData.getObjectType();
final String relativeUrl = String.format(
"objects/%s/%s/actions/%s",
- objectType, PersistenceSession.SERVICE_IDENTIFIER, actionLayoutData.getId());
+ objectType, SystemConstants.SERVICE_IDENTIFIER, actionLayoutData.getId());
Link link = new Link(
Rel.ACTION.getName(),
RestfulHttpMethod.GET.getJavaxRsMethod(),
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
index 402dea9..1c373ce 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
@@ -19,14 +19,6 @@
package org.apache.isis.viewer.wicket.viewer.integration.wicket;
-import javax.validation.constraints.NotNull;
-
-import org.apache.wicket.Session;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
-
import org.apache.isis.applib.clock.Clock;
import org.apache.isis.applib.services.session.SessionLoggingService;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -39,6 +31,11 @@ import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
+import org.apache.wicket.Session;
+import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.cycle.RequestCycle;
/**
* Viewer-specific implementation of {@link AuthenticatedWebSession}, which
@@ -46,7 +43,8 @@ import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
* also tracks thread usage (so that multiple concurrent requests are all
* associated with the same session).
*/
-public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession implements BreadcrumbModelProvider, BookmarkedPagesModelProvider {
+public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession
+implements BreadcrumbModelProvider, BookmarkedPagesModelProvider {
private static final long serialVersionUID = 1L;
@@ -160,7 +158,7 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
// /////////////////////////////////////////////////
protected AuthenticationManager getAuthenticationManager() {
- return getIsisSessionFactory().getAuthenticationManager();
+ return IsisContext.getAuthenticationManager();
}
// /////////////////////////////////////////////////
@@ -190,11 +188,11 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
}
- protected @NotNull SessionLoggingService getSessionLoggingService() {
+ protected SessionLoggingService getSessionLoggingService() {
try {
- final SessionLoggingService service = getIsisSessionFactory().getServiceInjector()
- .lookupService(SessionLoggingService.class)
- .orElseGet(SessionLoggingService.Stderr::new);
+ final SessionLoggingService service =
+ IsisContext.getServiceRegistry().lookupService(SessionLoggingService.class)
+ .orElseGet(SessionLoggingService.Stderr::new);
return service;
} catch (Exception e) {
// fallback to System.err
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
index 5d9cadf..f7fb460 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
@@ -19,14 +19,13 @@
package org.apache.isis.viewer.wicket.model.models;
-import org.apache.wicket.model.LoadableDetachableModel;
-
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.security.authentication.AuthenticationSession;
+import org.apache.wicket.model.LoadableDetachableModel;
/**
* Adapter for {@link LoadableDetachableModel}s, providing access to some of the
@@ -49,9 +48,10 @@ public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> {
// //////////////////////////////////////////////////////////////
protected AuthenticationSession getAuthenticationSession() {
- return getCurrentSession().getAuthenticationSession();
+ return IsisContext.getAuthenticationSession().orElse(null);
}
+ @Deprecated //TODO [2033] replace with ManagedObjectContext
public PersistenceSession getPersistenceSession() {
return getCurrentSession().getPersistenceSession();
}
@@ -65,7 +65,7 @@ public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> {
}
public SpecificationLoader getSpecificationLoader() {
- return getIsisSessionFactory().getSpecificationLoader();
+ return IsisContext.getSpecificationLoader();
}