You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/04/16 11:46:20 UTC
[isis] branch master updated: ISIS-2569: prepare unification of
Bookmark and Oid
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new e098dc2 ISIS-2569: prepare unification of Bookmark and Oid
e098dc2 is described below
commit e098dc2dad965c49c8435b15b4c10dbdaf6ac385
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Apr 16 13:46:05 2021 +0200
ISIS-2569: prepare unification of Bookmark and Oid
---
.../applib/jaxb/PersistentEntitiesAdapter.java | 2 +-
.../isis/applib/jaxb/PersistentEntityAdapter.java | 2 +-
.../isis/applib/services/bookmark/Bookmark.java | 148 ++++++++++++++-------
.../apache/isis/applib/services/bookmark/Oid.java | 54 ++++++++
.../isis/applib/services/command/Command.java | 2 +-
...eractionDtoUtilsTest_deriveLogicalMemberId.java | 3 +-
.../apache/isis/applib/util/schema/Roundtrip.java | 4 +-
.../isis/core/metamodel/adapter/oid/Oid.java | 2 +-
.../bookmarks/BookmarkServiceDefault.java | 4 +-
.../command/CommandExecutorServiceDefault.java | 2 +-
.../wrapper/WrapperFactoryDefault.java | 2 +-
.../runtimeservices/urlencoding/MementosTest.java | 4 +-
.../extensions/commandlog/impl/jdo/CommandJdo.java | 2 +-
.../commandlog/impl/jdo/CommandJdoRepository.java | 2 +-
.../pdfjs/applib/spi/PdfJsViewerAdvisor.java | 2 +-
.../schema/v2/IsisOidDtoConverter.java | 2 +-
.../services/HintStoreUsingWicketSession.java | 11 +-
17 files changed, 178 insertions(+), 70 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
index 2e5d72a..571eb21 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
@@ -45,7 +45,7 @@ public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>>
List<Object> domainObjects = new ArrayList<>();
for (val oidDto : oidsDto.getOid()) {
- val bookmark = Bookmark.fromOidDto(oidDto);
+ val bookmark = Bookmark.forOidDto(oidDto);
bookmarkService.lookup(bookmark)
.ifPresent(domainObjects::add);
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
index f3ddf55..6745a11 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
@@ -35,7 +35,7 @@ public class PersistentEntityAdapter extends XmlAdapter<OidDto, Object> {
@Override
public Object unmarshal(final OidDto oidDto) throws Exception {
- val bookmark = Bookmark.fromOidDto(oidDto);
+ val bookmark = Bookmark.forOidDto(oidDto);
return bookmarkService.lookup(bookmark).orElse(null);
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
index 8af8f16..5e881b6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
@@ -18,51 +18,84 @@
*/
package org.apache.isis.applib.services.bookmark;
-import java.io.Serializable;
+import java.util.Objects;
import java.util.Optional;
import java.util.StringTokenizer;
import javax.annotation.Nullable;
-import org.apache.isis.applib.annotation.Value;
+import org.apache.isis.applib.id.LogicalType;
+import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.OidDto;
import lombok.AccessLevel;
+import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.val;
/**
- * String representation of any persistable or re-createable object managed by the framework.
- *
- * <p>
- * Analogous to the <tt>RootOid</tt>.
+ * String representation of any persistable or re-creatable object managed by the framework.
*
* @since 1.x revised for 2.0 {@index}
*/
-@Value
-@lombok.Value @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-public class Bookmark implements Serializable {
+@org.apache.isis.applib.annotation.Value
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public final class Bookmark implements Oid {
private static final long serialVersionUID = 3L;
- protected static final String SEPARATOR = ":";
-
- /**
- * Corresponds directly to the object's logical-type-name (aka. object-type).
- * @see RootOid
- */
- @NonNull private final String logicalTypeName;
- @NonNull private final String identifier;
-
- @Nullable private final String hintId;
-
- public static Bookmark of(String logicalTypeName, String identifier) {
- return new Bookmark(logicalTypeName, identifier, /*hintId*/ null);
+ @Getter(onMethod_ = {@Override}) private final String logicalTypeName;
+ @Getter(onMethod_ = {@Override}) private final String identifier;
+ @Getter private final @Nullable String hintId;
+ private final int hashCode;
+
+ // -- FACTORIES
+
+ public static Bookmark forLogicalTypeNameAndIdentifier(
+ final @NonNull String logicalTypeName,
+ final @NonNull String identifier) {
+ return new Bookmark(
+ logicalTypeName,
+ identifier,
+ /*hintId*/null);
+ }
+
+ public static Bookmark forLogicalTypeAndIdentifier(
+ final @NonNull LogicalType logicalType,
+ final @NonNull String identifier) {
+ return Bookmark.forLogicalTypeNameAndIdentifier(
+ logicalType.getLogicalTypeName(),
+ identifier);
+ }
+
+ public static Bookmark forOidDto(final @NonNull OidDto oidDto) {
+ return Bookmark.forLogicalTypeNameAndIdentifier(
+ oidDto.getType(),
+ oidDto.getId());
}
+ public Bookmark withHintId(final @Nullable String hintId) {
+ return new Bookmark(this.getLogicalTypeName(), this.getIdentifier(), hintId);
+ }
+
+ // -- CONSTRUCTOR
+
+ private Bookmark(
+ final String logicalTypeName,
+ final String identifier,
+ final String hintId) {
+
+ this.logicalTypeName = logicalTypeName;
+ this.identifier = identifier;
+ this.hintId = hintId;
+ this.hashCode = Objects.hash(logicalTypeName, identifier);
+ }
+
+ // -- PARSE
+
/**
- * Round-trip with {@link #toString()} representation.
+ * Round-trip with {@link #stringify()} representation.
*/
public static Optional<Bookmark> parse(@Nullable String str) {
@@ -72,15 +105,19 @@ public class Bookmark implements Serializable {
val tokenizer = new StringTokenizer(str, SEPARATOR);
int tokenCount = tokenizer.countTokens();
if(tokenCount==2) {
- return Optional.of(Bookmark.of(tokenizer.nextToken(), tokenizer.nextToken()));
+ return Optional.of(Bookmark.forLogicalTypeNameAndIdentifier(
+ tokenizer.nextToken(),
+ tokenizer.nextToken()));
}
if(tokenCount>2) {
- return Optional.of(Bookmark.of(tokenizer.nextToken(), tokenizer.nextToken("").substring(1)));
+ return Optional.of(Bookmark.forLogicalTypeNameAndIdentifier(
+ tokenizer.nextToken(),
+ tokenizer.nextToken("").substring(1)));
}
return Optional.empty();
-
- // ...
}
+
+ // -- TO DTO
public OidDto toOidDto() {
val oidDto = new OidDto();
@@ -89,37 +126,58 @@ public class Bookmark implements Serializable {
return oidDto;
}
- public static Bookmark fromOidDto(final @NonNull OidDto oidDto) {
- return Bookmark.of(oidDto.getType(), oidDto.getId());
+ // -- STRINGIFY
+
+ @Override
+ public String stringify() {
+ return stringify(identifier);
}
- /**
- * The canonical form of the {@link Bookmark}, that is
- * {@link #getLogicalTypeName() logical-type-name}{@value #SEPARATOR}{@link #getIdentifier() identifier}.
- * <p>
- * This is parseable by the {@link #parse(String)}.
- */
+ // -- OBJECT CONTRACT // not considering any hintId
+
@Override
- public String toString() {
- return toStringUsingIdentifier(identifier);
+ public boolean equals(final Object other) {
+ if (other == null) {
+ return false;
+ }
+ if (other == this) {
+ return true;
+ }
+ if (getClass() != other.getClass()) {
+ return false;
+ }
+ return equals((Bookmark) other);
}
- public Bookmark withHintId(@NonNull String hintId) {
- return new Bookmark(this.getLogicalTypeName(), this.getIdentifier(), hintId);
+ public boolean equals(final Bookmark other) {
+ return Objects.equals(logicalTypeName, other.getLogicalTypeName())
+ && Objects.equals(identifier, other.getIdentifier());
}
- public String toStringUsingIdentifier(String id) {
- return logicalTypeName + SEPARATOR + id;
+ @Override
+ public int hashCode() {
+ return hashCode;
}
- // -- ALIAS
+ @Override
+ public String toString() {
+ return stringify();
+ }
/**
- * Alias for {@link #getLogicalTypeName()}.
+ * Analogous to {@link #stringify()}, but replaces the {@code identifier} string with
+ * the {@code hintId} if present and not empty.
*/
- public String getObjectType() {
- return getLogicalTypeName();
+ public String stringifyHonoringHintIfAny() {
+ return _Strings.isNotEmpty(hintId)
+ ? stringify(hintId)
+ : stringify(identifier);
}
+
+ // -- HELPER
+ private String stringify(String id) {
+ return logicalTypeName + SEPARATOR + id;
+ }
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Oid.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Oid.java
new file mode 100644
index 0000000..96d619f
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Oid.java
@@ -0,0 +1,54 @@
+/*
+ * 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.applib.services.bookmark;
+
+import java.io.Serializable;
+
+/**
+ * @since 1.x revised for 2.0 {@index}
+ */
+public interface Oid extends Serializable {
+
+ static final String SEPARATOR = ":";
+
+ /**
+ * Logical-type-name of the domain object this Oid is representing.
+ * (aka. object-type)
+ */
+ String getLogicalTypeName();
+
+ /**
+ * Stringified version of the ID of the domain object instance this Oid is representing.
+ */
+ String getIdentifier();
+
+ /**
+ * Alias for {@link #getLogicalTypeName()}.
+ */
+ default String getObjectType() {
+ return getLogicalTypeName();
+ }
+
+ /**
+ * The canonical form of the {@link Bookmark}, that is
+ * {@link #getLogicalTypeName() logical-type-name}{@value #SEPARATOR}{@link #getIdentifier() identifier}.
+ */
+ String stringify();
+
+}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java b/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
index aa6b048..31c44ce 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
@@ -144,7 +144,7 @@ public class Command implements HasInteractionId, HasUsername, HasCommandDto {
@ToString.Include(name = "target")
public Bookmark getTarget() {
return commandDto != null
- ? Bookmark.fromOidDto(commandDto.getTargets().getOid().get(0))
+ ? Bookmark.forOidDto(commandDto.getTargets().getOid().get(0))
: null;
}
diff --git a/api/applib/src/test/java/org/apache/isis/applib/util/schema/InteractionDtoUtilsTest_deriveLogicalMemberId.java b/api/applib/src/test/java/org/apache/isis/applib/util/schema/InteractionDtoUtilsTest_deriveLogicalMemberId.java
index 3dd0771..195a144 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/util/schema/InteractionDtoUtilsTest_deriveLogicalMemberId.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/util/schema/InteractionDtoUtilsTest_deriveLogicalMemberId.java
@@ -28,7 +28,8 @@ public class InteractionDtoUtilsTest_deriveLogicalMemberId {
@Test
public void happy_case() throws Exception {
- String s = InteractionDtoUtils.deriveLogicalMemberId(Bookmark.of("customer.Order", "1234"),
+ String s = InteractionDtoUtils.deriveLogicalMemberId(
+ Bookmark.forLogicalTypeNameAndIdentifier("customer.Order", "1234"),
"com.mycompany.customer.Order#placeOrder");
assertThat(s, is(equalTo("customer.Order#placeOrder")));
}
diff --git a/api/applib/src/test/java/org/apache/isis/applib/util/schema/Roundtrip.java b/api/applib/src/test/java/org/apache/isis/applib/util/schema/Roundtrip.java
index e66e1c3..a48f920 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/util/schema/Roundtrip.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/util/schema/Roundtrip.java
@@ -150,7 +150,7 @@ public class Roundtrip {
private static class SampleValues {
- final Bookmark bookmark = Bookmark.of("ORD", "12345");
+ final Bookmark bookmark = Bookmark.forLogicalTypeNameAndIdentifier("ORD", "12345");
final OidDto reference = new OidDto();
{
reference.setId("12345");
@@ -211,7 +211,7 @@ public class Roundtrip {
final InteractionDto interactionDto = newInteractionDtoWithActionInvocation(
UUID.randomUUID().toString(),
1,
- Bookmark.of("CUS", "12345"), "John Customer", "com.mycompany.Customer#placeOrder", Arrays.<ParamDto>asList(),
+ Bookmark.forLogicalTypeNameAndIdentifier("CUS", "12345"), "John Customer", "com.mycompany.Customer#placeOrder", Arrays.<ParamDto>asList(),
"freddyUser"
);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
index b4f9cb7..07d71d1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
@@ -120,7 +120,7 @@ public interface Oid extends Serializable {
// -- CONVERSION
public default Bookmark asBookmark() {
- return Bookmark.of(getLogicalTypeName(), getIdentifier());
+ return Bookmark.forLogicalTypeNameAndIdentifier(getLogicalTypeName(), getIdentifier());
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
index d1cf544..d156185 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
@@ -130,8 +130,8 @@ public class BookmarkServiceDefault implements BookmarkService, SerializingAdapt
return Optional.empty();
}
return specificationLoader.specForType(cls)
- .map(ObjectSpecification::getLogicalTypeName)
- .map(logicalTypeName->Bookmark.of(logicalTypeName, identifier));
+ .map(ObjectSpecification::getLogicalType)
+ .map(logicalType->Bookmark.forLogicalTypeAndIdentifier(logicalType, identifier));
}
// -- SERIALIZING ADAPTER IMPLEMENTATION
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
index 8c81c65..91a79e2 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
@@ -233,7 +233,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
for (OidDto targetOidDto : targetOidDtos) {
- final Bookmark bookmark = Bookmark.fromOidDto(targetOidDto);
+ final Bookmark bookmark = Bookmark.forOidDto(targetOidDto);
final Object targetObject = bookmarkService.lookup(bookmark).orElse(null);
val targetAdapter = adapterFor(targetObject);
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
index 55a8ef0..4b063a8 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
@@ -386,7 +386,7 @@ public class WrapperFactoryDefault implements WrapperFactory {
val oidDto = commandDto.getTargets().getOid().get(0);
asyncControl.setMethod(method);
- asyncControl.setBookmark(Bookmark.fromOidDto(oidDto));
+ asyncControl.setBookmark(Bookmark.forOidDto(oidDto));
val executorService = asyncControl.getExecutorService();
val future = executorService.submit(
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/urlencoding/MementosTest.java b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/urlencoding/MementosTest.java
index 46f3c51..56f723a 100644
--- a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/urlencoding/MementosTest.java
+++ b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/urlencoding/MementosTest.java
@@ -98,7 +98,7 @@ class MementosTest {
memento.put("someLocalDate", LocalDate.of(2013,9,3));
memento.put("someJavaUtilDate", new Date(300_000_000));
- memento.put("someBookmark", Bookmark.of("CUS", "12345"));
+ memento.put("someBookmark", Bookmark.forLogicalTypeNameAndIdentifier("CUS", "12345"));
memento.put("someNullValue", null);
memento.put("someEnum", DOW.Wed);
@@ -121,7 +121,7 @@ class MementosTest {
assertThat(memento2.get("someBigDecimal", BigDecimal.class), is(new BigDecimal("123456789012345678901234567890.123456789")));
assertThat(memento2.get("someLocalDate", LocalDate.class), is(LocalDate.of(2013,9,3)));
assertThat(memento2.get("someJavaUtilDate", Date.class), is(new Date(300_000_000)));
- assertThat(memento2.get("someBookmark", Bookmark.class), is(Bookmark.of("CUS", "12345")));
+ assertThat(memento2.get("someBookmark", Bookmark.class), is(Bookmark.forLogicalTypeNameAndIdentifier("CUS", "12345")));
// a nullValue can be grabbed as any type, will always succeed
assertThat(memento2.get("someNullValue", Integer.class), is(nullValue()));
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.java
index 9d4d23d..af99de4 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.java
@@ -308,7 +308,7 @@ public class CommandJdo
setTimestamp(JavaSqlXMLGregorianCalendarMarshalling.toTimestamp(commandDto.getTimestamp()));
setCommandDto(commandDto);
- setTarget(Bookmark.fromOidDto(commandDto.getTargets().getOid().get(targetIndex)));
+ setTarget(Bookmark.forOidDto(commandDto.getTargets().getOid().get(targetIndex)));
setLogicalMemberIdentifier(commandDto.getMember().getLogicalMemberIdentifier());
// the hierarchy of commands calling other commands is only available on the primary system, and is
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdoRepository.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdoRepository.java
index 3e331b3..b3e906e 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdoRepository.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdoRepository.java
@@ -340,7 +340,7 @@ public class CommandJdoRepository {
commandJdo.setReplayState(ReplayState.PENDING);
final OidDto firstTarget = dto.getTargets().getOid().get(0);
- commandJdo.setTarget(Bookmark.fromOidDto(firstTarget));
+ commandJdo.setTarget(Bookmark.forOidDto(firstTarget));
commandJdo.setCommandDto(dto);
commandJdo.setLogicalMemberIdentifier(dto.getMember().getLogicalMemberIdentifier());
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
index 67765e3..103ff3f 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
@@ -84,7 +84,7 @@ public interface PdfJsViewerAdvisor {
@Programmatic
public Bookmark asBookmark() {
- return Bookmark.of(typeKey.objectType, identifier);
+ return Bookmark.forLogicalTypeNameAndIdentifier(typeKey.objectType, identifier);
}
@Override
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java
index 6a33529..16131ba 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java
@@ -33,7 +33,7 @@ public class IsisOidDtoConverter implements TypeConverter<OidDto, String>{
@Override
public String toDatastoreType(final OidDto memberValue) {
return memberValue != null
- ? Bookmark.fromOidDto(memberValue).toString()
+ ? Bookmark.forOidDto(memberValue).toString()
: null;
}
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
index 743273b..52e51d0 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.viewer.services;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import javax.inject.Named;
@@ -33,9 +32,9 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.hint.HintStore;
+import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.collections._Maps;
-import lombok.val;
import lombok.extern.log4j.Log4j2;
@Service
@@ -95,7 +94,7 @@ public class HintStoreUsingWicketSession implements HintStore {
protected Map<String, String> hintsFor(final Bookmark bookmark) {
final String sessionAttribute = sessionAttributeFor(bookmark);
LinkedHashMap<String, String> hints =
- (LinkedHashMap<String, String>) Session.get().getAttribute(sessionAttribute);
+ _Casts.uncheckedCast(Session.get().getAttribute(sessionAttribute));
if(hints == null) {
hints = _Maps.newLinkedHashMap();
Session.get().setAttribute(sessionAttribute, hints);
@@ -104,11 +103,7 @@ public class HintStoreUsingWicketSession implements HintStore {
}
protected String sessionAttributeFor(final Bookmark bookmark) {
-
- val id = Optional.ofNullable(bookmark.getHintId())
- .orElse(bookmark.getIdentifier());
-
- return "hint-" + bookmark.toStringUsingIdentifier(id);
+ return "hint-" + bookmark.stringifyHonoringHintIfAny();
}
}