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 13:50:45 UTC
[isis] branch master updated: ISIS-2569: prepare unification of
Bookmark and Oid (3)
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 7f8a35f ISIS-2569: prepare unification of Bookmark and Oid (3)
7f8a35f is described below
commit 7f8a35f31b0b6c9e7a2726c3ae265b5d48208497
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Apr 16 15:50:16 2021 +0200
ISIS-2569: prepare unification of Bookmark and Oid (3)
---
.../isis/core/metamodel/adapter/oid/Oid.java | 14 -------------
.../component/FullCalendarWithEventHandling.java | 11 ++++++----
.../prop/notpersistent/JdoNotPersistentFacet.java | 4 ++--
.../facets/prop/primarykey/JdoPrimaryKeyFacet.java | 4 ++--
.../restfulobjects/rendering/IResourceContext.java | 8 +++-----
.../viewer/resources/JsonParserHelper.java | 4 ++--
.../viewer/resources/ResourceAbstract.java | 14 ++++++-------
.../widgets/breadcrumbs/BreadcrumbPanel.java | 12 ++++++++---
.../integration/ConverterForObjectAdapter.java | 24 +++++++++-------------
9 files changed, 41 insertions(+), 54 deletions(-)
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 c779ce4..8e528a9 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
@@ -52,20 +52,6 @@ public interface Oid extends Serializable {
identifier);
}
- public static Oid forDto(final OidDto oidDto) {
- return _SimpleOid.of(
- oidDto.getType(),
- oidDto.getId());
- }
-
- public static Oid forLogicalTypeNameAndIdentifier(
- final String logicalTypeName,
- final String identifier) {
- return _SimpleOid.of(
- logicalTypeName,
- identifier);
- }
-
// -- PARTS THAT MAKE UP THE OID
/**
diff --git a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java
index 25b2a97..a0efc0b 100644
--- a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java
+++ b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java
@@ -20,7 +20,7 @@ package org.apache.isis.extensions.fullcalendar.ui.component;
import org.apache.wicket.RestartResponseException;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
@@ -61,7 +61,10 @@ final class FullCalendarWithEventHandling extends FullCalendar {
final CalendarResponse response) {
final String oidStr = (String) event.getEvent().getPayload();
- final Oid oid = Oid.parse(oidStr);
+ final Bookmark bookmark = Bookmark.parse(oidStr).orElse(null);
+ if(bookmark==null) {
+ return;
+ }
val commonContext = getCommonContext();
@@ -70,8 +73,8 @@ final class FullCalendarWithEventHandling extends FullCalendar {
final ObjectManager objectManager = commonContext.getObjectManager();
final IsisAppCommonContext webAppCommonContext = IsisAppCommonContext.of(metaModelContext);
- val spec = specificationLoader.specForLogicalTypeName(oid.getLogicalTypeName()).orElse(null);
- val objectId = oid.getIdentifier();
+ val spec = specificationLoader.specForLogicalTypeName(bookmark.getLogicalTypeName()).orElse(null);
+ val objectId = bookmark.getIdentifier();
val managedObject = objectManager.loadObject(ObjectLoader.Request.of(spec, objectId));
final EntityModel entityModel = EntityModel.ofAdapter(webAppCommonContext, managedObject);
diff --git a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
index e1891eb..50ec07d 100644
--- a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
+++ b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
@@ -20,7 +20,7 @@ package org.apache.isis.persistence.jdo.provider.metamodel.facets.prop.notpersis
import javax.jdo.annotations.NotPersistent;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -28,7 +28,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
* Corresponds to the property with the {@link NotPersistent} annotation.
* <p>
* The JDO {@link NotPersistent} annotation is used internally the JDO object store to
- * create the {@link Oid}.
+ * create the {@link Bookmark}.
*/
public interface JdoNotPersistentFacet extends Facet {
diff --git a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java
index 18972b8..1cf920b 100644
--- a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java
+++ b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java
@@ -20,7 +20,7 @@ package org.apache.isis.persistence.jdo.provider.metamodel.facets.prop.primaryke
import javax.jdo.annotations.PrimaryKey;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -28,7 +28,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
* Corresponds to the property with the {@link PrimaryKey} annotation.
* <p>
* The JDO {@link PrimaryKey} annotation is used internally the JDO object store to
- * create the {@link Oid}.
+ * create the {@link Bookmark}.
*/
public interface JdoPrimaryKeyFacet extends Facet {
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
index 37ba0bf..736ed49 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
@@ -25,9 +25,9 @@ import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -37,8 +37,6 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjec
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapterLinkTo;
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
-import lombok.val;
-
/**
* Provides access to request-specific context (eg HTTP headers),
* session-specific context (eg authentication) and
@@ -108,8 +106,8 @@ public interface IResourceContext {
default Optional<ManagedObject> getObjectAdapterForOidFromHref(String oidFromHref) {
String oidStrUnencoded = UrlDecoderUtils.urlDecode(oidFromHref);
- val oid = Oid.parse(oidStrUnencoded);
- return oid.loadObject(getMetaModelContext());
+ return Bookmark.parse(oidStrUnencoded)
+ .flatMap(getMetaModelContext()::loadObject);
}
}
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
index 2d9b473..dd38405 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
@@ -21,7 +21,7 @@ package org.apache.isis.viewer.restfulobjects.viewer.resources;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
@@ -152,7 +152,7 @@ public class JsonParserHelper {
String domainType = matcher.group(1);
String instanceId = matcher.group(2);
- return Oid.forLogicalTypeNameAndIdentifier(domainType, instanceId).stringify();
+ return Bookmark.forLogicalTypeNameAndIdentifier(domainType, instanceId).stringify();
}
private static String resourceFor(final ObjectSpecification objectSpec) {
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
index 7107222..f99c25c 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
@@ -32,10 +32,10 @@ import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Providers;
import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.internal.codec._UrlDecoderUtil;
import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.interaction.session.InteractionTracker;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -124,16 +124,14 @@ public abstract class ResourceAbstract {
// -- ISIS INTEGRATION
protected ManagedObject getObjectAdapterElseThrowNotFound(String domainType, final String instanceIdEncoded) {
- final String instanceIdUnencoded = UrlDecoderUtils.urlDecode(instanceIdEncoded);
+ final String instanceIdDecoded = UrlDecoderUtils.urlDecode(instanceIdEncoded);
- val oid = Oid.forLogicalTypeNameAndIdentifier(domainType, instanceIdUnencoded);
- return oid
- .loadObject(metaModelContext)
+ val bookmark = Bookmark.forLogicalTypeNameAndIdentifier(domainType, instanceIdDecoded);
+ return metaModelContext.loadObject(bookmark)
.orElseThrow(()->RestfulObjectsApplicationException
.createWithMessage(HttpStatusCode.NOT_FOUND,
- "Could not determine adapter for OID: '%s:%s'",
- domainType,
- instanceIdUnencoded));
+ "Could not determine adapter for bookmark: '%s'",
+ bookmark));
}
protected ManagedObject getServiceAdapter(final String serviceId) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index 2c6b753..044d851 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -32,8 +32,8 @@ import org.wicketstuff.select2.Response;
import org.wicketstuff.select2.Select2Choice;
import org.wicketstuff.select2.Settings;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
@@ -80,8 +80,14 @@ extends PanelAbstract<Void, IModel<Void>> {
try {
final PageParameters pageParameters = choice.getPageParametersWithoutUiHints();
final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
- final Oid resultOid = Oid.parse(oidStr);
- return resultOid.stringify();
+
+ return Bookmark.parse(oidStr)
+ .map(Bookmark::stringify)
+ .orElseGet(()->{
+ breadcrumbModel.remove(choice);
+ return null;
+ });
+
} catch (Exception ex) {
breadcrumbModel.remove(choice);
return null;
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java
index b9f232c..9cfc80a 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java
@@ -25,17 +25,16 @@ import javax.inject.Inject;
import org.apache.wicket.util.convert.IConverter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
-import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import lombok.val;
/**
- * Implementation of a Wicket {@link IConverter} for {@link ManagedObject}s,
- * converting to-and-from their {@link Oid}'s string representation.
+ * Implementation of a <i>Wicket</i> {@link IConverter} for {@link ManagedObject}s,
+ * converting to-and-from their {@link Bookmark}'s string representation.
*/
public class ConverterForObjectAdapter implements IConverter<ManagedObject> {
@@ -44,29 +43,26 @@ public class ConverterForObjectAdapter implements IConverter<ManagedObject> {
@Inject private transient ObjectManager objectManager;
/**
- * Converts string representation of {@link Oid} to
+ * Converts string representation of {@link Bookmark} to
* {@link ManagedObject}.
*/
@Override
public ManagedObject convertToObject(final String value, final Locale locale) {
- val oid = Oid.parseUrlEncoded(value);
- val spec = objectManager.getMetaModelContext()
- .getSpecificationLoader()
- .specForLogicalTypeNameElseFail(oid.getLogicalTypeName());
+ val oid = Bookmark.parseUrlEncoded(value).orElse(null);
- val objectLoadRequest = ObjectLoader.Request.of(spec, oid.getIdentifier());
-
- return objectManager.loadObject(objectLoadRequest);
+ return objectManager.getMetaModelContext()
+ .loadObject(oid)
+ .orElse(null);
}
/**
- * Converts {@link ManagedObject} to string representation of {@link Oid}.
+ * Converts {@link ManagedObject} to string representation of {@link Bookmark}.
*/
@Override
public String convertToString(final ManagedObject adapter, final Locale locale) {
if(!ManagedObjects.isIdentifiable(adapter)) {
- // eg. values don't have an Oid
+ // eg. values don't have a Bookmark
return null;
}