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 2020/06/05 09:11:04 UTC
[isis] branch master updated: ISIS-2340: refactor such that can
remove ManagedObject._instanceId(...)
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 2a51404 ISIS-2340: refactor such that can remove ManagedObject._instanceId(...)
2a51404 is described below
commit 2a514041f074393e0a0699ba63d10a42703462cb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 5 11:10:54 2020 +0200
ISIS-2340: refactor such that can remove ManagedObject._instanceId(...)
---
.../isis/core/metamodel/spec/ManagedObject.java | 5 --
.../isis/core/metamodel/spec/ManagedObjects.java | 78 ++++++++++++++--------
.../domainobjects/DomainObjectLinkTo.java | 5 +-
.../domainobjects/DomainObjectReprRenderer.java | 56 ++++++++--------
4 files changed, 82 insertions(+), 62 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index c9d5892..7e6fd41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -239,11 +239,6 @@ public interface ManagedObject {
// -- DEPRECATIONS (REFACTORING)
- static String _instanceId(ManagedObject adapter) {
- val identifier = ManagedObjects.identifyElseFail(adapter).getIdentifier();
- return identifier;
- }
-
static void _whenFirstIsBookmarkable_ensureSecondIsAsWell(
ManagedObject first,
ManagedObject second) {
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 c18d350..20ee19f 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
@@ -85,65 +85,91 @@ public final class ManagedObjects {
/**
* @return whether the corresponding type can be mapped onto a REFERENCE (schema) or an Oid,
- * that is the type is 'identifiable' (aka 'referencable' or 'bookmarkable')
+ * that is, the type is 'identifiable' (aka 'referencable' or 'bookmarkable')
*/
- public static boolean isIdentifiable(@Nullable ManagedObject adapter) {
- return spec(adapter)
+ public static boolean isIdentifiable(@Nullable ManagedObject managedObject) {
+ return spec(managedObject)
.map(ObjectSpecification::isIdentifiable)
.orElse(false);
}
- public static boolean isEntity(ManagedObject adapter) {
- return spec(adapter)
+ public static boolean isEntity(ManagedObject managedObject) {
+ return spec(managedObject)
.map(ObjectSpecification::isEntity)
.orElse(false);
}
- public static boolean isValue(ManagedObject adapter) {
- return spec(adapter)
+ public static boolean isValue(ManagedObject managedObject) {
+ return spec(managedObject)
.map(ObjectSpecification::isValue)
.orElse(false);
}
- public static Optional<String> getDomainType(ManagedObject adapter) {
- return spec(adapter)
+ public static Optional<String> getDomainType(ManagedObject managedObject) {
+ return spec(managedObject)
.map(ObjectSpecification::getSpecId)
.map(ObjectSpecId::asString);
}
// -- IDENTIFICATION
- public static Optional<ObjectSpecification> spec(@Nullable ManagedObject adapter) {
- return isSpecified(adapter) ? Optional.of(adapter.getSpecification()) : Optional.empty();
+ public static Optional<ObjectSpecification> spec(@Nullable ManagedObject managedObject) {
+ return isSpecified(managedObject) ? Optional.of(managedObject.getSpecification()) : Optional.empty();
}
- public static Optional<RootOid> identify(@Nullable ManagedObject adapter) {
- return isSpecified(adapter) ? adapter.getRootOid() : Optional.empty();
+ public static Optional<RootOid> identify(@Nullable ManagedObject managedObject) {
+ return isSpecified(managedObject) ? managedObject.getRootOid() : Optional.empty();
}
- public static RootOid identifyElseFail(@Nullable ManagedObject adapter) {
- return identify(adapter)
- .orElseThrow(()->_Exceptions.illegalArgument("cannot identify %s", adapter));
+ public static RootOid identifyElseFail(@Nullable ManagedObject managedObject) {
+ return identify(managedObject)
+ .orElseThrow(()->_Exceptions.illegalArgument("cannot identify %s", managedObject));
}
- public static Optional<Bookmark> bookmark(@Nullable ManagedObject adapter) {
- return identify(adapter)
+ public static Optional<Bookmark> bookmark(@Nullable ManagedObject managedObject) {
+ return identify(managedObject)
.map(RootOid::asBookmark);
}
- public static Bookmark bookmarkElseFail(@Nullable ManagedObject adapter) {
- return bookmark(adapter)
- .orElseThrow(()->_Exceptions.illegalArgument("cannot bookmark %s", adapter));
+ public static Bookmark bookmarkElseFail(@Nullable ManagedObject managedObject) {
+ return bookmark(managedObject)
+ .orElseThrow(()->_Exceptions.illegalArgument("cannot bookmark %s", managedObject));
}
- public static Optional<String> stringify(@Nullable ManagedObject adapter) {
- return identify(adapter)
+ /**
+ * @param managedObject
+ * @return optionally a String representing a reference to the <em>identifiable</em>
+ * {@code managedObject}, usually made up of the object's type and its ID.
+ */
+ public static Optional<String> stringify(@Nullable ManagedObject managedObject) {
+ return identify(managedObject)
.map(RootOid::enString);
}
- public static String stringifyElseFail(@Nullable ManagedObject adapter) {
- return stringify(adapter)
- .orElseThrow(()->_Exceptions.illegalArgument("cannot stringify %s", adapter));
+ public static String stringifyElseFail(@Nullable ManagedObject managedObject) {
+ return stringify(managedObject)
+ .orElseThrow(()->_Exceptions.illegalArgument("cannot stringify %s", managedObject));
+ }
+
+ /**
+ *
+ * @param managedObject
+ * @param separator custom separator
+ * @return optionally a String representing a reference to the <em>identifiable</em>
+ * {@code managedObject}, made of the form <object-type> <separator> <object-id>.
+ */
+ public static Optional<String> stringify(
+ @Nullable ManagedObject managedObject,
+ @NonNull final String separator) {
+ return identify(managedObject)
+ .map(rootOid->rootOid.getObjectSpecId() + separator + rootOid.getIdentifier());
+ }
+
+ public static String stringifyElseFail(
+ @Nullable ManagedObject managedObject,
+ @NonNull final String separator) {
+ return stringify(managedObject, separator)
+ .orElseThrow(()->_Exceptions.illegalArgument("cannot stringify %s", managedObject));
}
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 8afd363..17e6378 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
@@ -59,9 +59,8 @@ public class DomainObjectLinkTo implements ObjectAdapterLinkTo {
* hook method
*/
protected StringBuilder linkRef(StringBuilder buf) {
- String domainType = ManagedObjects.getDomainType(objectAdapter).orElse("?");
- String instanceId = ManagedObject._instanceId(objectAdapter);
- return buf.append("objects/").append(domainType).append("/").append(instanceId);
+ String objectRef = ManagedObjects.stringifyElseFail(objectAdapter, "/");
+ return buf.append("objects/").append(objectRef);
}
protected Rel relElseDefault(final Rel rel) {
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index e7cbfd4..b07b693 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -59,9 +59,8 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final Rel rel,
final ManagedObject objectAdapter) {
- String domainType = ManagedObjects.getDomainType(objectAdapter).orElse("?");
- String instanceId = ManagedObject._instanceId(objectAdapter);
- final String url = "objects/" + domainType + "/" + instanceId;
+ final String objectRef = ManagedObjects.stringifyElseFail(objectAdapter, "/");
+ final String url = "objects/" + objectRef;
return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.DOMAIN_OBJECT, url).withTitle(objectAdapter.titleString(null));
}
@@ -70,9 +69,8 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final ManagedObject objectAdapter) {
final Rel rel = Rel.OBJECT_LAYOUT;
- String domainType = ManagedObjects.getDomainType(objectAdapter).orElse("?");
- String instanceId = ManagedObject._instanceId(objectAdapter);
- final String url = "objects/" + domainType + "/" + instanceId + "/object-layout";
+ final String objectRef = ManagedObjects.stringifyElseFail(objectAdapter, "/");
+ final String url = "objects/" + objectRef + "/object-layout";
return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.OBJECT_LAYOUT, url);
}
@@ -81,9 +79,8 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final ManagedObject objectAdapter) {
final Rel rel = Rel.OBJECT_ICON;
- String domainType = ManagedObjects.getDomainType(objectAdapter).orElse("?");
- String instanceId = ManagedObject._instanceId(objectAdapter);
- final String url = "objects/" + domainType + "/" + instanceId + "/image";
+ final String objectRef = ManagedObjects.stringifyElseFail(objectAdapter, "/");
+ final String url = "objects/" + objectRef + "/image";
return LinkBuilder.newBuilder(resourceContext, rel.getName(), RepresentationType.OBJECT_IMAGE, url);
}
@@ -172,12 +169,17 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
if (!(mode.isArgs())) {
+ val rootOidIfAny = objectAdapter.getRootOid();
+
// self, extensions.oid
if (ManagedObjects.isIdentifiable(objectAdapter)) {
if (includesSelf) {
addLinkToSelf();
}
- getExtensions().mapPut("oid", getOidStr());
+ rootOidIfAny.ifPresent(rootOid->{
+ val oidStr = rootOid.enString();
+ getExtensions().mapPut("oid", oidStr);
+ });
}
// title
@@ -188,13 +190,10 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
if (isService) {
representation.mapPut("serviceId", ServiceUtil.idOfAdapter(objectAdapter));
} else {
- final String domainType = getDomainType();
- final String instanceId = getInstanceId();
- if (domainType != null) {
- representation.mapPut("domainType", domainType);
- representation.mapPut("instanceId", instanceId);
-
- }
+ rootOidIfAny.ifPresent(rootOid->{
+ representation.mapPut("domainType", rootOid.getObjectSpecId().asString());
+ representation.mapPut("instanceId", rootOid.getIdentifier());
+ });
}
}
@@ -282,17 +281,17 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
getLinks().arrayAdd(link);
}
- private String getDomainType() {
- return ManagedObjects.getDomainType(objectAdapter).orElse("?");
- }
-
- private String getInstanceId() {
- return ManagedObject._instanceId(objectAdapter);
- }
+// private String getDomainType() {
+// return ManagedObjects.getDomainType(objectAdapter).orElse("?");
+// }
+//
+// private String getInstanceId() {
+// return ManagedObject._instanceId(objectAdapter);
+// }
- private String getOidStr() {
- return ManagedObjects.stringifyElseFail(objectAdapter);
- }
+// private String getOidStr() {
+// return ManagedObjects.stringifyElseFail(objectAdapter);
+// }
private DomainObjectReprRenderer withMembers(final ManagedObject objectAdapter) {
final JsonRepresentation appendTo =
@@ -456,7 +455,8 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
final JsonRepresentation domainObjectRepr = renderer.with(objectAdapter).asUpdatePropertiesLinkArguments().render();
if(!getResourceContext().suppressUpdateLink()) {
- final LinkBuilder updateLinkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.UPDATE.getName(), RepresentationType.DOMAIN_OBJECT, "objects/%s/%s", getDomainType(), getInstanceId()).withHttpMethod(RestfulHttpMethod.PUT).withArguments(domainObjectRepr);
+ val objectRef = ManagedObjects.stringifyElseFail(objectAdapter);
+ val updateLinkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.UPDATE.getName(), RepresentationType.DOMAIN_OBJECT, "objects/%s", objectRef).withHttpMethod(RestfulHttpMethod.PUT).withArguments(domainObjectRepr);
getLinks().arrayAdd(updateLinkBuilder.build());
}
}