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:25 UTC
[01/29] isis git commit: ISIS-537 Add Bootstrap overrides CSS file
for Sandstone theme to fix the rendering of the input-group-addon for the
dates
Repository: isis
Updated Branches:
refs/heads/ISIS-939 252075721 -> ee4fe8b8f (forced update)
ISIS-537 Add Bootstrap overrides CSS file for Sandstone theme to fix the rendering of the input-group-addon for the dates
https://trello.com/c/6oCefJvi/99-sandstone-theme-date-hint-is-too-large
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/8efdfa05
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/8efdfa05
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/8efdfa05
Branch: refs/heads/ISIS-939
Commit: 8efdfa0532e966689c753c1e1665381089a34c79
Parents: d4816a4
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Nov 4 22:21:03 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Nov 4 22:21:56 2014 +0200
----------------------------------------------------------------------
.../ui/pages/bootstrap-overrides-sandstone.css | 22 ++++++++++++++++++++
1 file changed, 22 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/8efdfa05/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides-sandstone.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides-sandstone.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides-sandstone.css
new file mode 100644
index 0000000..df9795b
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides-sandstone.css
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+.input-group-sm > .input-group-addon {
+ padding: 0 11px;
+}
[14/29] isis git commit: ISIS-537 Revert a change to ToDoItem related
to testing of @LabelAt positions committed by mistake
Posted by da...@apache.org.
ISIS-537 Revert a change to ToDoItem related to testing of @LabelAt positions committed by mistake
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e59364a7
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e59364a7
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e59364a7
Branch: refs/heads/ISIS-939
Commit: e59364a78216ddca791ba59344e4b518707c55c5
Parents: 8cbe98e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Nov 6 10:55:09 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Nov 6 10:55:09 2014 +0200
----------------------------------------------------------------------
.../application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e59364a7/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
index dcbd897..8768a74 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
@@ -135,7 +135,6 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
@javax.jdo.annotations.Column(allowsNull="false", length=100)
@PropertyInteraction()
@RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*")
- @LabelAt(LabelAt.Position.TOP)
public String getDescription() {
return description;
}
@@ -255,7 +254,6 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
@javax.jdo.annotations.Column(allowsNull="true")
@Disabled(reason="Use action to update both category and subcategory")
- @LabelAt(LabelAt.Position.NONE)
public Subcategory getSubcategory() {
return subcategory;
}
[22/29] isis git commit: ISIS-939: deleted the UpdateNotifier
subcomponent. Not used by any released code,
and the same information (and better) is available in the IsisTransaction
itself.
Posted by da...@apache.org.
ISIS-939: deleted the UpdateNotifier subcomponent. Not used by any released code, and the same information (and better) is available in the IsisTransaction itself.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/30eb5146
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/30eb5146
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/30eb5146
Branch: refs/heads/ISIS-939
Commit: 30eb514666c1968916a1e6f58d6b0de04a1efceb
Parents: fab4f47
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 3 19:47:28 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:18:56 2014 +0000
----------------------------------------------------------------------
.../viewer/scimpi/dispatcher/Dispatcher.java | 2 -
.../scimpi/dispatcher/action/ActionAction.java | 2 -
.../scimpi/dispatcher/edit/EditAction.java | 2 -
.../scimpi/dispatcher/edit/RemoveAction.java | 2 -
.../scimpi/dispatcher/logon/LogoutAction.java | 1 -
.../internal/RuntimeContextFromSession.java | 6 -
.../runtime/system/context/IsisContext.java | 9 -
.../system/persistence/PersistenceSession.java | 16 --
.../system/session/IsisSessionDefault.java | 9 -
.../system/transaction/IsisTransaction.java | 20 +--
.../transaction/IsisTransactionManager.java | 38 +----
.../system/transaction/UpdateNotifier.java | 79 ---------
.../transaction/UpdateNotifierDefault.java | 168 -------------------
.../system/transaction/IsisTransactionTest.java | 4 +-
.../rendering/ReprRendererAbstract.java | 24 +--
15 files changed, 24 insertions(+), 358 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java
index 5f37318..82c67c1 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/Dispatcher.java
@@ -279,11 +279,9 @@ public class Dispatcher {
try {
request.processNextTag();
noteIfMessagesHaveNotBeenDisplay(context);
- IsisContext.getUpdateNotifier().clear();
} catch (final RuntimeException e) {
IsisContext.getMessageBroker().getMessages();
IsisContext.getMessageBroker().getWarnings();
- IsisContext.getUpdateNotifier().clear();
throw e;
}
final String page = request.popBuffer();
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
index f181cc9..c598ba3 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
@@ -156,8 +156,6 @@ public class ActionAction implements Action {
} catch (final RuntimeException e) {
getMessageBroker().getMessages();
getMessageBroker().getWarnings();
- IsisContext.getUpdateNotifier().clear();
- IsisContext.getUpdateNotifier().clear();
throw e;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
index d069ea3..3784472 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
@@ -155,8 +155,6 @@ public class EditAction implements Action {
} catch (final RuntimeException e) {
IsisContext.getMessageBroker().getMessages();
IsisContext.getMessageBroker().getWarnings();
- IsisContext.getUpdateNotifier().clear();
- IsisContext.getUpdateNotifier().clear();
throw e;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/RemoveAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/RemoveAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/RemoveAction.java
index 1bd86a2..919ccc2 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/RemoveAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/RemoveAction.java
@@ -100,8 +100,6 @@ public class RemoveAction implements Action {
} catch (final RuntimeException e) {
IsisContext.getMessageBroker().getMessages();
IsisContext.getMessageBroker().getWarnings();
- IsisContext.getUpdateNotifier().clear();
- IsisContext.getUpdateNotifier().clear();
throw e;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java
index 219b5b4..a6f4730 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/logon/LogoutAction.java
@@ -35,7 +35,6 @@ public class LogoutAction implements Action {
if (context.isUserAuthenticated()) {
final AuthenticationSession session = context.getSession();
if (session != null) {
- IsisContext.getUpdateNotifier().clear();
UserManager.logoffUser(session);
}
context.endHttpSession();
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index d5b6d57..782e18b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -51,7 +51,6 @@ import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.runtime.system.transaction.MessageBroker;
-import org.apache.isis.core.runtime.system.transaction.UpdateNotifier;
/**
* Provides services to the metamodel based on the currently running
@@ -167,7 +166,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
@Override
public void remove(final ObjectAdapter adapter) {
- getUpdateNotifier().addDisposedObject(adapter);
getPersistenceSession().destroyObject(adapter);
}
};
@@ -399,10 +397,6 @@ public class RuntimeContextFromSession extends RuntimeContextAbstract {
return getPersistenceSession().getAdapterManager();
}
- private static UpdateNotifier getUpdateNotifier() {
- return IsisContext.getUpdateNotifier();
- }
-
private static IsisTransactionManager getTransactionManager() {
return getPersistenceSession().getTransactionManager();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 2b139a4..f145f89 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -42,7 +42,6 @@ import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.runtime.system.transaction.MessageBroker;
-import org.apache.isis.core.runtime.system.transaction.UpdateNotifier;
/**
* Provides singleton <i>access to</i> the current (session scoped)
@@ -468,14 +467,6 @@ public abstract class IsisContext implements DebuggableWithTitle {
return (MessageBroker) getCurrentTransaction().getMessageBroker();
}
- /**
- * Convenience method, returning the {@link UpdateNotifier} of the
- * {@link #getCurrentTransaction() current transaction}.
- */
- public static UpdateNotifier getUpdateNotifier() {
- return getCurrentTransaction().getUpdateNotifier();
- }
-
// ///////////////////////////////////////////////////////////
// Debug
// ///////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 294ef30..59887c0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -788,7 +788,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
public void objectChanged(final ObjectAdapter adapter) {
if (adapter.isTransient() || (adapter.isParented() && adapter.getAggregateRoot().isTransient())) {
- addObjectChangedForPresentationLayer(adapter);
return;
}
@@ -805,19 +804,9 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
}
addObjectChangedForPersistenceLayer(adapter);
- addObjectChangedForPresentationLayer(adapter);
- }
- if (adapter.respondToChangesInPersistentObjects() || adapter.isTransient()) {
- addObjectChangedForPresentationLayer(adapter);
}
}
- private void addObjectChangedForPresentationLayer(final ObjectAdapter adapter) {
- if(LOG.isDebugEnabled()) {
- LOG.debug("object change to update presentation layer " + adapter.getOid());
- }
- getUpdateNotifier().addChangedObject(adapter);
- }
private void addObjectChangedForPersistenceLayer(final ObjectAdapter adapter) {
if(LOG.isDebugEnabled()) {
@@ -847,7 +836,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// should we do something here?
}
});
- getUpdateNotifier().addChangedObject(adapter);
}
// ///////////////////////////////////////////////////////////////////////////
@@ -1078,10 +1066,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
}
- private UpdateNotifier getUpdateNotifier() {
- return getTransactionManager().getTransaction().getUpdateNotifier();
- }
-
/**
* The configured {@link ObjectAdapterFactory}.
*
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionDefault.java
index aaa6583..0f20891 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionDefault.java
@@ -309,7 +309,6 @@ public class IsisSessionDefault implements IsisSession {
debug(debug, getPersistenceSession());
if (getCurrentTransaction() != null) {
- debug(debug, getCurrentTransaction().getUpdateNotifier());
debug(debug, getCurrentTransaction().getMessageBroker());
}
debugSnapshot = debug.toString();
@@ -332,10 +331,6 @@ public class IsisSessionDefault implements IsisSession {
asString.append("authenticationSession", getAuthenticationSession());
asString.append("persistenceSession", getPersistenceSession());
asString.append("transaction", getCurrentTransaction());
- if (getCurrentTransaction() != null) {
- asString.append("messageBroker", getCurrentTransaction().getMessageBroker());
- asString.append("updateNotifier", getCurrentTransaction().getUpdateNotifier());
- }
}
@Override
@@ -343,10 +338,6 @@ public class IsisSessionDefault implements IsisSession {
debug.appendln("authenticationSession", getAuthenticationSession());
debug.appendln("persistenceSession", getPersistenceSession());
debug.appendln("transaction", getCurrentTransaction());
- if (getCurrentTransaction() != null) {
- debug.appendln("messageBroker", getCurrentTransaction().getMessageBroker());
- debug.appendln("updateNotifier", getCurrentTransaction().getUpdateNotifier());
- }
}
// /////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index f98c804..259269c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -204,7 +204,6 @@ public class IsisTransaction implements TransactionScopedComponent {
private final List<PersistenceCommand> commands = Lists.newArrayList();
private final IsisTransactionManager transactionManager;
private final org.apache.isis.core.commons.authentication.MessageBroker messageBroker;
- private final UpdateNotifier updateNotifier;
private final ServicesInjector servicesInjector;
@@ -238,20 +237,17 @@ public class IsisTransaction implements TransactionScopedComponent {
public IsisTransaction(
- final IsisTransactionManager transactionManager,
- final org.apache.isis.core.commons.authentication.MessageBroker messageBroker,
- final UpdateNotifier updateNotifier,
- final TransactionalResource objectStore,
+ final IsisTransactionManager transactionManager,
+ final org.apache.isis.core.commons.authentication.MessageBroker messageBroker,
+ final TransactionalResource objectStore,
final ServicesInjector servicesInjector) {
ensureThatArg(transactionManager, is(not(nullValue())), "transaction manager is required");
ensureThatArg(messageBroker, is(not(nullValue())), "message broker is required");
- ensureThatArg(updateNotifier, is(not(nullValue())), "update notifier is required");
ensureThatArg(servicesInjector, is(not(nullValue())), "services injector is required");
this.transactionManager = transactionManager;
this.messageBroker = messageBroker;
- this.updateNotifier = updateNotifier;
this.servicesInjector = servicesInjector;
this.commandContext = servicesInjector.lookupService(CommandContext.class);
@@ -1047,16 +1043,6 @@ public class IsisTransaction implements TransactionScopedComponent {
return (MessageBroker) messageBroker;
}
- /**
- * The {@link UpdateNotifier} for this transaction.
- *
- * <p>
- * Injected in constructor
- */
- public UpdateNotifier getUpdateNotifier() {
- return updateNotifier;
- }
-
public static class AdapterAndProperty {
private final ObjectAdapter objectAdapter;
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
index e39337c..8c0e523 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
@@ -117,13 +117,6 @@ public class IsisTransactionManager implements SessionScopedComponent {
- /**
- * Convenience method returning the {@link UpdateNotifier} of the
- * {@link #getTransaction() current transaction}.
- */
- protected UpdateNotifier getUpdateNotifier() {
- return getTransaction().getUpdateNotifier();
- }
/**
* Convenience method returning the {@link MessageBroker} of the
@@ -227,28 +220,23 @@ public class IsisTransactionManager implements SessionScopedComponent {
*/
protected final IsisTransaction createTransaction() {
org.apache.isis.core.commons.authentication.MessageBroker messageBroker = createMessageBroker();
- UpdateNotifier updateNotifier = createUpdateNotifier();
- return this.transaction = createTransaction(messageBroker, updateNotifier, transactionalResource);
+ return this.transaction = createTransaction(messageBroker, transactionalResource);
}
/**
- * The provided {@link MessageBroker} and {@link UpdateNotifier} are
- * obtained from the hook methods ( {@link #createMessageBroker()} and
- * {@link #createUpdateNotifier()}).
- * @param transactionalResource
- *
+ * The provided {@link MessageBroker} is
+ * obtained from the {@link #createMessageBroker()} hook method.
+ * @param transactionalResource
+ *
* @see #createMessageBroker()
- * @see #createUpdateNotifier()
*/
private IsisTransaction createTransaction(
- final org.apache.isis.core.commons.authentication.MessageBroker messageBroker,
- final UpdateNotifier updateNotifier,
+ final org.apache.isis.core.commons.authentication.MessageBroker messageBroker,
final TransactionalResource transactionalResource) {
ensureThatArg(messageBroker, is(not(nullValue())));
- ensureThatArg(updateNotifier, is(not(nullValue())));
- return new IsisTransaction(this, messageBroker, updateNotifier, transactionalResource, servicesInjector);
+ return new IsisTransaction(this, messageBroker, transactionalResource, servicesInjector);
}
@@ -541,7 +529,7 @@ public class IsisTransactionManager implements SessionScopedComponent {
/**
* Overridable hook, used in
- * {@link #createTransaction(org.apache.isis.core.commons.authentication.MessageBroker, UpdateNotifier, org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource)}
+ * {@link #createTransaction(org.apache.isis.core.commons.authentication.MessageBroker, org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource)}
*
* <p> Called when a new {@link IsisTransaction} is created.
*/
@@ -549,16 +537,6 @@ public class IsisTransactionManager implements SessionScopedComponent {
return MessageBrokerDefault.acquire(getAuthenticationSession());
}
- /**
- * Overridable hook, used in
- * {@link #createTransaction(org.apache.isis.core.commons.authentication.MessageBroker, UpdateNotifier, org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource)}
- *
- * <p> Called when a new {@link IsisTransaction} is created.
- */
- protected UpdateNotifier createUpdateNotifier() {
- return new UpdateNotifierDefault();
- }
-
// ////////////////////////////////////////////////////////////////
// helpers
// ////////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifier.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifier.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifier.java
deleted file mode 100644
index 589e54e..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifier.java
+++ /dev/null
@@ -1,79 +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.system.transaction;
-
-import java.util.List;
-
-import org.apache.isis.core.commons.components.TransactionScopedComponent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-/**
- * UpdateNotifier provides updates to client making available lists of the
- * latest changed and disposed objects.
- */
-public interface UpdateNotifier extends TransactionScopedComponent {
-
- // //////////////////////////////////////////////////
- // Changed Objects
- // //////////////////////////////////////////////////
-
- /**
- * Used by the framework to add objects that have just changed.
- */
- void addChangedObject(ObjectAdapter object);
-
- /**
- * Returns an immutable {@link List} of changed objects.
- *
- * <p>
- * Each changed object that was added is only ever provided during one call
- * to this method so the list must be processed fully to avoid missing
- * updates.
- */
- List<ObjectAdapter> getChangedObjects();
-
- // //////////////////////////////////////////////////
- // Disposed Objects
- // //////////////////////////////////////////////////
-
- /**
- * Used by the framework to add objects that have just been disposed of.
- */
- void addDisposedObject(ObjectAdapter adapter);
-
- /**
- * Returns an immutable {@link List} of disposed objects.
- *
- * <p>
- * Each object that was disposed of is only ever provided during one call to
- * this method so the list must be processed fully to avoid missing
- * deletions.
- */
- public List<ObjectAdapter> getDisposedObjects();
-
- // //////////////////////////////////////////////////
- // Empty, Clear
- // //////////////////////////////////////////////////
-
- void ensureEmpty();
-
- void clear();
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifierDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifierDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifierDefault.java
deleted file mode 100644
index 9e92e0f..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/UpdateNotifierDefault.java
+++ /dev/null
@@ -1,168 +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.system.transaction;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-public class UpdateNotifierDefault implements UpdateNotifier, DebuggableWithTitle {
-
- private static final Logger LOG = LoggerFactory.getLogger(UpdateNotifierDefault.class);
-
- private final List<ObjectAdapter> changes = new ArrayList<ObjectAdapter>();
- private final List<ObjectAdapter> disposals = new ArrayList<ObjectAdapter>();
-
- // //////////////////////////////////////////////////
- // Constructor
- // //////////////////////////////////////////////////
-
- public UpdateNotifierDefault() {
- // does nothing
- }
-
- // //////////////////////////////////////////////////
- // Changed Objects
- // //////////////////////////////////////////////////
-
- @Override
- public synchronized void addChangedObject(final ObjectAdapter adapter) {
- if (!adapter.isResolved() && !adapter.isTransient()) {
- return;
- }
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("mark as changed " + adapter);
- }
- if (!changes.contains(adapter)) {
- changes.add(adapter);
- }
- }
-
- @Override
- public List<ObjectAdapter> getChangedObjects() {
- if (changes.size() > 0) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("dirty (changed) objects " + changes);
- }
- }
- final List<ObjectAdapter> changedObjects = new ArrayList<ObjectAdapter>();
- changedObjects.addAll(changes);
-
- changes.clear();
-
- return Collections.unmodifiableList(changedObjects);
- }
-
- // //////////////////////////////////////////////////
- // Disposed Objects
- // //////////////////////////////////////////////////
-
- @Override
- public void addDisposedObject(final ObjectAdapter adapter) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("mark as disposed " + adapter);
- }
- if (!disposals.contains(adapter)) {
- disposals.add(adapter);
- }
- }
-
- @Override
- public List<ObjectAdapter> getDisposedObjects() {
- if (disposals.size() > 0) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("dirty (disposed) objects " + disposals);
- }
- }
- final List<ObjectAdapter> disposedObjects = new ArrayList<ObjectAdapter>();
- disposedObjects.addAll(disposals);
-
- disposals.clear();
-
- return Collections.unmodifiableList(disposedObjects);
- }
-
- // //////////////////////////////////////////////////
- // Empty, Clear
- // //////////////////////////////////////////////////
-
- @Override
- public void ensureEmpty() {
- if (changes.size() > 0) {
- throw new IsisException("Update notifier still has updates");
- }
- }
-
- @Override
- public void clear() {
- changes.clear();
- disposals.clear();
- }
-
- // //////////////////////////////////////////////////
- // Debugging
- // //////////////////////////////////////////////////
-
- @Override
- public void debugData(final DebugBuilder debug) {
- debug.appendln("Changes");
- debugList(debug, changes);
-
- debug.appendln("Disposals");
- debugList(debug, disposals);
- }
-
- @Override
- public String debugTitle() {
- return "Simple Update Notifier";
- }
-
- private void debugList(final DebugBuilder debug, final List<ObjectAdapter> list) {
- debug.indent();
- if (list.size() == 0) {
- debug.appendln("none");
- } else {
- for (final ObjectAdapter adapter : list) {
- debug.appendln(adapter.toString());
- }
- }
- debug.unindent();
- }
-
- // //////////////////////////////////////////////////
- // toString
- // //////////////////////////////////////////////////
-
- @Override
- public String toString() {
- return new ToString(this).append("changes", changes).toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
index 2a66a8f..9f4c2c8 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
@@ -70,8 +70,6 @@ public class IsisTransactionTest {
@Mock
private MessageBroker mockMessageBroker;
@Mock
- private UpdateNotifier mockUpdateNotifier;
- @Mock
private CommandContext mockCommandContext;
@Mock
private CommandService mockCommandService;
@@ -225,7 +223,7 @@ public class IsisTransactionTest {
will(returnValue("sven"));
}});
- transaction = new IsisTransaction(mockTransactionManager, mockMessageBroker, mockUpdateNotifier, mockObjectStore, mockServicesInjector);
+ transaction = new IsisTransaction(mockTransactionManager, mockMessageBroker, mockObjectStore, mockServicesInjector);
transientAdapter1 = PojoAdapterBuilder.create().with(Persistence.TRANSIENT).withIdentifier("1").build();
transientAdapter2 = PojoAdapterBuilder.create().with(Persistence.TRANSIENT).withIdentifier("2").build();
http://git-wip-us.apache.org/repos/asf/isis/blob/30eb5146/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
index 155eb96..8fe4620 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
@@ -20,21 +20,18 @@ package org.apache.isis.viewer.restfulobjects.rendering;
import java.util.List;
import java.util.Map;
-
import javax.ws.rs.core.MediaType;
-
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.UpdateNotifier;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.DomainTypeReprRenderer;
-import com.google.common.collect.Maps;
-
public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>, T> implements ReprRenderer<R, T> {
protected final RendererContext rendererContext;
@@ -163,13 +160,20 @@ public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>,
* mutate state.
*/
protected final void addExtensionsIsisProprietaryChangedObjects() {
- final UpdateNotifier updateNotifier = getUpdateNotifier();
- addToExtensions("changed", updateNotifier.getChangedObjects());
- addToExtensions("disposed", updateNotifier.getDisposedObjects());
+ // TODO: have removed UpdateNotifier, plan is to re-introduce using the IsisTransaction enlisted objects
+ // (which would also allow newly-created objects to be shown)
+ final List<ObjectAdapter> changedObjects = Lists.newArrayList(); // updateNotifier.getChangedObjects();
+ final List<ObjectAdapter> disposedObjects = Lists.newArrayList(); // updateNotifier.getDisposedObjects();
+
+ addToExtensions("changed", changedObjects);
+ addToExtensions("disposed", disposedObjects);
}
private void addToExtensions(final String key, final List<ObjectAdapter> adapters) {
+ if(adapters == null || adapters.isEmpty()) {
+ return;
+ }
final JsonRepresentation adapterList = JsonRepresentation.newArray();
getExtensions().mapPut(key, adapterList);
for (final ObjectAdapter adapter : adapters) {
@@ -181,8 +185,4 @@ public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>,
return IsisContext.getPersistenceSession().getServices();
}
- protected UpdateNotifier getUpdateNotifier() {
- return IsisContext.getCurrentTransaction().getUpdateNotifier();
- }
-
}
[24/29] isis git commit: ISIS-939: deleted
AdapterLifecycleTransitioner interface (performed no function).
Posted by da...@apache.org.
ISIS-939: deleted AdapterLifecycleTransitioner interface (performed no function).
Also: deleted unused/undocumented IsisServices service.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/bea5a027
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/bea5a027
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/bea5a027
Branch: refs/heads/ISIS-939
Commit: bea5a027db888c5578e7debea601c773094f6fe2
Parents: e48ab59
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 3 20:16:07 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:18:59 2014 +0000
----------------------------------------------------------------------
.../core/metamodel/adapter/ObjectAdapter.java | 1 -
.../adaptermanager/AdapterManagerDefault.java | 3 --
.../runtime/services/isis/IsisServices.java | 39 --------------
.../AdapterLifecycleTransitioner.java | 56 --------------------
.../system/persistence/PersistenceSession.java | 4 +-
5 files changed, 1 insertion(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/bea5a027/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 4b7b16f..6dc619a 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
@@ -98,7 +98,6 @@ public interface ObjectAdapter extends Instance, org.apache.isis.applib.annotati
* only <tt>PojoAdapterX</tt> provides support for this; the regular
* <tt>PojoAdapter</tt> does not currently.
*
- * @param adapter
* @return
*/
Instance getInstance(Specification specification);
http://git-wip-us.apache.org/repos/asf/isis/blob/bea5a027/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 8de9088..6f180d7 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
@@ -55,7 +55,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
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.AdapterLifecycleTransitioner;
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;
@@ -79,7 +78,6 @@ import static org.hamcrest.CoreMatchers.*;
*/
public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAdapter>,
RecreatedPojoRemapper,
- AdapterLifecycleTransitioner,
SessionScopedComponent,
DebuggableWithTitle,
Resettable {
@@ -464,7 +462,6 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
*
* @param hintRootOid - allow a different persistent root oid to be provided.
*/
- @Override
public void remapAsPersistent(final ObjectAdapter adapter, RootOid hintRootOid) {
final ObjectAdapter rootAdapter = adapter.getAggregateRoot(); // REVIEW: think this is redundant; would seem this method is only ever called for roots anyway.
http://git-wip-us.apache.org/repos/asf/isis/blob/bea5a027/core/runtime/src/main/java/org/apache/isis/core/runtime/services/isis/IsisServices.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/isis/IsisServices.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/isis/IsisServices.java
deleted file mode 100644
index 07cbab8..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/isis/IsisServices.java
+++ /dev/null
@@ -1,39 +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.services.isis;
-
-import org.apache.isis.applib.AbstractService;
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-/**
- * A domain service providing access into the Isis runtime itself.
- *
- * <p>
- * Intended only for use while prototyping.
- */
-public class IsisServices extends AbstractService {
-
- @ActionSemantics(Of.IDEMPOTENT)
- public void resetMetaModel() {
- IsisContext.getSpecificationLoader().shutdown();
- IsisContext.getSpecificationLoader().init();
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bea5a027/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterLifecycleTransitioner.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterLifecycleTransitioner.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterLifecycleTransitioner.java
deleted file mode 100644
index d76bfd5..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterLifecycleTransitioner.java
+++ /dev/null
@@ -1,56 +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.system.persistence;
-
-import org.apache.isis.applib.annotation.Aggregated;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
-
-public interface AdapterLifecycleTransitioner {
-
- /**
- * Remaps the {@link ObjectAdapter adapter} and any associated
- * (collection) adapters (ie, those that wrap the List/Set instances).
- *
- * <p>
- * Note that it isn't necessary to remap any aggregated adapters (as per
- * {@link Aggregated} annotation; the {@link PersistAlgorithm} calls this
- * method and takes responsibility for locating the graph of transient
- * objects that needs to be remapped.
- *
- * <p>
- * As a consequence of this call, the adapter's {@link Oid} will be
- * {@link ObjectAdapter#replaceOid(Oid) replaced} (Oids are now immutable).
- * The same is true of the associated collection adapters.
- *
- * @param hintRootOid - primarily for testing purposes, to set the adapter with a specific rootOid. Is passed through to the {@link OidGenerator}.
- */
- void remapAsPersistent(ObjectAdapter adapter, RootOid hintRootOid);
-
- /**
- * Removes the specified {@link ObjectAdapter adapter} from the identity
- * maps.
- */
- void removeAdapter(ObjectAdapter adapter);
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bea5a027/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 59887c0..af1619f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -71,7 +71,7 @@ import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
import static org.hamcrest.CoreMatchers.*;
-public class PersistenceSession implements Persistor, EnlistedObjectDirtying, ToPersistObjectSet, RecreatedPojoRemapper, AdapterLifecycleTransitioner, SessionScopedComponent, DebuggableWithTitle {
+public class PersistenceSession implements Persistor, EnlistedObjectDirtying, ToPersistObjectSet, RecreatedPojoRemapper, SessionScopedComponent, DebuggableWithTitle {
private static final Logger LOG = LoggerFactory.getLogger(PersistenceSession.class);
@@ -918,12 +918,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// AdapterLifecycleTransitioner
// ///////////////////////////////////////////////////////////////////////////
- @Override
public void remapAsPersistent(ObjectAdapter adapter, RootOid hintRootOid) {
adapterManager.remapAsPersistent(adapter, hintRootOid);
}
- @Override
public void removeAdapter(ObjectAdapter adapter) {
adapterManager.removeAdapter(adapter);
}
[19/29] isis git commit: ISIS-939: simplified
PersistenceMechanismInstallerAbstract and its subclasses,
also PersistenceSessionFactoryDelegating, PersistenceSessionFactoryDelegate.
Posted by da...@apache.org.
ISIS-939: simplified PersistenceMechanismInstallerAbstract and its subclasses, also PersistenceSessionFactoryDelegating, PersistenceSessionFactoryDelegate.
* Replaced PersistenceSessionFactoryDelegate#createPersistenceSession with #createObjectStore (other common functionality moved to PersistenceSessionFactoryDelegating).
* Don't pass ObjectAdapterFactory, AdapaterManagerSpi, OidGenerator into PersistenceSession; instead it can new these up (there is no variation in implementation nor state held in these components)
* Removed IsisObjectStoreLogger, IsisObjectStoreDelegating.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/46dc3a48
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/46dc3a48
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/46dc3a48
Branch: refs/heads/ISIS-939
Commit: 46dc3a48c1ef8bb9e02c1f4c971b6040a83fc5fa
Parents: 11c6dcd
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Nov 1 12:05:53 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:18:54 2014 +0000
----------------------------------------------------------------------
.../InMemoryPersistenceMechanismInstaller.java | 6 +-
.../PersistenceMechanismInstallerAbstract.java | 167 +-----------
.../PersistenceSessionFactoryDelegate.java | 33 +--
.../PersistenceSessionFactoryDelegating.java | 69 +++--
.../persistence/adapter/PojoAdapterFactory.java | 4 +-
.../objectstore/IsisObjectStoreDelegating.java | 194 --------------
.../objectstore/IsisObjectStoreLogger.java | 205 --------------
.../system/persistence/PersistenceSession.java | 38 +--
.../persistence/PersistenceSessionFactory.java | 5 +-
.../jdo/datanucleus/DataNucleusObjectStore.java | 7 +-
...ataNucleusPersistenceMechanismInstaller.java | 61 ++---
.../PersistenceSessionObjectStoreTest.java | 268 -------------------
.../persistence/PersistenceSessionTest.java | 268 +++++++++++++++++++
13 files changed, 377 insertions(+), 948 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
index 2f0acc2..293d557 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
@@ -20,12 +20,9 @@
package org.apache.isis.core.objectstore;
import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract;
import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
-import org.apache.isis.core.runtime.system.persistence.ObjectFactory;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
@@ -56,7 +53,8 @@ public class InMemoryPersistenceMechanismInstaller extends PersistenceMechanismI
* Hook method to return {@link ObjectStoreSpi}.
*/
@Override
- protected ObjectStoreSpi createObjectStore(final IsisConfiguration configuration, final ObjectAdapterFactory adapterFactory, final AdapterManagerSpi adapterManager) {
+ public ObjectStoreSpi createObjectStore(
+ final IsisConfiguration configuration) {
return new InMemoryObjectStore();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
index e702e36..75e6fc4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
@@ -20,128 +20,42 @@
package org.apache.isis.core.runtime.installerregistry.installerapi;
import java.util.List;
-import java.util.Properties;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.config.InstallerAbstract;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
-import org.apache.isis.core.runtime.installerregistry.InstallerLookupAware;
import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegating;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
-import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreator;
-import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
-import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
-import org.apache.isis.core.runtime.persistence.objectstore.IsisObjectStoreLogger;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
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.*;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.systemdependencyinjector.SystemDependencyInjector;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.hamcrest.CoreMatchers.*;
+import org.apache.isis.core.runtime.system.persistence.ObjectFactory;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
* An abstract implementation of {@link PersistenceMechanismInstaller} that will
* lookup the {@link ObjectAdapterFactory} and {@link ObjectFactory} from the
* supplied {@link IsisConfiguration}.
*/
-public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbstract implements PersistenceMechanismInstaller, InstallerLookupAware {
-
-
- private static final String LOGGING_PROPERTY = org.apache.isis.core.runtime.logging.Log4jLogger.PROPERTY_ROOT + "persistenceSession";
- private static final Logger LOG = LoggerFactory.getLogger(PersistenceMechanismInstallerAbstract.class);
-
- private SystemDependencyInjector installerLookup;
+public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbstract implements PersistenceMechanismInstaller {
public PersistenceMechanismInstallerAbstract(final String name) {
super(PersistenceMechanismInstaller.TYPE, name);
}
- /**
- * For subclasses that need to specify a different type.
- */
- public PersistenceMechanismInstallerAbstract(final String type, final String name) {
- super(type, name);
- }
-
-
//////////////////////////////////////////////////////////////////////
// createPersistenceSessionFactory
//////////////////////////////////////////////////////////////////////
+ //region > createPersistenceSessionFactory
+
@Override
public PersistenceSessionFactory createPersistenceSessionFactory(final DeploymentType deploymentType) {
return new PersistenceSessionFactoryDelegating(deploymentType, getConfiguration(), this);
}
-
- //////////////////////////////////////////////////////////////////////
- // createPersistenceSession
- //////////////////////////////////////////////////////////////////////
-
-
- /**
- * Creates a {@link PersistenceSession} with internal (thread-safe) components obtained from the provided {@link PersistenceSessionFactory}.
- *
- * <p>
- * Typically should not be overridden.
- */
- @Override
- public PersistenceSession createPersistenceSession(final PersistenceSessionFactory persistenceSessionFactory) {
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("installing " + this.getClass().getName());
- }
-
- ObjectAdapterFactory adapterFactory = persistenceSessionFactory.getAdapterFactory();
- PojoRecreator pojoRecreator = new PojoRecreatorUnified(getConfiguration());
- ServicesInjectorSpi servicesInjector = persistenceSessionFactory.getServicesInjector();
-
- final AdapterManagerDefault adapterManager = new AdapterManagerDefault(pojoRecreator);
-
- ObjectStoreSpi objectStore = createObjectStore(getConfiguration(), adapterFactory, adapterManager);
-
- ensureThatArg(objectStore, is(not(nullValue())));
-
- if (getConfiguration().getBoolean(LOGGING_PROPERTY, false)) {
- final String level = getConfiguration().getString(LOGGING_PROPERTY + ".level", "debug");
- objectStore = new IsisObjectStoreLogger(objectStore, level);
- }
-
- final PersistenceSession persistenceSession =
- new PersistenceSession(persistenceSessionFactory, adapterFactory, servicesInjector, adapterManager, objectStore, getConfiguration());
-
- final IsisTransactionManager transactionManager = new IsisTransactionManager(persistenceSession, objectStore, servicesInjector);
-
- persistenceSession.setDirtiableSupport(true);
- persistenceSession.setTransactionManager(transactionManager);
-
- return persistenceSession;
- }
-
-
-
- // ///////////////////////////////////////////
- // Mandatory hook methods
- // ///////////////////////////////////////////
-
- /**
- * Hook method to return {@link ObjectStoreSpi}.
- */
- protected abstract ObjectStoreSpi createObjectStore(IsisConfiguration configuration, ObjectAdapterFactory adapterFactory, AdapterManagerSpi adapterManager);
-
+ //endregion
// ///////////////////////////////////////////
// Optional hook methods
@@ -173,75 +87,6 @@ public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbs
// no-op
}
- /**
- * Hook method to allow subclasses to specify a different implementation of
- * {@link ObjectAdapterFactory}.
- *
- * <p>
- * By default, returns {@link PojoAdapterFactory};
- */
- public ObjectAdapterFactory createAdapterFactory(final IsisConfiguration configuration) {
- return new PojoAdapterFactory();
- }
-
-
- /**
- * Hook method to allow subclasses to specify a different implementation of
- * {@link ServicesInjectorSpi}
- *
- * <p>
- * By default, returns {@link ServicesInjectorDefault};
- */
- public ServicesInjectorSpi createServicesInjector(final IsisConfiguration configuration) {
- return new ServicesInjectorDefault();
- }
-
-
- // ///////////////////////////////////////////
- // Non overridable.
- // ///////////////////////////////////////////
-
- /**
- * Returns a {@link RuntimeContext}, with all application-specific properties
- * from the provided {@link IsisConfiguration} copied over.
- */
- public final RuntimeContext createRuntimeContext(final IsisConfiguration configuration) {
- final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
- final Properties properties = applicationPropertiesFrom(configuration);
- runtimeContext.setProperties(properties);
- return runtimeContext;
- }
-
- private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) {
- final Properties properties = new Properties();
- final IsisConfiguration applicationConfiguration = configuration.getProperties("application");
- for (final String key : applicationConfiguration) {
- final String value = applicationConfiguration.getString(key);
- final String newKey = key.substring("application.".length());
- properties.setProperty(newKey, value);
- }
- return properties;
- }
-
-
- // /////////////////////////////////////////////////////
- // Dependencies (from setters)
- // /////////////////////////////////////////////////////
-
- /**
- * By virtue of being {@link InstallerLookupAware}.
- */
- @Override
- public void setInstallerLookup(final InstallerLookup installerLookup) {
- this.installerLookup = installerLookup;
- }
-
- /**
- * @see #setInstallerLookup(InstallerLookup)
- */
- protected SystemDependencyInjector getInstallerLookup() {
- return installerLookup;
- }
// /////////////////////////////////////////////////////
// Dependencies (from context)
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
index 9da2585..59a6010 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
@@ -21,43 +21,16 @@ package org.apache.isis.core.runtime.persistence;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
- * Creates a {@link PersistenceSession} on behalf of a
+ * Creates an {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} on behalf of a
* {@link PersistenceSessionFactory}.
*/
public interface PersistenceSessionFactoryDelegate extends IsisConfigurationBuilderAware, MetaModelRefiner {
+ ObjectStoreSpi createObjectStore(final IsisConfiguration configuration);
- ///////////////////////////////////////////////////////////////////////////
- // singleton threadsafe components created during init
- ///////////////////////////////////////////////////////////////////////////
-
- ObjectAdapterFactory createAdapterFactory(IsisConfiguration configuration);
-
- ServicesInjectorSpi createServicesInjector(IsisConfiguration configuration);
-
- RuntimeContext createRuntimeContext(IsisConfiguration configuration);
-
-
- ///////////////////////////////////////////////////////////////////////////
- // created for each session
- ///////////////////////////////////////////////////////////////////////////
-
- /**
- * As per {@link PersistenceSessionFactory#createPersistenceSession()}, but
- * passing a {@link PersistenceSessionFactory} to act as the
- * {@link PersistenceSession}'s
- * {@link PersistenceSession#getPersistenceSessionFactory() owning factory}.
- */
- PersistenceSession createPersistenceSession(PersistenceSessionFactory persistenceSessionFactory);
-
-
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
index c0902f7..69153f2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
@@ -20,29 +20,38 @@
package org.apache.isis.core.runtime.persistence;
import java.util.List;
+import java.util.Properties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.apache.isis.applib.clock.Clock;
import org.apache.isis.applib.fixtures.FixtureClock;
import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
+import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
+import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
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.PersistenceSessionFactory;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
import static org.hamcrest.CoreMatchers.*;
/**
* Implementation that just delegates to a supplied
- * {@link PersistenceSessionFactory}.
+ * {@link PersistenceSessionFactoryDelegate}.
*/
public class PersistenceSessionFactoryDelegating implements PersistenceSessionFactory, FixturesInstalledFlag {
+ private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactoryDelegating.class);
+
private final DeploymentType deploymentType;
private final IsisConfiguration configuration;
private final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate;
@@ -54,8 +63,7 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
private Boolean fixturesInstalled;
- private ObjectAdapterFactory adapterFactory;
- private ServicesInjectorSpi servicesInjector;
+ private final ServicesInjectorSpi servicesInjector = new ServicesInjectorDefault();
private RuntimeContext runtimeContext;
public PersistenceSessionFactoryDelegating(
@@ -78,7 +86,25 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
@Override
public PersistenceSession createPersistenceSession() {
- return persistenceSessionFactoryDelegate.createPersistenceSession(this);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("installing " + this.getClass().getName());
+ }
+
+ ServicesInjectorSpi servicesInjector = getServicesInjector();
+
+ final ObjectStoreSpi objectStore = persistenceSessionFactoryDelegate.createObjectStore(getConfiguration());
+
+ ensureThatArg(objectStore, is(not(nullValue())));
+
+ final PersistenceSession persistenceSession =new PersistenceSession(this, servicesInjector, objectStore, getConfiguration());
+
+ final IsisTransactionManager transactionManager = new IsisTransactionManager(persistenceSession, objectStore, servicesInjector);
+
+ persistenceSession.setDirtiableSupport(true);
+ persistenceSession.setTransactionManager(transactionManager);
+
+ return persistenceSession;
}
@Override
@@ -98,15 +124,7 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
FixtureClock.initialize();
}
- adapterFactory = persistenceSessionFactoryDelegate.createAdapterFactory(getConfiguration());
-
- ensureThatState(adapterFactory, is(not(nullValue())));
-
- servicesInjector = persistenceSessionFactoryDelegate.createServicesInjector(getConfiguration());
-
- ensureThatState(servicesInjector, is(not(nullValue())));
-
- runtimeContext = persistenceSessionFactoryDelegate.createRuntimeContext(getConfiguration());
+ runtimeContext = createRuntimeContext(getConfiguration());
ensureThatState(runtimeContext, is(not(nullValue())));
// inject the specification loader etc.
@@ -123,6 +141,25 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
servicesInjector.init();
}
+ private RuntimeContext createRuntimeContext(final IsisConfiguration configuration) {
+ final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
+ final Properties properties = applicationPropertiesFrom(configuration);
+ runtimeContext.setProperties(properties);
+ return runtimeContext;
+ }
+
+ private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) {
+ final Properties properties = new Properties();
+ final IsisConfiguration applicationConfiguration = configuration.getProperties("application");
+ for (final String key : applicationConfiguration) {
+ final String value = applicationConfiguration.getString(key);
+ final String newKey = key.substring("application.".length());
+ properties.setProperty(newKey, value);
+ }
+ return properties;
+ }
+
+
@Override
public final void shutdown() {
@@ -140,10 +177,6 @@ public class PersistenceSessionFactoryDelegating implements PersistenceSessionFa
// Components (setup during init...)
// //////////////////////////////////////////////////////
- public ObjectAdapterFactory getAdapterFactory() {
- return adapterFactory;
- }
-
public ServicesInjectorSpi getServicesInjector() {
return servicesInjector;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
index 97ada74..319942d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
@@ -30,12 +30,10 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
public class PojoAdapterFactory implements ObjectAdapterFactory {
@Override
- public PojoAdapter createAdapter(final Object pojo, final Oid oid, AdapterManager adapterManager) {
+ public PojoAdapter createAdapter(final Object pojo, final Oid oid, final AdapterManager adapterManager) {
return new PojoAdapter(pojo, oid, getSpecificationLoader(), adapterManager, getLocalization(), getAuthenticationSession());
}
-
-
protected AuthenticationSession getAuthenticationSession() {
return IsisContext.getAuthenticationSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreDelegating.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreDelegating.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreDelegating.java
deleted file mode 100644
index 02eb98d..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreDelegating.java
+++ /dev/null
@@ -1,194 +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;
-
-import java.util.List;
-
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-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.CreateObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
-import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
-
-/**
- * Implementation that simply delegates to underlying {@link ObjectStoreSpi}.
- *
- * <p>
- * Useful for quickly writing decorating implementations.
- */
-public class IsisObjectStoreDelegating implements ObjectStoreSpi {
-
- private final ObjectStoreSpi underlying;
- private final String name;
-
- public IsisObjectStoreDelegating(final ObjectStoreSpi underlying, final String name) {
- this.underlying = underlying;
- this.name = name;
- }
-
- // ////////////////////////////////////////////////
- // name
- // ////////////////////////////////////////////////
-
- @Override
- public String name() {
- return name + "(" + underlying.name() + ")";
- }
-
- // ////////////////////////////////////////////////
- // init, shutdown, reset, isInitialized
- // ////////////////////////////////////////////////
-
- @Override
- public void open() {
- underlying.open();
- }
-
- @Override
- public void close() {
- underlying.close();
- }
-
- @Override
- public void reset() {
- underlying.reset();
- }
-
- @Override
- public boolean isFixturesInstalled() {
- return underlying.isFixturesInstalled();
- }
-
- // ////////////////////////////////////////////////
- // createXxxCommands
- // ////////////////////////////////////////////////
-
- @Override
- public CreateObjectCommand createCreateObjectCommand(final ObjectAdapter object) {
- return underlying.createCreateObjectCommand(object);
- }
-
- @Override
- public DestroyObjectCommand createDestroyObjectCommand(final ObjectAdapter object) {
- return underlying.createDestroyObjectCommand(object);
- }
-
- @Override
- public SaveObjectCommand createSaveObjectCommand(final ObjectAdapter object) {
- return underlying.createSaveObjectCommand(object);
- }
-
- // ////////////////////////////////////////////////
- // execute
- // ////////////////////////////////////////////////
-
- @Override
- public void execute(final List<PersistenceCommand> commands) {
- underlying.execute(commands);
- }
-
- // ////////////////////////////////////////////////
- // TransactionManagement
- // ////////////////////////////////////////////////
-
- @Override
- public void startTransaction() {
- underlying.startTransaction();
- }
-
- @Override
- public void endTransaction() {
- underlying.endTransaction();
- }
-
- @Override
- public void abortTransaction() {
- underlying.abortTransaction();
- }
-
- // ////////////////////////////////////////////////
- // getObject, resolveImmediately, resolveField
- // ////////////////////////////////////////////////
-
- @Override
- public ObjectAdapter loadInstanceAndAdapt(final TypedOid oid) {
- return underlying.loadInstanceAndAdapt(oid);
- }
-
- @Override
- public void resolveField(final ObjectAdapter object, final ObjectAssociation field) {
- underlying.resolveField(object, field);
- }
-
- @Override
- public void resolveImmediately(final ObjectAdapter object) {
- underlying.resolveImmediately(object);
- }
-
- // ////////////////////////////////////////////////
- // getInstances, hasInstances
- // ////////////////////////////////////////////////
-
- @Override
- public List<ObjectAdapter> loadInstancesAndAdapt(final PersistenceQuery persistenceQuery) {
- return underlying.loadInstancesAndAdapt(persistenceQuery);
- }
-
- @Override
- public boolean hasInstances(final ObjectSpecification specification) {
- return underlying.hasInstances(specification);
- }
-
- // ////////////////////////////////////////////////
- // services
- // ////////////////////////////////////////////////
-
- @Override
- public RootOid getOidForService(ObjectSpecification serviceSpecification) {
- return underlying.getOidForService(serviceSpecification);
- }
-
- @Override
- public void registerService(final RootOid rootOid) {
- underlying.registerService(rootOid);
- }
-
- // ////////////////////////////////////////////////
- // debug
- // ////////////////////////////////////////////////
-
- @Override
- public void debugData(final DebugBuilder debug) {
- underlying.debugData(debug);
- }
-
- @Override
- public String debugTitle() {
- return underlying.debugTitle();
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreLogger.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreLogger.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreLogger.java
deleted file mode 100644
index c619708..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/IsisObjectStoreLogger.java
+++ /dev/null
@@ -1,205 +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;
-
-import java.util.List;
-
-import org.apache.isis.core.commons.config.IsisConfigurationException;
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.commons.factory.InstanceCreationException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-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.ObjectNotFoundException;
-import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
-import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
-
-public class IsisObjectStoreLogger extends Slf4jLogger implements ObjectStoreSpi {
-
-
- private final ObjectStoreSpi underlying;
-
- public IsisObjectStoreLogger(final ObjectStoreSpi decorated, final String level) {
- super(level);
- this.underlying = decorated;
- }
-
- public IsisObjectStoreLogger(final ObjectStoreSpi decorated) {
- this.underlying = decorated;
- }
-
- @Override
- public CreateObjectCommand createCreateObjectCommand(final ObjectAdapter object) {
- log("create object " + object);
- return underlying.createCreateObjectCommand(object);
- }
-
- @Override
- public void registerService(final RootOid rootOid) {
- log("registering service: " + rootOid.enString(getOidMarshaller()));
- underlying.registerService(rootOid);
- }
-
- @Override
- public DestroyObjectCommand createDestroyObjectCommand(final ObjectAdapter object) {
- log("destroy object " + object);
- return underlying.createDestroyObjectCommand(object);
- }
-
- @Override
- public SaveObjectCommand createSaveObjectCommand(final ObjectAdapter object) {
- log("save object " + object);
- return underlying.createSaveObjectCommand(object);
- }
-
- @Override
- public void debugData(final DebugBuilder debug) {
- underlying.debugData(debug);
- }
-
- @Override
- public String debugTitle() {
- return underlying.debugTitle();
- }
-
- @Override
- protected Class<?> getDecoratedClass() {
- return underlying.getClass();
- }
-
- @Override
- public List<ObjectAdapter> loadInstancesAndAdapt(final PersistenceQuery criteria) throws ObjectPersistenceException, UnsupportedFindException {
- log("get instances matching " + criteria);
- return underlying.loadInstancesAndAdapt(criteria);
- }
-
-
- @Override
- public ObjectAdapter loadInstanceAndAdapt(final TypedOid oid) throws ObjectNotFoundException, ObjectPersistenceException {
- final ObjectAdapter adapter = underlying.loadInstanceAndAdapt(oid);
- log("get object for " + oid + " (of type '" + oid.getObjectSpecId() + "')", adapter.getObject());
- return adapter;
- }
-
- @Override
- public RootOid getOidForService(ObjectSpecification serviceSpec) {
- final RootOid serviceOid = underlying.getOidForService(serviceSpec);
- if(serviceOid != null) {
- log("get OID for service: " + serviceOid.enString(getOidMarshaller()));
- } else {
- log("get OID for service: null (presumably in the process of being registered for '" + serviceSpec.getSpecId() + "')");
- }
- return serviceOid;
- }
-
- @Override
- public boolean hasInstances(final ObjectSpecification specification) throws ObjectPersistenceException {
- final boolean hasInstances = underlying.hasInstances(specification);
- log("has instances of " + specification.getShortIdentifier(), "" + hasInstances);
- return hasInstances;
- }
-
- @Override
- public boolean isFixturesInstalled() {
- final boolean isInitialized = underlying.isFixturesInstalled();
- log("is initialized: " + isInitialized);
- return isInitialized;
- }
-
- @Override
- public void open() throws IsisConfigurationException, InstanceCreationException, ObjectPersistenceException {
- log("opening " + name());
- underlying.open();
- }
-
- @Override
- public String name() {
- return underlying.name();
- }
-
- @Override
- public void reset() {
- log("reset");
- underlying.reset();
- }
-
- @Override
- public void resolveField(final ObjectAdapter object, final ObjectAssociation field) throws ObjectPersistenceException {
- log("resolve eagerly object in field " + field + " of " + object);
- underlying.resolveField(object, field);
- }
-
- @Override
- public void resolveImmediately(final ObjectAdapter object) throws ObjectPersistenceException {
- log("resolve immediately: " + object);
- underlying.resolveImmediately(object);
- }
-
- @Override
- public void execute(final List<PersistenceCommand> commands) throws ObjectPersistenceException {
- log("execute commands");
- int i = 0;
- for (final PersistenceCommand command : commands) {
- log(" " + (i++) + " " + command);
- }
- underlying.execute(commands);
- }
-
- @Override
- public void close() throws ObjectPersistenceException {
- log("closing " + underlying);
- underlying.close();
- }
-
- @Override
- public void startTransaction() {
- underlying.startTransaction();
- }
-
- @Override
- public void endTransaction() {
- underlying.endTransaction();
- }
-
- @Override
- public void abortTransaction() {
- underlying.abortTransaction();
- }
-
-
- /////////////////////////////////////////////
- // Dependencies (from context)
- /////////////////////////////////////////////
-
- protected OidMarshaller getOidMarshaller() {
- return IsisContext.getOidMarshaller();
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index ffd13b6..cdd3a10 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -54,6 +54,9 @@ import org.apache.isis.core.metamodel.spec.*;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
import org.apache.isis.core.runtime.persistence.NotPersistableException;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
+import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
+import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithmUnified;
@@ -104,43 +107,24 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
*/
public PersistenceSession(
final PersistenceSessionFactory persistenceSessionFactory,
- final ObjectAdapterFactory adapterFactory,
final ServicesInjectorSpi servicesInjector,
- final AdapterManagerSpi adapterManager,
- final ObjectStore objectStore,
- final IsisConfiguration configuration) {
-
- this(persistenceSessionFactory, adapterFactory, servicesInjector, new OidGenerator(new IdentifierGeneratorUnified(configuration)), adapterManager, objectStore, configuration);
- }
-
- /**
- * Initialize the object store so that calls to this object store access
- * persisted objects and persist changes to the object that are saved.
- */
- public PersistenceSession(
- final PersistenceSessionFactory persistenceSessionFactory,
- final ObjectAdapterFactory adapterFactory,
- final ServicesInjectorSpi servicesInjector,
- final OidGenerator oidGenerator,
- final AdapterManagerSpi adapterManager,
final ObjectStore objectStore,
final IsisConfiguration configuration) {
ensureThatArg(persistenceSessionFactory, is(not(nullValue())), "persistence session factory required");
-
- ensureThatArg(adapterFactory, is(not(nullValue())), "adapter factory required");
ensureThatArg(servicesInjector, is(not(nullValue())), "services injector required");
- ensureThatArg(oidGenerator, is(not(nullValue())), "OID generator required");
- ensureThatArg(adapterManager, is(not(nullValue())), "adapter manager required");
+ ensureThatArg(objectStore, is(not(nullValue())), "object store required");
// owning, application scope
this.persistenceSessionFactory = persistenceSessionFactory;
// session scope
- this.objectAdapterFactory = adapterFactory;
this.servicesInjector = servicesInjector;
- this.oidGenerator = oidGenerator;
- this.adapterManager = adapterManager;
+
+ this.objectAdapterFactory = new PojoAdapterFactory();
+ this.oidGenerator = new OidGenerator(new IdentifierGeneratorUnified(configuration));
+ this.adapterManager = new AdapterManagerDefault(new PojoRecreatorUnified(configuration));
+ this.persistAlgorithm = new PersistAlgorithmUnified(configuration);
setState(State.NOT_INITIALIZED);
@@ -148,10 +132,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
LOG.debug("creating " + this);
}
- this.persistAlgorithm = new PersistAlgorithmUnified(configuration);
-
- ensureThatArg(objectStore, is(not(nullValue())), "object store required");
-
this.objectStore = objectStore;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 7c3e2bf..9ab3529 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -21,14 +21,12 @@ package org.apache.isis.core.runtime.system.persistence;
import java.util.List;
import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate;
import org.apache.isis.core.runtime.system.DeploymentType;
/**
- * @see PersistenceSessionFactoryDelegate
+ * @see org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate
*/
public interface PersistenceSessionFactory extends MetaModelRefiner, ApplicationScopedComponent {
@@ -39,7 +37,6 @@ public interface PersistenceSessionFactory extends MetaModelRefiner, Application
// Singleton threadsafe components
// //////////////////////////////////////////////////////
- ObjectAdapterFactory getAdapterFactory();
ServicesInjectorSpi getServicesInjector();
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index 3c6d792..edccfa1 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -31,7 +31,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer2;
import org.apache.isis.core.commons.config.ConfigurationConstants;
@@ -49,6 +48,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
import org.apache.isis.core.runtime.persistence.PojoRefreshException;
import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
@@ -122,7 +122,10 @@ public class DataNucleusObjectStore implements ObjectStoreSpi {
private TransactionMode transactionMode;
- public DataNucleusObjectStore(ObjectAdapterFactory adapterFactory, DataNucleusApplicationComponents applicationComponents) {
+ public DataNucleusObjectStore(
+ final DataNucleusApplicationComponents applicationComponents) {
+
+ final ObjectAdapterFactory adapterFactory = new PojoAdapterFactory();
ensureThatArg(adapterFactory, is(notNullValue()));
ensureThatArg(applicationComponents, is(notNullValue()));
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index 9961265..adffadc 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -27,7 +27,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.components.Installer;
import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -35,7 +34,6 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorCom
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract;
import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationInJdoApplibFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceInJdoApplibFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityAnnotationFacetFactory;
@@ -79,37 +77,42 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
private static final String ISIS_CONFIG_PREFIX = "isis.persistor.datanucleus.impl";
- private DataNucleusApplicationComponents applicationComponents = null;
-
public DataNucleusPersistenceMechanismInstaller() {
super(NAME);
}
- ////////////////////////////////////////////////////////////////////////
- // createObjectStore
- ////////////////////////////////////////////////////////////////////////
-
+ //region > createObjectStore
+
@Override
- protected ObjectStoreSpi createObjectStore(IsisConfiguration configuration, ObjectAdapterFactory adapterFactory, AdapterManagerSpi adapterManager) {
- createDataNucleusApplicationComponentsIfRequired(configuration);
- return new DataNucleusObjectStore(adapterFactory, applicationComponents);
+ public ObjectStoreSpi createObjectStore(final IsisConfiguration configuration) {
+ final DataNucleusApplicationComponents applicationComponents = createDataNucleusApplicationComponentsIfRequired(configuration);
+ return new DataNucleusObjectStore(applicationComponents);
}
- private void createDataNucleusApplicationComponentsIfRequired(IsisConfiguration configuration) {
- // this is, perhaps doing more work than necessary...
- // maybe retain the applicationComponents and just tell it to discard its PMF?
- // (doubt will make much different in terms of the amount of time to process, though)
- if(applicationComponents != null && !applicationComponents.isStale()) {
- return;
+ //endregion
+
+ //region > createDataNucleusApplicationComponentsIfRequired
+
+ private DataNucleusApplicationComponents applicationComponents = null;
+
+ private DataNucleusApplicationComponents createDataNucleusApplicationComponentsIfRequired(IsisConfiguration configuration) {
+
+ if (applicationComponents == null || applicationComponents.isStale()) {
+
+ // this is, perhaps doing more work than necessary...
+ // maybe retain the applicationComponents and just tell it to discard its PMF?
+ // (doubt will make much different in terms of the amount of time to process, though)
+
+ final IsisConfiguration dataNucleusConfig = configuration.createSubset(ISIS_CONFIG_PREFIX);
+ final Map<String, String> props = dataNucleusConfig.asMap();
+ addDataNucleusPropertiesIfRequired(props);
+
+ final Set<String> classesToBePersisted = catalogClassesToBePersisted(configuration, getSpecificationLoader().allSpecifications());
+ applicationComponents = new DataNucleusApplicationComponents(props, classesToBePersisted);
}
-
- final IsisConfiguration dataNucleusConfig = configuration.createSubset(ISIS_CONFIG_PREFIX);
- final Map<String, String> props = dataNucleusConfig.asMap();
- addDataNucleusPropertiesIfRequired(props);
- final Set<String> classesToBePersisted = catalogClassesToBePersisted(configuration, getSpecificationLoader().allSpecifications());
- applicationComponents = new DataNucleusApplicationComponents(props, classesToBePersisted);
+ return applicationComponents;
}
private static Set<String> catalogClassesToBePersisted(final IsisConfiguration configuration, Collection<ObjectSpecification> objectSpecs) {
@@ -178,10 +181,9 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
props.put(key, value);
}
}
+ //endregion
- ////////////////////////////////////////////////////////////////////////
- // PersistenceSessionFactoryDelegate impl
- ////////////////////////////////////////////////////////////////////////
+ //region > PersistenceSessionFactoryDelegate impl
@Override
@@ -211,14 +213,13 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
metaModelValidator.add(new JdoMetaModelValidator());
}
+ //endregion
+ //region > dependencies
- ////////////////////////////////////////////////////////////////////////
- // Dependencies
- ////////////////////////////////////////////////////////////////////////
-
protected SpecificationLoaderSpi getSpecificationLoader() {
return IsisContext.getSpecificationLoader();
}
+ //endregion
}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
deleted file mode 100644
index 7b6ac68..0000000
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/PersistenceSessionObjectStoreTest.java
+++ /dev/null
@@ -1,268 +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;
-
-import java.util.Collections;
-import org.jmock.Expectations;
-import org.jmock.Sequence;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.apache.isis.applib.services.audit.AuditingService3;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.authentication.MessageBroker;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.matchers.IsisMatchers;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
-import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.apache.isis.core.metamodel.app.IsisMetaModel;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
-import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
-import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
-import org.apache.isis.core.runtime.system.persistence.*;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-
-public class PersistenceSessionObjectStoreTest {
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
- private ServicesInjectorDefault servicesInjector;
- private AdapterManagerSpi adapterManager;
- private ObjectAdapterFactory adapterFactory;
-
-
- private PersistenceSession persistenceSession;
- private IsisTransactionManager transactionManager;
-
- private ObjectAdapter persistentAdapter;
- private PojoAdapter transientAdapter;
-
- @Mock
- private PersistenceSessionFactory mockPersistenceSessionFactory;
-
- @Mock
- private AuthenticationSession mockAuthenticationSession;
-
- @Mock
- private ObjectStoreSpi mockObjectStore;
- @Mock
- private AuditingService3 mockAuditingService3;
- @Mock
- private PublishingServiceWithDefaultPayloadFactories mockPublishingService;
-
- @Mock
- private CreateObjectCommand createObjectCommand;
- @Mock
- private SaveObjectCommand saveObjectCommand;
- @Mock
- private DestroyObjectCommand destroyObjectCommand;
-
- @Mock
- private Version mockVersion;
-
- @Mock
- private RuntimeContext mockRuntimeContext;
-
- @Mock
- private IsisConfiguration mockConfiguration;
-
- @Mock
- private MessageBroker mockMessageBroker;
-
-
- private IsisMetaModel isisMetaModel;
-
-
-
- public static class Customer {
- }
-
- public static class CustomerRepository {
- public Customer x() {return null;}
- }
-
- @Before
- public void setUp() throws Exception {
- org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.OFF);
-
- context.ignoring(mockRuntimeContext);
- context.ignoring(mockConfiguration);
- context.ignoring(mockAuditingService3);
-
- isisMetaModel = new IsisMetaModel(mockRuntimeContext, new ProgrammingModelFacetsJava5(), new CustomerRepository());
- isisMetaModel.init();
-
- context.checking(new Expectations() {
- {
- ignoring(mockObjectStore).open();
- ignoring(mockObjectStore).close();
- ignoring(mockObjectStore).name();
- ignoring(mockConfiguration);
-
- ignoring(createObjectCommand);
- ignoring(saveObjectCommand);
- ignoring(destroyObjectCommand);
- ignoring(mockVersion);
-
- allowing(mockAuthenticationSession).getMessageBroker();
- will(returnValue(mockMessageBroker));
- }
- });
-
- final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
- final DomainObjectContainerDefault container = new DomainObjectContainerDefault();
-
- runtimeContext.injectInto(container);
-
- servicesInjector = new ServicesInjectorDefault(new InjectorMethodEvaluatorDefault());
-
- adapterManager = new AdapterManagerDefault(new PojoRecreatorUnified(mockConfiguration));
- adapterFactory = new PojoAdapterFactory();
- persistenceSession = new PersistenceSession(mockPersistenceSessionFactory, adapterFactory, servicesInjector, new OidGenerator(new IdentifierGeneratorDefault()), adapterManager, mockObjectStore, mockConfiguration) {
- @Override
- protected SpecificationLoaderSpi getSpecificationLoader() {
- return isisMetaModel.getSpecificationLoader();
- }
-
- };
-
- servicesInjector.setServices(Collections.<Object>singletonList(container));
-
- context.checking(new Expectations(){{
- allowing(mockAuthenticationSession).getUserName();
- will(returnValue("sven"));
- }});
-
-
- transactionManager = new IsisTransactionManager(persistenceSession, mockObjectStore, servicesInjector) {
- @Override
- public AuthenticationSession getAuthenticationSession() {
- return mockAuthenticationSession;
- }
- };
- persistenceSession.setTransactionManager(transactionManager);
-
- persistentAdapter = PojoAdapterBuilder.create().withOid("CUS|1").withPojo(new Customer()).with(Persistence.PERSISTENT).with(mockVersion).with(isisMetaModel.getSpecificationLoader()).build();
- transientAdapter = PojoAdapterBuilder.create().withOid("CUS|2").withPojo(new Customer()).with(Persistence.TRANSIENT).with(isisMetaModel.getSpecificationLoader()).build();
- }
-
-
- @Test
- public void destroyObjectThenAbort() {
-
- final Sequence tran = context.sequence("tran");
- context.checking(new Expectations() {
- {
- one(mockObjectStore).startTransaction();
- inSequence(tran);
-
- one(mockObjectStore).createDestroyObjectCommand(persistentAdapter);
- inSequence(tran);
-
- one(mockObjectStore).abortTransaction();
- inSequence(tran);
- }
- });
-
- transactionManager.startTransaction();
- persistenceSession.destroyObject(persistentAdapter);
- transactionManager.abortTransaction();
- }
-
- @Test
- public void destroyObject_thenCommit() {
-
- final Sequence tran = context.sequence("tran");
- context.checking(new Expectations() {
- {
- oneOf(mockObjectStore).startTransaction();
- inSequence(tran);
-
- oneOf(mockObjectStore).createDestroyObjectCommand(persistentAdapter);
- inSequence(tran);
- will(returnValue(destroyObjectCommand));
-
- oneOf(mockObjectStore).execute(with(IsisMatchers.listContaining((PersistenceCommand)destroyObjectCommand)));
- inSequence(tran);
-
- // second flush after publish
- oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
- inSequence(tran);
-
- // third flush after commands
- oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
- inSequence(tran);
-
- oneOf(mockObjectStore).endTransaction();
- inSequence(tran);
- }
-
- });
-
- transactionManager.startTransaction();
- persistenceSession.destroyObject(persistentAdapter);
- transactionManager.endTransaction();
- }
-
- @Test
- public void makePersistent_happyCase() {
-
- final Sequence tran = context.sequence("tran");
- context.checking(new Expectations() {
- {
- oneOf(mockObjectStore).startTransaction();
- inSequence(tran);
-
- oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
- inSequence(tran);
- // second flush after publish
- oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
- inSequence(tran);
- // third flush after commands
- oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
- inSequence(tran);
-
- oneOf(mockObjectStore).endTransaction();
- inSequence(tran);
- }
- });
-
- transactionManager.startTransaction();
- persistenceSession.makePersistent(transientAdapter);
- transactionManager.endTransaction();
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/46dc3a48/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
new file mode 100644
index 0000000..2d67115
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
@@ -0,0 +1,268 @@
+/*
+ * 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.Collections;
+import org.jmock.Expectations;
+import org.jmock.Sequence;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.apache.isis.applib.services.audit.AuditingService3;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.matchers.IsisMatchers;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
+import org.apache.isis.core.metamodel.adapter.version.Version;
+import org.apache.isis.core.metamodel.app.IsisMetaModel;
+import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
+import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
+import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
+import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
+import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
+import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+
+public class PersistenceSessionTest {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ private ServicesInjectorDefault servicesInjector;
+ private AdapterManagerSpi adapterManager;
+ private ObjectAdapterFactory adapterFactory;
+
+
+ private PersistenceSession persistenceSession;
+ private IsisTransactionManager transactionManager;
+
+ private ObjectAdapter persistentAdapter;
+ private PojoAdapter transientAdapter;
+
+ @Mock
+ private PersistenceSessionFactory mockPersistenceSessionFactory;
+
+ @Mock
+ private AuthenticationSession mockAuthenticationSession;
+
+ @Mock
+ private ObjectStoreSpi mockObjectStore;
+ @Mock
+ private AuditingService3 mockAuditingService3;
+ @Mock
+ private PublishingServiceWithDefaultPayloadFactories mockPublishingService;
+
+ @Mock
+ private CreateObjectCommand createObjectCommand;
+ @Mock
+ private SaveObjectCommand saveObjectCommand;
+ @Mock
+ private DestroyObjectCommand destroyObjectCommand;
+
+ @Mock
+ private Version mockVersion;
+
+ @Mock
+ private RuntimeContext mockRuntimeContext;
+
+ @Mock
+ private IsisConfiguration mockConfiguration;
+
+ @Mock
+ private MessageBroker mockMessageBroker;
+
+
+ private IsisMetaModel isisMetaModel;
+
+
+
+ public static class Customer {
+ }
+
+ public static class CustomerRepository {
+ public Customer x() {return null;}
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.OFF);
+
+ context.ignoring(mockRuntimeContext);
+ context.ignoring(mockConfiguration);
+ context.ignoring(mockAuditingService3);
+
+ isisMetaModel = new IsisMetaModel(mockRuntimeContext, new ProgrammingModelFacetsJava5(), new CustomerRepository());
+ isisMetaModel.init();
+
+ context.checking(new Expectations() {
+ {
+ ignoring(mockObjectStore).open();
+ ignoring(mockObjectStore).close();
+ ignoring(mockObjectStore).name();
+ ignoring(mockConfiguration);
+
+ ignoring(createObjectCommand);
+ ignoring(saveObjectCommand);
+ ignoring(destroyObjectCommand);
+ ignoring(mockVersion);
+
+ allowing(mockAuthenticationSession).getMessageBroker();
+ will(returnValue(mockMessageBroker));
+ }
+ });
+
+ final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
+ final DomainObjectContainerDefault container = new DomainObjectContainerDefault();
+
+ runtimeContext.injectInto(container);
+
+ servicesInjector = new ServicesInjectorDefault(new InjectorMethodEvaluatorDefault());
+
+ adapterManager = new AdapterManagerDefault(new PojoRecreatorUnified(mockConfiguration));
+ adapterFactory = new PojoAdapterFactory();
+ persistenceSession = new PersistenceSession(mockPersistenceSessionFactory, servicesInjector, mockObjectStore, mockConfiguration) {
+ @Override
+ protected SpecificationLoaderSpi getSpecificationLoader() {
+ return isisMetaModel.getSpecificationLoader();
+ }
+
+ };
+
+ servicesInjector.setServices(Collections.<Object>singletonList(container));
+
+ context.checking(new Expectations(){{
+ allowing(mockAuthenticationSession).getUserName();
+ will(returnValue("sven"));
+ }});
+
+
+ transactionManager = new IsisTransactionManager(persistenceSession, mockObjectStore, servicesInjector) {
+ @Override
+ public AuthenticationSession getAuthenticationSession() {
+ return mockAuthenticationSession;
+ }
+ };
+ persistenceSession.setTransactionManager(transactionManager);
+
+ persistentAdapter = PojoAdapterBuilder.create().withOid("CUS|1").withPojo(new Customer()).with(Persistence.PERSISTENT).with(mockVersion).with(isisMetaModel.getSpecificationLoader()).build();
+ transientAdapter = PojoAdapterBuilder.create().withOid("CUS|2").withPojo(new Customer()).with(Persistence.TRANSIENT).with(isisMetaModel.getSpecificationLoader()).build();
+ }
+
+
+ @Test
+ public void destroyObjectThenAbort() {
+
+ final Sequence tran = context.sequence("tran");
+ context.checking(new Expectations() {
+ {
+ one(mockObjectStore).startTransaction();
+ inSequence(tran);
+
+ one(mockObjectStore).createDestroyObjectCommand(persistentAdapter);
+ inSequence(tran);
+
+ one(mockObjectStore).abortTransaction();
+ inSequence(tran);
+ }
+ });
+
+ transactionManager.startTransaction();
+ persistenceSession.destroyObject(persistentAdapter);
+ transactionManager.abortTransaction();
+ }
+
+ @Test
+ public void destroyObject_thenCommit() {
+
+ final Sequence tran = context.sequence("tran");
+ context.checking(new Expectations() {
+ {
+ oneOf(mockObjectStore).startTransaction();
+ inSequence(tran);
+
+ oneOf(mockObjectStore).createDestroyObjectCommand(persistentAdapter);
+ inSequence(tran);
+ will(returnValue(destroyObjectCommand));
+
+ oneOf(mockObjectStore).execute(with(IsisMatchers.listContaining((PersistenceCommand)destroyObjectCommand)));
+ inSequence(tran);
+
+ // second flush after publish
+ oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
+ inSequence(tran);
+
+ // third flush after commands
+ oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
+ inSequence(tran);
+
+ oneOf(mockObjectStore).endTransaction();
+ inSequence(tran);
+ }
+
+ });
+
+ transactionManager.startTransaction();
+ persistenceSession.destroyObject(persistentAdapter);
+ transactionManager.endTransaction();
+ }
+
+ @Test
+ public void makePersistent_happyCase() {
+
+ final Sequence tran = context.sequence("tran");
+ context.checking(new Expectations() {
+ {
+ oneOf(mockObjectStore).startTransaction();
+ inSequence(tran);
+
+ oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
+ inSequence(tran);
+ // second flush after publish
+ oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
+ inSequence(tran);
+ // third flush after commands
+ oneOf(mockObjectStore).execute(with(equalTo(Collections.<PersistenceCommand>emptyList())));
+ inSequence(tran);
+
+ oneOf(mockObjectStore).endTransaction();
+ inSequence(tran);
+ }
+ });
+
+ transactionManager.startTransaction();
+ persistenceSession.makePersistent(transientAdapter);
+ transactionManager.endTransaction();
+ }
+}
[18/29] isis git commit: ISIS-537 Improve the Bootstrap styling of
ValuePage.html
Posted by da...@apache.org.
ISIS-537 Improve the Bootstrap styling of ValuePage.html
https://trello.com/c/Ygt1zDSp/112-i-just-tested-todo-app-s-total-cost-functionality-and-found-out-that-the-valuepage-doesn-t-looks-very-pretty-at-the-moment
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/11c6dcd3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/11c6dcd3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/11c6dcd3
Branch: refs/heads/ISIS-939
Commit: 11c6dcd378e3d94e502269d2eeb36e471613c166
Parents: 1c17e40
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Nov 6 12:07:10 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Nov 6 12:07:10 2014 +0200
----------------------------------------------------------------------
.../apache/isis/viewer/wicket/ui/pages/value/ValuePage.html | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/11c6dcd3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.html
index 7fee76e..d1b793b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.html
@@ -28,9 +28,11 @@
<div wicket:id="bookmarks"></div>
<div class="myBlockContainer">
<div class="iconAndTitle panel panel-default actionPanelHeaderNew">
- <h3 wicket:id="actionName" class="actionName">[action name]</h3>
+ <div class="panel-heading">
+ <div wicket:id="actionName" class="panel-title actionName">[action name]</div>
+ </div>
+ <div wicket:id="value" class="panel-body"></div>
</div>
- <div wicket:id="value"></div>
</div>
</div>
</wicket:extend>
[15/29] isis git commit: ISIS-537 Add an 'edit' icon for
EntityPropertiesPanel
Posted by da...@apache.org.
ISIS-537 Add an 'edit' icon for EntityPropertiesPanel
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/21d008a8
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/21d008a8
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/21d008a8
Branch: refs/heads/ISIS-939
Commit: 21d008a89061d892fb427d668b64fbfbe3e90b07
Parents: e59364a
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Nov 6 11:42:04 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Nov 6 11:42:04 2014 +0200
----------------------------------------------------------------------
.../ui/components/entity/properties/EntityPropertiesForm.java | 1 +
.../ui/components/entity/properties/EntityPropertiesPanel.html | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/21d008a8/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 6c8d1b4..cbfe092 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -447,6 +447,7 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> {
});
}
};
+ editButton.add(new Label("editLabel", editButton.getModel()));
markupContainer.add(editButton);
http://git-wip-us.apache.org/repos/asf/isis/blob/21d008a8/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
index f9e8d40..18dfd1d 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.html
@@ -40,7 +40,7 @@
<span wicket:id="feedback"></span>
</div>
<div class="buttons">
- <input type="submit" class="edit btn btn-primary btn-md" wicket:id="edit"/>
+ <button type="submit" class="edit btn btn-primary btn-md" wicket:id="edit"><span class="fa fa-edit"></span> <wicket:container wicket:id="editLabel"></wicket:container></button>
<input type="submit" class="ok btn btn-primary btn-md" wicket:id="ok"/>
<input type="submit" class="cancel btn btn-default btn-md" wicket:id="cancel"/>
</div>
[06/29] isis git commit: ISIS-537 Use CSS 'visibility' for
showing/hiding the copy link for better IE support
Posted by da...@apache.org.
ISIS-537 Use CSS 'visibility' for showing/hiding the copy link for better IE support
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/21bc20bd
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/21bc20bd
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/21bc20bd
Branch: refs/heads/ISIS-939
Commit: 21bc20bd016b268b354089696a1895db4568e281
Parents: da9e360
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 00:32:49 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 00:32:49 2014 +0200
----------------------------------------------------------------------
.../wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css | 2 +-
.../isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/21bc20bd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
index a4793b9..5a90393 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
@@ -26,5 +26,5 @@
}
.copyLink {
- opacity: 0;
+ visibility: hidden;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21bc20bd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index f502195..c5a734b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -111,10 +111,10 @@ $(function() {
*/
$('.entityIconTitleAndCopylink').hover(
function() {
- $('.copyLink').css({opacity: 1});
+ $('.copyLink').css({visibility: 'visible'});
},
function() {
- $('.copyLink').css({opacity: 0});
+ $('.copyLink').css({visibility: 'hidden'});
}
);
});
[02/29] isis git commit: ISIS-537 Show/hide the CopyLink modal window
with alt+] keyboard combination
Posted by da...@apache.org.
ISIS-537 Show/hide the CopyLink modal window with alt+] keyboard combination
https://trello.com/c/ZothDcdD/102-bug-if-do-alt-twice-in-succession-then-cancel-does-not-remove-the-veil
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b97fac42
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b97fac42
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b97fac42
Branch: refs/heads/ISIS-939
Commit: b97fac426840fa2d3a9415c45d02ce6a9ca4947c
Parents: 8efdfa0
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Nov 4 22:47:17 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Nov 4 22:47:17 2014 +0200
----------------------------------------------------------------------
.../widgets/zclip/ZeroClipboardPanel.html | 4 ++--
.../wicket/ui/pages/jquery.isis.wicket.viewer.js | 17 +++++++++++++----
2 files changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b97fac42/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
index f4c8857..52d1dfd 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
@@ -24,11 +24,11 @@
<i class="fa fa-fw fa-link fa-lg"></i>
</a>
<wicket:remove>
- TODO reenable the subscribing link after figuring out what it is.
+ TODO mgrigorov reenable the subscribing link after figuring out what it is.
Can we have a separate <li></li> for it ?
</wicket:remove>
<!--<a wicket:id="subscribingLink" id="subscribingLink" class="subscribingLink" href="#"> </a>-->
- <div wicket:id="simpleClipboardModalWindow"></div>
+ <div wicket:id="simpleClipboardModalWindow" class="copyModal"></div>
</wicket:panel>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/isis/blob/b97fac42/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index 1178319..b7cf9dd 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -27,7 +27,8 @@ $(function() {
window.Isis = {
Topic: {
OPEN_IN_NEW_TAB: 'openInNewTab'
- }
+ },
+ copyModalShown: false
};
var isisVeilTimeoutId;
@@ -88,11 +89,19 @@ $(function() {
});
});
-
+ /**
+ * Show/hide the CopyLink modal window with alt+]
+ */
$('body').keydown(function(e) {
- // alt+]
- if(e.which === 221 && e.altKey) {
+ var $copyModal = $('.copyModal');
+
+ if(!Isis.copyModalShown && e.which === 221 && e.altKey) {
+ Isis.copyModalShown = true;
$('.copyLink').click();
+ } else {
+ $copyModal.modal('hide');
+ $('.modal-backdrop').remove();
+ Isis.copyModalShown = false;
}
});
});
[03/29] isis git commit: ISIS-537 Fix JavaScript for
org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.AjaxDeferredBehaviour.OpenUrlStrategy#NEW_WINDOW.
It should be wrapped in a function.
Posted by da...@apache.org.
ISIS-537 Fix JavaScript for org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.AjaxDeferredBehaviour.OpenUrlStrategy#NEW_WINDOW. It should be wrapped in a function.
https://trello.com/c/UYl51kIt/101-todoitem-opensourcecodeongithub-a-no-arg-action-returning-a-java-net-url-does-nothing
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/cf910f3c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/cf910f3c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/cf910f3c
Branch: refs/heads/ISIS-939
Commit: cf910f3c9b7f4d613668cf4e104eb0fd9df3e742
Parents: b97fac4
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Nov 4 22:54:10 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Nov 4 22:54:10 2014 +0200
----------------------------------------------------------------------
.../ui/components/widgets/cssmenu/AjaxDeferredBehaviour.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/cf910f3c/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/AjaxDeferredBehaviour.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/AjaxDeferredBehaviour.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/AjaxDeferredBehaviour.java
index bc9bb2f..cdf06ca 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/AjaxDeferredBehaviour.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/AjaxDeferredBehaviour.java
@@ -39,7 +39,7 @@ public abstract class AjaxDeferredBehaviour extends AbstractAjaxBehavior {
final RequestCycle requestCycle = deferredBehaviour.getComponent().getRequestCycle();
final UrlRenderer urlRenderer = requestCycle.getUrlRenderer();
String fullUrl = urlRenderer.renderFullUrl(parsedUrl);
- return "Wicket.Event.publish(Isis.Topic.OPEN_IN_NEW_TAB, '" + fullUrl + "');";
+ return "function(){Wicket.Event.publish(Isis.Topic.OPEN_IN_NEW_TAB, '" + fullUrl + "');}";
}
},
SAME_WINDOW {
[13/29] isis git commit: ISIS-537 Replace tabs with spaces. Remove
unused methods.
Posted by da...@apache.org.
ISIS-537 Replace tabs with spaces. Remove unused methods.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/8cbe98e0
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/8cbe98e0
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/8cbe98e0
Branch: refs/heads/ISIS-939
Commit: 8cbe98e03d58a047a141795e24f44391c2b27a0a
Parents: e858ac5
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Nov 6 10:53:55 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Nov 6 10:53:55 2014 +0200
----------------------------------------------------------------------
.../collections/EntityCollectionsPanel.java | 37 ++++++--------------
1 file changed, 10 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/8cbe98e0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
index 6a162f9..f18ba4a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
@@ -21,8 +21,6 @@ package org.apache.isis.viewer.wicket.ui.components.entity.collections;
import java.util.List;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.RepeatingView;
@@ -98,8 +96,8 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
}
private void addCollectionToForm(final EntityModel entityModel,
- final ObjectAssociation association,
- final WebMarkupContainer collectionRvContainer) {
+ final ObjectAssociation association,
+ final WebMarkupContainer collectionRvContainer) {
final CssClassFacet facet = association.getFacet(CssClassFacet.class);
if(facet != null) {
@@ -108,39 +106,24 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
final WebMarkupContainer fieldset = new WebMarkupContainer(ID_COLLECTION_GROUP);
collectionRvContainer.add(fieldset);
- final OneToManyAssociation otma = (OneToManyAssociation) association;
+ final OneToManyAssociation otma = (OneToManyAssociation) association;
+
+ final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityModel, otma);
+
+ labelComponent = collectionPanel.createLabel(ID_COLLECTION_NAME, association.getName());
- final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityModel, otma);
-
- labelComponent = collectionPanel.createLabel(ID_COLLECTION_NAME, association.getName());
-
fieldset.add(labelComponent);
- fieldset.addOrReplace(collectionPanel);
- }
+ fieldset.addOrReplace(collectionPanel);
+ }
private List<ObjectAssociation> visibleCollections(final ObjectAdapter adapter, final ObjectSpecification noSpec) {
return noSpec.getAssociations(Contributed.INCLUDED, visibleCollectionsFilter(adapter));
}
@SuppressWarnings("unchecked")
- private Filter<ObjectAssociation> visibleCollectionsFilter(final ObjectAdapter adapter) {
+ private Filter<ObjectAssociation> visibleCollectionsFilter(final ObjectAdapter adapter) {
return Filters.and(ObjectAssociation.Filters.COLLECTIONS, ObjectAssociation.Filters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.PARENTED_TABLES));
}
- private void requestRepaintPanel(final AjaxRequestTarget target) {
- if (target != null) {
- target.add(this);
- }
- }
-
- private EntityModel getEntityModel() {
- return getModel();
- }
-
- void toViewMode(final AjaxRequestTarget target) {
- getEntityModel().toViewMode();
- requestRepaintPanel(target);
- }
-
}
[29/29] isis git commit: ISIS-537: update to ToDoItem's layout to
demonstrate labelAt facet.
Posted by da...@apache.org.
ISIS-537: update to ToDoItem's layout to demonstrate labelAt facet.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/ee4fe8b8
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/ee4fe8b8
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/ee4fe8b8
Branch: refs/heads/ISIS-939
Commit: ee4fe8b8ffb87aa59d365f89c7a5bd7edb498254
Parents: 6f2296c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 6 16:22:19 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:22:19 2014 +0000
----------------------------------------------------------------------
.../todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/ee4fe8b8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
index 36491de..540b13f 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -22,11 +22,15 @@
"General": {
"members": {
"description": {
- "typicalLength": { "value": 50 }
+ "typicalLength": { "value": 50 },
+ "labelAt": { "value": "TOP" }
},
"category": {
+ "named": { "value": "Category/subcategory" },
+ "labelAt": { "value": "TOP" }
},
"subcategory": {
+ "labelAt": { "value": "NONE" },
"actions": {
"updateCategory": {
"named": {
@@ -119,7 +123,7 @@
"hidden": {
"where": "ALL_TABLES"
},
- "labelAt": { "value": "LEFT" }
+ "labelAt": { "value": "TOP" }
},
"attachment": {
"hidden": {
[09/29] isis git commit: ISIS-537 Reduce event more the vertical
space between the entity properties by copmletely hiding the label when
.label-none.
Posted by da...@apache.org.
ISIS-537 Reduce event more the vertical space between the entity properties by copmletely hiding the label when .label-none.
Remove the top padding (5px) and make the bottom padding 2px bigger (to 7px).
https://trello.com/c/ZaacXqga/105-if-labelat-none-then-remove-the-large-amount-of-vertical-white-space-where-the-label-would-ve-been
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c5697ee0
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c5697ee0
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c5697ee0
Branch: refs/heads/ISIS-939
Commit: c5697ee02327df4b6f4b4719772535e0a4c36422
Parents: bcd1794
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 22:51:31 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 22:51:31 2014 +0200
----------------------------------------------------------------------
.../ui/components/entity/properties/EntityPropertiesPanel.css | 3 +--
.../apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/c5697ee0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
index bd6f65a..b46a621 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
@@ -17,6 +17,5 @@
* under the License.
*/
.entityPropertiesPanel .property {
- padding-top: 5px;
- padding-bottom: 5px;
+ padding-bottom: 7px;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c5697ee0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 64934e8..2cde692 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -99,8 +99,7 @@ div.label-top label.control-label {
}
div.label-none label.control-label {
- padding-left: 10px;
- visibility: hidden;
+ display: none;
}
div.label-left .scalarValueWrapper {
[08/29] isis git commit: ISIS-537 Remove margin-bottom: 15px;
for .form-group
Posted by da...@apache.org.
ISIS-537 Remove margin-bottom: 15px; for .form-group
https://trello.com/c/ATmCqVEy/104-too-much-vertical-space-between-fields-all-themes
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/bcd1794d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/bcd1794d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/bcd1794d
Branch: refs/heads/ISIS-939
Commit: bcd1794d4f82f68491f710b3ac0285181c0c2884
Parents: c195fa7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 22:36:42 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 22:36:42 2014 +0200
----------------------------------------------------------------------
.../entity/properties/EntityPropertiesPanel.css | 10 +++-------
.../entity/properties/EntityPropertiesPanel.java | 9 +++++++++
.../viewer/wicket/ui/pages/bootstrap-overrides.css | 15 +++++++--------
3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/bcd1794d/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
index 20dfa96..bd6f65a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.css
@@ -16,11 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-.entityPropertiesPanel fieldset {
- margin: 0px 0px 10px 0px;
- padding:10px 10px 0px 10px;
- border-radius: 4px;
+.entityPropertiesPanel .property {
+ padding-top: 5px;
+ padding-bottom: 5px;
}
-
-.entityPropertiesPanel fieldset legend {
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/bcd1794d/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.java
index fe9366a..ac89613 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesPanel.java
@@ -19,9 +19,11 @@
package org.apache.isis.viewer.wicket.ui.components.entity.properties;
+import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
/**
* {@link PanelAbstract Panel} representing the properties of an entity, as per
@@ -41,6 +43,13 @@ public class EntityPropertiesPanel extends PanelAbstract<EntityModel> {
form.toViewMode(null);
}
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+
+ PanelUtil.renderHead(response, getClass());
+ }
+
private void buildGui() {
buildEntityPropertiesAndOrCollectionsGui();
setOutputMarkupId(true); // so can repaint via ajax
http://git-wip-us.apache.org/repos/asf/isis/blob/bcd1794d/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 5d9ef09..64934e8 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -58,12 +58,6 @@
border: none;
}
-/** added here because looks lke EntityPropertiesPanel.css is currently excluded ...? */
-.entityPropertiesPanel .property {
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
.pagination {
margin: 0;
}
@@ -82,7 +76,12 @@ th > a > div > strong {
float: left;
}
-/* Labels on the left START */
+/* Labels on the left/top/none START */
+
+.form-group {
+ margin-bottom: 0;
+}
+
div.label-left.form-group {
width: 100%;
}
@@ -139,4 +138,4 @@ div.label-left .choicesPlaceholder {
vertical-align: -webkit-baseline-middle;
vertical-align: middle;
}
-/* Labels on the right END */
+/* Labels on the left/top/none END */
[27/29] isis git commit: ISIS-939: clear the MessageBroker's
applicationError field once read (functionality lost in previous
refactorings).
Posted by da...@apache.org.
ISIS-939: clear the MessageBroker's applicationError field once read (functionality lost in previous refactorings).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/0ecd015c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/0ecd015c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/0ecd015c
Branch: refs/heads/ISIS-939
Commit: 0ecd015ce25e71c9c4f7d2ca4d262600c9c5cc14
Parents: 5f8fca9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 4 08:13:46 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:19:01 2014 +0000
----------------------------------------------------------------------
.../apache/isis/core/commons/authentication/MessageBroker.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/0ecd015c/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 dc36cce..52cd3a5 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
@@ -88,7 +88,9 @@ public class MessageBroker implements Serializable, DebuggableWithTitle {
//endregion
public String getApplicationError() {
- return applicationError;
+ final String error = applicationError;
+ setApplicationError(null);
+ return error;
}
public void setApplicationError(String applicationError) {
[20/29] isis git commit: ISIS-939: more simplified of persistence
sessions and object stores.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index 9ab3529..cb3b320 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -20,43 +20,212 @@
package org.apache.isis.core.runtime.system.persistence;
import java.util.List;
+import java.util.Properties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.applib.fixtures.FixtureClock;
import org.apache.isis.core.commons.components.ApplicationScopedComponent;
+import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
+import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
+import org.apache.isis.core.runtime.persistence.ObjectStoreFactory;
+import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
+import static org.hamcrest.CoreMatchers.*;
/**
- * @see org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate
+ * Implementation that just delegates to a supplied
+ * {@link org.apache.isis.core.runtime.persistence.ObjectStoreFactory}.
*/
-public interface PersistenceSessionFactory extends MetaModelRefiner, ApplicationScopedComponent {
+public class PersistenceSessionFactory implements MetaModelRefiner, ApplicationScopedComponent, FixturesInstalledFlag {
+
+ private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactory.class);
+
+ private final DeploymentType deploymentType;
+ private final IsisConfiguration configuration;
+ private final ObjectStoreFactory objectStoreFactory;
+
+ /**
+ * @see #setServices(List)
+ */
+ private List<Object> serviceList;
+
+ private Boolean fixturesInstalled;
+
+ private final ServicesInjectorSpi servicesInjector = new ServicesInjectorDefault();
+ private RuntimeContext runtimeContext;
+
+ public PersistenceSessionFactory(
+ final DeploymentType deploymentType,
+ final IsisConfiguration isisConfiguration,
+ final ObjectStoreFactory objectStoreFactory) {
+ this.deploymentType = deploymentType;
+ this.configuration = isisConfiguration;
+ this.objectStoreFactory = objectStoreFactory;
+ }
+
+ public DeploymentType getDeploymentType() {
+ return deploymentType;
+ }
+
+ public ObjectStoreFactory getDelegate() {
+ return objectStoreFactory;
+ }
+
+ public PersistenceSession createPersistenceSession() {
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("installing " + this.getClass().getName());
+ }
+
+ ServicesInjectorSpi servicesInjector = getServicesInjector();
+
+ final ObjectStore objectStore = objectStoreFactory.createObjectStore(getConfiguration());
+
+ ensureThatArg(objectStore, is(not(nullValue())));
+
+ final PersistenceSession persistenceSession =new PersistenceSession(this, servicesInjector, objectStore, getConfiguration());
+
+ final IsisTransactionManager transactionManager = new IsisTransactionManager(persistenceSession, objectStore, servicesInjector);
+
+ persistenceSession.setDirtiableSupport(true);
+ persistenceSession.setTransactionManager(transactionManager);
+
+ return persistenceSession;
+ }
+
+ public final void init() {
+
+ // check prereq dependencies injected
+ ensureThatState(serviceList, is(notNullValue()));
+
+ // a bit of a workaround, but required if anything in the metamodel (for
+ // example, a
+ // ValueSemanticsProvider for a date value type) needs to use the Clock
+ // singleton
+ // we do this after loading the services to allow a service to prime a
+ // different clock
+ // implementation (eg to use an NTP time service).
+ if (!deploymentType.isProduction() && !Clock.isInitialized()) {
+ FixtureClock.initialize();
+ }
+
+ runtimeContext = createRuntimeContext(getConfiguration());
+ ensureThatState(runtimeContext, is(not(nullValue())));
+
+ // inject the specification loader etc.
+ runtimeContext.injectInto(servicesInjector);
+
+ // wire up components
- DeploymentType getDeploymentType();
+ getSpecificationLoader().injectInto(runtimeContext);
+ for (Object service : serviceList) {
+ runtimeContext.injectInto(service);
+ }
+ servicesInjector.setServices(serviceList);
+ servicesInjector.init();
+ }
+ private RuntimeContext createRuntimeContext(final IsisConfiguration configuration) {
+ final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
+ final Properties properties = applicationPropertiesFrom(configuration);
+ runtimeContext.setProperties(properties);
+ return runtimeContext;
+ }
+
+ private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) {
+ final Properties properties = new Properties();
+ final IsisConfiguration applicationConfiguration = configuration.getProperties("application");
+ for (final String key : applicationConfiguration) {
+ final String value = applicationConfiguration.getString(key);
+ final String newKey = key.substring("application.".length());
+ properties.setProperty(newKey, value);
+ }
+ return properties;
+ }
+
+
+
+ public final void shutdown() {
+ doShutdown();
+ }
+
+ /**
+ * Optional hook method for implementation-specific shutdown.
+ */
+ protected void doShutdown() {
+ }
+
+
// //////////////////////////////////////////////////////
- // Singleton threadsafe components
+ // Components (setup during init...)
// //////////////////////////////////////////////////////
- ServicesInjectorSpi getServicesInjector();
+ public ServicesInjectorSpi getServicesInjector() {
+ return servicesInjector;
+ }
-
// //////////////////////////////////////////////////////
- // main API
+ // MetaModelAdjuster impl
// //////////////////////////////////////////////////////
- /**
- * Creates a {@link PersistenceSession} with the implementing object as the
- * {@link PersistenceSession}'s
- * {@link PersistenceSession#getPersistenceSessionFactory() owning factory}.
- */
- PersistenceSession createPersistenceSession();
+ public void refineMetaModelValidator(MetaModelValidatorComposite metaModelValidator, IsisConfiguration configuration) {
+ objectStoreFactory.refineMetaModelValidator(metaModelValidator, configuration);
+ }
+
+ public void refineProgrammingModel(ProgrammingModel baseProgrammingModel, IsisConfiguration configuration) {
+ objectStoreFactory.refineProgrammingModel(baseProgrammingModel, configuration);
+ }
+
+ // //////////////////////////////////////////////////////
+ // FixturesInstalledFlag impl
+ // //////////////////////////////////////////////////////
+
+ @Override
+ public Boolean isFixturesInstalled() {
+ return fixturesInstalled;
+ }
+
+ @Override
+ public void setFixturesInstalled(final Boolean fixturesInstalled) {
+ this.fixturesInstalled = fixturesInstalled;
+ }
// //////////////////////////////////////////////////////
- // Services
+ // Dependencies (injected from constructor)
// //////////////////////////////////////////////////////
- public void setServices(List<Object> servicesList);
+ public IsisConfiguration getConfiguration() {
+ return configuration;
+ }
+
+ // //////////////////////////////////////////////////////
+ // Dependencies (injected via setters)
+ // //////////////////////////////////////////////////////
+ public void setServices(final List<Object> serviceList) {
+ this.serviceList = serviceList;
+ }
+
+ // //////////////////////////////////////////////////////
+ // Dependencies (from context)
+ // //////////////////////////////////////////////////////
+ protected SpecificationLoaderSpi getSpecificationLoader() {
+ return IsisContext.getSpecificationLoader();
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
index 6f4ba73..11b4091 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
@@ -187,7 +187,7 @@ public interface Persistor {
* Makes an {@link ObjectAdapter} persistent. The specified object should be
* stored away via this object store's persistence mechanism, and have an
* new and unique OID assigned to it. The object, should also be added to
- * the {@link AdapterManagerSpi} as the object is implicitly 'in use'.
+ * the {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault} as the object is implicitly 'in use'.
*
* <p>
* If the object has any associations then each of these, where they aren't
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index 62704da..e62ce4d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -20,8 +20,6 @@
package org.apache.isis.core.runtime.system.session;
import java.util.List;
-
-import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.components.ApplicationScopedComponent;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -30,9 +28,9 @@ import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
* Analogous (and in essence a wrapper for) a JDO <code>PersistenceManagerFactory</code>
@@ -79,7 +77,7 @@ public interface IsisSessionFactory extends ApplicationScopedComponent {
public AuthorizationManager getAuthorizationManager();
/**
- * The {@link PersistenceSessionFactory} that will be used to create
+ * The {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} that will be used to create
* {@link PersistenceSession} {@link IsisSession#getPersistenceSession()
* within} the {@link IsisSession}.
*/
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
index 442bf45..31b7b3b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
@@ -30,7 +30,6 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.components.ApplicationScopedComponent;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -41,9 +40,9 @@ import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
import static org.hamcrest.CoreMatchers.*;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
index fa1475b..5cfcd50 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
@@ -22,10 +22,8 @@ package org.apache.isis.core.runtime.systemusinginstallers;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.applib.fixtures.LogonFixture;
import org.apache.isis.core.commons.components.Installer;
import org.apache.isis.core.commons.components.Noop;
@@ -40,6 +38,7 @@ import org.apache.isis.core.runtime.authentication.exploration.ExplorationSessio
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystemException;
@@ -48,7 +47,6 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.internal.InitialisationSession;
import org.apache.isis.core.runtime.system.internal.IsisLocaleInitializer;
import org.apache.isis.core.runtime.system.internal.IsisTimeZoneInitializer;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.system.session.IsisSessionFactoryDefault;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemUsingInstallers.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemUsingInstallers.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemUsingInstallers.java
index 5a01f72..a14f917 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemUsingInstallers.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemUsingInstallers.java
@@ -34,11 +34,11 @@ import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.services.ServicesInstaller;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystemException;
import org.apache.isis.core.runtime.system.SystemConstants;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.systemdependencyinjector.SystemDependencyInjector;
import org.apache.isis.core.runtime.transaction.facetdecorator.standard.TransactionFacetDecoratorInstaller;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index edccfa1..0098d29 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -49,7 +49,7 @@ import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
import org.apache.isis.core.runtime.persistence.PojoRefreshException;
import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
+import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
@@ -59,7 +59,7 @@ import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindByPatt
import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindByTitle;
import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindUsingApplibQueryDefault;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
@@ -77,7 +77,7 @@ import static org.apache.isis.core.commons.ensure.Ensure.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
-public class DataNucleusObjectStore implements ObjectStoreSpi {
+public class DataNucleusObjectStore implements ObjectStore {
private static final Logger LOG = LoggerFactory.getLogger(DataNucleusObjectStore.class);
@@ -565,7 +565,7 @@ public class DataNucleusObjectStore implements ObjectStoreSpi {
// ///////////////////////////////////////////////////////////////////////
@SuppressWarnings("unused")
- private List<ObjectAdapter> loadObjects(final ObjectSpecification specification, final List<?> listOfPojs, final AdapterManagerSpi adapterManager) {
+ private List<ObjectAdapter> loadObjects(final ObjectSpecification specification, final List<?> listOfPojs, final AdapterManagerDefault adapterManager) {
final List<ObjectAdapter> adapters = Lists.newArrayList();
int i = 0;
for (final Object pojo : listOfPojs) {
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
index adffadc..1b7ca82 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusPersistenceMechanismInstaller.java
@@ -32,8 +32,8 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationInJdoApplibFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceInJdoApplibFacetFactory;
import org.apache.isis.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityAnnotationFacetFactory;
@@ -85,7 +85,7 @@ public class DataNucleusPersistenceMechanismInstaller extends PersistenceMechani
//region > createObjectStore
@Override
- public ObjectStoreSpi createObjectStore(final IsisConfiguration configuration) {
+ public ObjectStore createObjectStore(final IsisConfiguration configuration) {
final DataNucleusApplicationComponents applicationComponents = createDataNucleusApplicationComponentsIfRequired(configuration);
return new DataNucleusObjectStore(applicationComponents);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances_findInstancesAndAdd.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances_findInstancesAndAdd.java b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances_findInstancesAndAdd.java
index e1835b6..45294aa 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances_findInstancesAndAdd.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances_findInstancesAndAdd.java
@@ -19,30 +19,26 @@
package org.apache.isis.core.objectstore.internal;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
import java.util.List;
-
import com.google.common.collect.Lists;
-
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.matchers.IsisMatchers;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
import org.apache.isis.core.runtime.persistence.query.PersistenceQueryBuiltIn;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
import org.apache.isis.core.unittestsupport.jmocking.IsisActions;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
public class ObjectStoreInstances_findInstancesAndAdd {
private ObjectStoreInstances instances;
@@ -57,7 +53,7 @@ public class ObjectStoreInstances_findInstancesAndAdd {
@Mock
private AuthenticationSession mockAuthSession;
@Mock
- private AdapterManagerSpi mockAdapterManager;
+ private AdapterManagerDefault mockAdapterManager;
@Mock
private ObjectAdapter mockAdapter1;
@@ -72,7 +68,7 @@ public class ObjectStoreInstances_findInstancesAndAdd {
return mockAuthSession;
}
@Override
- protected AdapterManagerSpi getAdapterManager() {
+ protected AdapterManagerDefault getAdapterManager() {
return mockAdapterManager;
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_instances.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_instances.java b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_instances.java
index 9227c14..4274613 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_instances.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_instances.java
@@ -31,12 +31,11 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@RunWith(JMock.class)
public class ObjectStorePersistedObjectsDefault_instances {
- private ObjectStorePersistedObjectsDefault persistedObjects;
+ private ObjectStorePersistedObjects persistedObjects;
private final Mockery context = new JUnit4Mockery();
@@ -44,7 +43,7 @@ public class ObjectStorePersistedObjectsDefault_instances {
@Before
public void setUp() throws Exception {
- persistedObjects = new ObjectStorePersistedObjectsDefault();
+ persistedObjects = new ObjectStorePersistedObjects();
mockSpec = context.mock(ObjectSpecId.class);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
index e41d2f8..8514db2 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
@@ -31,7 +31,7 @@ import static org.junit.Assert.assertThat;
public class ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento {
- private ObjectStorePersistedObjectsDefault persistedObjects;
+ private ObjectStorePersistedObjects persistedObjects;
@Rule
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
@@ -40,7 +40,7 @@ public class ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento {
@Before
public void setUp() throws Exception {
- persistedObjects = new ObjectStorePersistedObjectsDefault();
+ persistedObjects = new ObjectStorePersistedObjects();
mockMemento = context.mock(IdentifierGeneratorDefault.Memento.class);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_services.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_services.java b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_services.java
index df849ac..83bf511 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_services.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_services.java
@@ -43,11 +43,11 @@ public class ObjectStorePersistedObjectsDefault_services {
@Mock
private Oid mockOidForBarService;
- private ObjectStorePersistedObjectsDefault persistedObjects;
+ private ObjectStorePersistedObjects persistedObjects;
@Before
public void setUp() throws Exception {
- persistedObjects = new ObjectStorePersistedObjectsDefault();
+ persistedObjects = new ObjectStorePersistedObjects();
}
@Test
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
index 4ce18da..73cf1be 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/context/IsisContextTest.java
@@ -21,15 +21,9 @@ package org.apache.isis.core.runtime.context;
import java.util.Collections;
import java.util.List;
-
import org.jmock.Expectations;
import org.jmock.auto.Mock;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
+import org.junit.*;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -39,11 +33,11 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.context.IsisContextStatic;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.system.session.IsisSessionFactoryDefault;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
index 2d67115..f9645c8 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
@@ -45,7 +45,6 @@ import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
@@ -61,7 +60,7 @@ public class PersistenceSessionTest {
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
private ServicesInjectorDefault servicesInjector;
- private AdapterManagerSpi adapterManager;
+ private AdapterManagerDefault adapterManager;
private ObjectAdapterFactory adapterFactory;
@@ -78,7 +77,7 @@ public class PersistenceSessionTest {
private AuthenticationSession mockAuthenticationSession;
@Mock
- private ObjectStoreSpi mockObjectStore;
+ private ObjectStore mockObjectStore;
@Mock
private AuditingService3 mockAuditingService3;
@Mock
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
index 198c824..2ba697e 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
@@ -31,8 +31,8 @@ import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
-import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
+import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
index 543f1b8..2a66a8f 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
@@ -19,16 +19,12 @@
package org.apache.isis.core.runtime.system.transaction;
-import static org.hamcrest.CoreMatchers.equalTo;
-
import java.util.Collections;
-
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-
import org.apache.isis.applib.annotation.Bulk;
import org.apache.isis.applib.annotation.PublishedAction;
import org.apache.isis.applib.annotation.PublishedObject;
@@ -42,19 +38,15 @@ import org.apache.isis.core.commons.matchers.IsisMatchers;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommandContext;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PublishingServiceWithDefaultPayloadFactories;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
import org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import static org.hamcrest.CoreMatchers.equalTo;
+
public class IsisTransactionTest {
@Rule
@@ -69,7 +61,7 @@ public class IsisTransactionTest {
private ObjectAdapter persistentAdapter2;
@Mock
- private ObjectStoreSpi mockObjectStore;
+ private ObjectStore mockObjectStore;
@Mock
private IsisTransactionManager mockTransactionManager;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
----------------------------------------------------------------------
diff --git a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
index 0dc3c61..131c418 100644
--- a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
+++ b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
@@ -42,9 +42,9 @@ import org.apache.isis.core.objectstore.InMemoryPersistenceMechanismInstaller;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
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;
@@ -532,7 +532,7 @@ public class IsisSystemWithFixtures implements org.junit.rules.TestRule {
}
@SuppressWarnings("unchecked")
- public <T extends ObjectStoreSpi> T getObjectStore(Class<T> cls) {
+ public <T extends ObjectStore> T getObjectStore(Class<T> cls) {
final PersistenceSession persistenceSession = getPersistenceSession();
return (T) persistenceSession.getObjectStore();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/tck/ObjectStoreContractTest_persist.java
----------------------------------------------------------------------
diff --git a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/tck/ObjectStoreContractTest_persist.java b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/tck/ObjectStoreContractTest_persist.java
index 55ce125..933b6d6 100644
--- a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/tck/ObjectStoreContractTest_persist.java
+++ b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/tck/ObjectStoreContractTest_persist.java
@@ -29,9 +29,9 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.query.PersistenceQueryFindByTitle;
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.tck.dom.refs.SimpleEntity;
@@ -63,9 +63,9 @@ public abstract class ObjectStoreContractTest_persist {
protected ObjectAdapter epv2Adapter;
protected ObjectSpecification epvSpecification;
- protected ObjectStoreSpi getStore() {
+ protected ObjectStore getStore() {
PersistenceSession psos = IsisContext.getPersistenceSession();
- return (ObjectStoreSpi) psos.getObjectStore();
+ return psos.getObjectStore();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/tck/tck-integtests/src/test/java/org/apache/isis/core/objectstore/InMemoryObjectStoreTest_openAndClose.java
----------------------------------------------------------------------
diff --git a/tck/tck-integtests/src/test/java/org/apache/isis/core/objectstore/InMemoryObjectStoreTest_openAndClose.java b/tck/tck-integtests/src/test/java/org/apache/isis/core/objectstore/InMemoryObjectStoreTest_openAndClose.java
index c1cdc3f..241a5ae 100644
--- a/tck/tck-integtests/src/test/java/org/apache/isis/core/objectstore/InMemoryObjectStoreTest_openAndClose.java
+++ b/tck/tck-integtests/src/test/java/org/apache/isis/core/objectstore/InMemoryObjectStoreTest_openAndClose.java
@@ -19,20 +19,19 @@
package org.apache.isis.core.objectstore;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-
import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
/**
* Tested in style of <i>Working Effectively with Legacy Code</i> (Feathers) and
* <i>Growing Object-Oriented Software</i> (Freeman & Pryce).
[04/29] isis git commit: ISIS-537 Show/Hide the copy link only when
hovering the entity's icon and title
Posted by da...@apache.org.
ISIS-537 Show/Hide the copy link only when hovering the entity's icon and title
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/2fc840fd
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/2fc840fd
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/2fc840fd
Branch: refs/heads/ISIS-939
Commit: 2fc840fd1822e5d82a73b41473140e3d6bcfdd66
Parents: cf910f3
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Nov 4 23:18:52 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Nov 4 23:18:52 2014 +0200
----------------------------------------------------------------------
.../ui/components/entity/header/EntityHeaderPanel.html | 2 +-
.../ui/components/widgets/zclip/ZeroClipboardPanel.css | 6 +++++-
.../ui/components/widgets/zclip/ZeroClipboardPanel.html | 2 +-
.../ui/components/widgets/zclip/ZeroClipboardPanel.java | 11 +++++++++--
.../viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js | 12 ++++++++++++
5 files changed, 28 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/2fc840fd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.html
index 4a20cd7..76d70e6 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.html
@@ -22,7 +22,7 @@
<wicket:panel>
<div class="entityHeaderPanel">
<h4 class="iconAndTitle">
- <div wicket:id="entityIconTitleAndCopylink" class="iconAndTitleLabel">[icon and title]</div>
+ <div wicket:id="entityIconTitleAndCopylink" class="iconAndTitleLabel entityIconTitleAndCopylink">[icon and title]</div>
<div class="entityActions" wicket:id="entityActions"></div>
<div class="clearfix"></div>
</h4>
http://git-wip-us.apache.org/repos/asf/isis/blob/2fc840fd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
index b62e3ba..a4793b9 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
@@ -23,4 +23,8 @@
.zeroClipboardPanel a:hover {
text-decoration: none;
-}
\ No newline at end of file
+}
+
+.copyLink {
+ opacity: 0;
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/2fc840fd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
index 52d1dfd..7f93a49 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
@@ -21,7 +21,7 @@
<body>
<wicket:panel>
<a wicket:id="copyLink" href="#" class="copyLink">
- <i class="fa fa-fw fa-link fa-lg"></i>
+ <i class="fa fa-fw fa-link" style="font-size: 1.5em"></i>
</a>
<wicket:remove>
TODO mgrigorov reenable the subscribing link after figuring out what it is.
http://git-wip-us.apache.org/repos/asf/isis/blob/2fc840fd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
index 9dbb70c..1f116df 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
@@ -22,6 +22,7 @@ import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
@@ -37,6 +38,7 @@ import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
import org.apache.isis.viewer.wicket.ui.util.Links;
public class ZeroClipboardPanel extends PanelAbstract<EntityModel> {
@@ -72,6 +74,13 @@ public class ZeroClipboardPanel extends PanelAbstract<EntityModel> {
setVisible(renderingHint == EntityModel.RenderingHint.REGULAR && mode == EntityModel.Mode.VIEW);
}
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+
+ PanelUtil.renderHead(response, ZeroClipboardPanel.class);
+ }
+
private AjaxLink<ObjectAdapter> createLink(String linkId) {
return newSimpleClipboardLink(linkId);
}
@@ -175,6 +184,4 @@ public class ZeroClipboardPanel extends PanelAbstract<EntityModel> {
final PageClassRegistryAccessor pcra = (PageClassRegistryAccessor) getApplication();
return pcra.getPageClassRegistry();
}
-
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/2fc840fd/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index b7cf9dd..bff6a9c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -104,6 +104,18 @@ $(function() {
Isis.copyModalShown = false;
}
});
+
+ /**
+ * Show/Hide the copy link only when hovering the entity icon and title
+ */
+ $('.entityIconTitleAndCopylink').hover(
+ function() {
+ $('.copyLink').css({opacity: 1});
+ },
+ function() {
+ $('.copyLink').css({opacity: 0});
+ }
+ );
});
/**
[17/29] isis git commit: ISIS-537 Add "registered trademark" to
Powered by in the footer
Posted by da...@apache.org.
ISIS-537 Add "registered trademark" to Powered by in the footer
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1c17e40d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1c17e40d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1c17e40d
Branch: refs/heads/ISIS-939
Commit: 1c17e40df52ae728a26b6556c813dba64c94f6d6
Parents: 33b3125
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Nov 6 11:48:06 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Nov 6 11:48:06 2014 +0200
----------------------------------------------------------------------
.../java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/1c17e40d/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
index cdc6cf6..b6a0c3b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
@@ -94,7 +94,7 @@
</ul>
<ul class="nav navbar-nav navbar-right">
<p class="navbar-text powered-by">Powered by:</p>
- <li><a href="http://isis.apache.org" target="_blank">Apache Isis</a></li>
+ <li><a href="http://isis.apache.org" target="_blank">Apache Isis ®</a></li>
<li><a wicket:id="aboutLink" class="navbar-right">About</a></li>
<li wicket:id="themePicker"></li>
</ul>
[28/29] isis git commit: ISIS-941: don't try to flush property
changes from form for disabled properties.
Posted by da...@apache.org.
ISIS-941: don't try to flush property changes from form for disabled properties.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/6f2296ce
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/6f2296ce
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/6f2296ce
Branch: refs/heads/ISIS-939
Commit: 6f2296ce0d399435acb792df72c759825bfd245e
Parents: 0ecd015
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 4 23:53:53 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:19:04 2014 +0000
----------------------------------------------------------------------
.../isis/viewer/wicket/model/models/EntityModel.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/6f2296ce/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 a2ec3df..3955c31 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
@@ -36,6 +36,7 @@ import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -580,6 +581,20 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
// for example, see ExampleTaggableEntity (in isisaddons-module-tags).
//
+ //
+ // on the other hand, we mustn't attempt to apply changes for disabled properties...
+ // even if the property is persisted (it might be written to by an action), it is never updated by
+ // an edit.
+ //
+ // Fundamentally, then, any non-disabled property (whether persisted or not) should be updated in the
+ // Isis runtime.
+ //
+
+ if(property.containsDoOpFacet(DisabledFacet.class)) {
+ // skip, as per comments above
+ continue;
+ }
+
final ObjectAdapter associate = scalarModel.getObject();
property.set(adapter, associate);
}
[11/29] isis git commit: ISIS-537 Use same space on the left and the
right of the form components in the forms (EntityPropertiesPanel and
ActionParametersFormPanel)
Posted by da...@apache.org.
ISIS-537 Use same space on the left and the right of the form components in the forms (EntityPropertiesPanel and ActionParametersFormPanel)
https://trello.com/c/qCb7H75g/108-left-and-right-margins-in-action-prompt-different
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/9fbfcaaf
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/9fbfcaaf
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/9fbfcaaf
Branch: refs/heads/ISIS-939
Commit: 9fbfcaaf02590f865d42ff7543bf4288cea6aa38
Parents: 692adff
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 23:21:56 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 23:21:56 2014 +0200
----------------------------------------------------------------------
.../ui/components/actions/ActionParametersFormPanel.html | 2 +-
.../isis/viewer/wicket/ui/pages/bootstrap-overrides.css | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/9fbfcaaf/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
index 2beb8bc..05eaaec 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.html
@@ -21,7 +21,7 @@
<body>
<wicket:panel>
<div class="actionParametersForm inputForm">
- <form wicket:id="inputForm" method="post" class="form-horizontal">
+ <form wicket:id="inputForm" method="post" class="form-horizontal actionParametersForm">
<fieldset class="inputFormTable parameters">
<div wicket:id="parameters" class="parameter">
<div wicket:id="scalarNameAndValue">[scalar]</div>
http://git-wip-us.apache.org/repos/asf/isis/blob/9fbfcaaf/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 081e522..e66d3d7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -139,3 +139,13 @@ div.label-left .choicesPlaceholder {
vertical-align: middle;
}
/* Labels on the left/top/none END */
+
+
+.form-horizontal.actionParametersForm .form-group {
+ margin-left: -5px;
+}
+
+.form-horizontal.inputForm .form-group {
+ margin-left: -5px;
+ margin-right: -25px;
+}
[05/29] isis git commit: ISIS-537 Improve the logic for
showing/hiding the CopyLink modal window with alt+] keyboard combination
Posted by da...@apache.org.
ISIS-537 Improve the logic for showing/hiding the CopyLink modal window with alt+] keyboard combination
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/da9e3605
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/da9e3605
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/da9e3605
Branch: refs/heads/ISIS-939
Commit: da9e36058564324d5d5cfda3ec1d5a97c28e2e25
Parents: 2fc840f
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 00:30:35 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 00:30:35 2014 +0200
----------------------------------------------------------------------
.../wicket/ui/pages/jquery.isis.wicket.viewer.js | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/da9e3605/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index bff6a9c..f502195 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -93,15 +93,16 @@ $(function() {
* Show/hide the CopyLink modal window with alt+]
*/
$('body').keydown(function(e) {
- var $copyModal = $('.copyModal');
-
- if(!Isis.copyModalShown && e.which === 221 && e.altKey) {
- Isis.copyModalShown = true;
- $('.copyLink').click();
- } else {
- $copyModal.modal('hide');
- $('.modal-backdrop').remove();
- Isis.copyModalShown = false;
+ if (e.which === 221 && e.altKey) {
+ if (Isis.copyModalShown) {
+ $('.copyModal').modal('hide');
+ $('.modal-backdrop').remove();
+ Isis.copyModalShown = false;
+ }
+ else {
+ Isis.copyModalShown = true;
+ $('.copyLink').click();
+ }
}
});
[23/29] isis git commit: ISIS-939: simplified MessageBroker
Posted by da...@apache.org.
ISIS-939: simplified MessageBroker
- removed the defunct MessageBroker interface (in runtime)
- renamed MessageBrokerDefault to MessageBroker (unextract interface), now in metamodel
- removed #setApplicationError, since no longer used.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e48ab59c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e48ab59c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e48ab59c
Branch: refs/heads/ISIS-939
Commit: e48ab59c110d923be288687a9e461bc3410736aa
Parents: 30eb514
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 3 20:01:43 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:18:58 2014 +0000
----------------------------------------------------------------------
.../scimpi/dispatcher/action/ActionAction.java | 3 +-
.../scimpi/dispatcher/edit/EditAction.java | 3 +-
.../dispatcher/view/display/AddMessage.java | 2 +-
.../dispatcher/view/display/AddWarning.java | 2 +-
.../dispatcher/view/display/Messages.java | 3 +-
.../dispatcher/view/display/Warnings.java | 3 +-
.../commons/authentication/MessageBroker.java | 109 +++++++++--
.../internal/RuntimeContextFromSession.java | 2 +-
.../runtime/system/context/IsisContext.java | 6 +-
.../system/transaction/IsisTransaction.java | 10 +-
.../transaction/IsisTransactionManager.java | 15 +-
.../system/transaction/MessageBroker.java | 28 ---
.../transaction/MessageBrokerDefault.java | 179 -------------------
...reTransactionManager_EndTransactionTest.java | 11 +-
...TransactionManager_StartTransactionTest.java | 10 +-
.../system/transaction/IsisTransactionTest.java | 1 +
16 files changed, 126 insertions(+), 261 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
index c598ba3..44a9756 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/action/ActionAction.java
@@ -21,11 +21,11 @@ package org.apache.isis.viewer.scimpi.dispatcher.action;
import java.io.IOException;
import java.util.List;
-
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.commons.authentication.AnonymousSession;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -39,7 +39,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
import org.apache.isis.viewer.scimpi.dispatcher.Action;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext;
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
index 3784472..852ccea 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
@@ -21,11 +21,11 @@ package org.apache.isis.viewer.scimpi.dispatcher.edit;
import java.io.IOException;
import java.util.List;
-
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.commons.authentication.AnonymousSession;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.version.Version;
@@ -38,7 +38,6 @@ 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.OneToOneAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
import org.apache.isis.viewer.scimpi.dispatcher.Action;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
import org.apache.isis.viewer.scimpi.dispatcher.NotLoggedInException;
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
index acb53eb..7076f70 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddMessage.java
@@ -19,8 +19,8 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.display;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
index 59d3dcc..ac0d240 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AddWarning.java
@@ -19,8 +19,8 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.display;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Messages.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Messages.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Messages.java
index a6c8213..8ec1420 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Messages.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Messages.java
@@ -20,9 +20,8 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.display;
import java.util.List;
-
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Warnings.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Warnings.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Warnings.java
index ca0becb..52be7d6 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Warnings.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/Warnings.java
@@ -20,9 +20,8 @@
package org.apache.isis.viewer.scimpi.dispatcher.view.display;
import java.util.List;
-
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/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 2dc1d5b..12d5068 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
@@ -20,26 +20,107 @@
package org.apache.isis.core.commons.authentication;
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import com.google.common.collect.Lists;
+import org.apache.isis.core.commons.debug.DebugBuilder;
+import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-/**
- * Moving from runtime, so that can preserve messages between interactions that
- * correspond to the same session.
- */
-public interface MessageBroker extends Serializable {
+public class MessageBroker implements Serializable, DebuggableWithTitle {
+
+ private static final long serialVersionUID = 1L;
+
+ private final List<String> messages = Lists.newArrayList();
+ private final List<String> warnings = Lists.newArrayList();
+
+ //region > acquire (factory method)
+
+ public static MessageBroker acquire(final AuthenticationSession authenticationSession) {
+ MessageBroker messageBroker;
+ synchronized (authenticationSession) {
+ messageBroker = authenticationSession.getMessageBroker();
+ if(messageBroker == null) {
+ messageBroker = new MessageBroker();
+ authenticationSession.setMessageBroker(messageBroker);
+ }
+ }
+ return messageBroker;
+ }
+
+ private MessageBroker() {
+ }
+ //endregion
+
+ //region > reset
+
+ public void reset() {
+ warnings.clear();
+ messages.clear();
+ }
+
+ //endregion
+
+ //region > messages
+
+ public List<String> getMessages() {
+ return copyAndClear(messages);
+ }
+
+ public void addMessage(final String message) {
+ messages.add(message);
+ }
+
+ //endregion
+
+ //region > warnings
+
+ public List<String> getWarnings() {
+ return copyAndClear(warnings);
+ }
+
+ public void addWarning(final String message) {
+ warnings.add(message);
+ }
+
+ //endregion
+
+ //region > debugging
+
+ @Override
+ public void debugData(final DebugBuilder debug) {
+ debugArray(debug, "Messages", messages);
+ debugArray(debug, "Warnings", messages);
+ }
+
+ private void debugArray(final DebugBuilder debug, final String title, final List<String> vector) {
+ debug.appendln(title);
+ debug.indent();
+ if (vector.size() == 0) {
+ debug.appendln("none");
+ } else {
+ for (final String text : vector) {
+ debug.appendln(text);
+ }
+ }
+ debug.unindent();
+ }
- void addMessage(String message);
- List<String> getMessages();
- String getMessagesCombined();
+ @Override
+ public String debugTitle() {
+ return "Simple Message Broker";
+ }
- void addWarning(String message);
- List<String> getWarnings();
- String getWarningsCombined();
+ //endregion
+ //region > helpers
- void setApplicationError(String message);
- String getApplicationError();
+ private List<String> copyAndClear(final List<String> messages) {
+ final List<String> copy = Collections.unmodifiableList(new ArrayList<>(messages));
+ messages.clear();
+ return copy;
+ }
+ //endregion
- void ensureEmpty();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
index 782e18b..bc0d459 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/internal/RuntimeContextFromSession.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAbstract;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.metamodel.adapter.*;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
@@ -50,7 +51,6 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
/**
* Provides services to the metamodel based on the currently running
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index f145f89..6c5652f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -24,6 +24,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.commons.components.TransactionScopedComponent;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationException;
@@ -41,7 +42,6 @@ import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.system.transaction.MessageBroker;
/**
* Provides singleton <i>access to</i> the current (session scoped)
@@ -460,11 +460,11 @@ public abstract class IsisContext implements DebuggableWithTitle {
}
/**
- * Convenience method, returning the {@link MessageBroker} of the
+ * Convenience method, returning the {@link org.apache.isis.core.commons.authentication.MessageBroker} of the
* {@link #getCurrentTransaction() current transaction}.
*/
public static MessageBroker getMessageBroker() {
- return (MessageBroker) getCurrentTransaction().getMessageBroker();
+ return getCurrentTransaction().getMessageBroker();
}
// ///////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index 259269c..b2536ba 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -48,6 +48,7 @@ import org.apache.isis.applib.services.command.spi.CommandService;
import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
import org.apache.isis.applib.services.publish.*;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.commons.components.TransactionScopedComponent;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.ensure.Ensure;
@@ -203,7 +204,7 @@ public class IsisTransaction implements TransactionScopedComponent {
private final TransactionalResource objectStore;
private final List<PersistenceCommand> commands = Lists.newArrayList();
private final IsisTransactionManager transactionManager;
- private final org.apache.isis.core.commons.authentication.MessageBroker messageBroker;
+ private final MessageBroker messageBroker;
private final ServicesInjector servicesInjector;
@@ -238,7 +239,7 @@ public class IsisTransaction implements TransactionScopedComponent {
public IsisTransaction(
final IsisTransactionManager transactionManager,
- final org.apache.isis.core.commons.authentication.MessageBroker messageBroker,
+ final MessageBroker messageBroker,
final TransactionalResource objectStore,
final ServicesInjector servicesInjector) {
@@ -1031,16 +1032,15 @@ public class IsisTransaction implements TransactionScopedComponent {
}
/**
- * The {@link MessageBroker} for this transaction.
+ * The {@link org.apache.isis.core.commons.authentication.MessageBroker} for this transaction.
*
* <p>
* Injected in constructor
*
* @deprecated - obtain the {@link org.apache.isis.core.commons.authentication.MessageBroker} instead from the {@link AuthenticationSession}.
*/
- @Deprecated
public MessageBroker getMessageBroker() {
- return (MessageBroker) messageBroker;
+ return messageBroker;
}
public static class AdapterAndProperty {
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
index 8c0e523..2d89384 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.services.command.CommandContext;
import org.apache.isis.applib.services.command.CommandDefault;
import org.apache.isis.applib.services.command.spi.CommandService;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.commons.components.SessionScopedComponent;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.commons.exceptions.IsisException;
@@ -119,10 +120,10 @@ public class IsisTransactionManager implements SessionScopedComponent {
/**
- * Convenience method returning the {@link MessageBroker} of the
+ * Convenience method returning the {@link org.apache.isis.core.commons.authentication.MessageBroker} of the
* {@link #getTransaction() current transaction}.
*/
- protected org.apache.isis.core.commons.authentication.MessageBroker getMessageBroker() {
+ protected MessageBroker getMessageBroker() {
return getTransaction().getMessageBroker();
}
@@ -219,20 +220,20 @@ public class IsisTransactionManager implements SessionScopedComponent {
* {@link #getTransaction()}.
*/
protected final IsisTransaction createTransaction() {
- org.apache.isis.core.commons.authentication.MessageBroker messageBroker = createMessageBroker();
+ MessageBroker messageBroker = createMessageBroker();
return this.transaction = createTransaction(messageBroker, transactionalResource);
}
/**
- * The provided {@link MessageBroker} is
+ * The provided {@link org.apache.isis.core.commons.authentication.MessageBroker} is
* obtained from the {@link #createMessageBroker()} hook method.
* @param transactionalResource
*
* @see #createMessageBroker()
*/
private IsisTransaction createTransaction(
- final org.apache.isis.core.commons.authentication.MessageBroker messageBroker,
+ final MessageBroker messageBroker,
final TransactionalResource transactionalResource) {
ensureThatArg(messageBroker, is(not(nullValue())));
@@ -533,8 +534,8 @@ public class IsisTransactionManager implements SessionScopedComponent {
*
* <p> Called when a new {@link IsisTransaction} is created.
*/
- protected org.apache.isis.core.commons.authentication.MessageBroker createMessageBroker() {
- return MessageBrokerDefault.acquire(getAuthenticationSession());
+ protected MessageBroker createMessageBroker() {
+ return MessageBroker.acquire(getAuthenticationSession());
}
// ////////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBroker.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBroker.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBroker.java
deleted file mode 100644
index 282b8f3..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBroker.java
+++ /dev/null
@@ -1,28 +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.system.transaction;
-
-/**
- * @deprecated - replace with {@link org.apache.isis.core.commons.authentication.MessageBroker} in the core.
- */
-@Deprecated
-public interface MessageBroker extends org.apache.isis.core.commons.authentication.MessageBroker {
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
deleted file mode 100644
index b5fbd9a..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/MessageBrokerDefault.java
+++ /dev/null
@@ -1,179 +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.system.transaction;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.lang.ArrayExtensions;
-
-public class MessageBrokerDefault implements MessageBroker, DebuggableWithTitle {
-
- private static final long serialVersionUID = 1L;
-
- private final List<String> messages = Lists.newArrayList();
- private final List<String> warnings = Lists.newArrayList();
- private String applicationError;
-
- public static org.apache.isis.core.commons.authentication.MessageBroker acquire(final AuthenticationSession authenticationSession) {
- org.apache.isis.core.commons.authentication.MessageBroker messageBroker;
- synchronized (authenticationSession) {
- messageBroker = authenticationSession.getMessageBroker();
- if(messageBroker == null) {
- messageBroker = new MessageBrokerDefault();
- authenticationSession.setMessageBroker(messageBroker);
- }
- }
- return messageBroker;
- }
-
- /**
- * @deprecated - use {@link #acquire()}
- */
- @Deprecated
- public MessageBrokerDefault() {
- }
-
- // //////////////////////////////////////////////////
- // Reset / ensureEmpty
- // //////////////////////////////////////////////////
-
- public void reset() {
- warnings.clear();
- messages.clear();
- }
-
- @Override
- public void ensureEmpty() {
- if (warnings.size() > 0) {
- throw new IsisException("Message broker still has warnings");
- }
- if (messages.size() > 0) {
- throw new IsisException("Message broker still has messages");
- }
- }
-
- // //////////////////////////////////////////////////
- // Messages
- // //////////////////////////////////////////////////
-
- @Override
- public List<String> getMessages() {
- return copyAndClear(messages);
- }
-
- @Override
- public void addMessage(final String message) {
- messages.add(message);
- }
-
- @Override
- public String getMessagesCombined() {
- final List<String> x = messages;
- final String string = ArrayExtensions.asSemicolonDelimitedStr(x);
- return string;
- }
-
- // //////////////////////////////////////////////////
- // Warnings
- // //////////////////////////////////////////////////
-
- @Override
- public List<String> getWarnings() {
- return copyAndClear(warnings);
- }
-
- @Override
- public void addWarning(final String message) {
- warnings.add(message);
- }
-
- @Override
- public String getWarningsCombined() {
- final List<String> x = warnings;
- final String string = ArrayExtensions.asSemicolonDelimitedStr(x);
- return string;
- }
-
-
- // //////////////////////////////////////////////////
- // Application error
- // //////////////////////////////////////////////////
-
- @Override
- public void setApplicationError(String error) {
- this.applicationError = error;
-
- }
-
- @Override
- public String getApplicationError() {
- String error = applicationError;
- setApplicationError(null);
- return error;
- }
-
- // //////////////////////////////////////////////////
- // Debugging
- // //////////////////////////////////////////////////
-
- @Override
- public void debugData(final DebugBuilder debug) {
- debugArray(debug, "Messages", messages);
- debugArray(debug, "Warnings", messages);
- }
-
- private void debugArray(final DebugBuilder debug, final String title, final List<String> vector) {
- debug.appendln(title);
- debug.indent();
- if (vector.size() == 0) {
- debug.appendln("none");
- } else {
- for (final String text : vector) {
- debug.appendln(text);
- }
- }
- debug.unindent();
- }
-
- @Override
- public String debugTitle() {
- return "Simple Message Broker";
- }
-
- // //////////////////////////////////////////////////
- // Helpers
- // //////////////////////////////////////////////////
-
- private List<String> copyAndClear(final List<String> messages) {
- final List<String> copy = Collections.unmodifiableList(new ArrayList<String>(messages));
- messages.clear();
- return copy;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
index baa6080..f9cc749 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_EndTransactionTest.java
@@ -19,13 +19,7 @@
package org.apache.isis.core.runtime.persistence.objectstore.transaction;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
import java.util.Collections;
-import java.util.UUID;
-
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
@@ -35,7 +29,6 @@ import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
@@ -44,6 +37,10 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
public class ObjectStoreTransactionManager_EndTransactionTest {
@Rule
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
index 091c643..14f67e9 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/ObjectStoreTransactionManager_StartTransactionTest.java
@@ -19,18 +19,11 @@
package org.apache.isis.core.runtime.persistence.objectstore.transaction;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.CoreMatchers.sameInstance;
-import static org.junit.Assert.assertThat;
-
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
@@ -40,6 +33,9 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
public class ObjectStoreTransactionManager_StartTransactionTest {
@Rule
http://git-wip-us.apache.org/repos/asf/isis/blob/e48ab59c/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
index 9f4c2c8..ed7c66a 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionTest.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.services.command.spi.CommandService;
import org.apache.isis.applib.services.publish.EventSerializer;
import org.apache.isis.applib.services.publish.PublishingService;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.commons.matchers.IsisMatchers;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
[21/29] isis git commit: ISIS-939: more simplified of persistence
sessions and object stores.
Posted by da...@apache.org.
ISIS-939: more simplified of persistence sessions and object stores.
- deleted ObjectStoreSpi, just use ObjectStore (impl) directly;
- deleted AdapterManagerAbstract, not used
- deleted AdapterMapDelegator, not used
- for in-memory objectstore, renamed ObjectStorePersistedObjectsDefault (impl) to ObjectStorePersistedObjects (unextracted interface)
- renamed PersistenceSessionFactoryDelegate to ObjectStoreFactory
- renamed PersistenceSessionFactoryDelegating to PersistenceSessionFactory (unextracted interface)
- removed AdapterManagerSpi interface, just use AdapterManagerDefault directly instead.
- deleted AdpaterUtils, not used
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/fab4f479
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/fab4f479
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/fab4f479
Branch: refs/heads/ISIS-939
Commit: fab4f4797ee276f32896bc711bb1ca70a033501f
Parents: 46dc3a4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 3 19:27:18 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 6 16:18:55 2014 +0000
----------------------------------------------------------------------
.../integtestsupport/IsisSystemDefault.java | 2 +-
.../integtestsupport/IsisSystemForTest.java | 4 +-
.../adapter/mgr/AdapterManagerAbstract.java | 31 ---
.../adapter/mgr/AdapterMapDelegator.java | 50 ----
.../noruntime/RuntimeContextNoRuntime.java | 12 +-
.../core/objectstore/InMemoryObjectStore.java | 22 +-
.../InMemoryPersistenceMechanismInstaller.java | 6 +-
.../InMemoryPersistenceSessionFactory.java | 13 +-
.../AbstractInMemoryPersistenceCommand.java | 1 -
.../commands/InMemoryCreateObjectCommand.java | 1 -
.../commands/InMemoryDestroyObjectCommand.java | 1 -
.../commands/InMemorySaveObjectCommand.java | 1 -
.../internal/ObjectStoreInstances.java | 7 +-
.../internal/ObjectStorePersistedObjects.java | 62 ++++-
.../ObjectStorePersistedObjectsDefault.java | 102 --------
.../PersistenceMechanismInstaller.java | 6 +-
.../PersistenceMechanismInstallerAbstract.java | 5 +-
.../persistence/FixturesInstalledFlag.java | 3 +-
.../runtime/persistence/ObjectStoreFactory.java | 35 +++
.../persistence/PersistenceConstants.java | 2 -
.../PersistenceSessionFactoryDelegate.java | 36 ---
.../PersistenceSessionFactoryDelegating.java | 237 -------------------
.../adaptermanager/AdapterManagerDefault.java | 62 +++--
.../adaptermanager/AdapterUtils.java | 58 -----
.../persistence/objectstore/ObjectStoreSpi.java | 27 ---
.../transaction/TransactionalResource.java | 18 +-
.../system/IsisSystemFixturesHookAbstract.java | 2 +-
.../core/runtime/system/SystemConstants.java | 3 +-
.../system/persistence/AdapterManagerSpi.java | 51 ----
.../runtime/system/persistence/ObjectStore.java | 7 +-
.../system/persistence/PersistenceSession.java | 13 +-
.../persistence/PersistenceSessionFactory.java | 199 ++++++++++++++--
.../runtime/system/persistence/Persistor.java | 2 +-
.../system/session/IsisSessionFactory.java | 6 +-
.../session/IsisSessionFactoryDefault.java | 3 +-
.../IsisSystemAbstract.java | 4 +-
.../IsisSystemUsingInstallers.java | 2 +-
.../jdo/datanucleus/DataNucleusObjectStore.java | 8 +-
...ataNucleusPersistenceMechanismInstaller.java | 4 +-
...bjectStoreInstances_findInstancesAndAdd.java | 16 +-
...tStorePersistedObjectsDefault_instances.java | 5 +-
...jectsDefault_savesOidGeneratorAsMemento.java | 4 +-
...ctStorePersistedObjectsDefault_services.java | 4 +-
.../core/runtime/context/IsisContextTest.java | 10 +-
.../persistence/PersistenceSessionTest.java | 5 +-
...onFactoryAbstractTest_init_and_shutdown.java | 2 +-
.../system/transaction/IsisTransactionTest.java | 18 +-
.../IsisSystemWithFixtures.java | 4 +-
.../tck/ObjectStoreContractTest_persist.java | 6 +-
.../InMemoryObjectStoreTest_openAndClose.java | 7 +-
50 files changed, 407 insertions(+), 782 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
index 8f8a05c..65d0ac9 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java
@@ -42,10 +42,10 @@ import org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerS
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystemException;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.systemusinginstallers.IsisSystemAbstract;
import org.apache.isis.core.runtime.transaction.facetdecorator.standard.StandardTransactionFacetDecorator;
import org.apache.isis.core.security.authentication.AuthenticatorBypass;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 b4976ff..66ac70c 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
@@ -47,10 +47,10 @@ import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
import org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation;
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;
@@ -565,7 +565,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic
}
@SuppressWarnings("unchecked")
- public <T extends ObjectStoreSpi> T getObjectStore(Class<T> cls) {
+ public <T extends ObjectStore> T getObjectStore(Class<T> cls) {
final PersistenceSession persistenceSession = getPersistenceSession();
return (T) persistenceSession.getObjectStore();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java
deleted file mode 100644
index a3ee9ad..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java
+++ /dev/null
@@ -1,31 +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.metamodel.adapter.mgr;
-
-import org.apache.isis.core.commons.components.Injectable;
-
-public abstract class AdapterManagerAbstract implements AdapterManager, Injectable {
-
- @Override
- public void injectInto(final Object candidate) {
- if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
- final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
- cast.setAdapterManager(this);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java
deleted file mode 100644
index 51ab391..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java
+++ /dev/null
@@ -1,50 +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.metamodel.adapter.mgr;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-/**
- * Just delegates to an underlying {@link AdapterManager}.
- *
- * <p>
- * Provided to allow subclasses to override specific methods if required.
- */
-public abstract class AdapterMapDelegator extends AdapterManagerAbstract {
-
- private final AdapterManager underlying;
-
- public AdapterMapDelegator(final AdapterManager underlying) {
- this.underlying = underlying;
- }
-
- @Override
- public ObjectAdapter getAdapterFor(final Object pojo) {
- return underlying.getAdapterFor(pojo);
- }
-
- @Override
- public ObjectAdapter adapterFor(final Object domainObject) {
- return underlying.adapterFor(domainObject);
- }
-
- @Override
- public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter ownerAdapter, final OneToManyAssociation collection) {
- return underlying.adapterFor(pojo, ownerAdapter, collection);
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
index 33c0419..8e19839 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAbstract;
import org.apache.isis.core.metamodel.adapter.*;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAbstract;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
@@ -96,7 +96,15 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract {
throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
}
};
- adapterManager = new AdapterManagerAbstract() {
+ adapterManager = new AdapterManager() {
+
+ @Override
+ public void injectInto(final Object candidate) {
+ if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) {
+ final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate);
+ cast.setAdapterManager(this);
+ }
+ }
@Override
public ObjectAdapter getAdapterFor(final Object pojo) {
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 5ae36cf..58a426c 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
@@ -23,14 +23,9 @@ import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
-
import com.google.common.collect.Lists;
-
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.commons.debug.DebugUtils;
import org.apache.isis.core.commons.exceptions.IsisException;
@@ -52,21 +47,21 @@ import org.apache.isis.core.objectstore.commands.InMemoryDestroyObjectCommand;
import org.apache.isis.core.objectstore.commands.InMemorySaveObjectCommand;
import org.apache.isis.core.objectstore.internal.ObjectStoreInstances;
import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
-import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjectsDefault;
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
import org.apache.isis.core.runtime.persistence.query.PersistenceQueryBuiltIn;
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.PersistenceQuery;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-public class InMemoryObjectStore implements ObjectStoreSpi {
+public class InMemoryObjectStore implements ObjectStore {
private final static Logger LOG = LoggerFactory.getLogger(InMemoryObjectStore.class);
@@ -99,7 +94,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi {
if (inMemoryPersistenceSessionFactory != null) {
persistedObjects = inMemoryPersistenceSessionFactory.createPersistedObjects();
} else {
- persistedObjects = new ObjectStorePersistedObjectsDefault();
+ persistedObjects = new ObjectStorePersistedObjects();
}
} else {
recreateAdapters();
@@ -465,8 +460,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi {
/**
* Must use {@link IsisContext context}, because although this object is
* recreated with each {@link PersistenceSession session}, the persisted
- * objects that get
- * {@link #attachPersistedObjects(ObjectStorePersistedObjects) attached} to
+ * objects that get attached to
* it span multiple sessions.
*
* <p>
@@ -481,9 +475,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi {
/**
* Must use {@link IsisContext context}, because although this object is
* recreated with each {@link PersistenceSession session}, the persisted
- * objects that get
- * {@link #attachPersistedObjects(ObjectStorePersistedObjects) attached} to
- * it span multiple sessions.
+ * objects that get attached to it span multiple sessions.
*
* <p>
* The alternative design would be to laboriously inject the session into
@@ -500,7 +492,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi {
/**
- * Downcasts the {@link PersistenceSessionFactory} to
+ * Downcasts the {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} to
* {@link InMemoryPersistenceSessionFactory}.
*/
protected InMemoryPersistenceSessionFactory getInMemoryPersistenceSessionFactory() {
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
index 293d557..cc48c06 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java
@@ -21,8 +21,8 @@ package org.apache.isis.core.objectstore;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
@@ -50,10 +50,10 @@ public class InMemoryPersistenceMechanismInstaller extends PersistenceMechanismI
// ///////////////////////////////////////////////////////////////
/**
- * Hook method to return {@link ObjectStoreSpi}.
+ * Hook method to return {@link ObjectStore}.
*/
@Override
- public ObjectStoreSpi createObjectStore(
+ public ObjectStore createObjectStore(
final IsisConfiguration configuration) {
return new InMemoryObjectStore();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java
index 3dc4ed1..455ca6a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java
@@ -22,21 +22,20 @@ package org.apache.isis.core.objectstore;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.objectstore.internal.ObjectStoreInstances;
import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
-import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjectsDefault;
-import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate;
-import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegating;
+import org.apache.isis.core.runtime.persistence.ObjectStoreFactory;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.IdentifierGenerator;
import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault;
import org.apache.isis.core.runtime.system.persistence.OidGenerator;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-public class InMemoryPersistenceSessionFactory extends PersistenceSessionFactoryDelegating {
+public class InMemoryPersistenceSessionFactory extends PersistenceSessionFactory {
private ObjectStorePersistedObjects persistedObjects;
- public InMemoryPersistenceSessionFactory(final DeploymentType deploymentType, final IsisConfiguration configuration, final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate) {
- super(deploymentType, configuration, persistenceSessionFactoryDelegate);
+ public InMemoryPersistenceSessionFactory(final DeploymentType deploymentType, final IsisConfiguration configuration, final ObjectStoreFactory objectStoreFactory) {
+ super(deploymentType, configuration, objectStoreFactory);
}
ObjectStorePersistedObjects getPersistedObjects() {
@@ -63,7 +62,7 @@ public class InMemoryPersistenceSessionFactory extends PersistenceSessionFactory
* {@link InMemoryObjectStore#open() open}ed.
*/
public ObjectStorePersistedObjects createPersistedObjects() {
- return new ObjectStorePersistedObjectsDefault();
+ return new ObjectStorePersistedObjects();
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java
index 6937cf6..9c5602c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java
index efab9de..af2d363 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java
index 18d6b0c..16093ab 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java
index 789b86f..4b48f61 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 3a6ea23..028dffb 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
@@ -40,7 +40,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.objectstore.InMemoryObjectStore;
import org.apache.isis.core.runtime.persistence.query.PersistenceQueryBuiltIn;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
/*
@@ -125,10 +124,8 @@ public class ObjectStoreInstances {
/**
* If the pojo exists in the object store, then looks up the
- * {@link ObjectAdapter adapter} from the {@link AdapterManagerSpi}, and only
- * if none found does it
- * {@link PersistenceSessionHydrator#mapRecreatedPojo(Object, Object) recreate}
- * a new {@link ObjectAdapter adapter}.
+ * {@link ObjectAdapter adapter} from the {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault}, and only
+ * if none found does it recreates a new {@link ObjectAdapter adapter}.
*/
public ObjectAdapter getObjectAndMapIfRequired(final Oid oid) {
final Object pojo = getObjectInstances().get(oid);
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java
index 85dffcb..4e3cf35 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java
@@ -19,6 +19,12 @@
package org.apache.isis.core.objectstore.internal;
+import java.util.Map;
+import java.util.Set;
+
+import com.google.common.collect.Maps;
+
+import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -29,22 +35,60 @@ import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefaul
*
* Attached and detached to each session.
*/
-public interface ObjectStorePersistedObjects {
+public class ObjectStorePersistedObjects {
+
+ private final Map<ObjectSpecId, ObjectStoreInstances> instancesBySpecMap = Maps.newHashMap();
+ private final Map<ObjectSpecId, Oid> serviceOidByIdMap = Maps.newHashMap();
+
+ private IdentifierGeneratorDefault.Memento oidGeneratorMemento;
+
- public IdentifierGeneratorDefault.Memento getOidGeneratorMemento();
+ public IdentifierGeneratorDefault.Memento getOidGeneratorMemento() {
+ return oidGeneratorMemento;
+ }
- public void saveOidGeneratorMemento(IdentifierGeneratorDefault.Memento memento);
+ public void saveOidGeneratorMemento(final IdentifierGeneratorDefault.Memento memento) {
+ this.oidGeneratorMemento = memento;
+ }
- public void registerService(ObjectSpecId objectSpecId, Oid oid);
+ public Oid getService(final ObjectSpecId objectSpecId) {
+ return serviceOidByIdMap.get(objectSpecId);
+ }
- public Oid getService(ObjectSpecId objectSpecId);
+ public void registerService(final ObjectSpecId objectSpecId, final Oid oid) {
+ final Oid oidLookedUpByName = serviceOidByIdMap.get(objectSpecId);
+ if (oidLookedUpByName != null) {
+ if (oidLookedUpByName.equals(oid)) {
+ throw new IsisException("Already another service registered as name: " + objectSpecId + " (existing Oid: " + oidLookedUpByName + ", " + "intended: " + oid + ")");
+ }
+ } else {
+ serviceOidByIdMap.put(objectSpecId, oid);
+ }
+ }
- public Iterable<ObjectSpecId> specifications();
+ // TODO: this is where the clever logic needs to go to determine how to save
+ // into our custom Map.
+ // also think we shouldn't surface the entire Map, just the API we require
+ // (keySet, values etc).
+ public ObjectStoreInstances instancesFor(final ObjectSpecId specId) {
+ ObjectStoreInstances ins = instancesBySpecMap.get(specId);
+ if (ins == null) {
+ ins = new ObjectStoreInstances(specId);
+ instancesBySpecMap.put(specId, ins);
+ }
+ return ins;
+ }
- public ObjectStoreInstances instancesFor(ObjectSpecId spec);
+ public Iterable<ObjectSpecId> specifications() {
+ return instancesBySpecMap.keySet();
+ }
- public Iterable<ObjectStoreInstances> instances();
+ public void clear() {
+ instancesBySpecMap.clear();
+ }
- public void clear();
+ public Iterable<ObjectStoreInstances> instances() {
+ return instancesBySpecMap.values();
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java
deleted file mode 100644
index 33d06a0..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java
+++ /dev/null
@@ -1,102 +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.objectstore.internal;
-
-import java.util.Map;
-import java.util.Set;
-
-import com.google.common.collect.Maps;
-
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault;
-
-/**
- * Represents the persisted objects.
- *
- * Attached and detached to each session.
- */
-public class ObjectStorePersistedObjectsDefault implements ObjectStorePersistedObjects {
-
- private final Map<ObjectSpecId, ObjectStoreInstances> instancesBySpecMap = Maps.newHashMap();
- private final Map<ObjectSpecId, Oid> serviceOidByIdMap = Maps.newHashMap();
-
- private IdentifierGeneratorDefault.Memento oidGeneratorMemento;
-
-
- @Override
- public IdentifierGeneratorDefault.Memento getOidGeneratorMemento() {
- return oidGeneratorMemento;
- }
-
- @Override
- public void saveOidGeneratorMemento(final IdentifierGeneratorDefault.Memento memento) {
- this.oidGeneratorMemento = memento;
- }
-
- @Override
- public Oid getService(final ObjectSpecId objectSpecId) {
- return serviceOidByIdMap.get(objectSpecId);
- }
-
- @Override
- public void registerService(final ObjectSpecId objectSpecId, final Oid oid) {
- final Oid oidLookedUpByName = serviceOidByIdMap.get(objectSpecId);
- if (oidLookedUpByName != null) {
- if (oidLookedUpByName.equals(oid)) {
- throw new IsisException("Already another service registered as name: " + objectSpecId + " (existing Oid: " + oidLookedUpByName + ", " + "intended: " + oid + ")");
- }
- } else {
- serviceOidByIdMap.put(objectSpecId, oid);
- }
- }
-
- // TODO: this is where the clever logic needs to go to determine how to save
- // into our custom Map.
- // also think we shouldn't surface the entire Map, just the API we require
- // (keySet, values etc).
- @Override
- public ObjectStoreInstances instancesFor(final ObjectSpecId specId) {
- ObjectStoreInstances ins = instancesBySpecMap.get(specId);
- if (ins == null) {
- ins = new ObjectStoreInstances(specId);
- instancesBySpecMap.put(specId, ins);
- }
- return ins;
- }
-
- @Override
- public Iterable<ObjectSpecId> specifications() {
- return instancesBySpecMap.keySet();
- }
-
- @Override
- public void clear() {
- instancesBySpecMap.clear();
- }
-
- @Override
- public Iterable<ObjectStoreInstances> instances() {
- return instancesBySpecMap.values();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
index 3376c02..f7594cc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java
@@ -20,15 +20,15 @@
package org.apache.isis.core.runtime.installerregistry.installerapi;
import org.apache.isis.core.commons.components.Installer;
-import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate;
+import org.apache.isis.core.runtime.persistence.ObjectStoreFactory;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
* Installs a {@link PersistenceSession} during system start up.
*/
-public interface PersistenceMechanismInstaller extends Installer, PersistenceSessionFactoryDelegate {
+public interface PersistenceMechanismInstaller extends Installer, ObjectStoreFactory {
static String TYPE = "persistor";
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
index 75e6fc4..58e04ae 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
@@ -27,11 +27,10 @@ import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegating;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
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.ObjectFactory;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
* An abstract implementation of {@link PersistenceMechanismInstaller} that will
@@ -52,7 +51,7 @@ public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbs
@Override
public PersistenceSessionFactory createPersistenceSessionFactory(final DeploymentType deploymentType) {
- return new PersistenceSessionFactoryDelegating(deploymentType, getConfiguration(), this);
+ return new PersistenceSessionFactory(deploymentType, getConfiguration(), this);
}
//endregion
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
index 44ded4d..8eacc26 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java
@@ -20,10 +20,9 @@
package org.apache.isis.core.runtime.persistence;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
/**
- * For {@link PersistenceSessionFactory} implementations that can cache the
+ * For {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} implementations that can cache the
* {@link PersistenceSession#isFixturesInstalled()} so is only called once per
* application scope.
*/
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java
new file mode 100644
index 0000000..fb0fdec
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
+
+/**
+ * Creates an {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} on behalf of a
+ * {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory}.
+ */
+public interface ObjectStoreFactory extends IsisConfigurationBuilderAware, MetaModelRefiner {
+
+ ObjectStore createObjectStore(final IsisConfiguration configuration);
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java
index cdeaaec..0d97653 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java
@@ -19,8 +19,6 @@
package org.apache.isis.core.runtime.persistence;
-import org.apache.isis.core.runtime.system.persistence.ObjectFactory;
-
public final class PersistenceConstants {
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
deleted file mode 100644
index 59a6010..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.runtime.persistence;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware;
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-
-/**
- * Creates an {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} on behalf of a
- * {@link PersistenceSessionFactory}.
- */
-public interface PersistenceSessionFactoryDelegate extends IsisConfigurationBuilderAware, MetaModelRefiner {
-
- ObjectStoreSpi createObjectStore(final IsisConfiguration configuration);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
deleted file mode 100644
index 69153f2..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java
+++ /dev/null
@@ -1,237 +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;
-
-import java.util.List;
-import java.util.Properties;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.fixtures.FixtureClock;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
-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.PersistenceSessionFactory;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
-import static org.hamcrest.CoreMatchers.*;
-
-/**
- * Implementation that just delegates to a supplied
- * {@link PersistenceSessionFactoryDelegate}.
- */
-public class PersistenceSessionFactoryDelegating implements PersistenceSessionFactory, FixturesInstalledFlag {
-
- private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactoryDelegating.class);
-
- private final DeploymentType deploymentType;
- private final IsisConfiguration configuration;
- private final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate;
-
- /**
- * @see #setServices(List)
- */
- private List<Object> serviceList;
-
- private Boolean fixturesInstalled;
-
- private final ServicesInjectorSpi servicesInjector = new ServicesInjectorDefault();
- private RuntimeContext runtimeContext;
-
- public PersistenceSessionFactoryDelegating(
- final DeploymentType deploymentType,
- final IsisConfiguration isisConfiguration,
- final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate) {
- this.deploymentType = deploymentType;
- this.configuration = isisConfiguration;
- this.persistenceSessionFactoryDelegate = persistenceSessionFactoryDelegate;
- }
-
- @Override
- public DeploymentType getDeploymentType() {
- return deploymentType;
- }
-
- public PersistenceSessionFactoryDelegate getDelegate() {
- return persistenceSessionFactoryDelegate;
- }
-
- @Override
- public PersistenceSession createPersistenceSession() {
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("installing " + this.getClass().getName());
- }
-
- ServicesInjectorSpi servicesInjector = getServicesInjector();
-
- final ObjectStoreSpi objectStore = persistenceSessionFactoryDelegate.createObjectStore(getConfiguration());
-
- ensureThatArg(objectStore, is(not(nullValue())));
-
- final PersistenceSession persistenceSession =new PersistenceSession(this, servicesInjector, objectStore, getConfiguration());
-
- final IsisTransactionManager transactionManager = new IsisTransactionManager(persistenceSession, objectStore, servicesInjector);
-
- persistenceSession.setDirtiableSupport(true);
- persistenceSession.setTransactionManager(transactionManager);
-
- return persistenceSession;
- }
-
- @Override
- public final void init() {
-
- // check prereq dependencies injected
- ensureThatState(serviceList, is(notNullValue()));
-
- // a bit of a workaround, but required if anything in the metamodel (for
- // example, a
- // ValueSemanticsProvider for a date value type) needs to use the Clock
- // singleton
- // we do this after loading the services to allow a service to prime a
- // different clock
- // implementation (eg to use an NTP time service).
- if (!deploymentType.isProduction() && !Clock.isInitialized()) {
- FixtureClock.initialize();
- }
-
- runtimeContext = createRuntimeContext(getConfiguration());
- ensureThatState(runtimeContext, is(not(nullValue())));
-
- // inject the specification loader etc.
- runtimeContext.injectInto(servicesInjector);
-
- // wire up components
-
- getSpecificationLoader().injectInto(runtimeContext);
- for (Object service : serviceList) {
- runtimeContext.injectInto(service);
- }
-
- servicesInjector.setServices(serviceList);
- servicesInjector.init();
- }
-
- private RuntimeContext createRuntimeContext(final IsisConfiguration configuration) {
- final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession();
- final Properties properties = applicationPropertiesFrom(configuration);
- runtimeContext.setProperties(properties);
- return runtimeContext;
- }
-
- private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) {
- final Properties properties = new Properties();
- final IsisConfiguration applicationConfiguration = configuration.getProperties("application");
- for (final String key : applicationConfiguration) {
- final String value = applicationConfiguration.getString(key);
- final String newKey = key.substring("application.".length());
- properties.setProperty(newKey, value);
- }
- return properties;
- }
-
-
-
- @Override
- public final void shutdown() {
- doShutdown();
- }
-
- /**
- * Optional hook method for implementation-specific shutdown.
- */
- protected void doShutdown() {
- }
-
-
- // //////////////////////////////////////////////////////
- // Components (setup during init...)
- // //////////////////////////////////////////////////////
-
- public ServicesInjectorSpi getServicesInjector() {
- return servicesInjector;
- }
-
- // //////////////////////////////////////////////////////
- // MetaModelAdjuster impl
- // //////////////////////////////////////////////////////
-
- @Override
- public void refineMetaModelValidator(MetaModelValidatorComposite metaModelValidator, IsisConfiguration configuration) {
- persistenceSessionFactoryDelegate.refineMetaModelValidator(metaModelValidator, configuration);
- }
-
- @Override
- public void refineProgrammingModel(ProgrammingModel baseProgrammingModel, IsisConfiguration configuration) {
- persistenceSessionFactoryDelegate.refineProgrammingModel(baseProgrammingModel, configuration);
- }
-
- // //////////////////////////////////////////////////////
- // FixturesInstalledFlag impl
- // //////////////////////////////////////////////////////
-
- @Override
- public Boolean isFixturesInstalled() {
- return fixturesInstalled;
- }
-
- @Override
- public void setFixturesInstalled(final Boolean fixturesInstalled) {
- this.fixturesInstalled = fixturesInstalled;
- }
-
- // //////////////////////////////////////////////////////
- // Dependencies (injected from constructor)
- // //////////////////////////////////////////////////////
-
- public IsisConfiguration getConfiguration() {
- return configuration;
- }
-
- // //////////////////////////////////////////////////////
- // Dependencies (injected via setters)
- // //////////////////////////////////////////////////////
-
- @Override
- public void setServices(final List<Object> serviceList) {
- this.serviceList = serviceList;
- }
-
- // //////////////////////////////////////////////////////
- // Dependencies (from context)
- // //////////////////////////////////////////////////////
-
- protected SpecificationLoaderSpi getSpecificationLoader() {
- return IsisContext.getSpecificationLoader();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 9d67051..8de9088 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
@@ -19,43 +19,33 @@
package org.apache.isis.core.runtime.persistence.adaptermanager;
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.CoreMatchers.nullValue;
-
import java.util.Iterator;
-
-import org.apache.isis.core.runtime.persistence.PojoRecreationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.components.Resettable;
+import org.apache.isis.core.commons.components.SessionScopedComponent;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.debug.DebugBuilder;
+import org.apache.isis.core.commons.debug.DebuggableWithTitle;
import org.apache.isis.core.commons.ensure.Assert;
import org.apache.isis.core.commons.ensure.Ensure;
import org.apache.isis.core.commons.ensure.IsisAssertException;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
import org.apache.isis.core.metamodel.adapter.ResolveState;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
-import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
+import org.apache.isis.core.metamodel.adapter.oid.*;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet;
+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.facets.collections.modify.CollectionFacetUtils;
import org.apache.isis.core.metamodel.facets.object.parented.ParentedFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -63,12 +53,36 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
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.persistence.PojoRecreationException;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
+import org.apache.isis.core.runtime.system.persistence.AdapterLifecycleTransitioner;
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.*;
-public class AdapterManagerDefault implements AdapterManagerSpi {
+/**
+ * Responsible for managing the {@link ObjectAdapter adapter}s and {@link Oid
+ * identities} for each and every POJO that is being used by the framework.
+ *
+ * <p>
+ * It provides a consistent set of adapters in memory, providing an
+ * {@link ObjectAdapter adapter} for the POJOs that are in use ensuring that the
+ * same object is not loaded twice into memory.
+ *
+ * <p>
+ * Each POJO is given an {@link ObjectAdapter adapter} so that the framework can
+ * work with the POJOs even though it does not understand their types. Each POJO
+ * maps to an {@link ObjectAdapter adapter} and these are reused.
+ */
+public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAdapter>,
+ RecreatedPojoRemapper,
+ AdapterLifecycleTransitioner,
+ SessionScopedComponent,
+ DebuggableWithTitle,
+ Resettable {
private static final Logger LOG = LoggerFactory.getLogger(AdapterManagerDefault.class);
@@ -87,7 +101,7 @@ public class AdapterManagerDefault implements AdapterManagerSpi {
* to allow transient objects to be reattached; can instead provide a
* {@link PojoRecreator} implementation that is injected into the Adapter Manager.
*
- * @see http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976
+ * @see <a href="http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976">this thread</a>
*/
public AdapterManagerDefault(PojoRecreator pojoRecreator) {
this.pojoRecreator = pojoRecreator;
@@ -292,12 +306,12 @@ public class AdapterManagerDefault implements AdapterManagerSpi {
@Override
public ObjectAdapter adapterFor(final TypedOid typedOid) {
- return adapterFor(typedOid, ConcurrencyChecking.NO_CHECK);
+ return adapterFor(typedOid, AdapterManager.ConcurrencyChecking.NO_CHECK);
}
@Override
- public ObjectAdapter adapterFor(final TypedOid typedOid, final ConcurrencyChecking concurrencyChecking) {
+ public ObjectAdapter adapterFor(final TypedOid typedOid, final AdapterManager.ConcurrencyChecking concurrencyChecking) {
// attempt to locate adapter for the Oid
ObjectAdapter adapter = getAdapterFor(typedOid);
@@ -327,7 +341,7 @@ public class AdapterManagerDefault implements AdapterManagerSpi {
otherVersion != null &&
thisVersion.different(otherVersion)) {
- if(isConcurrencyCheckingGloballyEnabled() && ConcurrencyChecking.isCurrentlyEnabled()) {
+ if(isConcurrencyCheckingGloballyEnabled() && AdapterManager.ConcurrencyChecking.isCurrentlyEnabled()) {
LOG.info("concurrency conflict detected on " + recreatedOid + " (" + otherVersion + ")");
final String currentUser = getAuthenticationSession().getUserName();
throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion);
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java
deleted file mode 100644
index b610802..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java
+++ /dev/null
@@ -1,58 +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.adaptermanager;
-
-import org.apache.isis.core.commons.exceptions.UnknownTypeException;
-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.collections.modify.CollectionFacetUtils;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
-
-public final class AdapterUtils {
- private AdapterUtils() {
- }
-
- public static ObjectAdapter createAdapter(final Class<?> type, final Object object, final AdapterManagerSpi adapterManager, final SpecificationLoaderSpi specificationLoader) {
- final ObjectSpecification specification = specificationLoader.loadSpecification(type);
- if (specification.isNotCollection()) {
- return adapterManager.adapterFor(object);
- } else {
- throw new UnknownTypeException("not an object, is this a collection?");
- }
- }
-
- public static Object[] getCollectionAsObjectArray(final Object option, final ObjectSpecification spec, final AdapterManagerSpi adapterManager) {
- final ObjectAdapter collection = adapterManager.adapterFor(option);
- final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection);
- final Object[] optionArray = new Object[facet.size(collection)];
- int j = 0;
- for (final ObjectAdapter adapter : facet.iterable(collection)) {
- optionArray[j++] = adapter.getObject();
- }
- return optionArray;
- }
-
- public static Object domainObject(final ObjectAdapter inObject) {
- return inObject == null ? null : inObject.getObject();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java
deleted file mode 100644
index 82ce9f1..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java
+++ /dev/null
@@ -1,27 +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;
-
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
-import org.apache.isis.core.runtime.system.persistence.ObjectStore;
-
-public interface ObjectStoreSpi extends ObjectStore, TransactionalResource {
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
index 8e8ad1b..1e012d8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java
@@ -20,40 +20,38 @@
package org.apache.isis.core.runtime.persistence.objectstore.transaction;
import java.util.List;
-
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
/**
* Interface for the {@link IsisTransactionManager} to interact with some
- * transactional resource (ie a {@link ObjectStoreSpi}).
+ * transactional resource (ie a {@link org.apache.isis.core.runtime.system.persistence.ObjectStore}).
*/
public interface TransactionalResource {
/**
- * Used by the {@link ObjectStoreTransactionManager} to tell the underlying
- * {@link ObjectStoreSpi} to start a transaction.
+ * Used by the {@link IsisTransactionManager} to tell the underlying
+ * {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} to start a transaction.
*/
void startTransaction();
/**
* Used by the current {@link IsisTransaction} to flush changes to
- * the {@link ObjectStoreSpi} (either via a
+ * the {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} (either via a
* {@link IsisTransactionManager#flushTransaction()} or a
* {@link IsisTransactionManager#endTransaction()}).
*/
void execute(List<PersistenceCommand> unmodifiableList);
/**
- * Used by the {@link ObjectStoreTransactionManager} to tell the underlying
- * {@link ObjectStoreSpi} to commit a transaction.
+ * Used by the {@link IsisTransactionManager} to tell the underlying
+ * {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} to commit a transaction.
*/
void endTransaction();
/**
- * Used by the {@link ObjectStoreTransactionManager} to tell the underlying
- * {@link ObjectStoreSpi} to abort a transaction.
+ * Used by the {@link IsisTransactionManager} to tell the underlying
+ * {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} to abort a transaction.
*/
void abortTransaction();
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
index 7f4aa22..7f4d207 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java
@@ -37,11 +37,11 @@ import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authentication.exploration.ExplorationSession;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.internal.InitialisationSession;
import org.apache.isis.core.runtime.system.internal.IsisLocaleInitializer;
import org.apache.isis.core.runtime.system.internal.IsisTimeZoneInitializer;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
index 62a2bee..5d82d26 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller;
import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
import org.apache.isis.core.runtime.services.ServicesInstaller;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
public final class SystemConstants {
@@ -57,7 +56,7 @@ public final class SystemConstants {
/**
- * Key used to lookup {@link PersistenceSessionFactory persistor} in
+ * Key used to lookup {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory persistor} in
* {@link IsisConfiguration}, and root for any
* {@link PersistenceMechanismInstaller persistor}-specific configuration
* keys.
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java
deleted file mode 100644
index 9d11937..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java
+++ /dev/null
@@ -1,51 +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.system.persistence;
-
-import org.apache.isis.core.commons.components.Resettable;
-import org.apache.isis.core.commons.components.SessionScopedComponent;
-import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-
-/**
- * Responsible for managing the {@link ObjectAdapter adapter}s and {@link Oid
- * identities} for each and every POJO that is being used by the framework.
- *
- * <p>
- * It provides a consistent set of adapters in memory, providing an
- * {@link ObjectAdapter adapter} for the POJOs that are in use ensuring that the
- * same object is not loaded twice into memory.
- *
- * <p>
- * Each POJO is given an {@link ObjectAdapter adapter} so that the framework can
- * work with the POJOs even though it does not understand their types. Each POJO
- * maps to an {@link ObjectAdapter adapter} and these are reused.
- */
-public interface AdapterManagerSpi extends AdapterManager, Iterable<ObjectAdapter>,
- RecreatedPojoRemapper,
- AdapterLifecycleTransitioner,
- SessionScopedComponent,
- DebuggableWithTitle,
- Resettable {
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 539b393..a5b8005 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
@@ -29,12 +29,9 @@ 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.CreateObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
-public interface ObjectStore extends DebuggableWithTitle, SessionScopedComponent {
+public interface ObjectStore extends TransactionalResource, DebuggableWithTitle, SessionScopedComponent {
/**
* The name of this component.
http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index cdd3a10..294ef30 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -57,7 +57,6 @@ import org.apache.isis.core.runtime.persistence.NotPersistableException;
import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
-import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithmUnified;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.ToPersistObjectSet;
@@ -82,7 +81,7 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
private final ObjectAdapterFactory objectAdapterFactory;
private final ServicesInjectorSpi servicesInjector;
private final OidGenerator oidGenerator;
- private final AdapterManagerSpi adapterManager;
+ private final AdapterManagerDefault adapterManager;
private final PersistAlgorithm persistAlgorithm ;
private final ObjectStore objectStore;
@@ -574,10 +573,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
* initialise the persistor.
*
* <p>
- * Returns the cached value of {@link ObjectStoreSpi#isFixturesInstalled()
+ * Returns the cached value of {@link ObjectStore#isFixturesInstalled()
* whether fixtures are installed} from the
* {@link PersistenceSessionFactory} (provided it implements
- * {@link FixturesInstalledFlag}), otherwise queries {@link ObjectStoreSpi}
+ * {@link FixturesInstalledFlag}), otherwise queries {@link ObjectStore}
* directly.
* <p>
* This caching is important because if we've determined, for a given run,
@@ -979,8 +978,8 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
}
/**
- * Uses the {@link ObjectStoreSpi} to
- * {@link ObjectStoreSpi#createCreateObjectCommand(ObjectAdapter) create} a
+ * Uses the {@link ObjectStore} to
+ * {@link ObjectStore#createCreateObjectCommand(ObjectAdapter) create} a
* {@link CreateObjectCommand}, and adds to the
* {@link IsisTransactionManager}.
*/
@@ -1104,7 +1103,7 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
}
/**
- * The configured {@link AdapterManagerSpi}.
+ * The configured {@link AdapterManager}.
*
* <p>
* Injected in constructor.
[07/29] isis git commit: Revert "ISIS-537,
ISIS-911 - Remove the extra "Clear" button for Blob/Clob scalars in
edit mode"
Posted by da...@apache.org.
Revert "ISIS-537, ISIS-911 - Remove the extra "Clear" button for Blob/Clob scalars in edit mode"
This reverts commit f605fba1ec596fa79ad9bf63a209114775bf858f.
https://trello.com/c/3ar0leq2/103-my-mistake-we-now-don-t-have-any-way-to-clear-an-attachment-or-blob-if-optional-eg-in-the-todoapp
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c195fa7c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c195fa7c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c195fa7c
Branch: refs/heads/ISIS-939
Commit: c195fa7ccc3d407c14b85aba8eb91d13a0bae479
Parents: 21bc20b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 22:29:38 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 22:29:38 2014 +0200
----------------------------------------------------------------------
.../additionallinks/AdditionalLinksPanel.java | 11 +++----
.../additionallinks/EntityActionUtil.java | 3 +-
.../isisapplib/IsisBlobOrClobPanelAbstract.html | 1 +
.../isisapplib/IsisBlobOrClobPanelAbstract.java | 31 +++++++++++++++++++-
4 files changed, 39 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/c195fa7c/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
index b94beb1..50b9a1b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
@@ -40,8 +40,7 @@ import org.apache.isis.viewer.wicket.ui.util.Components;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
/**
- * Panel for rendering additional links like <em>update</em> and <em>clear</em>
- * next to a scalar.
+ * Panel for rendering scalars of type {@link String}.
*/
public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
@@ -51,11 +50,13 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
private static final String ID_ADDITIONAL_LINK_ITEM = "additionalLinkItem";
private static final String ID_ADDITIONAL_LINK_FONT_AWESOME = "additionalLinkFontAwesome";
private static final String ID_ADDITIONAL_LINK_TITLE = "additionalLinkTitle";
-
+
+ private List<LinkAndLabel> linkAndLabels;
+
public AdditionalLinksPanel(final String id, final List<LinkAndLabel> links) {
super(id, new ListOfLinksModel(links));
- List<LinkAndLabel> linkAndLabels = getModel().getObject();
+ this.linkAndLabels = getModel().getObject();
final WebMarkupContainer container = new WebMarkupContainer(ID_ADDITIONAL_LINK_LIST);
addOrReplace(container);
@@ -64,7 +65,7 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
setOutputMarkupId(true);
- final ListView<LinkAndLabel> listView = new ListView<LinkAndLabel>(ID_ADDITIONAL_LINK_ITEM, linkAndLabels) {
+ final ListView<LinkAndLabel> listView = new ListView<LinkAndLabel>(ID_ADDITIONAL_LINK_ITEM, this.linkAndLabels) {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/isis/blob/c195fa7c/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
index 4e0bd4c..5c2d62c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
@@ -92,6 +92,7 @@ public final class EntityActionUtil {
final EntityModel entityModel,
final ObjectAssociation association,
final List<ObjectAction> associatedActions) {
+ final ObjectSpecification adapterSpec = entityModel.getTypeOfSpecification();
final ObjectAdapter adapter = entityModel.load(ConcurrencyChecking.NO_CHECK);
final AuthenticationSessionProvider asa = (AuthenticationSessionProvider) Session.get();
@@ -105,7 +106,7 @@ public final class EntityActionUtil {
ObjectAction.Filters.notBulkOnly(),
ObjectAction.Filters.excludeWizardActions(objectSpecification));
- final List<ObjectAction> userActions = objectSpecification.getObjectActions(type, Contributed.INCLUDED, filter);
+ final List<ObjectAction> userActions = adapterSpec.getObjectActions(type, Contributed.INCLUDED, filter);
associatedActions.addAll(userActions);
return userActions;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c195fa7c/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
index 2857d9a..0320af1 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
@@ -30,6 +30,7 @@
<span class="uploadFile help-block">
<input type="file" name="scalarValue" wicket:id="scalarValue" />
</span>
+ <a wicket:id="scalarIfRegularClear" class="btn btn-primary btn-sm"><span class="clearTitle">Clear</span></a>
<a class="download btn btn-sm btn-primary" wicket:id="scalarIfRegularDownload"><span class="downloadTitle">Download</span></a>
<span class="fileName" wicket:id="fileName"></span>
http://git-wip-us.apache.org/repos/asf/isis/blob/c195fa7c/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index 6cacd86..c122780 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -28,6 +28,8 @@ import javax.activation.MimeType;
import javax.imageio.ImageIO;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.extensions.markup.html.image.resource.ThumbnailImageResource;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -63,6 +65,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
private static final String ID_SCALAR_IF_REGULAR = "scalarIfRegular";
private static final String ID_SCALAR_IF_REGULAR_DOWNLOAD = "scalarIfRegularDownload";
private static final String ID_FILE_NAME = "fileName";
+ private static final String ID_SCALAR_IF_REGULAR_CLEAR = "scalarIfRegularClear";
private static final String ID_SCALAR_NAME = "scalarName";
private static final String ID_SCALAR_VALUE = "scalarValue";
private static final String ID_IMAGE = "scalarImage";
@@ -72,6 +75,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
private Image wicketImage;
private FileUploadField fileUploadField;
+ private Label fileNameLabel;
protected enum InputFieldVisibility {
VISIBLE, NOT_VISIBLE
@@ -225,7 +229,9 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
MarkupContainer formComponent = (MarkupContainer) getComponentForRegular();
formComponent.get(ID_SCALAR_VALUE).setVisible(visibility == InputFieldVisibility.VISIBLE);
- updateFileNameLabel(ID_FILE_NAME, formComponent);
+ fileNameLabel = updateFileNameLabel(ID_FILE_NAME, formComponent);
+
+ updateClearLink(visibility);
// the visibility of download link is intentionally 'backwards';
// if in edit mode then do NOT show
@@ -255,6 +261,29 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
return fileNameLabel;
}
+ private void updateClearLink(InputFieldVisibility visibility) {
+ final MarkupContainer formComponent = (MarkupContainer) getComponentForRegular();
+ formComponent.setOutputMarkupId(true); // enable ajax link
+
+ final AjaxLink<Void> ajaxLink = new AjaxLink<Void>(ID_SCALAR_IF_REGULAR_CLEAR){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ setEnabled(false);
+ ScalarModel model = IsisBlobOrClobPanelAbstract.this.getModel();
+ model.setObject(null);
+ target.add(formComponent);
+ target.add(fileNameLabel);
+ }
+ };
+ ajaxLink.setOutputMarkupId(true);
+ formComponent.addOrReplace(ajaxLink);
+
+ final T blobOrClob = getBlobOrClobFromModel();
+ formComponent.get(ID_SCALAR_IF_REGULAR_CLEAR).setVisible(blobOrClob != null && visibility == InputFieldVisibility.VISIBLE);
+ }
+
private MarkupContainer updateDownloadLink(String downloadId, MarkupContainer container) {
final ResourceLink<?> resourceLink = createResourceLink(downloadId);
if(resourceLink != null) {
[25/29] isis git commit: ISIS-939: simplifying PersistenceSession
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index af1619f..8d4c1cb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.core.runtime.system.persistence;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
@@ -26,8 +25,6 @@ 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.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.components.ApplicationScopedComponent;
import org.apache.isis.core.commons.components.SessionScopedComponent;
@@ -48,10 +45,7 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
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.*;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
import org.apache.isis.core.runtime.persistence.NotPersistableException;
import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
@@ -59,19 +53,19 @@ import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDef
import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreatorUnified;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithmUnified;
-import org.apache.isis.core.runtime.persistence.objectstore.algorithm.ToPersistObjectSet;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
-import org.apache.isis.core.runtime.persistence.query.*;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.*;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import org.apache.isis.core.runtime.system.transaction.TransactionalClosureAbstract;
+import org.apache.isis.core.runtime.system.transaction.TransactionalClosureWithReturnAbstract;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
import static org.hamcrest.CoreMatchers.*;
-public class PersistenceSession implements Persistor, EnlistedObjectDirtying, ToPersistObjectSet, RecreatedPojoRemapper, SessionScopedComponent, DebuggableWithTitle {
+public class PersistenceSession implements SessionScopedComponent, DebuggableWithTitle {
private static final Logger LOG = LoggerFactory.getLogger(PersistenceSession.class);
@@ -87,13 +81,14 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
private final ObjectStore objectStore;
private final Map<ObjectSpecId, RootOid> servicesByObjectType = Maps.newHashMap();
- private boolean dirtiableSupport;
+ private final PersistenceQueryFactory persistenceQueryFactory;
- /**
- * Injected using setter-based injection.
- */
private IsisTransactionManager transactionManager;
+ private boolean dirtiableSupport = true;
+
+
+
private static enum State {
NOT_INITIALIZED, OPEN, CLOSED
}
@@ -124,6 +119,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
this.oidGenerator = new OidGenerator(new IdentifierGeneratorUnified(configuration));
this.adapterManager = new AdapterManagerDefault(new PojoRecreatorUnified(configuration));
this.persistAlgorithm = new PersistAlgorithmUnified(configuration);
+ this.objectStore = objectStore;
+
+ this.persistenceQueryFactory = new PersistenceQueryFactory(getSpecificationLoader(), adapterManager);
+ this.transactionManager = new IsisTransactionManager(this, objectStore, servicesInjector);
setState(State.NOT_INITIALIZED);
@@ -131,7 +130,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
LOG.debug("creating " + this);
}
- this.objectStore = objectStore;
}
// ///////////////////////////////////////////////////////////////////////////
@@ -208,7 +206,7 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
ObjectAdapter serviceAdapter =
existingOid == null
? getAdapterManager().adapterFor(service)
- : mapRecreatedPojo(existingOid, service);
+ : getAdapterManager().mapRecreatedPojo(existingOid, service);
if (serviceAdapter.getOid().isTransient()) {
adapterManager.remapAsPersistent(serviceAdapter, null);
}
@@ -287,7 +285,27 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// Factory
// ///////////////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Create a root or standalone {@link ObjectAdapter adapter}.
+ *
+ * <p>
+ * Creates a new instance of the specified type and returns it in an adapter
+ * whose resolved state set to {@link ResolveState#TRANSIENT} (except if the
+ * type is marked as {@link ObjectSpecification#isValueOrIsParented()
+ * aggregated} in which case it will be set to {@link ResolveState#VALUE}).
+ *
+ * <p>
+ * The returned object will be initialised (had the relevant callback
+ * lifecycle methods invoked).
+ *
+ * <p>
+ * While creating the object it will be initialised with default values and
+ * its created lifecycle method (its logical constructor) will be invoked.
+ *
+ * <p>
+ * This method is ultimately delegated to by the
+ * {@link org.apache.isis.applib.DomainObjectContainer}.
+ */
public ObjectAdapter createTransientInstance(final ObjectSpecification objectSpec) {
if (LOG.isDebugEnabled()) {
LOG.debug("creating transient instance of " + objectSpec);
@@ -308,7 +326,20 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
return objectSpec.initialize(adapter);
}
- @Override
+ /**
+ * Creates a new instance of the specified type and returns an adapter with
+ * an aggregated OID that show that this new object belongs to the specified
+ * parent. The new object's resolved state is set to
+ * {@link ResolveState#RESOLVED} as it state is part of it parent.
+ *
+ * <p>
+ * While creating the object it will be initialised with default values and
+ * its created lifecycle method (its logical constructor) will be invoked.
+ *
+ * <p>
+ * This method is ultimately delegated to by the
+ * {@link org.apache.isis.applib.DomainObjectContainer}.
+ */
public ObjectAdapter createAggregatedInstance(final ObjectSpecification objectSpec, final ObjectAdapter parentAdapter) {
if (LOG.isDebugEnabled()) {
LOG.debug("creating aggregated instance of " + objectSpec);
@@ -328,7 +359,16 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// findInstances, getInstances
// ///////////////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Finds and returns instances that match the specified query.
+ *
+ * <p>
+ * The {@link QueryCardinality} determines whether all instances or just the
+ * first matching instance is returned.
+ *
+ * @throws org.apache.isis.core.runtime.persistence.UnsupportedFindException
+ * if the criteria is not support by this persistor
+ */
public <T> ObjectAdapter findInstances(final Query<T> query, final QueryCardinality cardinality) {
final PersistenceQuery persistenceQuery = createPersistenceQueryFor(query, cardinality);
if (persistenceQuery == null) {
@@ -337,7 +377,19 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
return findInstances(persistenceQuery);
}
- @Override
+ /**
+ * Finds and returns instances that match the specified
+ * {@link PersistenceQuery}.
+ *
+ * <p>
+ * Compared to {@link #findInstances(Query, QueryCardinality)}, not that
+ * there is no {@link QueryCardinality} parameter. That's because
+ * {@link PersistenceQuery} intrinsically carry the knowledge as to how many
+ * rows they return.
+ *
+ * @throws org.apache.isis.core.runtime.persistence.UnsupportedFindException
+ * if the criteria is not support by this persistor
+ */
public ObjectAdapter findInstances(final PersistenceQuery persistenceQuery) {
final List<ObjectAdapter> instances = getInstances(persistenceQuery);
final ObjectSpecification specification = persistenceQuery.getSpecification();
@@ -350,53 +402,9 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
* {@link PersistenceQuery NOF-internal representation}.
*/
protected 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 = getAdapterManager().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);
+ return persistenceQueryFactory.createPersistenceQueryFor(query, cardinality);
}
- private ObjectSpecification specFor(final Query<?> query) {
- return getSpecificationLoader().loadSpecification(query.getResultType());
- }
-
- /**
- * 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 = new HashMap<String, ObjectAdapter>();
- 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 ? getAdapterManager().adapterFor(argument) : null;
- argumentsAdaptersByParameterName.put(parameterName, argumentAdapter);
- }
- return argumentsAdaptersByParameterName;
- }
protected List<ObjectAdapter> getInstances(final PersistenceQuery persistenceQuery) {
if (LOG.isDebugEnabled()) {
@@ -423,19 +431,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// Manual dirtying support
// ///////////////////////////////////////////////////////////////////////////
- /**
- * @see #setDirtiableSupport(boolean)
- */
public boolean isCheckObjectsForDirtyFlag() {
return dirtiableSupport;
}
- /**
- * Whether to notice {@link Dirtiable manually-dirtied} objects.
- */
- public void setDirtiableSupport(final boolean checkObjectsForDirtyFlag) {
- this.dirtiableSupport = checkObjectsForDirtyFlag;
- }
/**
* Mark as {@link #objectChanged(ObjectAdapter) changed } all
@@ -451,7 +450,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
* <p>
* Called by the {@link IsisTransactionManager}.
*/
- @Override
public void objectChangedAllDirty() {
if (!dirtiableSupport) {
return;
@@ -471,7 +469,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
}
}
- @Override
+ /**
+ * Set as {@link Dirtiable#clearDirty(ObjectAdapter) clean} any
+ * {@link Dirtiable} objects.
+ */
public synchronized void clearAllDirty() {
if (!isCheckObjectsForDirtyFlag()) {
return;
@@ -510,18 +511,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
objectStore.registerService(rootOid);
}
- public ObjectAdapter getService(final String id) {
- for (final Object service : servicesInjector.getRegisteredServices()) {
- // TODO this (ServiceUtil) uses reflection to access the service
- // object; it should use the
- // reflector, ie call allServices first and use the returned array
- if (id.equals(ServiceUtil.id(service))) {
- return getService(service);
- }
- }
- return null;
- }
-
// REVIEW why does this get called multiple times when starting up
public List<ObjectAdapter> getServices() {
final List<Object> services = servicesInjector.getRegisteredServices();
@@ -535,19 +524,12 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
private ObjectAdapter getService(final Object servicePojo) {
final ObjectSpecification serviceSpecification = getSpecificationLoader().loadSpecification(servicePojo.getClass());
final RootOid oid = getOidForService(serviceSpecification);
- final ObjectAdapter serviceAdapter = mapRecreatedPojo(oid, servicePojo);
+ final ObjectAdapter serviceAdapter = getAdapterManager().mapRecreatedPojo(oid, servicePojo);
serviceAdapter.markAsResolvedIfPossible();
return serviceAdapter;
}
- /**
- * Has any services.
- */
- public boolean hasServices() {
- return servicesInjector.getRegisteredServices().size() > 0;
- }
-
private RootOid getOidForServiceFromPersistenceLayer(ObjectSpecification serviceSpecification) {
final ObjectSpecId objectSpecId = serviceSpecification.getSpecId();
RootOid oid = servicesByObjectType.get(objectSpecId);
@@ -587,15 +569,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
*/
public boolean isFixturesInstalled() {
final PersistenceSessionFactory persistenceSessionFactory = getPersistenceSessionFactory();
- if (persistenceSessionFactory instanceof FixturesInstalledFlag) {
- final FixturesInstalledFlag fixturesInstalledFlag = (FixturesInstalledFlag) persistenceSessionFactory;
- if (fixturesInstalledFlag.isFixturesInstalled() == null) {
- fixturesInstalledFlag.setFixturesInstalled(objectStore.isFixturesInstalled());
- }
- return fixturesInstalledFlag.isFixturesInstalled();
- } else {
- return objectStore.isFixturesInstalled();
+ if (persistenceSessionFactory.isFixturesInstalled() == null) {
+ persistenceSessionFactory.setFixturesInstalled(objectStore.isFixturesInstalled());
}
+ return persistenceSessionFactory.isFixturesInstalled();
}
@Override
@@ -608,7 +585,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// loadObject, reload
// ///////////////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Loads the object identified by the specified {@link TypedOid} from the
+ * persisted set of objects.
+ */
public ObjectAdapter loadObject(final TypedOid oid) {
// REVIEW:
@@ -642,7 +622,11 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// resolveImmediately, resolveField
// ///////////////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Re-initialises the fields of an object. If the object is unresolved then
+ * the object's missing data should be retrieved from the persistence
+ * mechanism and be used to set up the value objects and associations.
+ */
public void resolveImmediately(final ObjectAdapter adapter) {
// synchronize on the current session because getting race
// conditions, I think between different UI threads when running
@@ -695,49 +679,28 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
});
}
- @Override
- public void resolveField(final ObjectAdapter objectAdapter, final ObjectAssociation field) {
- if (field.isNotPersisted()) {
- return;
- }
- if (field.isOneToManyAssociation()) {
- return;
- }
- if (field.getSpecification().isParented()) {
- return;
- }
- if (field.getSpecification().isValue()) {
- return;
- }
- final ObjectAdapter referenceAdapter = field.get(objectAdapter);
- if (referenceAdapter == null || referenceAdapter.isResolved()) {
- return;
- }
- if (!referenceAdapter.representsPersistent()) {
- return;
- }
- if (LOG.isInfoEnabled()) {
- // don't log object - it's toString() may use the unresolved field
- // or unresolved collection
- LOG.info("resolve field " + objectAdapter.getSpecification().getShortIdentifier() + "." + field.getId() + ": " + referenceAdapter.getSpecification().getShortIdentifier() + " " + referenceAdapter.getResolveState().code() + " " + referenceAdapter.getOid());
- }
- resolveFieldFromPersistenceLayer(objectAdapter, field);
- }
-
- private void resolveFieldFromPersistenceLayer(final ObjectAdapter objectAdapter, final ObjectAssociation field) {
- getTransactionManager().executeWithinTransaction(new TransactionalClosureAbstract() {
- @Override
- public void execute() {
- objectStore.resolveField(objectAdapter, field);
- }
- });
- }
-
// ////////////////////////////////////////////////////////////////
// makePersistent
// ////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Makes an {@link ObjectAdapter} persistent. The specified object should be
+ * stored away via this object store's persistence mechanism, and have an
+ * new and unique OID assigned to it. The object, should also be added to
+ * the {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault} as the object is implicitly 'in use'.
+ *
+ * <p>
+ * If the object has any associations then each of these, where they aren't
+ * already persistent, should also be made persistent by recursively calling
+ * this method.
+ *
+ * <p>
+ * If the object to be persisted is a collection, then each element of that
+ * collection, that is not already persistent, should be made persistent by
+ * recursively calling this method.
+ *
+ * @see #remapAsPersistent(ObjectAdapter)
+ */
public void makePersistent(final ObjectAdapter adapter) {
if (adapter.representsPersistent()) {
throw new NotPersistableException("Object already persistent: " + adapter);
@@ -784,7 +747,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// objectChanged
// ///////////////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Mark the {@link ObjectAdapter} as changed, and therefore requiring
+ * flushing to the persistence mechanism.
+ */
public void objectChanged(final ObjectAdapter adapter) {
if (adapter.isTransient() || (adapter.isParented() && adapter.getAggregateRoot().isTransient())) {
@@ -842,7 +808,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// destroyObject
// ///////////////////////////////////////////////////////////////////////////
- @Override
+ /**
+ * Removes the specified object from the system. The specified object's data
+ * should be removed from the persistence mechanism.
+ */
public void destroyObject(final ObjectAdapter adapter) {
ObjectSpecification spec = adapter.getSpecification();
if (spec.isParented()) {
@@ -879,52 +848,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
});
}
- // ///////////////////////////////////////////////////////////////////////////
- // hasInstances
- // ///////////////////////////////////////////////////////////////////////////
-
- @Override
- public boolean hasInstances(final ObjectSpecification specification) {
- if (LOG.isInfoEnabled()) {
- LOG.info("hasInstances of " + specification.getShortIdentifier());
- }
- return hasInstancesFromPersistenceLayer(specification);
- }
-
- private boolean hasInstancesFromPersistenceLayer(final ObjectSpecification specification) {
- return getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<Boolean>() {
- @Override
- public Boolean execute() {
- return objectStore.hasInstances(specification);
- }
- });
- }
-
- // ///////////////////////////////////////////////////////////////////////////
- // RecreatedPojoRemapper
- // ///////////////////////////////////////////////////////////////////////////
-
- @Override
- public ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo) {
- return adapterManager.mapRecreatedPojo(oid, recreatedPojo);
- }
-
- @Override
- public void remapRecreatedPojo(ObjectAdapter adapter, Object recreatedPojo) {
- adapterManager.remapRecreatedPojo(adapter, recreatedPojo);
- }
-
- // ///////////////////////////////////////////////////////////////////////////
- // AdapterLifecycleTransitioner
- // ///////////////////////////////////////////////////////////////////////////
-
- public void remapAsPersistent(ObjectAdapter adapter, RootOid hintRootOid) {
- adapterManager.remapAsPersistent(adapter, hintRootOid);
- }
-
- public void removeAdapter(ObjectAdapter adapter) {
- adapterManager.removeAdapter(adapter);
- }
// ///////////////////////////////////////////////////////////////////////////
// ToPersistObjectSet
@@ -950,7 +873,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
*
* @see #remapAsPersistent(ObjectAdapter)
*/
- @Override
public void remapAsPersistent(final ObjectAdapter adapter) {
final Oid transientOid = adapter.getOid();
adapterManager.remapAsPersistent(adapter, null);
@@ -958,7 +880,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
persistentByTransient.put(transientOid, persistentOid);
}
- @Override
+ /**
+ * 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.
+ */
public Oid remappedFrom(Oid transientOid) {
return persistentByTransient.get(transientOid);
}
@@ -969,7 +894,6 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
* {@link CreateObjectCommand}, and adds to the
* {@link IsisTransactionManager}.
*/
- @Override
public void addCreateObjectCommand(final ObjectAdapter object) {
getTransactionManager().addCommand(objectStore.createCreateObjectCommand(object));
}
@@ -1086,11 +1010,16 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
/**
* The configured {@link AdapterManager}.
- *
+ *
+ * Access to looking up (and possibly lazily loading) adapters.
+ *
+ * <p>
+ * However, manipulating of adapters is not part of this interface.
+ *
* <p>
* Injected in constructor.
*/
- public final AdapterManager getAdapterManager() {
+ public final AdapterManagerDefault getAdapterManager() {
return adapterManager;
}
@@ -1116,28 +1045,17 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To
// ///////////////////////////////////////////////////////////////////////////
/**
- * Inject the {@link IsisTransactionManager}.
- *
- * <p>
- * This must be injected using setter-based injection rather than through
- * the constructor because there is a bidirectional relationship between the
- * this class and the {@link IsisTransactionManager}.
- *
- * @see #getTransactionManager()
- */
- public void setTransactionManager(final IsisTransactionManager transactionManager) {
- this.transactionManager = transactionManager;
- }
-
- /**
* The configured {@link IsisTransactionManager}.
- *
- * @see #setTransactionManager(IsisTransactionManager)
*/
public IsisTransactionManager getTransactionManager() {
return transactionManager;
}
+ // for testing only
+ void setTransactionManager(IsisTransactionManager transactionManager) {
+ this.transactionManager = transactionManager;
+ }
+
// ///////////////////////////////////////////////////////////////////////////
// Dependencies (from context)
// ///////////////////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index cb3b320..2b203a2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -39,7 +39,6 @@ import org.apache.isis.core.runtime.persistence.ObjectStoreFactory;
import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
@@ -96,12 +95,8 @@ public class PersistenceSessionFactory implements MetaModelRefiner, ApplicationS
ensureThatArg(objectStore, is(not(nullValue())));
- final PersistenceSession persistenceSession =new PersistenceSession(this, servicesInjector, objectStore, getConfiguration());
+ final PersistenceSession persistenceSession = new PersistenceSession(this, servicesInjector, objectStore, getConfiguration());
- final IsisTransactionManager transactionManager = new IsisTransactionManager(persistenceSession, objectStore, servicesInjector);
-
- persistenceSession.setDirtiableSupport(true);
- persistenceSession.setTransactionManager(transactionManager);
return persistenceSession;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
deleted file mode 100644
index 11b4091..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/Persistor.java
+++ /dev/null
@@ -1,231 +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.system.persistence;
-
-import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ResolveState;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
-import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
-import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
-
-/**
- * Represents the client-side API of the <tt>PersistenceSession</tt>.
- */
-public interface Persistor {
-
-
- /////////////////////////////////////////////////////////////////
- // AdapterManager
- /////////////////////////////////////////////////////////////////
-
- /**
- * Access to looking up (and possibly lazily loading) adapters.
- *
- * <p>
- * However, manipulating of adapters is not part of this interface.
- * @return
- */
- public abstract AdapterManager getAdapterManager();
-
-
- /////////////////////////////////////////////////////////////////
- // find, load, resolve
- /////////////////////////////////////////////////////////////////
-
-
- /**
- * Finds and returns instances that match the specified query.
- *
- * <p>
- * The {@link QueryCardinality} determines whether all instances or just the
- * first matching instance is returned.
- *
- * @throws UnsupportedFindException
- * if the criteria is not support by this persistor
- */
- public abstract <T> ObjectAdapter findInstances(Query<T> query, QueryCardinality cardinality);
-
- /**
- * Whether there are any instances of the specified
- * {@link ObjectSpecification type}.
- *
- * <p>
- * Checks whether there are any instances of the specified type. The object
- * store should look for instances of the type represented by <variable>type
- * </variable> and return <code>true</code> if there are, or
- * <code>false</code> if there are not.
- *
- * <p>
- * Used (ostensibly) by client-side code.
- */
- public abstract boolean hasInstances(ObjectSpecification specification);
-
- /**
- * Finds and returns instances that match the specified
- * {@link PersistenceQuery}.
- *
- * <p>
- * Compared to {@link #findInstances(Query, QueryCardinality)}, not that
- * there is no {@link QueryCardinality} parameter. That's because
- * {@link PersistenceQuery} intrinsically carry the knowledge as to how many
- * rows they return.
- *
- * @throws UnsupportedFindException
- * if the criteria is not support by this persistor
- */
- public abstract ObjectAdapter findInstances(PersistenceQuery persistenceQuery);
-
- /**
- * Loads the object identified by the specified {@link TypedOid} from the
- * persisted set of objects.
- */
- public abstract ObjectAdapter loadObject(TypedOid oid);
-
-
- /**
- * Re-initialises the fields of an object. If the object is unresolved then
- * the object's missing data should be retrieved from the persistence
- * mechanism and be used to set up the value objects and associations.
- */
- public abstract void resolveImmediately(ObjectAdapter adapter);
-
- /**
- * Hint that specified field within the specified object is likely to be
- * needed soon. This allows the object's data to be loaded, ready for use.
- *
- * <p>
- * This method need not do anything, but offers the object store the
- * opportunity to load in objects before their use. Contrast this with
- * resolveImmediately, which requires an object to be loaded before
- * continuing.
- *
- * @see #resolveImmediately(ObjectAdapter)
- */
- public abstract void resolveField(ObjectAdapter objectAdapter, ObjectAssociation field);
-
-
-
- /////////////////////////////////////////////////////////////////
- // create, persist
- /////////////////////////////////////////////////////////////////
-
- /**
- * Create a root or standalone {@link ObjectAdapter adapter}.
- *
- * <p>
- * Creates a new instance of the specified type and returns it in an adapter
- * whose resolved state set to {@link ResolveState#TRANSIENT} (except if the
- * type is marked as {@link ObjectSpecification#isValueOrIsParented()
- * aggregated} in which case it will be set to {@link ResolveState#VALUE}).
- *
- * <p>
- * The returned object will be initialised (had the relevant callback
- * lifecycle methods invoked).
- *
- * <p>
- * <b><i> REVIEW: not sure about {@link ResolveState#VALUE} - see comments
- * in {@link #adapterFor(Object, Oid, OneToManyAssociation)}.</i></b>
- * <p>
- * TODO: this is the same as
- * {@link RuntimeContextFromSession#createTransientInstance(ObjectSpecification)};
- * could it be unified?
- *
- * <p>
- * While creating the object it will be initialised with default values and
- * its created lifecycle method (its logical constructor) will be invoked.
- * Contrast this with
- * {@link #recreateTransientInstance(Oid, ObjectSpecification)}.
- *
- * <p>
- * This method is ultimately delegated to by the
- * {@link DomainObjectContainer}.
- */
- public abstract ObjectAdapter createTransientInstance(ObjectSpecification objectSpec);
-
- /**
- * Creates a new instance of the specified type and returns an adapter with
- * an aggregated OID that show that this new object belongs to the specified
- * parent. The new object's resolved state is set to
- * {@link ResolveState#RESOLVED} as it state is part of it parent.
- *
- * <p>
- * While creating the object it will be initialised with default values and
- * its created lifecycle method (its logical constructor) will be invoked.
- * Contrast this with
- * {@link #recreateTransientInstance(Oid, ObjectSpecification)}.
- *
- * <p>
- * This method is ultimately delegated to by the
- * {@link DomainObjectContainer}.
- */
- public abstract ObjectAdapter createAggregatedInstance(ObjectSpecification objectSpec, ObjectAdapter parentAdapter);
-
- /**
- * Makes an {@link ObjectAdapter} persistent. The specified object should be
- * stored away via this object store's persistence mechanism, and have an
- * new and unique OID assigned to it. The object, should also be added to
- * the {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault} as the object is implicitly 'in use'.
- *
- * <p>
- * If the object has any associations then each of these, where they aren't
- * already persistent, should also be made persistent by recursively calling
- * this method.
- *
- * <p>
- * If the object to be persisted is a collection, then each element of that
- * collection, that is not already persistent, should be made persistent by
- * recursively calling this method.
- *
- * @see #remapAsPersistent(ObjectAdapter)
- */
- public abstract void makePersistent(ObjectAdapter adapter);
-
-
- /////////////////////////////////////////////////////////////////
- // change
- /////////////////////////////////////////////////////////////////
-
- /**
- * Mark the {@link ObjectAdapter} as changed, and therefore requiring
- * flushing to the persistence mechanism.
- */
- public abstract void objectChanged(ObjectAdapter adapter);
-
-
- /////////////////////////////////////////////////////////////////
- // destroy
- /////////////////////////////////////////////////////////////////
-
- /**
- * Removes the specified object from the system. The specified object's data
- * should be removed from the persistence mechanism.
- */
- public abstract void destroyObject(ObjectAdapter adapter);
-
-
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/RecreatedPojoRemapper.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/RecreatedPojoRemapper.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/RecreatedPojoRemapper.java
deleted file mode 100644
index ea89e21..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/RecreatedPojoRemapper.java
+++ /dev/null
@@ -1,52 +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.system.persistence;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ResolveState;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-
-public interface RecreatedPojoRemapper {
-
- /**
- * 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
- */
- ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo);
-
- void remapRecreatedPojo(ObjectAdapter adapter, Object recreatedPojo);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/EnlistedObjectDirtying.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/EnlistedObjectDirtying.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/EnlistedObjectDirtying.java
deleted file mode 100644
index 6efde67..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/EnlistedObjectDirtying.java
+++ /dev/null
@@ -1,49 +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.system.transaction;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.Dirtiable;
-
-/**
- * As called by the {@link IsisTransactionManager}.
- *
- * <p>
- * Dirtiable support.
- */
-public interface EnlistedObjectDirtying {
-
- /**
- * Mark as {@link #objectChanged(ObjectAdapter) changed } all
- * {@link Dirtiable} objects that have been
- * {@link Dirtiable#markDirty(ObjectAdapter) manually marked} as dirty.
- *
- * <p>
- * Called by the {@link IsisTransactionManager}.
- */
- void objectChangedAllDirty();
-
- /**
- * Set as {@link Dirtiable#clearDirty(ObjectAdapter) clean} any
- * {@link Dirtiable} objects.
- */
- void clearAllDirty();
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index 0098d29..aa0d2c7 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -44,7 +44,6 @@ import org.apache.isis.core.metamodel.adapter.oid.*;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
import org.apache.isis.core.runtime.persistence.PojoRefreshException;
import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
@@ -375,7 +374,7 @@ public class DataNucleusObjectStore implements ObjectStore {
}
final Object pojo = loadPojo(oid);
- return getPersistenceSession().mapRecreatedPojo(oid, pojo);
+ return getPersistenceSession().getAdapterManager().mapRecreatedPojo(oid, pojo);
}
@@ -497,32 +496,7 @@ public class DataNucleusObjectStore implements ObjectStore {
frameworkSynchronizer.postLoadProcessingFor((PersistenceCapable) domainObject, CalledFrom.OS_RESOLVE);
}
- /**
- * Walking the graph.
- */
- public void resolveField(final ObjectAdapter object, final ObjectAssociation association) {
- ensureOpened();
- ensureInTransaction();
-
- 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).
- }
-
-
// ///////////////////////////////////////////////////////////////////////
// getInstances, hasInstances
// ///////////////////////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
index 94e9c34..66b7f1c 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/FrameworkSynchronizer.java
@@ -37,6 +37,7 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.adapter.version.Version;
import org.apache.isis.core.metamodel.facets.object.callbacks.*;
import org.apache.isis.core.runtime.persistence.PersistorUtil;
+import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
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;
@@ -89,7 +90,7 @@ public class FrameworkSynchronizer {
final Version originalVersion = adapter.getVersion();
// sync the pojo held by the adapter with that just loaded
- getPersistenceSession().remapRecreatedPojo(adapter, pojo);
+ getPersistenceSession().getAdapterManager() .remapRecreatedPojo(adapter, pojo);
// since there was already an adapter, do concurrency check
// (but don't set abort cause if checking is suppressed through thread-local)
@@ -119,9 +120,9 @@ public class FrameworkSynchronizer {
// ie from ObjectStore#resolveImmediately()
adapter = getAdapterManager().getAdapterFor(originalOid);
if(adapter != null) {
- getPersistenceSession().remapRecreatedPojo(adapter, pojo);
+ getPersistenceSession().getAdapterManager() .remapRecreatedPojo(adapter, pojo);
} else {
- adapter = getPersistenceSession().mapRecreatedPojo(originalOid, pojo);
+ adapter = getPersistenceSession().getAdapterManager().mapRecreatedPojo(originalOid, pojo);
CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
}
}
@@ -201,7 +202,7 @@ public class FrameworkSynchronizer {
// persisting
final RootOid persistentOid = getOidGenerator().createPersistentOrViewModelOid(pojo, isisOid);
- getPersistenceSession().remapAsPersistent(adapter, persistentOid);
+ getPersistenceSession().getAdapterManager().remapAsPersistent(adapter, persistentOid);
CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
@@ -272,7 +273,7 @@ public class FrameworkSynchronizer {
return null;
}
final RootOid oid = getPersistenceSession().getOidGenerator().createPersistentOrViewModelOid(pojo, null);
- final ObjectAdapter adapter = getPersistenceSession().mapRecreatedPojo(oid, pojo);
+ final ObjectAdapter adapter = getPersistenceSession().getAdapterManager().mapRecreatedPojo(oid, pojo);
return adapter;
}
}, calledFrom);
@@ -431,7 +432,7 @@ public class FrameworkSynchronizer {
// Dependencies (from context)
// /////////////////////////////////////////////////////////
- protected AdapterManager getAdapterManager() {
+ protected AdapterManagerDefault getAdapterManager() {
return getPersistenceSession().getAdapterManager();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index 119ea19..d6d3eeb 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -19,22 +19,19 @@
package org.apache.isis.objectstore.jdo.datanucleus.persistence.queries;
import java.util.List;
-
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.listener.InstanceLifecycleEvent;
import javax.jdo.metadata.TypeMetadata;
import javax.jdo.spi.PersistenceCapable;
-
import com.google.common.collect.Lists;
-
import org.apache.isis.core.commons.ensure.Assert;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore;
import org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer;
import org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.CalledFrom;
@@ -98,7 +95,7 @@ public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQue
// Dependencies (from context)
// /////////////////////////////////////////////////////////////
- protected Persistor getPersistenceSession() {
+ protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
index aad312f..7a3086b 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/algorithm/PersistAlgorithmContractTest.java
@@ -34,6 +34,7 @@ import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Type;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -43,7 +44,7 @@ public abstract class PersistAlgorithmContractTest {
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
@Mock
- private ToPersistObjectSet mockAdder;
+ private PersistenceSession mockAdder;
@Mock
private ObjectSpecification objectSpec;
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
index f9645c8..3cf5d3a 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
@@ -167,7 +167,8 @@ public class PersistenceSessionTest {
}});
- transactionManager = new IsisTransactionManager(persistenceSession, mockObjectStore, servicesInjector) {
+ transactionManager = persistenceSession.getTransactionManager();
+ new IsisTransactionManager(persistenceSession, mockObjectStore, servicesInjector) {
@Override
public AuthenticationSession getAuthenticationSession() {
return mockAuthenticationSession;
http://git-wip-us.apache.org/repos/asf/isis/blob/5f8fca9b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
----------------------------------------------------------------------
diff --git a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
index 131c418..cd449c8 100644
--- a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
+++ b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/IsisSystemWithFixtures.java
@@ -46,7 +46,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;
@@ -514,7 +513,7 @@ public class IsisSystemWithFixtures implements org.junit.rules.TestRule {
public ObjectAdapter reload(RootOid oid) {
ensureSessionInProgress();
- final Persistor persistenceSession = getPersistenceSession();
+ final PersistenceSession persistenceSession = getPersistenceSession();
return persistenceSession.loadObject(oid);
}
@@ -527,7 +526,7 @@ public class IsisSystemWithFixtures implements org.junit.rules.TestRule {
ensureSessionInProgress();
ensureObjectIsNotPersistent(pojo);
final ObjectAdapter adapter = adapterFor(pojo);
- getPersistenceSession().remapAsPersistent(adapter, persistentOid);
+ getPersistenceSession().getAdapterManager().remapAsPersistent(adapter, persistentOid);
return adapter;
}
@@ -658,7 +657,7 @@ public class IsisSystemWithFixtures implements org.junit.rules.TestRule {
return getPersistenceSession().getTransactionManager();
}
- public Persistor getPersistor() {
+ public PersistenceSession getPersistor() {
return getPersistenceSession();
}
[12/29] isis git commit: ISIS-537 Disable the resizing of textareas
in modal windows
Posted by da...@apache.org.
ISIS-537 Disable the resizing of textareas in modal windows
reduce the right padding for .label-top and .label-none form components in modal windows
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e858ac5a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e858ac5a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e858ac5a
Branch: refs/heads/ISIS-939
Commit: e858ac5a385aaa20c2be6af844e71dd5a56ada75
Parents: 9fbfcaa
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 23:39:35 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 23:39:35 2014 +0200
----------------------------------------------------------------------
.../isis/viewer/wicket/ui/pages/bootstrap-overrides.css | 9 +++++++++
.../todoapp/dom/src/main/java/dom/todo/ToDoItem.java | 4 +++-
2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e858ac5a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index e66d3d7..9c287ff 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -116,6 +116,11 @@ div.label-none .scalarValueWrapper {
padding-right: 20px;
}
+.modal-body div.label-top .scalarValueWrapper,
+.modal-body div.label-none .scalarValueWrapper {
+ padding-right: 14px;
+}
+
div.label-left .scalarValueWrapper .form-control {
width: 100%;
}
@@ -149,3 +154,7 @@ div.label-left .choicesPlaceholder {
margin-left: -5px;
margin-right: -25px;
}
+
+.modal-body textarea {
+ resize: none;
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/e858ac5a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
index a5b4a02..dcbd897 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
@@ -134,7 +134,8 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
@javax.jdo.annotations.Column(allowsNull="false", length=100)
@PropertyInteraction()
- @RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*")
+ @RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*")
+ @LabelAt(LabelAt.Position.TOP)
public String getDescription() {
return description;
}
@@ -254,6 +255,7 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
@javax.jdo.annotations.Column(allowsNull="true")
@Disabled(reason="Use action to update both category and subcategory")
+ @LabelAt(LabelAt.Position.NONE)
public Subcategory getSubcategory() {
return subcategory;
}
[16/29] isis git commit: ISIS-537 Remove a div.clearfix to save some
vertical space and for better alignment of the table view selector and the
entity action links
Posted by da...@apache.org.
ISIS-537 Remove a div.clearfix to save some vertical space and for better alignment of the table view selector and the entity action links
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/33b3125f
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/33b3125f
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/33b3125f
Branch: refs/heads/ISIS-939
Commit: 33b3125f1b2187faedf11c145cfc55709686af9a
Parents: 21d008a
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Nov 6 11:42:49 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Nov 6 11:42:49 2014 +0200
----------------------------------------------------------------------
.../viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.html | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/33b3125f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.html
index d573d33..14418d1 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.html
@@ -40,7 +40,6 @@
</div>
<span wicket:id="additionalLinks"></span>
- <div class="clearfix"></div>
<div class="views">
<wicket:child/>
[10/29] isis git commit: ISIS-537 Add 4px padding at the bottom of
the label when .label-top
Posted by da...@apache.org.
ISIS-537 Add 4px padding at the bottom of the label when .label-top
https://trello.com/c/g3Qj4xcE/106-if-labelat-top-add-a-bit-more-vertical-space-between-label-and-field
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/692adff3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/692adff3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/692adff3
Branch: refs/heads/ISIS-939
Commit: 692adff3d79f0fbc78cf374cd817ce99a6b8cd3d
Parents: c5697ee
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Nov 5 22:55:51 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Nov 5 22:55:51 2014 +0200
----------------------------------------------------------------------
.../org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/692adff3/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 2cde692..081e522 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -96,6 +96,7 @@ div.label-left label.control-label {
div.label-top label.control-label {
padding-left: 10px;
+ padding-bottom: 4px;
}
div.label-none label.control-label {
[26/29] isis git commit: ISIS-939: simplifying PersistenceSession
Posted by da...@apache.org.
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());
+ }
+
+
+}