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 e36b9c58e0 ISIS-2995: don't run into situation where we need to
generate UUIDs for unidentifiable objects
e36b9c58e0 is described below
commit e36b9c58e0a3949a2656e5c7ebf4f9fa536aadd1
Author: Andi Huber <[email protected]>
AuthorDate: Fri Apr 8 13:52:45 2022 +0200
ISIS-2995: don't run into situation where we need to generate UUIDs for
unidentifiable objects
---
.../isis/core/metamodel/spec/ManagedObjects.java | 26 ++++++++++++----------
.../webapp/wicket/jpa/DemoAppWicketJpa.java | 2 ++
.../domainobjects/DomainObjectLinkTo.java | 2 +-
3 files changed, 17 insertions(+), 13 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index 0780e9a443..a919b7609c 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -198,6 +198,7 @@ public final class ManagedObjects {
.orElseThrow(()->_Exceptions.illegalArgument("cannot stringify
%s", managedObject));
}
+
/**
*
* @param managedObject
@@ -219,6 +220,16 @@ public final class ManagedObjects {
.orElseThrow(()->_Exceptions.illegalArgument("cannot stringify
%s", managedObject));
}
+ public static String stringifyElseUnidentified(
+ final @Nullable ManagedObject managedObject,
+ final @NonNull String separator) {
+ return stringify(managedObject, separator)
+ .orElseGet(()->isSpecified(managedObject)
+ ?
managedObject.getSpecification().getLogicalTypeName() + separator +"?"
+ : "?" + separator + "?");
+ }
+
+
// -- PACKING
public static ManagedObject pack(
@@ -585,25 +596,15 @@ public final class ManagedObjects {
Optional<Bookmark> bookmark(final @Nullable ManagedObject adapter) {
if(ManagedObjects.isNullOrUnspecifiedOrEmpty(adapter)
- || adapter.getSpecification().isValue()) {
+ || adapter.getSpecification().isValue()
+ || !ManagedObjects.isIdentifiable(adapter)) {
return Optional.empty();
}
- if(!ManagedObjects.isIdentifiable(adapter)) {
- log.warn("about to create a random UUID bookmark for {}; this
is probably an invalid code-path taken (TODO)",
- adapter.getSpecification());
- }
-
return ManagedObjects.spec(adapter)
.map(ObjectSpecification::getMetaModelContext)
.map(MetaModelContext::getObjectManager)
.map(objectManager->objectManager.bookmarkObject(adapter));
-
- //TODO[2686] strictly forbid dummy UUID bookmark creation
-// return ManagedObjects.isIdentifiable(adapter)
-// ? objectManager(adapter)
-//
.map(objectManager->objectManager.bookmarkObject(adapter))
-// : Optional.empty();
}
}
@@ -1160,4 +1161,5 @@ public final class ManagedObjects {
}
}
+
}
diff --git
a/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
b/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
index f02d81fe45..c123eef6f4 100644
---
a/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
+++
b/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Import;
import org.apache.isis.commons.internal.os._OsUtil;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.extensions.viewer.wicket.pdfjs.ui.IsisModuleExtPdfjsUi;
+import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
import
org.apache.isis.valuetypes.asciidoc.metamodel.IsisModuleValAsciidocMetaModel;
import
org.apache.isis.valuetypes.asciidoc.persistence.jpa.IsisModuleValAsciidocPersistenceJpa;
import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
@@ -45,6 +46,7 @@ import demoapp.webapp.wicket.common.ui.DemoAppWicketCommon;
@Import({
// App-Manifest (Configuration)
DemoAppManifestJpa.class,
+ IsisModuleSecurityBypass.class, // <-- bypass authentication
// Metamodel
IsisModuleValAsciidocMetaModel.class,
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
index 6dff64daff..82da9a3566 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectLinkTo.java
@@ -64,7 +64,7 @@ public class DomainObjectLinkTo implements
ObjectAdapterLinkTo {
* hook method
*/
protected StringBuilder linkRef(final StringBuilder buf) {
- String objectRef = ManagedObjects.stringifyElseFail(objectAdapter,
"/");
+ final String objectRef =
ManagedObjects.stringifyElseUnidentified(objectAdapter, "/");
return buf.append("objects/").append(objectRef);
}