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/11/26 13:05:41 UTC
[isis] branch master updated: ISIS-2877: remove java.sql.Timestamp from Apache Isis Schema
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 a978b7f ISIS-2877: remove java.sql.Timestamp from Apache Isis Schema
a978b7f is described below
commit a978b7f158c20d8a9fbf06ec56209215635a6697
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Nov 26 13:59:50 2021 +0100
ISIS-2877: remove java.sql.Timestamp from Apache Isis Schema
- also provide a ValueSemanticsResolver to the various DTO utilities
---
.../isis/applib/util/schema/CommonDtoUtils.java | 66 ++++++++++++----------
.../apache/isis/applib/util/schema/DtoContext.java | 25 ++++----
.../applib/util/schema/InteractionDtoUtils.java | 13 +++--
.../value/semantics/ValueSemanticsResolver.java | 17 ++++--
.../applib/util/schema/CommonDtoUtils_Test.java | 15 +++--
.../schema/CommonDtoUtils_setValueOn_Test.java | 11 ++--
.../apache/isis/applib/util/schema/Roundtrip.java | 14 ++++-
.../org/apache/isis/schema/common/common-2.0.xsd | 35 +++++-------
.../core/metamodel/IsisModuleCoreMetamodel.java | 4 +-
.../_testing/MetaModelContext_forTesting.java | 20 +++----
...ionOrAnyMatchingValueSemanticsFacetFactory.java | 8 +--
.../specloader/SpecificationLoaderDefault.java | 18 +++---
.../legacy/JavaSqlTimeStampValueSemantics.java | 2 +-
...ult.java => ValueSemanticsResolverDefault.java} | 8 +--
.../command/CommandDtoFactoryDefault.java | 14 ++---
.../runtimeservices/command/DtoContextDefault.java | 29 ++++++++++
.../interaction/InteractionDtoFactoryDefault.java | 9 +--
.../isis/testdomain/value/ValueSemanticsTest.java | 8 +--
.../ui/components/scalars/ConverterTester.java | 16 +++---
19 files changed, 189 insertions(+), 143 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
index 47d947f..a4bd003 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
@@ -36,10 +36,8 @@ import java.util.function.Function;
import org.springframework.lang.Nullable;
-import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
import org.apache.isis.applib.jaxb.JavaTimeXMLGregorianCalendarMarshalling;
import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.applib.value.Clob;
import org.apache.isis.commons.internal.base._Casts;
@@ -56,6 +54,7 @@ import org.apache.isis.schema.common.v2.ClobDto;
import org.apache.isis.schema.common.v2.CollectionDto;
import org.apache.isis.schema.common.v2.EnumDto;
import org.apache.isis.schema.common.v2.OidDto;
+import org.apache.isis.schema.common.v2.TypedTupleDto;
import org.apache.isis.schema.common.v2.ValueDto;
import org.apache.isis.schema.common.v2.ValueType;
import org.apache.isis.schema.common.v2.ValueWithTypeDto;
@@ -78,6 +77,7 @@ public final class CommonDtoUtils {
// -- asValueType
public static final Map<Class<?>, ValueType> valueTypeByClass =
_Maps.unmodifiableEntries(
+ entry(Void.class, ValueType.VOID),
entry(String.class, ValueType.STRING),
entry(byte.class, ValueType.BYTE),
entry(Byte.class, ValueType.BYTE),
@@ -106,7 +106,6 @@ public final class CommonDtoUtils {
entry(OffsetTime.class, ValueType.OFFSET_TIME),
entry(ZonedDateTime.class, ValueType.ZONED_DATE_TIME),
- entry(java.sql.Timestamp.class, ValueType.JAVA_SQL_TIMESTAMP),
entry(Blob.class, ValueType.BLOB),
entry(Clob.class, ValueType.CLOB)
);
@@ -135,25 +134,25 @@ public final class CommonDtoUtils {
public static ValueDto newValueDto(
final ValueType valueType,
final Object value,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
if(value == null) {
return null;
}
final ValueDto valueDto = new ValueDto();
- return setValueOn(valueDto, valueType, value, bookmarkService);
+ return setValueOn(valueDto, valueType, value, dtoContext);
}
public static <T extends ValueWithTypeDto> T setValueOn(
final T valueWithTypeDto,
final ValueType valueType,
final Object value,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
valueWithTypeDto.setType(valueType);
- setValueOn((ValueDto)valueWithTypeDto, valueType, value, bookmarkService);
+ setValueOn((ValueDto)valueWithTypeDto, valueType, value, dtoContext);
valueWithTypeDto.setNull(value == null);
return valueWithTypeDto;
@@ -163,11 +162,11 @@ public final class CommonDtoUtils {
final T valueWithTypeDto,
final ValueType elementValueType,
final Object value,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
valueWithTypeDto.setType(ValueType.COLLECTION);
- val collectionDto = asCollectionDto(value, elementValueType, bookmarkService);
+ val collectionDto = asCollectionDto(value, elementValueType, dtoContext);
valueWithTypeDto.setCollection(collectionDto);
valueWithTypeDto.setNull(value == null);
@@ -178,14 +177,20 @@ public final class CommonDtoUtils {
final T valueDto,
final ValueType valueType,
final Object pojo,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
switch (valueType) {
case COLLECTION: {
- final CollectionDto collectionDto = asCollectionDto(pojo, ValueType.VOID, bookmarkService);
+ final CollectionDto collectionDto = asCollectionDto(
+ pojo, ValueType.VOID, dtoContext);
valueDto.setCollection(collectionDto);
return valueDto;
}
+ case COMPOSITE: {
+ final TypedTupleDto typedTupleDto = asTypedTupleDto(pojo, dtoContext);
+ valueDto.setComposite(typedTupleDto);
+ return valueDto;
+ }
case STRING: {
final String argValue = (String) pojo;
valueDto.setString(argValue);
@@ -271,11 +276,6 @@ public final class CommonDtoUtils {
valueDto.setZonedDateTime(JavaTimeXMLGregorianCalendarMarshalling.toXMLGregorianCalendar2(argValue));
return valueDto;
}
- case JAVA_SQL_TIMESTAMP: {
- final java.sql.Timestamp argValue = (java.sql.Timestamp) pojo;
- valueDto.setTimestamp(JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(argValue));
- return valueDto;
- }
case ENUM: {
final Enum<?> argValue = (Enum<?>) pojo;
if(argValue == null) {
@@ -290,8 +290,8 @@ public final class CommonDtoUtils {
case REFERENCE: {
final Bookmark bookmark = pojo instanceof Bookmark
? (Bookmark) pojo
- : bookmarkService!=null
- ? bookmarkService.bookmarkFor(pojo).orElse(null)
+ : dtoContext.getBookmarkService()!=null
+ ? dtoContext.getBookmarkService().bookmarkFor(pojo).orElse(null)
: null;
if (bookmark != null) {
@@ -333,7 +333,7 @@ public final class CommonDtoUtils {
private static CollectionDto asCollectionDto(
final @Nullable Object iterableOrArray,
final @NonNull ValueType commonElementValueType,
- final @Nullable BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
val collectionDto = new CollectionDto();
collectionDto.setType(commonElementValueType);
@@ -346,10 +346,10 @@ public final class CommonDtoUtils {
.forEach(element->{
val valueDto = new ValueDto();
if(element==null) {
- setValueOn(valueDto, ValueType.VOID, element, bookmarkService);
+ setValueOn(valueDto, ValueType.VOID, element, dtoContext);
} else {
val elementValueType = asValueType(element.getClass());
- setValueOn(valueDto, elementValueType, element, bookmarkService);
+ setValueOn(valueDto, elementValueType, element, dtoContext);
if(needsCommonElementValueTypeAutodetect) {
commonElementValueTypeRef.update(acc->reduce(acc, elementValueType));
@@ -366,6 +366,14 @@ public final class CommonDtoUtils {
return collectionDto;
}
+ private static TypedTupleDto asTypedTupleDto(
+ final @Nullable Object composite,
+ final @NonNull DtoContext dtoContext) {
+ val typedTupleDto = new TypedTupleDto();
+ //TODO implement
+ return typedTupleDto;
+ }
+
// -- getValue (from valueDto)
private static ValueType reduce(final ValueType acc, final ValueType next) {
@@ -425,8 +433,8 @@ public final class CommonDtoUtils {
return JavaTimeXMLGregorianCalendarMarshalling.toOffsetTime(valueDto.getOffsetTime());
case ZONED_DATE_TIME:
return JavaTimeXMLGregorianCalendarMarshalling.toZonedDateTime(valueDto.getZonedDateTime());
- case JAVA_SQL_TIMESTAMP:
- return JavaSqlXMLGregorianCalendarMarshalling.toTimestamp(valueDto.getTimestamp());
+// case JAVA_SQL_TIMESTAMP:
+// return JavaSqlXMLGregorianCalendarMarshalling.toTimestamp(valueDto.getTimestamp());
case ENUM:
final EnumDto enumDto = valueDto.getEnum();
final String enumType = enumDto.getEnumType();
@@ -489,12 +497,12 @@ public final class CommonDtoUtils {
public static ValueWithTypeDto newValueWithTypeDto(
final Class<?> type,
final Object val,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
final ValueWithTypeDto valueWithTypeDto = new ValueWithTypeDto();
final ValueType valueType = asValueType(type);
- setValueOn(valueWithTypeDto, valueType, val, bookmarkService);
+ setValueOn(valueWithTypeDto, valueType, val, dtoContext);
return valueWithTypeDto;
}
@@ -521,7 +529,7 @@ public final class CommonDtoUtils {
final String parameterName,
final Class<?> parameterType,
final Object arg,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
val paramDto = new ParamDto();
paramDto.setName(parameterName);
@@ -535,7 +543,7 @@ public final class CommonDtoUtils {
paramDto.setType(valueType);
- CommonDtoUtils.setValueOn(paramDto, valueType, arg, bookmarkService);
+ CommonDtoUtils.setValueOn(paramDto, valueType, arg, dtoContext);
return paramDto;
}
@@ -544,14 +552,14 @@ public final class CommonDtoUtils {
final String parameterName,
final Class<?> parameterElementType,
final Object arg,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
val paramDto = new ParamDto();
paramDto.setName(parameterName);
paramDto.setType(ValueType.COLLECTION);
val elementValueType = CommonDtoUtils.asValueType(parameterElementType);
- CommonDtoUtils.setValueOnNonScalar(paramDto, elementValueType, arg, bookmarkService);
+ CommonDtoUtils.setValueOnNonScalar(paramDto, elementValueType, arg, dtoContext);
return paramDto;
}
diff --git a/core/config/src/main/java/org/apache/isis/core/config/valuetypes/ValueSemanticsRegistry.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/DtoContext.java
similarity index 61%
rename from core/config/src/main/java/org/apache/isis/core/config/valuetypes/ValueSemanticsRegistry.java
rename to api/applib/src/main/java/org/apache/isis/applib/util/schema/DtoContext.java
index 653fde5..816a465 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/valuetypes/ValueSemanticsRegistry.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/DtoContext.java
@@ -16,21 +16,20 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.config.valuetypes;
+package org.apache.isis.applib.util.schema;
-import java.util.stream.Stream;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
-import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
-import org.apache.isis.commons.collections.Can;
-
-public interface ValueSemanticsRegistry {
-
- boolean hasValueSemantics(Class<?> valueType);
-
- <T> Stream<ValueSemanticsProvider<T>> streamValueSemantics(Class<T> valueType);
-
- <T> Can<ValueSemanticsProvider<T>> selectValueSemantics(Class<T> valueType);
+/**
+ * Provides the runtime context for converting <i>Schema</i> DTOs
+ * between their XML and their Java type representation.
+ *
+ * @since 2.x {@index}
+ */
+public interface DtoContext {
- Stream<Class<?>> streamClassesWithValueSemantics();
+ BookmarkService getBookmarkService();
+ ValueSemanticsResolver getValueSemanticsResolver();
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java
index e7b683d..c2d2cdd 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java
@@ -35,7 +35,6 @@ import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.iactn.Execution;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.util.JaxbUtil;
@@ -54,6 +53,8 @@ import org.apache.isis.schema.ixn.v2.InteractionDto;
import org.apache.isis.schema.ixn.v2.MemberExecutionDto;
import org.apache.isis.schema.ixn.v2.PropertyEditDto;
+import lombok.NonNull;
+
/**
* @since 1.x {@index}
*/
@@ -344,10 +345,10 @@ public final class InteractionDtoUtils {
final String parameterName,
final Class<?> parameterType,
final Object arg,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
final List<ParamDto> params = parameterListFor(interactionDto);
- ParamDto paramDto = CommonDtoUtils.newParamDto(parameterName, parameterType, arg, bookmarkService);
+ ParamDto paramDto = CommonDtoUtils.newParamDto(parameterName, parameterType, arg, dtoContext);
params.add(paramDto);
}
@@ -358,16 +359,16 @@ public final class InteractionDtoUtils {
*
* @param returnType - to determine the value type (if any)
* @param result - either a value type (possibly boxed primitive), or a reference type
- * @param bookmarkService - used if not a value type
+ * @param dtoContext - used if not a fundamental value type
*/
public static void addReturn(
final ActionInvocationDto invocationDto,
final Class<?> returnType,
final Object result,
- final BookmarkService bookmarkService) {
+ final @NonNull DtoContext dtoContext) {
final ValueWithTypeDto returned = CommonDtoUtils
- .newValueWithTypeDto(returnType, result, bookmarkService);
+ .newValueWithTypeDto(returnType, result, dtoContext);
invocationDto.setReturned(returned);
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsResolver.java b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsResolver.java
index 1356cf2..1386b9a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsResolver.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsResolver.java
@@ -18,12 +18,21 @@
*/
package org.apache.isis.applib.value.semantics;
-import java.io.Serializable;
+import java.util.stream.Stream;
-//FIXME[ISIS-2877] implement (will be required by the various XxxDtoUtils)
-@FunctionalInterface
+import org.apache.isis.commons.collections.Can;
+
+/**
+ * @since 2.0 {@index}
+ */
public interface ValueSemanticsResolver {
- public <T extends Serializable> ValueSemanticsProvider<T> resolveValueSemantics(Class<T> valueType);
+ boolean hasValueSemantics(Class<?> valueType);
+
+ <T> Stream<ValueSemanticsProvider<T>> streamValueSemantics(Class<T> valueType);
+
+ <T> Can<ValueSemanticsProvider<T>> selectValueSemantics(Class<T> valueType);
+
+ Stream<Class<?>> streamClassesWithValueSemantics();
}
diff --git a/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_Test.java b/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_Test.java
index 8fbb154..d6f9643 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_Test.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_Test.java
@@ -29,7 +29,6 @@ import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.schema.cmd.v2.MapDto;
import org.apache.isis.schema.common.v2.ValueDto;
import org.apache.isis.schema.common.v2.ValueType;
@@ -40,7 +39,7 @@ public class CommonDtoUtils_Test {
public JUnitRuleMockery context = new JUnitRuleMockery();
@Mock
- private BookmarkService mockBookmarkService;
+ private DtoContext mockDtoContext;
@Test
public void enums() {
@@ -65,7 +64,7 @@ public class CommonDtoUtils_Test {
assertThat(valueType, is(ValueType.ENUM));
// and when
- final ValueDto valueDto = CommonDtoUtils.newValueDto(valueType, enumVal, mockBookmarkService);
+ final ValueDto valueDto = CommonDtoUtils.newValueDto(valueType, enumVal, mockDtoContext);
// then
Object value = CommonDtoUtils.getValue(valueDto, valueType);
@@ -76,8 +75,8 @@ public class CommonDtoUtils_Test {
@Test
public void getMapValue() {
- Assert.assertThat(CommonDtoUtils.getMapValue(null, "someKey"), is(nullValue()));
- Assert.assertThat(CommonDtoUtils.getMapValue(new MapDto(), "someKey"), is(nullValue()));
+ assertThat(CommonDtoUtils.getMapValue(null, "someKey"), is(nullValue()));
+ assertThat(CommonDtoUtils.getMapValue(new MapDto(), "someKey"), is(nullValue()));
// given
final MapDto mapDto = new MapDto();
@@ -86,8 +85,8 @@ public class CommonDtoUtils_Test {
e.setValue("someValue");
mapDto.getEntry().add(e);
- Assert.assertThat(CommonDtoUtils.getMapValue(mapDto, "someKey"), is("someValue"));
- Assert.assertThat(CommonDtoUtils.getMapValue(mapDto, "someThingElse"), is(nullValue()));
+ assertThat(CommonDtoUtils.getMapValue(mapDto, "someKey"), is("someValue"));
+ assertThat(CommonDtoUtils.getMapValue(mapDto, "someThingElse"), is(nullValue()));
}
@Test
@@ -100,7 +99,7 @@ public class CommonDtoUtils_Test {
final MapDto mapDto = new MapDto();
CommonDtoUtils.putMapKeyValue(mapDto, "someKey", "someValue");
- Assert.assertThat(CommonDtoUtils.getMapValue(mapDto, "someKey"), is("someValue"));
+ assertThat(CommonDtoUtils.getMapValue(mapDto, "someKey"), is("someValue"));
}
}
\ No newline at end of file
diff --git a/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_setValueOn_Test.java b/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_setValueOn_Test.java
index d4968ff..30e5ae5 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_setValueOn_Test.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/util/schema/CommonDtoUtils_setValueOn_Test.java
@@ -29,7 +29,6 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.applib.value.Clob;
import org.apache.isis.schema.common.v2.BlobDto;
@@ -43,7 +42,7 @@ public class CommonDtoUtils_setValueOn_Test {
public JUnitRuleMockery context = new JUnitRuleMockery();
@Mock
- private BookmarkService mockBookmarkService;
+ private DtoContext mockDtoContext;
ValueDto valueDto;
@Before
@@ -53,7 +52,7 @@ public class CommonDtoUtils_setValueOn_Test {
@Test
public void when_blob_is_null() {
- CommonDtoUtils.setValueOn(valueDto, ValueType.BLOB, null, mockBookmarkService);
+ CommonDtoUtils.setValueOn(valueDto, ValueType.BLOB, null, mockDtoContext);
final BlobDto blobDto = valueDto.getBlob();
Assert.assertThat(blobDto, is(nullValue()));
}
@@ -61,7 +60,7 @@ public class CommonDtoUtils_setValueOn_Test {
@Test
public void when_blob_is_not_null() {
final Blob val = new Blob("image.png", "image/png", new byte[]{1,2,3,4,5});
- CommonDtoUtils.setValueOn(valueDto, ValueType.BLOB, val, mockBookmarkService);
+ CommonDtoUtils.setValueOn(valueDto, ValueType.BLOB, val, mockDtoContext);
final BlobDto blobDto = valueDto.getBlob();
Assert.assertThat(blobDto, is(notNullValue()));
Assert.assertThat(blobDto.getBytes(), is(val.getBytes()));
@@ -71,7 +70,7 @@ public class CommonDtoUtils_setValueOn_Test {
@Test
public void when_clob_is_null() {
- CommonDtoUtils.setValueOn(valueDto, ValueType.CLOB, null, mockBookmarkService);
+ CommonDtoUtils.setValueOn(valueDto, ValueType.CLOB, null, mockDtoContext);
final ClobDto clobDto = valueDto.getClob();
Assert.assertThat(clobDto, is(nullValue()));
}
@@ -79,7 +78,7 @@ public class CommonDtoUtils_setValueOn_Test {
@Test
public void when_clob_is_not_null() {
final Clob val = new Clob("image.png", "image/png", new char[]{1,2,3,4,5});
- CommonDtoUtils.setValueOn(valueDto, ValueType.CLOB, val, mockBookmarkService);
+ CommonDtoUtils.setValueOn(valueDto, ValueType.CLOB, val, mockDtoContext);
final ClobDto clobDto = valueDto.getClob();
Assert.assertThat(clobDto, is(notNullValue()));
Assert.assertThat(clobDto.getChars(), is(val.getChars()));
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 2177f0b..77ff2fb 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
@@ -42,6 +42,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
@@ -87,10 +89,18 @@ public class Roundtrip {
}
private static void addArg(final InteractionDto interactionDto, final Object sampleValue) {
+
+ val dtoContext = new DtoContext() {
+ @Override public BookmarkService getBookmarkService() {
+ return null; }
+ @Override public ValueSemanticsResolver getValueSemanticsResolver() {
+ return null; }
+ };
+
val type = sampleValue.getClass();
val name = type.getSimpleName();
- InteractionDtoUtils.addParamArg(interactionDto, "a"+name, type, sampleValue, null);
- InteractionDtoUtils.addParamArg(interactionDto, "null"+name, type, type.cast(null), null);
+ InteractionDtoUtils.addParamArg(interactionDto, "a"+name, type, sampleValue, dtoContext);
+ InteractionDtoUtils.addParamArg(interactionDto, "null"+name, type, type.cast(null), dtoContext);
}
private static void testArg(
diff --git a/api/schema/src/main/resources/org/apache/isis/schema/common/common-2.0.xsd b/api/schema/src/main/resources/org/apache/isis/schema/common/common-2.0.xsd
index d602c2d..1d81840 100644
--- a/api/schema/src/main/resources/org/apache/isis/schema/common/common-2.0.xsd
+++ b/api/schema/src/main/resources/org/apache/isis/schema/common/common-2.0.xsd
@@ -25,9 +25,7 @@
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc"
- jaxb:version="1.0"
-
- >
+ jaxb:version="1.0">
<xs:annotation>
<xs:appinfo>
@@ -50,22 +48,21 @@
<xs:element name="char" type="xs:string"/>
<xs:element name="bigInteger" type="xs:integer"/>
<xs:element name="bigDecimal" type="xs:decimal"/>
- <!-- java.time -->
+
+ <!-- temporal types -->
<xs:element name="localDate" type="xs:date"/>
<xs:element name="localDateTime" type="xs:dateTime"/>
<xs:element name="localTime" type="xs:time"/>
<xs:element name="offsetTime" type="xs:time"/>
<xs:element name="offsetDateTime" type="xs:dateTime"/>
<xs:element name="zonedDateTime" type="xs:dateTime"/>
- <!-- -->
- <xs:element name="timestamp" type="xs:dateTime"/>
- <xs:element name="enum" type="enumDto"/>
+
+ <!-- complex types -->
<xs:element name="enum" type="enumDto"/>
<xs:element name="reference" type="oidDto"/>
<xs:element name="collection" type="collectionDto"/>
+ <xs:element name="composite" type="typedTupleDto"/>
<xs:element name="blob" type="blobDto"/>
<xs:element name="clob" type="clobDto"/>
-
- <xs:element name="composite" type="typedTupleDto"/>
</xs:choice>
</xs:complexType>
@@ -139,9 +136,14 @@
</xs:sequence>
</xs:complexType>
-
<xs:simpleType name="valueType">
<xs:restriction base="xs:string">
+ <xs:enumeration value="void">
+ <xs:annotation>
+ <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
<xs:enumeration value="string"/>
<xs:enumeration value="byte"/>
<xs:enumeration value="short"/>
@@ -153,27 +155,20 @@
<xs:enumeration value="char"/>
<xs:enumeration value="bigInteger"/>
<xs:enumeration value="bigDecimal"/>
- <xs:enumeration value="javaSqlTimestamp"/>
- <!-- java.time -->
+ <!-- temporal types -->
<xs:enumeration value="localDateTime"/>
<xs:enumeration value="localDate"/>
<xs:enumeration value="localTime"/>
<xs:enumeration value="offsetDateTime"/>
<xs:enumeration value="offsetTime"/>
<xs:enumeration value="zonedDateTime"/>
- <!-- -->
+ <!-- complex types -->
<xs:enumeration value="enum"/>
<xs:enumeration value="reference"/>
<xs:enumeration value="collection"/>
+ <xs:enumeration value="composite"/>
<xs:enumeration value="blob"/>
<xs:enumeration value="clob"/>
- <xs:enumeration value="void">
- <xs:annotation>
- <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="composite"/>
</xs:restriction>
</xs:simpleType>
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index a56f16e..13d60e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -83,7 +83,7 @@ import org.apache.isis.core.metamodel.valuesemantics.temporal.legacy.JavaSqlDate
import org.apache.isis.core.metamodel.valuesemantics.temporal.legacy.JavaSqlTimeStampValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.temporal.legacy.JavaSqlTimeValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.temporal.legacy.JavaUtilDateValueSemantics;
-import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsRegistryDefault;
+import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsResolverDefault;
import org.apache.isis.core.security.IsisModuleCoreSecurity;
@Configuration
@@ -103,7 +103,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
ClassSubstitutorForCollections.class,
ClassSubstitutorForDomainObjects.class,
ClassSubstitutorRegistry.class,
- ValueSemanticsRegistryDefault.class,
+ ValueSemanticsResolverDefault.class,
// Value Semantics (built-in defaults)
BooleanValueSemantics.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
index 7fdcb36..6f81556 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -28,6 +28,8 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import static java.util.Objects.requireNonNull;
+
import org.springframework.core.env.AbstractEnvironment;
import org.apache.isis.applib.services.factory.FactoryService;
@@ -48,6 +50,7 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.applib.services.xactn.TransactionState;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.base._NullSafe;
@@ -62,7 +65,6 @@ import org.apache.isis.core.config.beans.IsisBeanTypeClassifier;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistryDefault;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
-import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.execution.MemberExecutorService;
import org.apache.isis.core.metamodel.facets.object.icon.ObjectIconService;
@@ -87,12 +89,10 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
import org.apache.isis.core.metamodel.valuesemantics.BigDecimalValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.URLValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics;
-import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsRegistryDefault;
+import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsResolverDefault;
import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
-import static java.util.Objects.requireNonNull;
-
import lombok.Builder;
import lombok.Getter;
import lombok.NonNull;
@@ -218,7 +218,7 @@ implements MetaModelContext {
repositoryService,
transactionService,
transactionState,
- getValueSemanticsRegistry(),
+ getValueSemanticsResolver(),
new ObjectMementoService_forTesting(),
new BigDecimalValueSemantics(),
new URLValueSemantics(),
@@ -296,12 +296,12 @@ implements MetaModelContext {
return translationService;
}
- private ValueSemanticsRegistry valueSemanticsRegistry;
- private ValueSemanticsRegistry getValueSemanticsRegistry(){
- if(valueSemanticsRegistry==null) {
- valueSemanticsRegistry = new ValueSemanticsRegistryDefault(valueSemantics, getTranslationService());
+ private ValueSemanticsResolver valueSemanticsResolver;
+ private ValueSemanticsResolver getValueSemanticsResolver(){
+ if(valueSemanticsResolver==null) {
+ valueSemanticsResolver = new ValueSemanticsResolverDefault(valueSemantics, getTranslationService());
}
- return valueSemanticsRegistry;
+ return valueSemanticsResolver;
}
private final IsisBeanFactoryPostProcessorForSpring isisBeanFactoryPostProcessorForSpring =
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
index 0b79bed..0a58659 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
@@ -23,9 +23,9 @@ import org.apache.isis.applib.value.semantics.DefaultsProvider;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -93,7 +93,7 @@ extends FacetFactoryAbstract {
.create(valueIfAny, cls, facetHolder));
final Can<ValueSemanticsProvider> valueSemantics = _Casts.uncheckedCast(
- getValueSemanticsRegistry().selectValueSemantics(cls));
+ getValueSemanticsResolver().selectValueSemantics(cls));
if(!valueSemantics.isEmpty()) {
addAllFacetsForValueSemantics(valueSemantics, facetHolder);
@@ -166,7 +166,7 @@ extends FacetFactoryAbstract {
// -- DEPENDENCIES
@Getter(lazy = true, value = AccessLevel.PRIVATE)
- private final ValueSemanticsRegistry valueSemanticsRegistry =
- getServiceRegistry().lookupServiceElseFail(ValueSemanticsRegistry.class);
+ private final ValueSemanticsResolver valueSemanticsResolver =
+ getServiceRegistry().lookupServiceElseFail(ValueSemanticsResolver.class);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 3d91977..c16b75c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -45,6 +45,7 @@ import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
import org.apache.isis.applib.services.menu.MenuBarsService;
import org.apache.isis.applib.services.metamodel.BeanSort;
import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.assertions._Assert;
import org.apache.isis.commons.internal.base._Blackhole;
@@ -59,7 +60,6 @@ import org.apache.isis.core.config.beans.IsisBeanTypeClassifier;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
-import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
import org.apache.isis.core.metamodel.commons.ClassUtil;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -79,7 +79,7 @@ import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificati
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorAbstract;
import org.apache.isis.core.metamodel.specloader.validator.ValidationFailure;
import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
-import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsRegistryDefault;
+import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsResolverDefault;
import lombok.Getter;
import lombok.NonNull;
@@ -115,7 +115,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
private final IsisBeanTypeClassifier isisBeanTypeClassifier;
private final IsisBeanTypeRegistry isisBeanTypeRegistry;
private final ClassSubstitutorRegistry classSubstitutorRegistry;
- private final Provider<ValueSemanticsRegistry> valueSemanticsRegistry;
+ private final Provider<ValueSemanticsResolver> valueSemanticsResolver;
private final ProgrammingModel programmingModel;
private final PostProcessor postProcessor;
@@ -142,7 +142,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
final ServiceRegistry serviceRegistry,
final IsisBeanTypeClassifier isisBeanTypeClassifier,
final IsisBeanTypeRegistry isisBeanTypeRegistry,
- final Provider<ValueSemanticsRegistry> valueTypeRegistry,
+ final Provider<ValueSemanticsResolver> valueTypeRegistry,
final ClassSubstitutorRegistry classSubstitutorRegistry) {
this(
programmingModelService.getProgrammingModel(),
@@ -162,7 +162,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
final ServiceRegistry serviceRegistry,
final IsisBeanTypeClassifier isisBeanTypeClassifier,
final IsisBeanTypeRegistry isisBeanTypeRegistry,
- final Provider<ValueSemanticsRegistry> valueSemanticsRegistry,
+ final Provider<ValueSemanticsResolver> valueSemanticsRegistry,
final ClassSubstitutorRegistry classSubstitutorRegistry) {
this.programmingModel = programmingModel;
this.postProcessor = new PostProcessor(programmingModel);
@@ -171,7 +171,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
this.serviceRegistry = serviceRegistry;
this.isisBeanTypeClassifier = isisBeanTypeClassifier;
this.isisBeanTypeRegistry = isisBeanTypeRegistry;
- this.valueSemanticsRegistry = valueSemanticsRegistry;
+ this.valueSemanticsResolver = valueSemanticsRegistry;
this.classSubstitutorRegistry = classSubstitutorRegistry;
}
@@ -187,7 +187,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
val instance = new SpecificationLoaderDefault(
programmingModel, isisConfiguration, isisSystemEnvironment,
serviceRegistry, isisBeanTypeClassifier, isisBeanTypeRegistry,
- ()->new ValueSemanticsRegistryDefault(List.of(), null),
+ ()->new ValueSemanticsResolverDefault(List.of(), null),
new ClassSubstitutorRegistry(List.of(
//new ClassSubstitutorForDomainObjects(),
new ClassSubstitutorForCollections(),
@@ -240,7 +240,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
Stream
.concat(
isisBeanTypeRegistry.getDiscoveredValueTypes().stream(),
- valueSemanticsRegistry.get().streamClassesWithValueSemantics())
+ valueSemanticsResolver.get().streamClassesWithValueSemantics())
.forEach(valueType -> {
val valueSpec = loadSpecification(valueType, IntrospectionState.NOT_INTROSPECTED);
if(valueSpec!=null) {
@@ -389,7 +389,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
.lookupIntrospectableType(type)
.map(IsisBeanMetaData::getBeanSort)
.orElseGet(()->
- valueSemanticsRegistry.get().hasValueSemantics(type)
+ valueSemanticsResolver.get().hasValueSemantics(type)
? BeanSort.VALUE
: isisBeanTypeClassifier.classify(type)
.getBeanSort()
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
index 959a823..fb448be 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
@@ -45,7 +45,7 @@ extends TemporalSemanticsAdapter<Timestamp, LocalDateTime> {
@Override
public ValueType getSchemaValueType() {
- return ValueType.JAVA_SQL_TIMESTAMP;
+ return ValueType.LOCAL_DATE_TIME;
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
similarity index 95%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsRegistryDefault.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
index dcad314..e05c857 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
@@ -32,21 +32,21 @@ import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
import org.apache.isis.core.metamodel.valuesemantics.EnumValueSemanticsAbstract;
import lombok.RequiredArgsConstructor;
@Service
-@Named("isis.metamodel.ValueSemanticsRegistryDefault")
+@Named("isis.metamodel.ValueSemanticsResolverDefault")
@javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
@RequiredArgsConstructor(onConstructor_ = {@Inject})
-public class ValueSemanticsRegistryDefault
-implements ValueSemanticsRegistry {
+public class ValueSemanticsResolverDefault
+implements ValueSemanticsResolver {
// managed by Spring
private final List<ValueSemanticsProvider<?>> valueSemanticsProviders;
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java
index 142ba6d..0c8f396 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java
@@ -29,11 +29,11 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.applib.util.schema.CommandDtoUtils;
import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.util.schema.DtoContext;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -66,9 +66,9 @@ import lombok.val;
@Qualifier("Default")
public class CommandDtoFactoryDefault implements CommandDtoFactory {
- @Inject BookmarkService bookmarkService;
- @Inject ClockService clockService;
- @Inject UserService userService;
+ @Inject private DtoContext dtoContext;
+ @Inject private ClockService clockService;
+ @Inject private UserService userService;
@Override
public CommandDto asCommandDto(
@@ -132,13 +132,13 @@ public class CommandDtoFactoryDefault implements CommandDtoFactory {
.orElseThrow(_Exceptions::unexpectedCodeReach),
paramTypeOrElementType,
arg,
- bookmarkService)
+ dtoContext)
: CommonDtoUtils.newParamDto(
actionParameter.getStaticFriendlyName()
.orElseThrow(_Exceptions::unexpectedCodeReach),
paramTypeOrElementType,
arg,
- bookmarkService);
+ dtoContext);
CommandDtoUtils.parametersFor(actionDto)
.getParameter()
@@ -159,7 +159,7 @@ public class CommandDtoFactoryDefault implements CommandDtoFactory {
val valueType = valueSpec.getCorrespondingClass();
val newValue = CommonDtoUtils.newValueWithTypeDto(
- valueType, UnwrapUtil.single(valueAdapter), bookmarkService);
+ valueType, UnwrapUtil.single(valueAdapter), dtoContext);
propertyDto.setNewValue(newValue);
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/DtoContextDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/DtoContextDefault.java
new file mode 100644
index 0000000..af3dbdb
--- /dev/null
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/DtoContextDefault.java
@@ -0,0 +1,29 @@
+package org.apache.isis.core.runtimeservices.command;
+
+import javax.annotation.Priority;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.util.schema.DtoContext;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Component
+@Named("isis.runtimeservices.DtoContextDefault")
+@Priority(PriorityPrecedence.MIDPOINT)
+@Qualifier("Default")
+@Getter(onMethod_ = {@Override})
+@RequiredArgsConstructor
+public class DtoContextDefault implements DtoContext {
+
+ @Inject private BookmarkService bookmarkService;
+ @Inject private ValueSemanticsResolver valueSemanticsResolver;
+
+}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java
index 0753692..9fd5bd2 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java
@@ -29,11 +29,11 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactn.InteractionProvider;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.applib.util.schema.DtoContext;
import org.apache.isis.applib.util.schema.InteractionDtoUtils;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.assertions._Assert;
@@ -68,7 +68,7 @@ import lombok.val;
public class InteractionDtoFactoryDefault implements InteractionDtoFactory {
@Inject private CommandDtoFactory commandDtoServiceInternal;
- @Inject private BookmarkService bookmarkService;
+ @Inject private DtoContext dtoContext;
@Inject private javax.inject.Provider<InteractionProvider> interactionProviderProvider;
@Inject private UserService userService;
@@ -114,7 +114,7 @@ public class InteractionDtoFactoryDefault implements InteractionDtoFactory {
final Class<?> returnType = returnSpec.getCorrespondingClass();
InteractionDtoUtils.addReturn(
- actionInvocationDto, returnType, resultPojo, bookmarkService);
+ actionInvocationDto, returnType, resultPojo, dtoContext);
return actionInvocationDto;
}
@@ -147,7 +147,4 @@ public class InteractionDtoFactoryDefault implements InteractionDtoFactory {
);
}
-
-
-
}
diff --git a/regressiontests/stable-value/src/test/java/org/apache/isis/testdomain/value/ValueSemanticsTest.java b/regressiontests/stable-value/src/test/java/org/apache/isis/testdomain/value/ValueSemanticsTest.java
index c3b7663..5b2e80d 100644
--- a/regressiontests/stable-value/src/test/java/org/apache/isis/testdomain/value/ValueSemanticsTest.java
+++ b/regressiontests/stable-value/src/test/java/org/apache/isis/testdomain/value/ValueSemanticsTest.java
@@ -46,9 +46,9 @@ import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.util.schema.CommonDtoUtils;
import org.apache.isis.applib.value.Password;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.interactions.managed.ActionInteraction;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -188,14 +188,14 @@ class ValueSemanticsTest {
@Test @Disabled
void fullTypeCoverage() {
- valueSemanticsRegistry.streamClassesWithValueSemantics()
+ valueSemanticsResolver.streamClassesWithValueSemantics()
.forEach(valueType->System.err.printf("%s%n", valueType.getName()));
final Set<Class<?>> valueTypesCovered = valueTypeExampleProvider.streamExamples()
.map(ValueTypeExample::getValueType)
.collect(Collectors.toSet());
- final Set<Class<?>> valueTypesKnown = valueSemanticsRegistry.streamClassesWithValueSemantics()
+ final Set<Class<?>> valueTypesKnown = valueSemanticsResolver.streamClassesWithValueSemantics()
.collect(Collectors.toSet());
val valueTypesNotCovered = _Sets.minus(valueTypesKnown, valueTypesCovered);
@@ -219,7 +219,7 @@ class ValueSemanticsTest {
@Inject SpecificationLoader specLoader;
@Inject InteractionService interactionService;
@Inject ServiceInjector serviceInjector;
- @Inject ValueSemanticsRegistry valueSemanticsRegistry;
+ @Inject ValueSemanticsResolver valueSemanticsResolver;
Stream<Arguments> provideValueTypeExamples() {
return valueTypeExampleProvider.streamScenarios()
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
index 840b319..79304d2 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
@@ -26,26 +26,26 @@ import java.util.Objects;
import org.apache.wicket.util.convert.ConversionException;
import org.assertj.core.util.Arrays;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
import org.apache.isis.applib.clock.VirtualClock;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.functional.ThrowingRunnable;
import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.security._testing.InteractionService_forTesting;
import org.apache.isis.viewer.wicket.model.converter.ConverterBasedOnValueSemantics;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import lombok.AllArgsConstructor;
import lombok.NonNull;
import lombok.val;
@@ -89,7 +89,7 @@ public class ConverterTester<T extends Serializable> {
mmc.getServiceInjector().injectServicesInto(valueSemantics);
// pre-requisites for testing
- val reg = mmc.getServiceRegistry().lookupServiceElseFail(ValueSemanticsRegistry.class);
+ val reg = mmc.getServiceRegistry().lookupServiceElseFail(ValueSemanticsResolver.class);
assertNotNull(reg.selectValueSemantics(valueType));
assertTrue(reg.selectValueSemantics(valueType).isNotEmpty());
assertNotNull(mmc.getServiceRegistry().lookupServiceElseFail(InteractionService.class));