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/15 16:36:31 UTC
[isis] branch master updated: ISIS-2569: simplify _OidMarshaller
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 8db3bce ISIS-2569: simplify _OidMarshaller
8db3bce is described below
commit 8db3bce7710debb04002b043df31dbd17016acd6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 18:36:07 2021 +0200
ISIS-2569: simplify _OidMarshaller
---
.../isis/core/metamodel/adapter/oid/Oid.java | 47 ++++++++++++----------
.../isis/core/metamodel/adapter/oid/_EmptyOid.java | 2 +-
.../core/metamodel/adapter/oid/_OidMarshaller.java | 17 +-------
.../core/metamodel/adapter/oid/_SimpleOid.java | 2 +-
.../isis/core/metamodel/spec/ManagedObjects.java | 2 +-
.../oid/OidMarshallerTest_roundtripping.java | 4 +-
.../adapter/oid/OidMarshallerTest_unmarshal.java | 14 +++----
.../ui/component/EventProviderAbstract.java | 2 +-
.../domainobjects/DomainObjectReprRenderer.java | 2 +-
.../viewer/resources/JsonParserHelper.java | 2 +-
.../wicket/model/models/BookmarkTreeNode.java | 6 +--
.../wicket/model/models/PageParameterUtil.java | 2 +-
.../widgets/breadcrumbs/BreadcrumbModel.java | 2 +-
.../widgets/breadcrumbs/BreadcrumbPanel.java | 2 +-
.../integration/ConverterForObjectAdapter.java | 2 +-
.../ConverterForObjectAdapterMemento.java | 2 +-
.../viewer/services/mementos/ObjectMementoWkt.java | 6 +--
17 files changed, 53 insertions(+), 63 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 c2c3850..1321f97 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
@@ -75,18 +75,7 @@ public interface Oid extends Serializable {
identifier);
}
- // --
-
- /**
- * A string representation of this {@link Oid}.
- */
- default String enString() {
- return _OidMarshaller.marshal(this);
- }
-
- default boolean isEmpty() {
- return false; // default, only overridden by Oid_Value
- }
+ // -- PARTS THAT MAKE UP THE OID
/**
* The logical-type-name of the domain object this instance is representing.
@@ -95,23 +84,26 @@ public interface Oid extends Serializable {
String getLogicalTypeName();
- // -- REFACTORING ...
-
String getIdentifier();
-
- public default Bookmark asBookmark() {
- return Bookmark.of(getLogicalTypeName(), getIdentifier());
- }
- // -- DECODE FROM STRING
+ // -- STRINGIFY
- public static Oid parseEncoded(final String urlEncodedOidStr) {
+ /**
+ * A string representation of this {@link Oid}.
+ */
+ default String stringify() {
+ return _OidMarshaller.marshal(this);
+ }
+
+ // -- PARSING
+
+ public static Oid parseUrlEncoded(final String urlEncodedOidStr) {
final String oidStr = _UrlDecoderUtil.urlDecode(urlEncodedOidStr);
return parse(oidStr);
}
public static Oid parse(final String oidStr) {
- return _OidMarshaller.unmarshal(oidStr, _SimpleOid.class);
+ return _OidMarshaller.unmarshal(oidStr);
}
// -- OBJECT LOADING
@@ -128,5 +120,18 @@ public interface Oid extends Serializable {
ObjectLoader.Request.of(spec, objectId)));
}
+
+ // -- EMPTY OID
+
+ default boolean isEmpty() {
+ return false; // default, only overridden by Oid_Value
+ }
+
+ // -- CONVERSION
+
+ public default Bookmark asBookmark() {
+ return Bookmark.of(getLogicalTypeName(), getIdentifier());
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java
index d95d378..b7abe85 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java
@@ -28,7 +28,7 @@ final class _EmptyOid implements Oid {
static final _EmptyOid INSTANCE = new _EmptyOid();
@Override
- public String enString() {
+ public String stringify() {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
index a832670..1210378 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
@@ -120,7 +120,7 @@ final class _OidMarshaller {
// -- UNMARSHAL
- static <T extends Oid> T unmarshal(String oidStr, Class<T> requestedType) {
+ static <T extends Oid> T unmarshal(String oidStr) {
final Matcher matcher = OIDSTR_PATTERN.matcher(oidStr);
if (!matcher.matches()) {
@@ -158,7 +158,6 @@ final class _OidMarshaller {
if(oneToManyId == null) {
if(aggregateOidParts.isEmpty()) {
- ensureCorrectType(oidStr, requestedType, Oid.class);
return _Casts.uncheckedCast(
_SimpleOid.of(rootObjectType, rootIdentifier));
} else {
@@ -182,18 +181,6 @@ final class _OidMarshaller {
}
}
-
- private static <T> void ensureCorrectType(String oidStr, Class<T> requestedType,
- final Class<? extends Oid> actualType) {
-
- if(!requestedType.isAssignableFrom(actualType)) {
- throw new IllegalArgumentException(
- String.format("OID '%s' was unmarshealled to type '%s' which cannot be assigned "
- + "to requested type '%s'",
- oidStr, actualType.getSimpleName(), requestedType.getSimpleName()) );
- }
- }
-
private static String getGroup(final Matcher matcher, final int group) {
final int groupCount = matcher.groupCount();
if(group > groupCount) {
@@ -203,6 +190,4 @@ final class _OidMarshaller {
return _Strings.emptyToNull(val);
}
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java
index 325d19c..df730ad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java
@@ -77,7 +77,7 @@ final class _SimpleOid implements Oid {
@Override
public String toString() {
- return enString();
+ return stringify();
}
// -- HELPER
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 c95781d..4304dc1 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
@@ -149,7 +149,7 @@ public final class ManagedObjects {
*/
public static Optional<String> stringify(@Nullable ManagedObject managedObject) {
return identify(managedObject)
- .map(Oid::enString);
+ .map(Oid::stringify);
}
public static String stringifyElseFail(@Nullable ManagedObject managedObject) {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
index 64fc758..1d2ef39 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
@@ -32,7 +32,7 @@ public class OidMarshallerTest_roundtripping {
public void oid() {
val oid = Oid.root(LogicalTypeTestFactory.cus(), "123");
- final String enString = oid.enString();
+ final String enString = oid.stringify();
final Oid deString = Oid.parse(enString);
assertThat(deString, is(oid));
}
@@ -41,7 +41,7 @@ public class OidMarshallerTest_roundtripping {
public void oid_withLegacyVersionIgnored() {
val oid = Oid.root(LogicalTypeTestFactory.cus(), "123");
- final String enString = oid.enString();
+ final String enString = oid.stringify();
final Oid deString = Oid.parse(enString + "^" + 90807L);
assertThat(deString, is(oid));
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
index fea8fa2..dd8ea7d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
@@ -58,11 +58,11 @@ public class OidMarshallerTest_unmarshal {
public void persistentRoot() {
final String oidStr = "CUS:123";
- final Oid oid = _OidMarshaller.unmarshal(oidStr, Oid.class);
+ final Oid oid = _OidMarshaller.unmarshal(oidStr);
assertThat(oid.getLogicalTypeName(), is("CUS"));
assertThat(oid.getIdentifier(), is("123"));
- final Oid oid2 = _OidMarshaller.unmarshal(oidStr, Oid.class);
+ final Oid oid2 = _OidMarshaller.unmarshal(oidStr);
assertThat(oid, equalTo(oid2));
}
@@ -70,11 +70,11 @@ public class OidMarshallerTest_unmarshal {
public void persistentRootWithFullyQualifiedSpecId() {
final String oidStr = "com.planchase.ClassName:8";
- final Oid oid = _OidMarshaller.unmarshal(oidStr, Oid.class);
+ final Oid oid = _OidMarshaller.unmarshal(oidStr);
assertThat(oid.getLogicalTypeName(), is("com.planchase.ClassName"));
assertThat(oid.getIdentifier(), is("8"));
- final Oid oid2 = _OidMarshaller.unmarshal(oidStr, Oid.class);
+ final Oid oid2 = _OidMarshaller.unmarshal(oidStr);
assertThat(oid, equalTo(oid2));
}
@@ -91,18 +91,18 @@ public class OidMarshallerTest_unmarshal {
public void transientRoot() {
final String oidStr = "!CUS:123";
- final Oid oid = _OidMarshaller.unmarshal(oidStr, Oid.class);
+ final Oid oid = _OidMarshaller.unmarshal(oidStr);
assertThat(oid.getLogicalTypeName(), is("CUS"));
assertThat(oid.getIdentifier(), is("123"));
- final Oid oid2 = _OidMarshaller.unmarshal(oidStr, Oid.class);
+ final Oid oid2 = _OidMarshaller.unmarshal(oidStr);
assertThat(oid, equalTo(oid2));
}
@Test(expected=IllegalArgumentException.class)
public void badPattern() {
- _OidMarshaller.unmarshal("xxx", Oid.class);
+ _OidMarshaller.unmarshal("xxx");
}
diff --git a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/EventProviderAbstract.java b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/EventProviderAbstract.java
index 61a3046..08ac1c5 100644
--- a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/EventProviderAbstract.java
+++ b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/EventProviderAbstract.java
@@ -106,7 +106,7 @@ public abstract class EventProviderAbstract implements EventProvider {
val oid = ManagedObjects.identify(dereferencedManagedObject).orElse(null);
if(oid!=null) {
- final String oidStr = oid.enString();
+ final String oidStr = oid.stringify();
event.setId(oidStr + "-" + calendarName);
event.setClassName("fullCalendar2-event-" + calendarName);
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 92b9e34..8c7a1ec 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
@@ -178,7 +178,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
addLinkToSelf();
}
oidIfAny.ifPresent(oid->{
- val oidStr = oid.enString();
+ val oidStr = oid.stringify();
getExtensions().mapPut("oid", oidStr);
});
}
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 bc68ed8..2d9b473 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
@@ -152,7 +152,7 @@ public class JsonParserHelper {
String domainType = matcher.group(1);
String instanceId = matcher.group(2);
- return Oid.forLogicalTypeNameAndIdentifier(domainType, instanceId).enString();
+ return Oid.forLogicalTypeNameAndIdentifier(domainType, instanceId).stringify();
}
private static String resourceFor(final ObjectSpecification objectSpec) {
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
index 869a82e..b4efeb5 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
@@ -62,7 +62,7 @@ public class BookmarkTreeNode implements Serializable {
final int depth) {
pageParameters = bookmarkableModel.getPageParametersWithoutUiHints();
Oid oid = oidFrom(pageParameters);
- this.oidNoVerStr = oid.enString();
+ this.oidNoVerStr = oid.stringify();
this.oidNoVer = Oid.parse(oidNoVerStr);
// replace oid with the noVer equivalent.
@@ -211,7 +211,7 @@ public class BookmarkTreeNode implements Serializable {
})
.filter(_NullSafe::isPresent)
.map(parentOid->{
- final String parentOidStr = parentOid.enString();
+ final String parentOidStr = parentOid.stringify();
return parentOidStr;
})
.forEach(parentOidStr->{
@@ -259,7 +259,7 @@ public class BookmarkTreeNode implements Serializable {
public static String oidStrFrom(BookmarkableModel candidateBookmarkableModel) {
final Oid oid = oidFrom(candidateBookmarkableModel.getPageParametersWithoutUiHints());
return oid != null
- ? oid.enString()
+ ? oid.stringify()
: null;
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
index 3661c44..935678b 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
@@ -232,7 +232,7 @@ public class PageParameterUtil {
}
try {
- val oid = Oid.parseEncoded(encoded);
+ val oid = Oid.parseUrlEncoded(encoded);
return oid.loadObject(mmc).orElse(null);
} catch (final Exception e) {
return null;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index 87c8aa3..26a1234 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -103,7 +103,7 @@ public class BreadcrumbModel implements Serializable {
}
try {
final Oid unmarshal = Oid.parse(oidStr);
- return unmarshal.enString();
+ return unmarshal.stringify();
} catch(Exception ex) {
return null;
}
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 1541ddd..2c6b753 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
@@ -81,7 +81,7 @@ extends PanelAbstract<Void, IModel<Void>> {
final PageParameters pageParameters = choice.getPageParametersWithoutUiHints();
final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
final Oid resultOid = Oid.parse(oidStr);
- return resultOid.enString();
+ return resultOid.stringify();
} 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 d1c9b76..b9f232c 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
@@ -49,7 +49,7 @@ public class ConverterForObjectAdapter implements IConverter<ManagedObject> {
*/
@Override
public ManagedObject convertToObject(final String value, final Locale locale) {
- val oid = Oid.parseEncoded(value);
+ val oid = Oid.parseUrlEncoded(value);
val spec = objectManager.getMetaModelContext()
.getSpecificationLoader()
.specForLogicalTypeNameElseFail(oid.getLogicalTypeName());
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java
index 2fe27f3..f672647 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java
@@ -53,7 +53,7 @@ public class ConverterForObjectAdapterMemento implements IConverter<ObjectMement
if (_Strings.isNullOrEmpty(value)) {
return null;
}
- val oid = Oid.parseEncoded(value);
+ val oid = Oid.parseUrlEncoded(value);
return commonContext.mementoFor(oid);
}
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java
index fd52352..cf26b95 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java
@@ -243,7 +243,7 @@ final class ObjectMementoWkt implements HasLogicalType, Serializable {
// we copy this updated oid string into our memento so that, if we retry,
// we will succeed second time around
- memento.persistentOidStr = oid.enString();
+ memento.persistentOidStr = oid.stringify();
}
}
@@ -418,7 +418,7 @@ final class ObjectMementoWkt implements HasLogicalType, Serializable {
return;
}
- this.persistentOidStr = oid.enString();
+ this.persistentOidStr = oid.stringify();
requires(persistentOidStr, "persistentOidStr");
this.bookmark = oid.asBookmark();
@@ -446,7 +446,7 @@ final class ObjectMementoWkt implements HasLogicalType, Serializable {
if(spec.isIdentifiable() || spec.isParented() ) {
val oid = ManagedObjects.identifyElseFail(adapter);
- persistentOidStr = oid.enString();
+ persistentOidStr = oid.stringify();
bookmark = oid.asBookmark();
if(adapter.getPojo() instanceof HintIdProvider) {
HintIdProvider provider = (HintIdProvider) adapter.getPojo();