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 2016/07/07 20:39:39 UTC
isis git commit: ISIS-1464: allow lookup of bookmarks for view models
Repository: isis
Updated Branches:
refs/heads/master cf7b23d20 -> 2877b1819
ISIS-1464: allow lookup of bookmarks for view models
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/2877b181
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/2877b181
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/2877b181
Branch: refs/heads/master
Commit: 2877b1819770fbc7023eccec95e42dc92d870a07
Parents: cf7b23d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 7 21:37:25 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 7 21:37:25 2016 +0100
----------------------------------------------------------------------
.../services/bookmark/BookmarkService2.java | 13 ++++++++++
.../applib/service/DomainChangeJdoAbstract.java | 26 ++++++++++++++------
.../objectstore/jdo/applib/service/Util.java | 15 ++++++++---
.../system/persistence/PersistenceSession.java | 13 +++-------
4 files changed, 48 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/2877b181/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService2.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService2.java b/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService2.java
index 6ed7957..5ae2297 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService2.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService2.java
@@ -32,7 +32,20 @@ import org.apache.isis.applib.annotation.Programmatic;
public interface BookmarkService2 extends BookmarkService {
enum FieldResetPolicy {
+ /**
+ * Will cause all fields of an object to be re-initialized.
+ *
+ * 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.
+ *
+ * If the object is a view model, then is ignored; the behaviour is as for {@link #DONT_RESET}
+ * @deprecated - retained for previous behaviour, but in most/all cases,
+ */
+ @Deprecated
RESET,
+ /**
+ * Required in order to recreate view models.
+ */
DONT_RESET
}
http://git-wip-us.apache.org/repos/asf/isis/blob/2877b181/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
index 1bd674a..0307bfa 100644
--- a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
@@ -23,7 +23,6 @@ import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainObject;
@@ -37,7 +36,8 @@ import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.bookmark.BookmarkService2;
+import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.applib.services.metamodel.MetaModelService2;
import org.apache.isis.applib.services.publish.PublisherService;
import org.apache.isis.applib.services.publish.PublishingService;
@@ -168,12 +168,14 @@ public abstract class DomainChangeJdoAbstract {
@Programmatic
public Bookmark getTarget() {
- return Util.bookmarkFor(getTargetStr());
+ final String str = getTargetStr();
+ return str != null? new Bookmark(str): null;
}
@Programmatic
public void setTarget(Bookmark target) {
- setTargetStr(Util.asString(target));
+ final String targetStr = target != null ? target.toString() : null;
+ setTargetStr(targetStr);
}
// //////////////////////////////////////
@@ -244,7 +246,17 @@ public abstract class DomainChangeJdoAbstract {
)
@MemberOrder(name="TargetStr", sequence="1")
public Object openTargetObject() {
- return Util.lookupBookmark(getTarget(), bookmarkService, container);
+ try {
+ return bookmarkService != null
+ ? bookmarkService.lookup(getTarget(), BookmarkService2.FieldResetPolicy.DONT_RESET)
+ : null;
+ } catch(RuntimeException ex) {
+ if(ex.getClass().getName().contains("ObjectNotFoundException")) {
+ messageService.warnUser("Object not found - has it since been deleted?");
+ return null;
+ }
+ throw ex;
+ }
}
public boolean hideOpenTargetObject() {
@@ -363,10 +375,10 @@ public abstract class DomainChangeJdoAbstract {
// //////////////////////////////////////
@javax.inject.Inject
- protected BookmarkService bookmarkService;
+ protected BookmarkService2 bookmarkService;
@javax.inject.Inject
- protected DomainObjectContainer container;
+ protected MessageService messageService;
@javax.inject.Inject
protected MetaModelService2 metaModelService;
http://git-wip-us.apache.org/repos/asf/isis/blob/2877b181/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/Util.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/Util.java b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/Util.java
index cd6f4c9..d5083ce 100644
--- a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/Util.java
+++ b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/Util.java
@@ -21,23 +21,30 @@ import java.math.RoundingMode;
import java.sql.Timestamp;
import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.services.HasTransactionId;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.command.Command;
+/**
+ * This class is deprecated with no replacement.
+ *
+ * @deprecated - with no replacement
+ */
+@Deprecated
public class Util {
private Util() {}
+ @Deprecated
public static Bookmark bookmarkFor(final String str) {
return str != null? new Bookmark(str): null;
}
+ @Deprecated
public static String asString(Bookmark bookmark) {
return bookmark != null? bookmark.toString(): null;
}
+ @Deprecated
public static Object lookupBookmark(Bookmark bookmark, final BookmarkService bookmarkService, DomainObjectContainer container) {
try {
return bookmarkService != null
@@ -52,11 +59,13 @@ public class Util {
}
}
-
+
+ @Deprecated
public static String abbreviated(final String str, final int maxLength) {
return str != null? (str.length() < maxLength ? str : str.substring(0, maxLength - 3) + "..."): null;
}
+ @Deprecated
public static BigDecimal durationBetween(Timestamp startedAt, Timestamp completedAt) {
if(completedAt == null) {
return null;
http://git-wip-us.apache.org/repos/asf/isis/blob/2877b181/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 1f21a5c..a4e6981 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
@@ -923,14 +923,9 @@ public class PersistenceSession implements
* when no object corresponding to the oid can be found
*/
public ObjectAdapter loadObjectInTransaction(final RootOid oid) {
-
- // REVIEW:
- // this method does not account for the oid possibly being a view model
- // alternatively, can call #adapterFor(oid); this code
- // delegates to the PojoRecreator which *does* take view models into account
- //
- // it's possible, therefore, that existing callers to this method (the Scimpi viewer)
- // could be refactored to use #adapterFor(...)
+
+ // can be either a view model or a persistent entity.
+
ensureThatArg(oid, is(notNullValue()));
final ObjectAdapter adapter = getAdapterFor(oid);
@@ -2327,7 +2322,7 @@ public class PersistenceSession implements
if(adapter == null) {
return null;
}
- if(fieldResetPolicy == BookmarkService2.FieldResetPolicy.RESET) {
+ if(fieldResetPolicy == BookmarkService2.FieldResetPolicy.RESET && !adapter.getSpecification().isViewModel()) {
refreshRootInTransaction(adapter);
} else {
loadObjectInTransaction(oid);