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/10/30 15:40:35 UTC
[isis] branch v2 updated: ISIS-2158: changes the entry-point for
resolving Objects by rootOid
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new 2da1b67 ISIS-2158: changes the entry-point for resolving Objects by rootOid
2da1b67 is described below
commit 2da1b67a8268c878bcc97b160074ce6856bca369
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Oct 30 16:40:21 2019 +0100
ISIS-2158: changes the entry-point for resolving Objects by rootOid
---
.../apache/isis/metamodel/spec/ManagedObject.java | 1 +
.../org/apache/isis/wrapper/AsyncWrapDefault.java | 2 +-
.../isis/runtime/system/context/IsisContext.java | 19 ++-----------
.../config/internal/_Config_LifecycleResource.java | 2 +-
.../server/resources/ResourceAbstract.java | 2 +-
.../integration/wicket/WebRequestCycleForIsis.java | 2 +-
.../viewer/wicket/model/models/ActionModel.java | 4 +--
.../actionmenu/serviceactions/CssMenuItem.java | 2 +-
.../components/tree/IsisToWicketTreeAdapter.java | 33 ++++++++++++++--------
9 files changed, 30 insertions(+), 37 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 349bb86..6874dcd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -461,6 +461,7 @@ public interface ManagedObject {
return oidStr != null ? Oid.unmarshaller().splitInstanceId(oidStr): null;
}
+ // move this to ObjectManager?
static ManagedObject _adapterOfRootOid(SpecificationLoader specificationLoader, RootOid rootOid) {
val mmc = ((SpecificationLoaderDefault)specificationLoader).getMetaModelContext();
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/AsyncWrapDefault.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/AsyncWrapDefault.java
index 4f52214..163eed5 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/AsyncWrapDefault.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/AsyncWrapDefault.java
@@ -186,7 +186,7 @@ class AsyncWrapDefault<T> implements AsyncWrap<T> {
private <R> Future<R> submit(Supplier<R> actionInvocation) {
- val authenticationSession = IsisContext.getAuthenticationSession().get();
+ val authenticationSession = IsisContext.getCurrentAuthenticationSession().get();
Callable<R> asyncTask = ()->{
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/IsisContext.java
index b64d888..8343801 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/IsisContext.java
@@ -20,20 +20,15 @@ package org.apache.isis.runtime.system.context;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
import java.util.function.Supplier;
import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.specloader.validator.MetaModelInvalidException;
import org.apache.isis.runtime.system.persistence.PersistenceSession;
import org.apache.isis.runtime.system.session.IsisSession;
import org.apache.isis.runtime.system.session.IsisSessionFactory;
import org.apache.isis.security.authentication.AuthenticationSession;
-import lombok.val;
-
/**
* Provides static access to current context's singletons
* {@link MetaModelInvalidException} and {@link IsisSessionFactory}.
@@ -77,8 +72,8 @@ public interface IsisContext {
* @return framework's current AuthenticationSession (if any)
* @throws IllegalStateException - if IsisSessionFactory not resolvable
*/
- public static Optional<AuthenticationSession> getAuthenticationSession() {
- return getCurrentIsisSession()
+ public static Optional<AuthenticationSession> getCurrentAuthenticationSession() {
+ return IsisSession.current()
.map(IsisSession::getAuthenticationSession);
}
@@ -94,15 +89,5 @@ public interface IsisContext {
.getFirst();
}
- @Deprecated
- public static Function<RootOid, ObjectAdapter> rootOidToAdapter() {
- return rootOid -> {
- val ps = IsisContext.getPersistenceSession()
- .orElseThrow(()->new RuntimeException(new IllegalStateException(
- "There is no PersistenceSession on the current context.")));
- return ps.getObjectAdapterByIdProvider().adapterFor(rootOid);
- };
- }
-
}
diff --git a/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/config/internal/_Config_LifecycleResource.java b/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/config/internal/_Config_LifecycleResource.java
index a031bd6..1cff5bb 100644
--- a/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/config/internal/_Config_LifecycleResource.java
+++ b/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/config/internal/_Config_LifecycleResource.java
@@ -76,7 +76,7 @@ class _Config_LifecycleResource {
_Config_Parsers::parseFont,
_Config_Parsers::parseList);
- log.info("=== Config Finalized ===");
+ log.debug("=== Config Finalized ===");
return config;
diff --git a/core/viewer-restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index f3f48d9..0773275 100644
--- a/core/viewer-restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -96,7 +96,7 @@ public abstract class ResourceAbstract {
if (!IsisSession.isInSession()) {
throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
}
- if (IsisContext.getAuthenticationSession() == null) {
+ if (IsisContext.getCurrentAuthenticationSession() == null) {
throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
}
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
index c0023cf..0211bae 100644
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
@@ -390,7 +390,7 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
}
private AuthenticationSession getAuthenticationSession() {
- return IsisContext.getAuthenticationSession().orElse(null);
+ return IsisContext.getCurrentAuthenticationSession().orElse(null);
}
private MessageBroker getMessageBroker() {
diff --git a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 7883bd1..43043cf 100644
--- a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -67,7 +67,6 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.ObjectAction;
import org.apache.isis.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
@@ -399,8 +398,7 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
try {
val rootOid = RootOid.deStringEncoded(encoded);
- val rootOidToAdapter = IsisContext.rootOidToAdapter();
- return rootOidToAdapter.apply(rootOid);
+ return ManagedObject._adapterOfRootOid(super.getSpecificationLoader(), rootOid);
} catch (final Exception e) {
return null;
}
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
index 763fb52..ec49717 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
@@ -498,7 +498,7 @@ class CssMenuItem implements Serializable {
// //////////////////////////////////////////////////////////////
AuthenticationSession getAuthenticationSession() {
- return IsisContext.getAuthenticationSession().orElse(null);
+ return IsisContext.getCurrentAuthenticationSession().orElse(null);
}
}
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
index 36f724f..50c81cf 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
@@ -48,7 +48,7 @@ import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.functions._Functions;
import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ModelAbstract;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -233,20 +233,23 @@ class IsisToWicketTreeAdapter {
private static final long serialVersionUID = 1L;
private final Class<? extends TreeAdapter> treeAdapterClass;
+
private transient TreeAdapter wrappedTreeAdapter;
-
- private final transient IsisWebAppCommonContext commonContext;
- private final transient FactoryService factoryService;
- private final transient Function<Object, ManagedObject> pojoToAdapter;
+ private transient IsisWebAppCommonContext commonContext;
+ private transient FactoryService factoryService;
+ private transient Function<Object, ManagedObject> pojoToAdapter;
private TreeModelTreeAdapter(
IsisWebAppCommonContext commonContext,
Class<? extends TreeAdapter> treeAdapterClass) {
-
- this.commonContext = commonContext;
- this.treeAdapterClass = treeAdapterClass;
+ this.treeAdapterClass = treeAdapterClass;
+ init(commonContext);
+ }
+
+ private void init(IsisWebAppCommonContext commonContext) {
+ this.commonContext = commonContext;
this.factoryService = commonContext.lookupServiceElseFail(FactoryService.class);
this.pojoToAdapter = pojo ->
ManagedObject.of(commonContext.getSpecificationLoader()::loadSpecification, pojo);
@@ -257,6 +260,7 @@ class IsisToWicketTreeAdapter {
return wrappedTreeAdapter;
}
try {
+ ensureInit(); // in case we were de-serialzed
return wrappedTreeAdapter = factoryService.instantiate(treeAdapterClass);
} catch (Exception e) {
throw new RuntimeException("failed to instantiate tree adapter", e);
@@ -291,6 +295,7 @@ class IsisToWicketTreeAdapter {
private TreeModel wrap(Object pojo, TreePath treePath) {
requires(pojo, "pojo");
+ ensureInit(); // in case we were de-serialzed
val objectAdapter = pojoToAdapter.apply(pojo);
return new TreeModel(commonContext, objectAdapter, treePath);
}
@@ -304,7 +309,13 @@ class IsisToWicketTreeAdapter {
return _Functions.indexAwareToFunction((indexWithinSiblings, pojo)->
wrap(pojo, parent.getTreePath().append(indexWithinSiblings)));
}
-
+
+ // in case we were de-serialzed
+ private void ensureInit() {
+ if(commonContext!=null) return;
+ init(CommonContextUtils.getCommonContext());
+ }
+
}
// -- WICKET'S TREE PROVIDER (FOR TREES OF TREE-MODEL NODES)
@@ -402,9 +413,7 @@ class IsisToWicketTreeAdapter {
protected TreeModel load() {
val rootOid = id;
- val rootOidToAdapter = IsisContext.rootOidToAdapter();
-
- val objAdapter = rootOidToAdapter.apply(rootOid);
+ val objAdapter = ManagedObject._adapterOfRootOid(commonContext.getSpecificationLoader(), rootOid);
if(objAdapter==null) {
throw new NoSuchElementException(
String.format("Tree creation: could not recreate TreeModel from Oid: '%s'", id));