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 2014/11/07 04:46:50 UTC
[26/29] isis git commit: ISIS-939: simplifying PersistenceSession
ISIS-939: simplifying PersistenceSession
- removing PersistenceSession#resolveField (introduce ResolveFieldUtil for scimpi to call), also from the *ObjectStore impls
- remove Persistor interface, instead PersistenceSession everywhere
- remove ToPersistObjectSet interface, instead PersistenceSession everywhere
- remove RecreatedPojoRemapper interface, instead PersistenceSession everywhere
- remove EnlistedObjectDirtying interface, instead PersistenceSession everywhere
- remove ObjectAdapterMemento#getTitleHint() and #captureTitleHintIfPossible()
- re-introduce MessageBroker's #getApplicationError and #setApplicationError
- remove ObjectAdapter#isTitleAvailable() and from PojoAdapter
- removed commented out lines in ResolveState
- simplify PersistenceSession (remove #mapRecreatedPojo, #remapRecreatedPojo)
- introduce PersistenceQueryFactory from PersistenceSession
- PersistenceSession creates IsisTransactionManager in its constructor
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/5f8fca9b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/5f8fca9b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/5f8fca9b
Branch: refs/heads/ISIS-939
Commit: 5f8fca9b9c13c0f2f81caccdbb247154e7b25cc7
Parents: bea5a02
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 3 22:55:07 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:19:00 2014 +0000
----------------------------------------------------------------------
.../dispatcher/AbstractObjectProcessor.java | 3 +-
.../scimpi/dispatcher/ResolveFieldUtil.java | 71 ++++
.../dispatcher/context/RequestContext.java | 13 +-
.../dispatcher/view/collection/Collection.java | 5 +-
.../view/display/AbstractTableView.java | 10 +-
.../dispatcher/view/display/LongFormView.java | 5 +-
.../scimpi/dispatcher/view/edit/EditObject.java | 3 +-
.../view/simple/AbstractConditionalBlock.java | 10 +-
.../dispatcher/view/simple/AbstractLink.java | 3 +-
.../dispatcher/view/simple/RemoveElement.java | 7 +-
.../model/isis/PersistenceSessionProvider.java | 5 +-
.../model/mementos/ObjectAdapterMemento.java | 21 --
.../viewer/wicket/model/models/EntityModel.java | 10 -
.../wicket/model/models/ModelAbstract.java | 4 +-
.../FormComponentPanelAbstract.java | 24 +-
.../viewer/wicket/ui/panels/FormAbstract.java | 8 +-
.../viewer/wicket/ui/panels/PanelAbstract.java | 21 +-
.../integtestsupport/IsisSystemForTest.java | 7 +-
.../commons/authentication/MessageBroker.java | 11 +
.../core/metamodel/adapter/ObjectAdapter.java | 2 -
.../core/metamodel/adapter/ResolveState.java | 59 +---
.../metamodel/adapter/mgr/AdapterManager.java | 8 +-
.../core/objectstore/InMemoryObjectStore.java | 11 +-
.../internal/ObjectStoreInstances.java | 2 +-
.../ObjectFixtureFilePersistor.java | 17 +-
.../fixtures/FixturesInstallerDelegate.java | 5 +-
.../isis/core/runtime/memento/Memento.java | 2 +-
.../persistence/adapter/PojoAdapter.java | 7 -
.../adaptermanager/AdapterManagerDefault.java | 24 +-
.../objectstore/algorithm/PersistAlgorithm.java | 3 +-
.../algorithm/PersistAlgorithmDefault.java | 5 +-
.../PersistAlgorithmForDataNucleus.java | 5 +-
.../algorithm/PersistAlgorithmUnified.java | 5 +-
.../algorithm/ToPersistObjectSet.java | 45 ---
...shingServiceWithDefaultPayloadFactories.java | 2 +-
.../runtime/system/persistence/ObjectStore.java | 12 +-
.../persistence/PersistenceQueryFactory.java | 103 ++++++
.../system/persistence/PersistenceSession.java | 346 +++++++------------
.../persistence/PersistenceSessionFactory.java | 7 +-
.../runtime/system/persistence/Persistor.java | 231 -------------
.../persistence/RecreatedPojoRemapper.java | 52 ---
.../transaction/EnlistedObjectDirtying.java | 49 ---
.../jdo/datanucleus/DataNucleusObjectStore.java | 28 +-
.../persistence/FrameworkSynchronizer.java | 13 +-
.../PersistenceQueryProcessorAbstract.java | 7 +-
.../algorithm/PersistAlgorithmContractTest.java | 3 +-
.../persistence/PersistenceSessionTest.java | 3 +-
.../IsisSystemWithFixtures.java | 7 +-
48 files changed, 427 insertions(+), 877 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/AbstractObjectProcessor.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/AbstractObjectProcessor.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/AbstractObjectProcessor.java
index d163bc1..97dd1ed 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/AbstractObjectProcessor.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/AbstractObjectProcessor.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.scimpi.dispatcher;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
public abstract class AbstractObjectProcessor extends AbstractElementProcessor {
@@ -38,7 +37,7 @@ public abstract class AbstractObjectProcessor extends AbstractElementProcessor {
if (error != null) {
throw new ScimpiException("Field " + objectField.getId() + " " + error);
}
- IsisContext.getPersistenceSession().resolveField(object, objectField);
+ ResolveFieldUtil.resolveField(object, objectField);
object = objectField.get(object);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/ResolveFieldUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/ResolveFieldUtil.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/ResolveFieldUtil.java
new file mode 100644
index 0000000..a0ae5cf
--- /dev/null
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/ResolveFieldUtil.java
@@ -0,0 +1,71 @@
+/*
+ * 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.viewer.scimpi.dispatcher;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+
+public final class ResolveFieldUtil {
+
+ private ResolveFieldUtil(){}
+
+ /**
+ * Walking the graph.
+ *
+ * <p>
+ * This combines the implementations of both the DN Objectstore
+ * and also the in-memory objectstore.
+ * </p>
+ */
+ public static void resolveField(final ObjectAdapter object, final ObjectAssociation association) {
+
+
+ // DN impl.
+ {
+ final ObjectAdapter referencedCollectionAdapter = association.get(object);
+
+ // this code originally brought in from the JPA impl, but seems reasonable.
+ if (association.isOneToManyAssociation()) {
+ ensureThatState(referencedCollectionAdapter, is(notNullValue()));
+
+ final Object referencedCollection = referencedCollectionAdapter.getObject();
+ ensureThatState(referencedCollection, is(notNullValue()));
+
+ // if a proxy collection, then force it to initialize. just 'touching' the object is sufficient.
+ // REVIEW: I wonder if this is actually needed; does JDO use proxy collections?
+ referencedCollection.hashCode();
+ }
+
+ // the JPA impl used to also call its lifecycle listener on the referenced collection object, eg List,
+ // itself. I don't think this makes sense to do for JDO (the collection is not a PersistenceCapable).
+ }
+
+ // In-memory objectstore impl
+ {
+ final ObjectAdapter referenceAdapter = association.get(object);
+ referenceAdapter.markAsResolvedIfPossible();
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java
index fc36d15..183a0b2 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/context/RequestContext.java
@@ -23,19 +23,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.TreeSet;
-
import com.google.common.collect.Maps;
-
import org.apache.commons.lang.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.commons.factory.InstanceUtil;
@@ -50,7 +43,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
import org.apache.isis.viewer.scimpi.dispatcher.ErrorCollator;
import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
@@ -853,7 +846,7 @@ public abstract class RequestContext {
}
- protected Persistor getPersistenceSession() {
+ protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/collection/Collection.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/collection/Collection.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/collection/Collection.java
index 5a561b6..1002c9f 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/collection/Collection.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/collection/Collection.java
@@ -20,12 +20,11 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.collection;
import java.util.Iterator;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.ResolveFieldUtil;
import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
@@ -48,7 +47,7 @@ public class Collection extends AbstractElementProcessor {
if (!objectField.isOneToManyAssociation()) {
throw new ScimpiException("Field " + objectField.getId() + " is not a collection");
}
- IsisContext.getPersistenceSession().resolveField(object, objectField);
+ ResolveFieldUtil.resolveField(object, objectField);
collection = objectField.get(object);
} else {
final String id = request.getOptionalProperty(COLLECTION);
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
index 26df958..286d84d 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
@@ -21,17 +21,17 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.display;
import java.util.Iterator;
import java.util.List;
-
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.ResolveFieldUtil;
import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
@@ -68,7 +68,7 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
throw new ScimpiException("Field " + objectField.getId() + " is not a collection");
}
isFieldEditable = objectField.isUsable(IsisContext.getAuthenticationSession(), object, where).isAllowed();
- getPersistenceSession().resolveField(object, objectField);
+ ResolveFieldUtil.resolveField(object, objectField);
collection = objectField.get(object);
final TypeOfFacet facet = objectField.getFacet(TypeOfFacet.class);
elementSpec = facet.valueSpec();
@@ -94,7 +94,7 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
}
- protected Persistor getPersistenceSession() {
+ protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
index 5630bcb..1efad45 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
@@ -20,12 +20,11 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.display;
import java.util.List;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.scimpi.dispatcher.ResolveFieldUtil;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
import org.apache.isis.viewer.scimpi.dispatcher.view.display.TableView.SimpleTableBuilder;
import org.apache.isis.viewer.scimpi.dispatcher.view.field.LinkedObject;
@@ -43,7 +42,7 @@ public class LongFormView extends AbstractFormView {
rowClasses = rowClassesList.split("[,|/]");
}
int noColumns;
- IsisContext.getPersistenceSession().resolveField(object, field);
+ ResolveFieldUtil.resolveField(object, field);
final ObjectAdapter collection = field.get(object);
final ObjectSpecification elementSpec = collection.getElementSpecification();
final List<ObjectAssociation> fields = elementSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES);
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
index 4117ee7..deafb1a 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
@@ -34,6 +34,7 @@ import org.apache.isis.core.metamodel.facets.object.choices.enums.EnumFacet;
import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueFacet;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.ResolveFieldUtil;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
import org.apache.isis.viewer.scimpi.dispatcher.edit.EditAction;
@@ -215,7 +216,7 @@ public class EditObject extends AbstractElementProcessor {
final String fieldName = inputField.getName();
final ObjectAssociation field = object.getSpecification().getAssociation(fieldName);
if (field.isVisible(IsisContext.getAuthenticationSession(), object, where).isAllowed()) {
- IsisContext.getPersistenceSession().resolveField(object, field);
+ ResolveFieldUtil.resolveField(object, field);
final ObjectAdapter fieldValue = field.get(object);
if (inputField.isEditable()) {
final String value = getValue(context, fieldValue);
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractConditionalBlock.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractConditionalBlock.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractConditionalBlock.java
index a17fcdb..dc5b39a 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractConditionalBlock.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractConditionalBlock.java
@@ -22,14 +22,13 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.simple;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filters;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -37,6 +36,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
+import org.apache.isis.viewer.scimpi.dispatcher.ResolveFieldUtil;
import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
import org.apache.isis.viewer.scimpi.dispatcher.util.MethodsUtils;
@@ -494,7 +494,8 @@ class TestFieldSet extends Test {
boolean test(final Request request, final String attributeName, final String targetId) {
final ObjectAdapter object = MethodsUtils.findObject(request.getContext(), targetId);
final ObjectAssociation objectField = findProperty(attributeName, object);
- IsisContext.getPersistenceSession().resolveField(object, objectField);
+
+ ResolveFieldUtil.resolveField(object, objectField);
final ObjectAdapter fld = objectField.get(object);
if (fld != null) {
final Object fieldValue = fld.getObject();
@@ -523,7 +524,7 @@ class TestFieldValue extends Test {
final ObjectAdapter object = MethodsUtils.findObject(request.getContext(), targetId);
final ObjectAssociation objectField = findProperty(fieldName, object);
- IsisContext.getPersistenceSession().resolveField(object, objectField);
+ ResolveFieldUtil.resolveField(object, objectField);
final ObjectAdapter fld = objectField.get(object);
// TODO test for reference or value
@@ -561,3 +562,4 @@ class TestSet extends Test {
return valuePresent;
}
}
+
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractLink.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractLink.java
index 743be2d..b6798be 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractLink.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/AbstractLink.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
+import org.apache.isis.viewer.scimpi.dispatcher.ResolveFieldUtil;
import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
@@ -63,7 +64,7 @@ public abstract class AbstractLink extends AbstractElementProcessor {
if (field.isVisible(IsisContext.getAuthenticationSession(), adapter, where).isVetoed()) {
throw new ForbiddenException(field, ForbiddenException.VISIBLE);
}
- IsisContext.getPersistenceSession().resolveField(adapter, field);
+ ResolveFieldUtil.resolveField(adapter, field);
adapter = field.get(adapter);
if (adapter != null) {
objectId = context.mapObject(adapter, Scope.INTERACTION);
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
index 56ed442..3321b87 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
@@ -30,10 +30,7 @@ import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
-import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
-import org.apache.isis.viewer.scimpi.dispatcher.ForbiddenException;
-import org.apache.isis.viewer.scimpi.dispatcher.ScimpiException;
+import org.apache.isis.viewer.scimpi.dispatcher.*;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
import org.apache.isis.viewer.scimpi.dispatcher.edit.RemoveAction;
@@ -90,7 +87,7 @@ public class RemoveElement extends AbstractElementProcessor {
if (field.isVisible(IsisContext.getAuthenticationSession(), adapter, where).isVetoed()) {
throw new ForbiddenException(field, ForbiddenException.VISIBLE);
}
- IsisContext.getPersistenceSession().resolveField(adapter, field);
+ ResolveFieldUtil.resolveField(adapter, field);
Consent usable = field.isUsable(IsisContext.getAuthenticationSession(), adapter, where);
if (usable.isAllowed()) {
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
index 2c210a3..3c6d78f 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/PersistenceSessionProvider.java
@@ -19,9 +19,10 @@
package org.apache.isis.viewer.wicket.model.isis;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
public interface PersistenceSessionProvider {
- Persistor getPersistenceSession();
+ PersistenceSession getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
index 72658fd..107bde0 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
@@ -236,7 +236,6 @@ public class ObjectAdapterMemento implements Serializable {
final ObjectSpecification specification = adapter.getSpecification();
objectSpecId = specification.getSpecId();
init(adapter);
- captureTitleHintIfPossible();
}
private void init(final ObjectAdapter adapter) {
@@ -267,26 +266,6 @@ public class ObjectAdapterMemento implements Serializable {
}
-
- public void captureTitleHintIfPossible() {
- if (this.titleHint != null) {
- return;
- }
-
- // REVIEW: this check is because Wicket 6.0.0 seems to call onEndRequest prior to onDetach
- // so by the time we get here, there is no session to use...
- if(IsisContext.inSession()) {
- ObjectAdapter objectAdapter = this.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
- if (objectAdapter.isTitleAvailable()) {
- this.titleHint = objectAdapter.titleString();
- }
- }
- }
-
- public String getTitleHint() {
- return titleHint;
- }
-
/**
* Lazily looks up {@link ObjectAdapter} if required.
*
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 2faca9b..a2ec3df 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -357,16 +357,6 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
adapterMemento = ObjectAdapterMemento.createOrNull(adapter);
}
- @Override
- public void detach() {
- if (isAttached()) {
- if (adapterMemento != null) {
- adapterMemento.captureTitleHintIfPossible();
- }
- }
- super.detach();
- }
-
// //////////////////////////////////////////////////////////
// PropertyModels
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
index 24361af..4556cd2 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
/**
* Adapter for {@link LoadableDetachableModel}s, providing access to some of the
@@ -50,7 +50,7 @@ public abstract class ModelAbstract<T> extends LoadableDetachableModel<T> {
return IsisContext.getAuthenticationSession();
}
- protected Persistor getPersistenceSession() {
+ protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
index 785f473..59f152e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
@@ -20,20 +20,18 @@
package org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent;
import java.util.List;
-
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.wicket.model.IModel;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
import org.apache.isis.viewer.wicket.ui.ComponentType;
@@ -52,18 +50,6 @@ public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T
private ComponentType componentType;
- public FormComponentPanelAbstract(final ComponentType componentType) {
- this(componentType, null);
- }
-
- public FormComponentPanelAbstract(final String id) {
- this(id, null);
- }
-
- public FormComponentPanelAbstract(final ComponentType componentType, final IModel<T> model) {
- this(componentType.getWicketId(), model);
- }
-
public FormComponentPanelAbstract(final String id, final IModel<T> model) {
super(id, model);
this.componentType = ComponentType.lookup(id);
@@ -156,19 +142,15 @@ public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T
// ///////////////////////////////////////////////////////////////////
@Override
- public Persistor getPersistenceSession() {
+ public PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
protected List<ObjectAdapter> getServices() {
- return IsisContext.getPersistenceSession().getServices();
+ return getPersistenceSession().getServices();
}
- protected List<ObjectAdapter> getServiceAdapters() {
- return IsisContext.getPersistenceSession().getServices();
- }
-
// /////////////////////////////////////////////////
// *Provider impl.
// /////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
index 048e25f..c98db31 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
@@ -134,12 +134,8 @@ public abstract class FormAbstract<T> extends Form<T> implements IHeaderContribu
// Dependencies (from IsisContext)
// ///////////////////////////////////////////////////////////////////
- public IsisContext getIsisContext() {
- return IsisContext.getInstance();
- }
-
@Override
- public Persistor getPersistenceSession() {
+ public PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index 4667b12..690a0ff 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -19,10 +19,6 @@
package org.apache.isis.viewer.wicket.ui.panels;
-import java.util.List;
-
-import com.google.inject.Inject;
-
import org.apache.wicket.Component;
import org.apache.wicket.Session;
import org.apache.wicket.markup.head.IHeaderResponse;
@@ -30,14 +26,12 @@ import org.apache.wicket.markup.html.IHeaderContributor;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.CssResourceReference;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
import org.apache.isis.viewer.wicket.model.isis.PersistenceSessionProvider;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -160,25 +154,18 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
}
// ///////////////////////////////////////////////////////////////////
- // Dependencies (from IsisContext
+ // Dependencies (from IsisContext)
// ///////////////////////////////////////////////////////////////////
- public IsisContext getIsisContext() {
- return IsisContext.getInstance();
- }
-
@Override
- public Persistor getPersistenceSession() {
+ public PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
public AdapterManager getAdapterManager() {
- return IsisContext.getPersistenceSession().getAdapterManager();
+ return getPersistenceSession().getAdapterManager();
}
- protected List<ObjectAdapter> getServiceAdapters() {
- return IsisContext.getPersistenceSession().getServices();
- }
// /////////////////////////////////////////////////
// Dependency Injection
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
index 66ac70c..03fce17 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java
@@ -52,7 +52,6 @@ import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.ObjectStore;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction.State;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
@@ -547,7 +546,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
public ObjectAdapter reload(RootOid oid) {
ensureSessionInProgress();
- final Persistor persistenceSession = getPersistenceSession();
+ final PersistenceSession persistenceSession = getPersistenceSession();
return persistenceSession.loadObject(oid);
}
@@ -560,7 +559,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
ensureSessionInProgress();
ensureObjectIsNotPersistent(pojo);
final ObjectAdapter adapter = adapterFor(pojo);
- getPersistenceSession().remapAsPersistent(adapter, persistentOid);
+ getPersistenceSession().getAdapterManager().remapAsPersistent(adapter, persistentOid);
return adapter;
}
@@ -803,7 +802,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
return getPersistenceSession().getTransactionManager();
}
- public Persistor getPersistor() {
+ public PersistenceSession getPersistor() {
return getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
index 12d5068..dc36cce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/MessageBroker.java
@@ -33,6 +33,7 @@ public class MessageBroker implements Serializable, DebuggableWithTitle {
private final List<String> messages = Lists.newArrayList();
private final List<String> warnings = Lists.newArrayList();
+ private String applicationError;
//region > acquire (factory method)
@@ -57,6 +58,7 @@ public class MessageBroker implements Serializable, DebuggableWithTitle {
public void reset() {
warnings.clear();
messages.clear();
+ applicationError = null;
}
//endregion
@@ -85,6 +87,14 @@ public class MessageBroker implements Serializable, DebuggableWithTitle {
//endregion
+ public String getApplicationError() {
+ return applicationError;
+ }
+
+ public void setApplicationError(String applicationError) {
+ this.applicationError = applicationError;
+ }
+
//region > debugging
@Override
@@ -120,6 +130,7 @@ public class MessageBroker implements Serializable, DebuggableWithTitle {
messages.clear();
return copy;
}
+
//endregion
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index 6dc619a..1954b3e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -208,11 +208,9 @@ public interface ObjectAdapter extends Instance, org.apache.isis.applib.annotati
boolean canTransitionToResolving();
- boolean isTitleAvailable();
void markAsResolvedIfPossible();
-
Version getVersion();
void setVersion(Version version);
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ResolveState.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ResolveState.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ResolveState.java
index f5beaf9..fbf1fe6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ResolveState.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ResolveState.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.adapter;
+import java.util.*;
+import com.google.common.collect.Maps;
+
import static org.apache.isis.core.metamodel.adapter.ResolveState.RepresentsPersistent.DOES_NOT_REPRESENT_PERSISTENT;
import static org.apache.isis.core.metamodel.adapter.ResolveState.RepresentsPersistent.REPRESENTS_PERSISTENT;
import static org.apache.isis.core.metamodel.adapter.ResolveState.RespondsToChanges.DOES_NOT_RESPOND_TO_CHANGES;
@@ -26,14 +29,6 @@ import static org.apache.isis.core.metamodel.adapter.ResolveState.RespondsToChan
import static org.apache.isis.core.metamodel.adapter.ResolveState.TransitionFrom.CANNOT_TRANSITION_FROM;
import static org.apache.isis.core.metamodel.adapter.ResolveState.TransitionFrom.CAN_TRANSITION_FROM;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
-import com.google.common.collect.Maps;
-
public final class ResolveState {
private static final Map<String, ResolveState> statesByName = Maps.newHashMap();
@@ -61,40 +56,6 @@ public final class ResolveState {
public static final ResolveState DESTROYED = new ResolveState("Destroyed", "D~~", null, CANNOT_TRANSITION_FROM, RESPONDS_TO_CHANGES, DOES_NOT_REPRESENT_PERSISTENT);
public static final ResolveState VALUE = new ResolveState("Value", "V~~", null, CANNOT_TRANSITION_FROM, RESPONDS_TO_CHANGES, DOES_NOT_REPRESENT_PERSISTENT);
- // 20120709: used only in <tt>Memento</tt>, when recreating a transient object.
- // however, analysis is that could equally set to TRANSIENT, rendering this state
- // surplus to requirements.
- // public static final ResolveState SERIALIZING_TRANSIENT = new ResolveState("Serializing Transient", "T~S", TRANSIENT, CANNOT_TRANSITION_FROM, DOES_NOT_RESPOND_TO_CHANGES, REPRESENTS_TRANSIENT, DOES_NOT_REPRESENT_PERSISTENT);
-
- // no longer seem to be used
-
- // public static final ResolveState PART_RESOLVED = new
- // ResolveState("Part Resolved", "Pr~~", null, RESOLVABLE_FROM,
- // NOT_RESOLVABLE_INTO, RESPONDS_TO_CHANGES, DOES_NOT_REPRESENT_TRANSIENT,
- // REPRESENTS_PERSISTENT, DOES_NOT_REPRESENT_RESOLVING, COULD_RESOLVE);
- // public static final ResolveState RESOLVING_PART = new
- // ResolveState("Resolving Part", "P~r~", PART_RESOLVED,
- // NOT_RESOLVABLE_FROM, RESOLVABLE_INTO, DOES_NOT_RESPOND_TO_CHANGES,
- // DOES_NOT_REPRESENT_TRANSIENT, REPRESENTS_PERSISTENT,
- // REPRESENTS_RESOLVING, COULD_RESOLVE);
-
- // no longer appear to be needed following the removal of remoting support.
-
- // public static final ResolveState SERIALIZING_GHOST = new
- // ResolveState("Serializing Ghost", "PG~S", GHOST, NOT_RESOLVABLE_FROM,
- // NOT_RESOLVABLE_INTO, DOES_NOT_RESPOND_TO_CHANGES,
- // DOES_NOT_REPRESENT_TRANSIENT, REPRESENTS_PERSISTENT,
- // DOES_NOT_REPRESENT_RESOLVING, COULD_RESOLVE);
- // public static final ResolveState SERIALIZING_PART_RESOLVED = new
- // ResolveState("Serializing Part Resolved", "Pr~S", PART_RESOLVED,
- // NOT_RESOLVABLE_FROM, NOT_RESOLVABLE_INTO, DOES_NOT_RESPOND_TO_CHANGES,
- // DOES_NOT_REPRESENT_TRANSIENT, REPRESENTS_PERSISTENT,
- // DOES_NOT_REPRESENT_RESOLVING,
- // COULD_RESOLVE);
-
- // 20120709: only used in <tt>DefaultPersistAlgorithm</tt>
- // able to remove because, after refactoring simplifications, ended up as equivalent to UPDATING.
- // public static final ResolveState SERIALIZING_RESOLVED = new ResolveState("Serializing Resolved", "PRS", RESOLVED, CANNOT_TRANSITION_FROM, DOES_NOT_RESPOND_TO_CHANGES, DOES_NOT_REPRESENT_TRANSIENT, REPRESENTS_PERSISTENT);
/**
@@ -104,28 +65,14 @@ public final class ResolveState {
public static Map<ResolveState, ResolveState[]> changeToStatesByState = new HashMap<ResolveState, ResolveState[]>() {
private static final long serialVersionUID = 1L;
{
- // previously also RESOLVING_PART and SERIALIZING_GHOST
put(GHOST, new ResolveState[] { DESTROYED, RESOLVING, UPDATING });
put(NEW, new ResolveState[] { TRANSIENT, GHOST, VALUE });
- // previously also SERIALIZING_TRANSIENT
put(TRANSIENT, new ResolveState[] { RESOLVED });
put(RESOLVING, new ResolveState[] { RESOLVED });
- // previously also SERIALIZING_RESOLVED
put(RESOLVED, new ResolveState[] { GHOST, UPDATING, DESTROYED });
- //put(SERIALIZING_RESOLVED, new ResolveState[] { RESOLVED });
- //put(SERIALIZING_TRANSIENT, new ResolveState[] { TRANSIENT });
put(UPDATING, new ResolveState[] { RESOLVED });
put(DESTROYED, new ResolveState[] {});
put(VALUE, new ResolveState[] {});
-
- // put(PART_RESOLVED, new ResolveState[] { RESOLVING , UPDATING,
- // DESTROYED , RESOLVING_PART, SERIALIZING_PART_RESOLVED });
- // put(RESOLVING_PART, new ResolveState[] { PART_RESOLVED, RESOLVED
- // });
- // put(SERIALIZING_GHOST, new ResolveState[] { GHOST });
- // put(SERIALIZING_PART_RESOLVED, new ResolveState[] { PART_RESOLVED
- // });
-
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
index 03423d1..8ebae19 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
@@ -121,7 +121,7 @@ public interface AdapterManager extends Injectable {
ConcurrencyChecking.concurrencyChecking.set(prior);
}
}
-
+
/**
* Allows a caller to temporarily disable concurrency checking for the current thread.
*/
@@ -140,7 +140,7 @@ public interface AdapterManager extends Injectable {
/**
* As per {@link #adapterFor(TypedOid, ConcurrencyChecking)}, with
- * {@value org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking#NO_CHECK no checking}.
+ * {@link org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking#NO_CHECK no checking}.
*
* <p>
* This method will <i>always</i> return an object, possibly indicating it is persistent; so make sure that you
@@ -162,7 +162,7 @@ public interface AdapterManager extends Injectable {
* {@link Oid#isTransient() transient} object.
*
* <p>
- * The pojo itself is recreated by delegating to a {@link PojoRecreator} implementation.
+ * The pojo itself is recreated by delegating to a {@link org.apache.isis.core.metamodel.adapter.mgr.AdapterManager}.
* The default impl just uses the {@link ObjectSpecification#createObject()};
* however object stores (eg JDO/DataNucleus) can provide alternative implementations
* in order to ensure that the created pojo is attached to a persistence context.
@@ -182,7 +182,7 @@ public interface AdapterManager extends Injectable {
* will be {@link TypedOid#setVersion(org.apache.isis.core.metamodel.adapter.version.Version) set} to the current
* value. This allows the client to retry if they wish.
*
- * @throws {@link ObjectNotFoundException} if the object does not exist.
+ * @throws {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} if the object does not exist.
*/
ObjectAdapter adapterFor(TypedOid oid, ConcurrencyChecking concurrencyChecking);
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
index 58a426c..53e3775 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
@@ -128,7 +128,7 @@ public class InMemoryObjectStore implements ObjectStore {
// this could happen if we rehydrate a persisted object that
// depends on another persisted object
// not yet rehydrated.
- getPersistenceSession().removeAdapter(existingAdapterLookedUpByPojo);
+ getPersistenceSession().getAdapterManager().removeAdapter(existingAdapterLookedUpByPojo);
}
final ObjectAdapter existingAdapterLookedUpByOid = getAdapterManager().getAdapterFor(oid);
@@ -136,7 +136,7 @@ public class InMemoryObjectStore implements ObjectStore {
throw new IsisException("A mapping already exists for " + oid + ": " + existingAdapterLookedUpByOid);
}
- final ObjectAdapter recreatedAdapter = getPersistenceSession().mapRecreatedPojo(oid, pojo);
+ final ObjectAdapter recreatedAdapter = getPersistenceSession().getAdapterManager().mapRecreatedPojo(oid, pojo);
final Version version = objectStoreInstances.getVersion(oid);
recreatedAdapter.setVersion(version);
@@ -266,13 +266,6 @@ public class InMemoryObjectStore implements ObjectStore {
adapter.markAsResolvedIfPossible();
}
- @Override
- public void resolveField(final ObjectAdapter object, final ObjectAssociation field) throws ObjectPersistenceException {
- final ObjectAdapter referenceAdapter = field.get(object);
- referenceAdapter.markAsResolvedIfPossible();
- }
-
-
// ///////////////////////////////////////////////////////
// getInstances, hasInstances
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java
index 028dffb..b24f332 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java
@@ -140,7 +140,7 @@ public class ObjectStoreInstances {
if (adapterLookedUpByOid != null) {
return adapterLookedUpByOid;
}
- return getPersistenceSession().mapRecreatedPojo(oid, pojo);
+ return getPersistenceSession().getAdapterManager().mapRecreatedPojo(oid, pojo);
}
// ///////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
index 934ecbe..90ac06e 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureFilePersistor.java
@@ -19,20 +19,10 @@
package org.apache.isis.core.runtime.fixturedomainservice;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
+import java.io.*;
+import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
@@ -46,7 +36,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
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.Persistor;
public class ObjectFixtureFilePersistor {
@@ -216,7 +205,7 @@ class LoadedObjects {
}
- protected Persistor getPersistenceSession() {
+ protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
index 9dd3556..868c498 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.runtime.system.DeploymentType;
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.Persistor;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
/**
@@ -147,7 +146,7 @@ public class FixturesInstallerDelegate {
/**
* Hook - default does nothing.
*/
- protected void preInstallFixtures(final Persistor persistenceSession) {
+ protected void preInstallFixtures(final PersistenceSession persistenceSession) {
}
// ///////////////////////////////////////
@@ -238,7 +237,7 @@ public class FixturesInstallerDelegate {
/**
* Hook - default does nothing.
*/
- protected void postInstallFixtures(final Persistor persistenceSession) {
+ protected void postInstallFixtures(final PersistenceSession persistenceSession) {
}
// /////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
index dd384d5..b470119 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
@@ -197,7 +197,7 @@ public class Memento implements Serializable {
if (spec.isParentedOrFreeCollection()) {
final Object recreatedPojo = spec.createObject();
- adapter = getPersistenceSession().mapRecreatedPojo(oid, recreatedPojo);
+ adapter = getPersistenceSession().getAdapterManager() .mapRecreatedPojo(oid, recreatedPojo);
populateCollection(adapter, (CollectionData) data);
} else {
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 08b6af4..8df358b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -234,13 +234,6 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
return aggregateResolveState().canTransitionToResolving();
}
-
- @Override
- public boolean isTitleAvailable() {
- final ResolveState resolveState = aggregateResolveState();
- return resolveState.isValue() || resolveState.isResolved();
- }
-
/**
* If {@link #isGhost()}, then will become resolved.
*/
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
index 6f180d7..c9f685c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
@@ -57,7 +57,6 @@ import org.apache.isis.core.runtime.persistence.PojoRecreationException;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.OidGenerator;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.RecreatedPojoRemapper;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
import static org.hamcrest.CoreMatchers.*;
@@ -77,7 +76,6 @@ import static org.hamcrest.CoreMatchers.*;
* maps to an {@link ObjectAdapter adapter} and these are reused.
*/
public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAdapter>,
- RecreatedPojoRemapper,
SessionScopedComponent,
DebuggableWithTitle,
Resettable {
@@ -366,7 +364,6 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
return adapter;
}
- @Override
public void remapRecreatedPojo(ObjectAdapter adapter, final Object pojo) {
removeAdapter(adapter);
adapter.replacePojo(pojo);
@@ -374,7 +371,26 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
}
- @Override
+ /**
+ * Either returns an existing {@link ObjectAdapter adapter} (as per
+ * {@link #getAdapterFor(Object)} or {@link #getAdapterFor(Oid)}), otherwise
+ * re-creates an adapter with the specified (persistent) {@link Oid}.
+ *
+ * <p>
+ * Typically called when the {@link Oid} is already known, that is, when
+ * resolving an already-persisted object. Is also available for
+ * <tt>Memento</tt> support however, so {@link Oid} could also represent a
+ * {@link Oid#isTransient() transient} object.
+ *
+ * <p>
+ * If the {@link ObjectAdapter adapter} is recreated, its
+ * {@link ResolveState} will be set to either
+ * {@link ResolveState#TRANSIENT} or {@link ResolveState#GHOST} based on
+ * whether the {@link Oid} is {@link Oid#isTransient() transient} or not.
+ *
+ * @param oid
+ * @param recreatedPojo - already known to the object store impl, or a service
+ */
public ObjectAdapter mapRecreatedPojo(final Oid oid, final Object recreatedPojo) {
// attempt to locate adapter for the pojo
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
index 53f2d58..c0a9de1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithm.java
@@ -20,10 +20,11 @@
package org.apache.isis.core.runtime.persistence.objectstore.algorithm;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
public interface PersistAlgorithm {
- public void makePersistent(final ObjectAdapter object, final ToPersistObjectSet adders);
+ public void makePersistent(final ObjectAdapter object, final PersistenceSession adders);
public String name();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
index 57afe05..fb2a81d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmDefault.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetU
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
class PersistAlgorithmDefault extends PersistAlgorithmAbstract {
private static final Logger LOG = LoggerFactory.getLogger(PersistAlgorithmDefault.class);
@@ -40,7 +41,7 @@ class PersistAlgorithmDefault extends PersistAlgorithmAbstract {
}
@Override
- public void makePersistent(final ObjectAdapter adapter, final ToPersistObjectSet toPersistObjectSet) {
+ public void makePersistent(final ObjectAdapter adapter, final PersistenceSession toPersistObjectSet) {
if (adapter.getSpecification().isParentedOrFreeCollection()) {
if(LOG.isDebugEnabled()) {
LOG.debug("persist " + adapter);
@@ -61,7 +62,7 @@ class PersistAlgorithmDefault extends PersistAlgorithmAbstract {
}
}
- protected void persist(final ObjectAdapter adapter, final ToPersistObjectSet toPersistObjectSet) {
+ protected void persist(final ObjectAdapter adapter, final PersistenceSession toPersistObjectSet) {
if (alreadyPersistedOrNotPersistableOrServiceOrStandalone(adapter)) {
return;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmForDataNucleus.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmForDataNucleus.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmForDataNucleus.java
index 134654b..297f470 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmForDataNucleus.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmForDataNucleus.java
@@ -22,6 +22,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
/**
@@ -51,7 +52,7 @@ class PersistAlgorithmForDataNucleus extends PersistAlgorithmAbstract {
// ////////////////////////////////////////////////////////////////
public void makePersistent(final ObjectAdapter adapter,
- final ToPersistObjectSet toPersistObjectSet) {
+ final PersistenceSession persistenceSession) {
if (alreadyPersistedOrNotPersistable(adapter)) {
return;
}
@@ -68,7 +69,7 @@ class PersistAlgorithmForDataNucleus extends PersistAlgorithmAbstract {
if (alreadyPersistedOrNotPersistable(adapter)) {
return;
}
- toPersistObjectSet.addCreateObjectCommand(adapter);
+ persistenceSession.addCreateObjectCommand(adapter);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmUnified.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmUnified.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmUnified.java
index dca5413..5ebc0b0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmUnified.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmUnified.java
@@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.runtime.PersistorImplementation;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
/**
@@ -48,8 +49,8 @@ public class PersistAlgorithmUnified extends PersistAlgorithmAbstract {
public void makePersistent(
final ObjectAdapter adapter,
- final ToPersistObjectSet toPersistObjectSet) {
- persistAlgorithm.makePersistent(adapter, toPersistObjectSet);
+ final PersistenceSession persistenceSession) {
+ persistAlgorithm.makePersistent(adapter, persistenceSession);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/ToPersistObjectSet.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/ToPersistObjectSet.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/ToPersistObjectSet.java
deleted file mode 100644
index 7170743..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/ToPersistObjectSet.java
+++ /dev/null
@@ -1,45 +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.persistence.objectstore.algorithm;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-
-/**
- * Set of {@link ObjectAdapter}s that require persisting.
- *
- * <p>
- * Is consumed by {@link PersistAlgorithm}, and is ultimately implemented by
- * {@link PersistenceSession}.
- */
-public interface ToPersistObjectSet {
-
- void remapAsPersistent(final ObjectAdapter object);
-
- void addCreateObjectCommand(ObjectAdapter object);
-
- /**
- * To support ISIS-234; keep track, for the duration of the transaction only,
- * of the old transient {@link Oid}s and their corresponding persistent {@link Oid}s.
- */
- Oid remappedFrom(Oid oid);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
index f7c7466..caa5e28 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PublishingServiceWithDefaultPayloadFactories.java
@@ -58,7 +58,7 @@ public class PublishingServiceWithDefaultPayloadFactories {
// objectstores such as JDO prevent the underlying pojo from being touched once it has been deleted.
// we therefore replace that pojo with an 'empty' one.
Object replacementObject = adapter.getSpecification().createObject();
- getPersistenceSession().remapRecreatedPojo(adapter, replacementObject);
+ getPersistenceSession().getAdapterManager().remapRecreatedPojo(adapter, replacementObject);
return adapter;
}
protected PersistenceSession getPersistenceSession() {
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
index a5b8005..ff28104 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
public interface ObjectStore extends TransactionalResource, DebuggableWithTitle, SessionScopedComponent {
@@ -121,8 +120,7 @@ public interface ObjectStore extends TransactionalResource, DebuggableWithTitle,
/**
* Retrieves the object identified by the specified {@link TypedOid} from the object
- * store, {@link RecreatedPojoRemapper#mapRecreatedPojo(org.apache.isis.core.metamodel.adapter.oid.Oid, Object) mapped} into
- * the {@link AdapterManager}.
+ * store, {@link AdapterManager#mapRecreatedPojo(org.apache.isis.core.metamodel.adapter.oid.Oid, Object) mapped by the adapter manager}.
*
* <p>The cache should be checked first and, if the object is cached,
* the cached version should be returned. It is important that if this
@@ -163,7 +161,7 @@ public interface ObjectStore extends TransactionalResource, DebuggableWithTitle,
// ///////////////////////////////////////////////////////
- // resolveField, resolveImmediately
+ // resolveImmediately
// ///////////////////////////////////////////////////////
/**
@@ -173,12 +171,6 @@ public interface ObjectStore extends TransactionalResource, DebuggableWithTitle,
*/
void resolveImmediately(ObjectAdapter object);
- /**
- * Called by the resolveEagerly method in ObjectAdapterManager.
- *
- * @see PersistenceSession#resolveField(ObjectAdapter, ObjectAssociation)
- */
- void resolveField(ObjectAdapter object, ObjectAssociation field);
// ///////////////////////////////////////////////////////
// Services
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
new file mode 100644
index 0000000..e93769b
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
@@ -0,0 +1,103 @@
+/*
+ * 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.system.persistence;
+
+import java.util.Map;
+import com.google.common.collect.Maps;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.query.QueryDefault;
+import org.apache.isis.applib.query.QueryFindAllInstances;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
+import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
+import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.runtime.persistence.query.*;
+
+public class PersistenceQueryFactory {
+
+ private static final Logger LOG = LoggerFactory.getLogger(PersistenceQueryFactory.class);
+
+ private final SpecificationLoader specificationLoader;
+ private final AdapterManager adapterManager;
+
+ PersistenceQueryFactory(final SpecificationLoader specificationLoader, final AdapterManager adapterManager) {
+ this.specificationLoader = specificationLoader;
+ this.adapterManager = adapterManager;
+ }
+
+ /**
+ * Converts the {@link org.apache.isis.applib.query.Query applib representation of a query} into the
+ * {@link PersistenceQuery NOF-internal representation}.
+ */
+ final PersistenceQuery createPersistenceQueryFor(final Query<?> query, final QueryCardinality cardinality) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("createPersistenceQueryFor: " + query.getDescription());
+ }
+ final ObjectSpecification noSpec = specFor(query);
+ if (query instanceof QueryFindAllInstances) {
+ final QueryFindAllInstances<?> queryFindAllInstances = (QueryFindAllInstances<?>) query;
+ return new PersistenceQueryFindAllInstances(noSpec, queryFindAllInstances.getStart(), queryFindAllInstances.getCount());
+ }
+ if (query instanceof QueryFindByTitle) {
+ final QueryFindByTitle<?> queryByTitle = (QueryFindByTitle<?>) query;
+ final String title = queryByTitle.getTitle();
+ return new PersistenceQueryFindByTitle(noSpec, title, queryByTitle.getStart(), queryByTitle.getCount());
+ }
+ if (query instanceof QueryFindByPattern) {
+ final QueryFindByPattern<?> queryByPattern = (QueryFindByPattern<?>) query;
+ final Object pattern = queryByPattern.getPattern();
+ final ObjectAdapter patternAdapter = adapterManager.adapterFor(pattern);
+ return new PersistenceQueryFindByPattern(noSpec, patternAdapter, queryByPattern.getStart(), queryByPattern.getCount());
+ }
+ if (query instanceof QueryDefault) {
+ final QueryDefault<?> queryDefault = (QueryDefault<?>) query;
+ final String queryName = queryDefault.getQueryName();
+ final Map<String, ObjectAdapter> argumentsAdaptersByParameterName = wrap(queryDefault.getArgumentsByParameterName());
+ return new PersistenceQueryFindUsingApplibQueryDefault(noSpec, queryName, argumentsAdaptersByParameterName, cardinality, queryDefault.getStart(), queryDefault.getCount());
+ }
+ // fallback; generic serializable applib query.
+ return new PersistenceQueryFindUsingApplibQuerySerializable(noSpec, query, cardinality);
+ }
+
+ /**
+ * Converts a map of pojos keyed by string to a map of adapters keyed by the
+ * same strings.
+ */
+ private Map<String, ObjectAdapter> wrap(final Map<String, Object> argumentsByParameterName) {
+ final Map<String, ObjectAdapter> argumentsAdaptersByParameterName = Maps.newHashMap();
+ for (final Map.Entry<String, Object> entry : argumentsByParameterName.entrySet()) {
+ final String parameterName = entry.getKey();
+ final Object argument = argumentsByParameterName.get(parameterName);
+ final ObjectAdapter argumentAdapter = argument != null ? adapterManager.adapterFor(argument) : null;
+ argumentsAdaptersByParameterName.put(parameterName, argumentAdapter);
+ }
+ return argumentsAdaptersByParameterName;
+ }
+
+ private ObjectSpecification specFor(final Query<?> query) {
+ return specificationLoader.loadSpecification(query.getResultType());
+ }
+
+
+}