You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/05/13 18:14:10 UTC
[28/50] [abbrv] isis git commit: ISIS-1389: completing up making
CommandDto / InteractionDto and Interaction consistent.
ISIS-1389: completing up making CommandDto / InteractionDto and Interaction consistent.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/18c6b495
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/18c6b495
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/18c6b495
Branch: refs/heads/master
Commit: 18c6b4951d1277e1789a0a7c6eec12ebadd4a21b
Parents: 3e199c9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed May 4 07:33:16 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed May 4 07:33:16 2016 +0100
----------------------------------------------------------------------
...d-dto-vs-interaction-dto-vs-interaction.xlsx | Bin 0 -> 13776 bytes
.../isis/applib/services/iactn/Interaction.java | 21 +-
.../isis/schema/utils/CommandDtoUtils.java | 159 +----------
.../isis/schema/utils/CommonDtoUtils.java | 279 +++++++++++++++----
.../isis/schema/utils/InteractionDtoUtils.java | 196 +++----------
.../isis/schema/utils/CommonDtoUtilsTest.java | 43 +--
.../org/apache/isis/schema/utils/Roundtrip.java | 41 +--
.../background/BackgroundCommandExecution.java | 11 +-
.../CommandDtoServiceInternalDefault.java | 14 +-
.../InteractionDtoServiceInternalDefault.java | 8 +-
.../PublishingServiceInternalDefault.java | 4 +-
.../org/apache/isis/schema/cmd/cmd-1.0.xsd | 17 +-
.../apache/isis/schema/common/common-1.0.xsd | 20 +-
.../org/apache/isis/schema/ixn/ixn-1.0.xsd | 26 +-
14 files changed, 378 insertions(+), 461 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/adocs/documentation/src/main/excel/command-dto-vs-interaction-dto-vs-interaction.xlsx
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/excel/command-dto-vs-interaction-dto-vs-interaction.xlsx b/adocs/documentation/src/main/excel/command-dto-vs-interaction-dto-vs-interaction.xlsx
new file mode 100644
index 0000000..ca26513
Binary files /dev/null and b/adocs/documentation/src/main/excel/command-dto-vs-interaction-dto-vs-interaction.xlsx differ
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
index ea95a6c..8aad3d3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.schema.common.v1.InteractionType;
import org.apache.isis.schema.common.v1.PeriodDto;
import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
-import org.apache.isis.schema.ixn.v1.InteractionExecutionDto;
+import org.apache.isis.schema.ixn.v1.MemberExecutionDto;
import org.apache.isis.schema.ixn.v1.PropertyEditDto;
import org.apache.isis.schema.utils.jaxbadapters.JavaSqlTimestampXmlGregorianCalendarAdapter;
@@ -227,7 +227,6 @@ public class Interaction implements HasTransactionId {
* Pops the top-most {@link org.apache.isis.applib.services.eventbus.ActionDomainEvent}
* from the stack of events held by the command.
* </p>
- * @param completedAt
*/
@Programmatic
private Execution pop(final Timestamp completedAt) {
@@ -315,7 +314,7 @@ public class Interaction implements HasTransactionId {
* Represents an action invocation/property edit as a node in a call-stack execution graph, with sub-interactions
* being made by way of the {@link WrapperFactory}).
*/
- public static class Execution<T extends InteractionExecutionDto, E extends AbstractDomainEvent<?>> {
+ public static class Execution<T extends MemberExecutionDto, E extends AbstractDomainEvent<?>> {
//region > fields, constructor
@@ -351,17 +350,17 @@ public class Interaction implements HasTransactionId {
//region > parent, children
- private final List<Execution> children = Lists.newArrayList();
- private Execution parent;
+ private final List<Execution<?,?>> children = Lists.newArrayList();
+ private Execution<?,?> parent;
/**
* The action/property that invoked this action/property edit (if any).
*/
- public Execution getParent() {
+ public Execution<?,?> getParent() {
return parent;
}
- public void setParent(final Execution parent) {
+ public void setParent(final Execution<?,?> parent) {
this.parent = parent;
if(parent != null) {
parent.children.add(this);
@@ -371,7 +370,7 @@ public class Interaction implements HasTransactionId {
/**
* The actions/property edits made in turn via the {@link WrapperFactory}.
*/
- public List<Execution> getChildren() {
+ public List<Execution<?,?>> getChildren() {
return Collections.unmodifiableList(children);
}
//endregion
@@ -511,11 +510,11 @@ public class Interaction implements HasTransactionId {
return;
}
final PeriodDto periodDto = periodDtoFor(this.dto);
- periodDto.setStart(JavaSqlTimestampXmlGregorianCalendarAdapter.print(getStartedAt()));
- periodDto.setComplete(JavaSqlTimestampXmlGregorianCalendarAdapter.print(getCompletedAt()));
+ periodDto.setStartedAt(JavaSqlTimestampXmlGregorianCalendarAdapter.print(getStartedAt()));
+ periodDto.setCompletedAt(JavaSqlTimestampXmlGregorianCalendarAdapter.print(getCompletedAt()));
}
- private static PeriodDto periodDtoFor(final InteractionExecutionDto executionDto) {
+ private static PeriodDto periodDtoFor(final MemberExecutionDto executionDto) {
PeriodDto timings = executionDto.getTimings();
if(timings == null) {
timings = new PeriodDto();
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
index b0c3c61..8e867be 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
@@ -23,11 +23,8 @@ import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
-import java.math.BigDecimal;
-import java.math.BigInteger;
import java.net.URL;
import java.nio.charset.Charset;
-import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -36,18 +33,7 @@ import javax.xml.bind.Unmarshaller;
import com.google.common.io.Resources;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.joda.time.LocalTime;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.schema.cmd.v1.CommandDto;
-import org.apache.isis.schema.cmd.v1.ParamDto;
-import org.apache.isis.schema.common.v1.OidDto;
-import org.apache.isis.schema.common.v1.ValueDto;
-import org.apache.isis.schema.common.v1.ValueType;
public final class CommandDtoUtils {
@@ -86,17 +72,17 @@ public final class CommandDtoUtils {
return fromXml(new StringReader(s));
}
- public static String toXml(final CommandDto aimDto) {
+ public static String toXml(final CommandDto commandDto) {
final CharArrayWriter caw = new CharArrayWriter();
- toXml(aimDto, caw);
+ toXml(commandDto, caw);
return caw.toString();
}
- public static void toXml(final CommandDto aimDto, final Writer writer) {
+ public static void toXml(final CommandDto commandDto, final Writer writer) {
try {
final Marshaller m = getJaxbContext().createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
- m.marshal(aimDto, writer);
+ m.marshal(commandDto, writer);
} catch (JAXBException e) {
throw new RuntimeException(e);
}
@@ -104,141 +90,4 @@ public final class CommandDtoUtils {
//endregion
- static ValueDto argumentFor(final ParamDto paramDto) {
- ValueDto valueDto = paramDto.getArgument();
- if(valueDto == null) {
- valueDto = new ValueDto();
- paramDto.setArgument(valueDto);
- }
- return valueDto;
- }
-
- /**
- * @param params
- * @param parameterName
- * @param parameterType - to determine the value type (if any)
- * @param arg - either a value type (possibly boxed primitive), or a reference type
- * @param bookmarkService - used if not a value type
- */
- public static void addParamArg(
- final List<ParamDto> params,
- final String parameterName,
- final Class<?> parameterType,
- final Object arg,
- final BookmarkService bookmarkService) {
-
- ParamDto paramDto = newParamDto(parameterName, parameterType, arg, bookmarkService);
- params.add(paramDto);
- }
-
- public static ParamDto newParamDto(
- final String parameterName,
- final Class<?> parameterType,
- final Object arg,
- final BookmarkService bookmarkService) {
-
- ParamDto paramDto = newParamDto(parameterName, parameterType, arg);
- if(paramDto != null) {
-
- if (arg != null) {
- final ValueDto valueDto = argumentFor(paramDto);
- CommonDtoUtils.setValue(valueDto, parameterType, arg);
- }
-
- } else {
-
- // none of the supported value types
- final Bookmark bookmark = arg instanceof Bookmark
- ? (Bookmark)arg
- : bookmarkService.bookmarkFor(arg);
-
- paramDto = newParamDto(parameterName, ValueType.REFERENCE, bookmark);
-
- if (bookmark != null) {
- final ValueDto valueDto = argumentFor(paramDto);
-
- OidDto argValue = CommonDtoUtils.asOidDto(bookmark);
- valueDto.setReference(argValue);
- }
- }
- return paramDto;
- }
-
- private static ParamDto newParamDto(final String parameterName, final Class<?> parameterType, final Object arg) {
- ParamDto paramDto = null;
- if(parameterType == String.class) {
- paramDto = newParamDto(parameterName, ValueType.STRING, arg);
- } else
- if(parameterType == byte.class || parameterType == Byte.class) {
- paramDto = newParamDto(parameterName, ValueType.BYTE, arg);
- } else
- if(parameterType == short.class || parameterType == Short.class) {
- paramDto = newParamDto(parameterName, ValueType.SHORT, arg);
- }else
- if(parameterType == int.class || parameterType == Integer.class) {
- paramDto = newParamDto(parameterName, ValueType.INT, arg);
- }else
- if(parameterType == long.class || parameterType == Long.class) {
- paramDto = newParamDto(parameterName, ValueType.LONG, arg);
- }else
- if(parameterType == char.class || parameterType == Character.class) {
- paramDto = newParamDto(parameterName, ValueType.CHAR, arg);
- }else
- if(parameterType == boolean.class || parameterType == Boolean.class) {
- paramDto = newParamDto(parameterName, ValueType.BOOLEAN, arg);
- }else
- if(parameterType == float.class || parameterType == Float.class) {
- paramDto = newParamDto(parameterName, ValueType.FLOAT, arg);
- }else
- if(parameterType == double.class || parameterType == Double.class) {
- paramDto = newParamDto(parameterName, ValueType.DOUBLE, arg);
- }else
- if(parameterType == BigInteger.class) {
- paramDto = newParamDto(parameterName, ValueType.BIG_INTEGER, arg);
- }else
- if(parameterType == BigDecimal.class) {
- paramDto = newParamDto(parameterName, ValueType.BIG_DECIMAL, arg);
- }else
- if(parameterType == DateTime.class) {
- paramDto = newParamDto(parameterName, ValueType.JODA_DATE_TIME, arg);
- }else
- if(parameterType == LocalDateTime.class) {
- paramDto = newParamDto(parameterName, ValueType.JODA_LOCAL_DATE_TIME, arg);
- }else
- if(parameterType == LocalDate.class) {
- paramDto = newParamDto(parameterName, ValueType.JODA_LOCAL_DATE, arg);
- }else
- if(parameterType == LocalTime.class) {
- paramDto = newParamDto(parameterName, ValueType.JODA_LOCAL_TIME, arg);
- }else
- if(parameterType.isEnum()) {
- paramDto = newParamDto(parameterName, ValueType.ENUM, arg);
- }
- return paramDto;
- }
-
- private static ParamDto newParamDto(final String parameterName, final ValueType parameterType, final Object value) {
- final ParamDto paramDto = newParamDto(parameterName, parameterType);
- paramDto.setNull(value == null);
- return paramDto;
- }
-
- private static ParamDto newParamDto(
- final String parameterName,
- final ValueType parameterType) {
- final ParamDto argDto = new ParamDto();
- argDto.setParameterName(parameterName);
- argDto.setParameterType(parameterType);
- return argDto;
- }
-
- public static Object paramArgOf(final ParamDto paramDto) {
- if(paramDto.isNull()) {
- return null;
- }
- final ValueType parameterType = paramDto.getParameterType();
- final ValueDto argument = paramDto.getArgument();
- return CommonDtoUtils.getValue(argument, parameterType);
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
index 3959f41..22376ed 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
@@ -21,10 +21,9 @@ package org.apache.isis.schema.utils;
import java.math.BigDecimal;
import java.math.BigInteger;
-import javax.annotation.Nullable;
-
import com.google.common.base.Function;
import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableMap;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
@@ -32,11 +31,14 @@ import org.joda.time.LocalDateTime;
import org.joda.time.LocalTime;
import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.schema.cmd.v1.ParamDto;
import org.apache.isis.schema.common.v1.EnumDto;
import org.apache.isis.schema.common.v1.OidDto;
import org.apache.isis.schema.common.v1.ValueDto;
import org.apache.isis.schema.common.v1.ValueType;
+import org.apache.isis.schema.common.v1.ValueWithTypeDto;
+import org.apache.isis.schema.utils.jaxbadapters.JavaSqlTimestampXmlGregorianCalendarAdapter;
import org.apache.isis.schema.utils.jaxbadapters.JodaDateTimeXMLGregorianCalendarAdapter;
import org.apache.isis.schema.utils.jaxbadapters.JodaLocalDateTimeXMLGregorianCalendarAdapter;
import org.apache.isis.schema.utils.jaxbadapters.JodaLocalDateXMLGregorianCalendarAdapter;
@@ -44,13 +46,7 @@ import org.apache.isis.schema.utils.jaxbadapters.JodaLocalTimeXMLGregorianCalend
public final class CommonDtoUtils {
- public static final Function<OidDto, String> OID_DTO_2_STR = new Function<OidDto, String>() {
- @Nullable @Override
- public String apply(final OidDto oidDto) {
- final Bookmark bookmark = Bookmark.from(oidDto);
- return bookmark.toString();
- }
- };
+ //region > PARAM_DTO_TO_NAME, PARAM_DTO_TO_TYPE
public static final Function<ParamDto, String> PARAM_DTO_TO_NAME = new Function<ParamDto, String>() {
@Override public String apply(final ParamDto paramDto) {
@@ -62,84 +58,174 @@ public final class CommonDtoUtils {
return paramDto.getParameterType();
}
};
+ //endregion
- public static boolean setValue(
- final ValueDto valueDto,
- final Class<?> type,
- final Object val) {
- if(type == String.class) {
+ //region > asValueType
+ private final static ImmutableMap<Class<?>, ValueType> valueTypeByClass =
+ new ImmutableMap.Builder<Class<?>, ValueType>()
+ .put(String.class, ValueType.STRING)
+ .put(byte.class, ValueType.BYTE)
+ .put(Byte.class, ValueType.BYTE)
+ .put(short.class, ValueType.SHORT)
+ .put(Short.class, ValueType.SHORT)
+ .put(int.class, ValueType.INT)
+ .put(Integer.class, ValueType.INT)
+ .put(long.class, ValueType.LONG)
+ .put(Long.class, ValueType.LONG)
+ .put(char.class, ValueType.CHAR)
+ .put(Character.class, ValueType.CHAR)
+ .put(boolean.class, ValueType.BOOLEAN)
+ .put(Boolean.class, ValueType.BOOLEAN)
+ .put(float.class, ValueType.FLOAT)
+ .put(Float.class, ValueType.FLOAT)
+ .put(double.class, ValueType.DOUBLE)
+ .put(Double.class, ValueType.DOUBLE)
+ .put(BigInteger.class, ValueType.BIG_INTEGER)
+ .put(BigDecimal.class, ValueType.BIG_DECIMAL)
+ .put(DateTime.class, ValueType.JODA_DATE_TIME)
+ .put(LocalDateTime.class, ValueType.JODA_LOCAL_DATE_TIME)
+ .put(LocalDate.class, ValueType.JODA_LOCAL_DATE)
+ .put(LocalTime.class, ValueType.JODA_LOCAL_TIME)
+ .put(java.sql.Timestamp.class, ValueType.JAVA_SQL_TIMESTAMP)
+ .build();
+
+ public static ValueType asValueType(final Class<?> type) {
+ final ValueType valueType = valueTypeByClass.get(type);
+ if (valueType != null) {
+ return valueType;
+ }
+ if (type.isEnum()) {
+ return ValueType.ENUM;
+ }
+ // assume reference otherwise
+ return ValueType.REFERENCE;
+ }
+ //endregion
+
+ //region > newValueDto
+
+ public static ValueDto newValueDto(
+ final ValueType valueType,
+ final Object val,
+ final BookmarkService bookmarkService) {
+
+ if(val == null) {
+ return null;
+ }
+
+ final ValueDto valueDto = new ValueDto();
+ switch (valueType) {
+ case STRING: {
final String argValue = (String) val;
valueDto.setString(argValue);
- } else
- if(type == byte.class || type == Byte.class) {
+ return valueDto;
+ }
+ case BYTE: {
final Byte argValue = (Byte) val;
valueDto.setByte(argValue);
- } else
- if(type == short.class || type == Short.class) {
+ return valueDto;
+ }
+ case SHORT: {
final Short argValue = (Short) val;
valueDto.setShort(argValue);
- }else
- if(type == int.class || type == Integer.class) {
+ return valueDto;
+ }
+ case INT: {
final Integer argValue = (Integer) val;
valueDto.setInt(argValue);
- }else
- if(type == long.class || type == Long.class) {
+ return valueDto;
+ }
+ case LONG: {
final Long argValue = (Long) val;
valueDto.setLong(argValue);
- }else
- if(type == char.class || type == Character.class) {
+ return valueDto;
+ }
+ case CHAR: {
final Character argValue = (Character) val;
valueDto.setChar("" + argValue);
- }else
- if(type == boolean.class || type == Boolean.class) {
+ return valueDto;
+ }
+ case BOOLEAN: {
final Boolean argValue = (Boolean) val;
valueDto.setBoolean(argValue);
- }else
- if(type == float.class || type == Float.class) {
+ return valueDto;
+ }
+ case FLOAT: {
final Float argValue = (Float) val;
valueDto.setFloat(argValue);
- }else
- if(type == double.class || type == Double.class) {
+ return valueDto;
+ }
+ case DOUBLE: {
final Double argValue = (Double) val;
valueDto.setDouble(argValue);
- }else
- if(type == BigInteger.class) {
+ return valueDto;
+ }
+ case BIG_INTEGER: {
final BigInteger argValue = (BigInteger) val;
valueDto.setBigInteger(argValue);
- }else
- if(type == BigDecimal.class) {
+ return valueDto;
+ }
+ case BIG_DECIMAL: {
final BigDecimal argValue = (BigDecimal) val;
valueDto.setBigDecimal(argValue);
- }else
- if(type == DateTime.class) {
+ return valueDto;
+ }
+ case JODA_DATE_TIME: {
final DateTime argValue = (DateTime) val;
valueDto.setDateTime(JodaDateTimeXMLGregorianCalendarAdapter.print(argValue));
- }else
- if(type == LocalDateTime.class) {
+ return valueDto;
+ }
+ case JODA_LOCAL_DATE_TIME: {
final LocalDateTime argValue = (LocalDateTime) val;
valueDto.setLocalDateTime(JodaLocalDateTimeXMLGregorianCalendarAdapter.print(argValue));
- }else
- if(type == LocalDate.class) {
+ return valueDto;
+ }
+ case JODA_LOCAL_DATE: {
final LocalDate argValue = (LocalDate) val;
valueDto.setLocalDate(JodaLocalDateXMLGregorianCalendarAdapter.print(argValue));
- }else
- if(type == LocalTime.class) {
+ return valueDto;
+ }
+ case JODA_LOCAL_TIME: {
final LocalTime argValue = (LocalTime) val;
valueDto.setLocalTime(JodaLocalTimeXMLGregorianCalendarAdapter.print(argValue));
- }else
- if(type.isEnum()) {
+ return valueDto;
+ }
+ case JAVA_SQL_TIMESTAMP: {
+ final java.sql.Timestamp argValue = (java.sql.Timestamp) val;
+ valueDto.setTimestamp(JavaSqlTimestampXmlGregorianCalendarAdapter.print(argValue));
+ return valueDto;
+ }
+ case ENUM: {
final Enum argValue = (Enum) val;
final EnumDto enumDto = new EnumDto();
valueDto.setEnum(enumDto);
enumDto.setEnumType(argValue.getClass().getName());
enumDto.setEnumName(argValue.name());
- }else
- {
- // none of the supported value types
- return false;
+ return valueDto;
+ }
+ case REFERENCE: {
+ final Bookmark bookmark = val instanceof Bookmark
+ ? (Bookmark) val
+ : bookmarkService.bookmarkFor(val);
+
+ if (bookmark != null) {
+ OidDto argValue = bookmark != null ? bookmark.toOidDto() : null;
+ valueDto.setReference(argValue);
+ }
+ return valueDto;
+ }
+ case VOID:
+ return null;
+ default:
+ // should never happen; all cases are listed above
+ throw new IllegalArgumentException(String.format(
+ "newValueDto(): do not recognize valueType %s (likely a framework error)",
+ valueType));
}
- return true;
}
+ //endregion
+
+ //region > getValue (from valueDto)
public static <T> T getValue(
final ValueDto valueDto,
@@ -169,6 +255,8 @@ public final class CommonDtoUtils {
return (T) valueDto.getBigDecimal();
case BIG_INTEGER:
return (T) valueDto.getBigInteger();
+ case JAVA_SQL_TIMESTAMP:
+ return (T) JavaSqlTimestampXmlGregorianCalendarAdapter.parse(valueDto.getDateTime());
case JODA_DATE_TIME:
return (T) JodaDateTimeXMLGregorianCalendarAdapter.parse(valueDto.getDateTime());
case JODA_LOCAL_DATE:
@@ -180,15 +268,21 @@ public final class CommonDtoUtils {
case ENUM:
final EnumDto enumDto = valueDto.getEnum();
final String enumType = enumDto.getEnumType();
- final Class<? extends Enum> enumClass = loadClass3(enumType);
+ final Class<? extends Enum> enumClass = loadClassElseThrow(enumType);
return (T) Enum.valueOf(enumClass, enumDto.getEnumName());
case REFERENCE:
return (T) valueDto.getReference();
+ case VOID:
+ return null;
+ default:
+ // should never happen; all cases are listed above
+ throw new IllegalArgumentException(String.format(
+ "getValueDto(...): do not recognize valueType %s (likely a framework error)",
+ valueType));
}
- throw new IllegalStateException("Value type was not recognised (possible bug)");
}
- static <T> Class<T> loadClass3(final String enumType) {
+ private static <T> Class<T> loadClassElseThrow(final String enumType) {
try {
return (Class<T>) loadClass(enumType);
} catch (ClassNotFoundException e) {
@@ -196,7 +290,7 @@ public final class CommonDtoUtils {
}
}
- static Class<?> loadClass(String className) throws ClassNotFoundException {
+ private static Class<?> loadClass(String className) throws ClassNotFoundException {
ClassLoader ccl = Thread.currentThread().getContextClassLoader();
if(ccl == null) {
return loadClass(className, (ClassLoader)null);
@@ -209,13 +303,86 @@ public final class CommonDtoUtils {
}
}
- static Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
+ private static Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
return classLoader == null?Class.forName(className):Class.forName(className, true, classLoader);
}
+ //endregion
+
+ //region > newValueWithTypeDto
+
+
+ public static ValueWithTypeDto newValueWithTypeDto(
+ final Class<?> type,
+ final Object val,
+ final BookmarkService bookmarkService) {
+
+ final ValueWithTypeDto valueWithTypeDto = new ValueWithTypeDto();
+
+ final ValueType valueType = asValueType(type);
+ valueWithTypeDto.setType(valueType);
+
+ final ValueDto valueDto = newValueDto(valueType, val, bookmarkService);
+ valueWithTypeDto.setValue(valueDto);
- public static OidDto asOidDto(final Bookmark reference) {
- return reference != null ? reference.toOidDto() : null;
+ return valueWithTypeDto;
}
+ //endregion
+
+ //region > getValue (from ValueWithTypeDto)
+
+ public static <T> T getValue(final ValueWithTypeDto valueWithTypeDto) {
+ if(valueWithTypeDto.isNull()) {
+ return null;
+ }
+ final ValueType type = valueWithTypeDto.getType();
+ final ValueDto value = valueWithTypeDto.getValue();
+ return CommonDtoUtils.getValue(value, type);
+ }
+
+
+ //endregion
+
+
+ //region > newParamDto
+
+ public static ParamDto newParamDto(
+ final String parameterName,
+ final Class<?> parameterType,
+ final Object arg,
+ final BookmarkService bookmarkService) {
+
+ final ParamDto paramDto = new ParamDto();
+
+ paramDto.setParameterName(parameterName);
+
+ final ValueType valueType = CommonDtoUtils.asValueType(parameterType);
+ paramDto.setParameterType(valueType);
+
+ final ValueDto valueDto =
+ CommonDtoUtils.newValueDto(valueType, arg, bookmarkService);
+ paramDto.setArgument(valueDto);
+
+ paramDto.setNull(arg == null);
+
+ return paramDto;
+ }
+ //endregion
+
+ //region > getValue (from ParamDto)
+
+ public static <T> T getValue(final ParamDto paramDto) {
+ if(paramDto.isNull()) {
+ return null;
+ }
+ final ValueType parameterType = paramDto.getParameterType();
+ final ValueDto argument = paramDto.getArgument();
+ return CommonDtoUtils.getValue(argument, parameterType);
+ }
+
+ //endregion
+
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
index 883ab8d..9a42150 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
@@ -24,11 +24,8 @@ import java.io.PrintStream;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
-import java.math.BigDecimal;
-import java.math.BigInteger;
import java.net.URL;
import java.nio.charset.Charset;
-import java.sql.Timestamp;
import java.util.Collections;
import java.util.List;
@@ -41,11 +38,6 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.io.Resources;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.joda.time.LocalTime;
-
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.schema.cmd.v1.ParamDto;
@@ -54,12 +46,11 @@ import org.apache.isis.schema.common.v1.OidDto;
import org.apache.isis.schema.common.v1.PeriodDto;
import org.apache.isis.schema.common.v1.ValueDto;
import org.apache.isis.schema.common.v1.ValueType;
+import org.apache.isis.schema.common.v1.ValueWithTypeDto;
import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
import org.apache.isis.schema.ixn.v1.InteractionDto;
-import org.apache.isis.schema.ixn.v1.InteractionExecutionDto;
+import org.apache.isis.schema.ixn.v1.MemberExecutionDto;
import org.apache.isis.schema.ixn.v1.PropertyEditDto;
-import org.apache.isis.schema.ixn.v1.ValueWithTypeDto;
-import org.apache.isis.schema.utils.jaxbadapters.JavaSqlTimestampXmlGregorianCalendarAdapter;
public final class InteractionDtoUtils {
@@ -134,12 +125,11 @@ public final class InteractionDtoUtils {
final String targetTitle,
final String actionIdentifier,
final List<ParamDto> parameterDtos,
- final ValueWithTypeDto returnDto,
final String user) {
final InteractionDto interactionDto = newInteractionDto(transactionId);
- final InteractionExecutionDto executionDto = newActionInvocation(
+ final MemberExecutionDto executionDto = newActionInvocation(
sequence, targetBookmark, targetTitle,
actionIdentifier, parameterDtos,
user, transactionId);
@@ -161,7 +151,7 @@ public final class InteractionDtoUtils {
final InteractionDto interactionDto = newInteractionDto(transactionId);
- final InteractionExecutionDto executionDto = newPropertyEdit(
+ final MemberExecutionDto executionDto = newPropertyEdit(
sequence, targetBookmark, targetTitle,
propertyIdentifier, newValueDto,
user, transactionId);
@@ -184,7 +174,7 @@ public final class InteractionDtoUtils {
final String user,
final String transactionId) {
- return (ActionInvocationDto) newInteractionExecutionDto(
+ return (ActionInvocationDto) newMemberExecutionDto(
InteractionType.ACTION_INVOCATION, transactionId, sequence,
targetBookmark, targetTitle, actionIdentifier,
parameterDtos, null,
@@ -199,14 +189,14 @@ public final class InteractionDtoUtils {
final ValueWithTypeDto newValueDto,
final String user,
final String transactionId) {
- return (PropertyEditDto) newInteractionExecutionDto(
+ return (PropertyEditDto) newMemberExecutionDto(
InteractionType.PROPERTY_EDIT, transactionId, sequence,
targetBookmark, targetTitle, propertyIdentifier,
null, newValueDto,
user);
}
- private static InteractionExecutionDto newInteractionExecutionDto(
+ private static MemberExecutionDto newMemberExecutionDto(
final InteractionType type,
final String transactionId,
final int sequence,
@@ -217,7 +207,7 @@ public final class InteractionDtoUtils {
final ValueWithTypeDto newValueDto,
final String user) {
- final InteractionExecutionDto executionDto;
+ final MemberExecutionDto executionDto;
if(type == InteractionType.ACTION_INVOCATION) {
final ActionInvocationDto invocation = new ActionInvocationDto();
@@ -254,7 +244,7 @@ public final class InteractionDtoUtils {
public static void addExecution(
final InteractionDto interactionDto,
- final InteractionExecutionDto executionDto) {
+ final MemberExecutionDto executionDto) {
interactionDto.setExecution(executionDto);
executionDto.setInteractionType(
@@ -266,18 +256,6 @@ public final class InteractionDtoUtils {
//endregion
- //region > addTimings
- public static void addTimings(
- final InteractionExecutionDto executionDto,
- final Timestamp startedAt,
- final Timestamp completedAt) {
- final PeriodDto timings = timingsFor(executionDto);
- timings.setStart(JavaSqlTimestampXmlGregorianCalendarAdapter.print(startedAt));
- timings.setComplete(JavaSqlTimestampXmlGregorianCalendarAdapter.print(completedAt));
- }
-
- //endregion
-
//region > invocationFor, actionFor, timingsFor
private static ActionInvocationDto actionInvocationFor(final InteractionDto interactionDto) {
@@ -308,7 +286,7 @@ public final class InteractionDtoUtils {
return invocationDto.getParameters().getParameter();
}
- private static PeriodDto timingsFor(final InteractionExecutionDto executionDto) {
+ private static PeriodDto timingsFor(final MemberExecutionDto executionDto) {
PeriodDto timings = executionDto.getTimings();
if(timings == null) {
timings = new PeriodDto();
@@ -322,15 +300,17 @@ public final class InteractionDtoUtils {
//region > addParamArg
public static void addParamArg(
- final InteractionDto ixn,
+ final InteractionDto interactionDto,
final String parameterName,
final Class<?> parameterType,
final Object arg,
final BookmarkService bookmarkService) {
- final List<ParamDto> params = parametersFor(ixn);
- CommandDtoUtils.addParamArg(params, parameterName, parameterType, arg, bookmarkService);
+ final List<ParamDto> params = parametersFor(interactionDto);
+ ParamDto paramDto = CommonDtoUtils.newParamDto(parameterName, parameterType, arg, bookmarkService);
+ params.add(paramDto);
}
+ //endregion
//region > addReturn
@@ -340,41 +320,16 @@ public final class InteractionDtoUtils {
* @param result - either a value type (possibly boxed primitive), or a reference type
* @param bookmarkService - used if not a value type
*/
- // REVIEW: done in InteractionDtoServiceInternalDefault, I believe
- private static void addReturn(
+ public static void addReturn(
final ActionInvocationDto invocationDto,
final Class<?> returnType,
final Object result, final BookmarkService bookmarkService) {
- final ValueWithTypeDto returnDto = returnValueFor(invocationDto);
- boolean isValueType = setValue(returnDto, returnType, result);
- if(!isValueType) {
- addReturnReference(bookmarkService.bookmarkFor(result), invocationDto);
- }
+ final ValueWithTypeDto returned = CommonDtoUtils
+ .newValueWithTypeDto(returnType, result, bookmarkService);
+ invocationDto.setReturned(returned);
}
-
- // REVIEW: done in InteractionDtoServiceInternalDefault, I believe
- private static void addReturnReference(final Bookmark bookmark, final ActionInvocationDto invocationDto) {
- final ValueWithTypeDto returnedDto = returnValueFor(invocationDto);
- OidDto oidDto = CommonDtoUtils.asOidDto(bookmark);
- ValueDto value = new ValueDto();
- value.setReference(oidDto);
- returnedDto.setValue(value);
- returnedDto.setType(ValueType.REFERENCE);
- }
-
- // REVIEW: done in InteractionDtoServiceInternalDefault, I believe
- private static ValueWithTypeDto returnValueFor(final ActionInvocationDto invocationDto) {
- ValueWithTypeDto returned = invocationDto.getReturned();
- if(returned == null) {
- returned = new ValueWithTypeDto();
- invocationDto.setReturned(returned);
- }
- return returned;
- }
-
//endregion
-
//region > getParameters, getParameterNames, getParameterTypes
public static List<ParamDto> getParameters(final ActionInvocationDto ai) {
final List<ParamDto> params = parametersFor(ai);
@@ -398,9 +353,14 @@ public final class InteractionDtoUtils {
public static List<ValueType> getParameterTypes(final ActionInvocationDto ai) {
return immutableList(Iterables.transform(getParameters(ai), CommonDtoUtils.PARAM_DTO_TO_TYPE));
}
+
+ private static <T> List<T> immutableList(final Iterable<T> iterable) {
+ return Collections.unmodifiableList(Lists.newArrayList(iterable));
+ }
+
//endregion
- //region > getParameter, getParameterName, getParameterType
+ //region > getParameter, getParameterName, getParameterType, getParameterArgument
public static ParamDto getParameter(final ActionInvocationDto ai, final int paramNum) {
final int parameterNumber = getNumberOfParameters(ai);
if(paramNum > parameterNumber) {
@@ -410,17 +370,19 @@ public final class InteractionDtoUtils {
return parameters.get(paramNum);
}
- public static ValueDto getParameterArg(final ActionInvocationDto ai, final int paramNum) {
+ public static ValueDto getParameterArgument(final ActionInvocationDto ai, final int paramNum) {
final ParamDto paramDto = getParameter(ai, paramNum);
- return CommandDtoUtils.argumentFor(paramDto);
+ return paramDto.getArgument();
}
-
public static String getParameterName(final ActionInvocationDto ai, final int paramNum) {
- return CommonDtoUtils.PARAM_DTO_TO_NAME.apply(getParameter(ai, paramNum));
+ final ParamDto paramDto = getParameter(ai, paramNum);
+ return paramDto.getParameterName();
}
+
public static ValueType getParameterType(final ActionInvocationDto ai, final int paramNum) {
- return CommonDtoUtils.PARAM_DTO_TO_TYPE.apply(getParameter(ai, paramNum));
+ final ParamDto paramDto = getParameter(ai, paramNum);
+ return paramDto.getParameterType();
}
public static boolean isNull(final ActionInvocationDto ai, int paramNum) {
final ParamDto paramDto = getParameter(ai, paramNum);
@@ -428,96 +390,15 @@ public final class InteractionDtoUtils {
}
//endregion
- //region > getArg
- public static <T> T getArg(final ActionInvocationDto ai, int paramNum, Class<T> cls) {
+ //region > getParameterArgValue
+ public static <T> T getParameterArgValue(final ActionInvocationDto ai, int paramNum, Class<T> inferClass) {
final ParamDto paramDto = getParameter(ai, paramNum);
- if(paramDto.isNull()) {
- return null;
- }
- final ValueDto valueDto = CommandDtoUtils.argumentFor(paramDto);
- final ValueType parameterType = paramDto.getParameterType();
- return CommonDtoUtils.getValue(valueDto, parameterType);
- }
-
- //endregion
-
-
- private static <T> List<T> immutableList(final Iterable<T> iterable) {
- return Collections.unmodifiableList(Lists.newArrayList(iterable));
+ return CommonDtoUtils.getValue(paramDto);
}
-
- public static boolean setValue(
- final ValueWithTypeDto returnDto,
- final Class<?> type,
- final Object val) {
- if(val == null) {
- returnDto.setNull(true);
- return true;
- } else {
- returnDto.setNull(false);
- final ValueDto valueDto = new ValueDto();
- returnDto.setValue(valueDto);
- setValueType(returnDto, type);
- return CommonDtoUtils.setValue(valueDto, type, val);
- }
- }
-
- private static boolean setValueType(
- final ValueWithTypeDto returnDto,
- final Class<?> type) {
- if(type == String.class) {
- returnDto.setType(ValueType.STRING);
- } else
- if(type == byte.class || type == Byte.class) {
- returnDto.setType(ValueType.BYTE);
- } else
- if(type == short.class || type == Short.class) {
- returnDto.setType(ValueType.SHORT);
- }else
- if(type == int.class || type == Integer.class) {
- returnDto.setType(ValueType.INT);
- }else
- if(type == long.class || type == Long.class) {
- returnDto.setType(ValueType.LONG);
- }else
- if(type == char.class || type == Character.class) {
- returnDto.setType(ValueType.CHAR);
- }else
- if(type == boolean.class || type == Boolean.class) {
- returnDto.setType(ValueType.BOOLEAN);
- }else
- if(type == float.class || type == Float.class) {
- returnDto.setType(ValueType.FLOAT);
- }else
- if(type == double.class || type == Double.class) {
- returnDto.setType(ValueType.DOUBLE);
- }else
- if(type == BigInteger.class) {
- returnDto.setType(ValueType.BIG_INTEGER);
- }else
- if(type == BigDecimal.class) {
- returnDto.setType(ValueType.BIG_DECIMAL);
- }else
- if(type == DateTime.class) {
- returnDto.setType(ValueType.JODA_DATE_TIME);
- }else
- if(type == LocalDateTime.class) {
- returnDto.setType(ValueType.JODA_LOCAL_DATE_TIME);
- }else
- if(type == LocalDate.class) {
- returnDto.setType(ValueType.JODA_LOCAL_DATE);
- }else
- if(type == LocalTime.class) {
- returnDto.setType(ValueType.JODA_LOCAL_TIME);
- }else
- {
- // none of the supported value types
- return false;
- }
- return true;
+ public static <T> T getParameterArgValue(final ActionInvocationDto ai, int paramNum) {
+ final ParamDto paramDto = getParameter(ai, paramNum);
+ return CommonDtoUtils.getValue(paramDto);
}
-
-
//endregion
//region > debugging
@@ -527,5 +408,4 @@ public final class InteractionDtoUtils {
//endregion
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/applib/src/test/java/org/apache/isis/schema/utils/CommonDtoUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/applib/src/test/java/org/apache/isis/schema/utils/CommonDtoUtilsTest.java b/core/applib/src/test/java/org/apache/isis/schema/utils/CommonDtoUtilsTest.java
index 2b45322..b07dc43 100644
--- a/core/applib/src/test/java/org/apache/isis/schema/utils/CommonDtoUtilsTest.java
+++ b/core/applib/src/test/java/org/apache/isis/schema/utils/CommonDtoUtilsTest.java
@@ -18,30 +18,31 @@
*/
package org.apache.isis.schema.utils;
+import org.jmock.auto.Mock;
+import org.junit.Assert;
+import org.junit.Rule;
import org.junit.Test;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.schema.common.v1.ValueDto;
import org.apache.isis.schema.common.v1.ValueType;
-import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
public class CommonDtoUtilsTest {
- @Test
- public void enums() throws Exception {
-
- ValueDto valueDto = new ValueDto();
- boolean b = CommonDtoUtils.setValue(valueDto, Vertical.class, Vertical.DOWN);
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
- assertThat(b, is(true));
+ @Mock
+ private BookmarkService mockBookmarkService;
- Object value = CommonDtoUtils.getValue(valueDto, ValueType.ENUM);
- assertThat(value, is(notNullValue()));
-
- assertThat((Vertical)value, is(equalTo(Vertical.DOWN)));
+ @Test
+ public void enums() throws Exception {
+ test(Vertical.DOWN);
}
enum Horizontal {
@@ -50,17 +51,25 @@ public class CommonDtoUtilsTest {
@Test
public void nested_enums() throws Exception {
+ test(Horizontal.LEFT);
+ }
+
+ private void test(final Enum<?> enumVal) {
- ValueDto valueDto = new ValueDto();
- boolean b = CommonDtoUtils.setValue(valueDto, Horizontal.class, Horizontal.LEFT);
+ // when
+ final ValueType valueType = CommonDtoUtils.asValueType(enumVal.getClass());
- assertThat(b, is(true));
+ // then
+ assertThat(valueType, is(ValueType.ENUM));
- Object value = CommonDtoUtils.getValue(valueDto, ValueType.ENUM);
+ // and when
+ final ValueDto valueDto = CommonDtoUtils.newValueDto(valueType, enumVal, mockBookmarkService);
+
+ // then
+ Object value = CommonDtoUtils.getValue(valueDto, valueType);
assertThat(value, is(notNullValue()));
- assertThat((Horizontal)value, is(equalTo(Horizontal.LEFT)));
+ Assert.assertEquals(value, enumVal);
}
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/applib/src/test/java/org/apache/isis/schema/utils/Roundtrip.java
----------------------------------------------------------------------
diff --git a/core/applib/src/test/java/org/apache/isis/schema/utils/Roundtrip.java b/core/applib/src/test/java/org/apache/isis/schema/utils/Roundtrip.java
index a0aa7e1..127e771 100644
--- a/core/applib/src/test/java/org/apache/isis/schema/utils/Roundtrip.java
+++ b/core/applib/src/test/java/org/apache/isis/schema/utils/Roundtrip.java
@@ -36,9 +36,9 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.schema.cmd.v1.ParamDto;
import org.apache.isis.schema.common.v1.OidDto;
import org.apache.isis.schema.common.v1.ValueType;
+import org.apache.isis.schema.common.v1.ValueWithTypeDto;
import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
import org.apache.isis.schema.ixn.v1.InteractionDto;
-import org.apache.isis.schema.ixn.v1.ValueWithTypeDto;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.nullValue;
@@ -62,7 +62,8 @@ public class Roundtrip {
final InteractionDto interactionDto = InteractionDtoUtils.newInteractionDtoWithActionInvocation(
UUID.randomUUID().toString(),
1,
- new Bookmark("CUS", "12345"), "John Customer", "com.mycompany.Customer#placeOrder", Arrays.<ParamDto>asList(), returnDto, "freddyUser"
+ new Bookmark("CUS", "12345"), "John Customer", "com.mycompany.Customer#placeOrder", Arrays.<ParamDto>asList(),
+ "freddyUser"
);
InteractionDtoUtils.addParamArg(interactionDto, "aString", String.class, "Fred", null);
@@ -141,19 +142,19 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aString"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.STRING));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, String.class), is("Fred"));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, String.class), is("Fred"));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullString"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.STRING));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(true));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, String.class), is(nullValue()));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, String.class), is(nullValue()));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aByte"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.BYTE));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, Byte.class), is((byte) 123));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, Byte.class), is((byte) 123));
param++;
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.BYTE));
@@ -164,7 +165,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aShort"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.SHORT));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, Short.class), is((short) 32123));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, Short.class), is((short) 32123));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullShort"));
@@ -175,7 +176,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("anInt"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.INT));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, int.class), is((int) 123454321));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, int.class), is((int) 123454321));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullInt"));
@@ -186,7 +187,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aLong"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.LONG));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, long.class), is((long) 1234567654321L));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, long.class), is((long) 1234567654321L));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullLong"));
@@ -197,7 +198,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aFloat"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.FLOAT));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, float.class), is((float) 12345.6789F));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, float.class), is((float) 12345.6789F));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullFloat"));
@@ -208,7 +209,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aDouble"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.DOUBLE));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, double.class), is(12345678.90123));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, double.class), is(12345678.90123));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullDouble"));
@@ -219,7 +220,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aBoolean"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.BOOLEAN));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, boolean.class), is(true));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, boolean.class), is(true));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullBoolean"));
@@ -230,7 +231,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aChar"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.CHAR));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, char.class), is('x'));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, char.class), is('x'));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullChar"));
@@ -241,7 +242,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aBigInteger"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.BIG_INTEGER));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, BigInteger.class), is(new java.math.BigInteger("12345678901234567890")));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, BigInteger.class), is(new java.math.BigInteger("12345678901234567890")));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullBigInteger"));
@@ -252,7 +253,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aBigDecimal"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.BIG_DECIMAL));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, BigDecimal.class), is(new java.math.BigDecimal("12345678901234567890")));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, BigDecimal.class), is(new java.math.BigDecimal("12345678901234567890")));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullBigDecimal"));
@@ -265,7 +266,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
// bit hacky... regular comparison fails but toString() works... must be some additional data that differs, not sure what tho'
assertThat(
- InteractionDtoUtils.getArg(invocationDto, param, DateTime.class).toString(), is(new DateTime(2015, 5, 23, 9, 54, 1).toString()));
+ InteractionDtoUtils.getParameterArgValue(invocationDto, param, DateTime.class).toString(), is(new DateTime(2015, 5, 23, 9, 54, 1).toString()));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullJodaDateTime"));
@@ -276,7 +277,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aJodaLocalDate"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.JODA_LOCAL_DATE));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- final LocalDate actual = InteractionDtoUtils.getArg(invocationDto, param, LocalDate.class);
+ final LocalDate actual = InteractionDtoUtils.getParameterArgValue(invocationDto, param, LocalDate.class);
final LocalDate expected = new LocalDate(2015, 5, 23);
assertThat(actual, equalTo(expected));
@@ -289,7 +290,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aJodaLocalDateTime"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.JODA_LOCAL_DATE_TIME));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, LocalDateTime.class), is(new org.joda.time.LocalDateTime(2015, 5, 23, 9, 54, 1)));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, LocalDateTime.class), is(new org.joda.time.LocalDateTime(2015, 5, 23, 9, 54, 1)));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullJodaLocalDateTime"));
@@ -301,7 +302,7 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.JODA_LOCAL_TIME));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
assertThat(
- InteractionDtoUtils.getArg(invocationDto, param, LocalTime.class), is(new org.joda.time.LocalTime(9, 54, 1)));
+ InteractionDtoUtils.getParameterArgValue(invocationDto, param, LocalTime.class), is(new org.joda.time.LocalTime(9, 54, 1)));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullJodaLocalTime"));
@@ -312,8 +313,8 @@ public class Roundtrip {
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("aReference"));
assertThat(InteractionDtoUtils.getParameterType(invocationDto, param), Matchers.is(ValueType.REFERENCE));
assertThat(InteractionDtoUtils.isNull(invocationDto, param), is(false));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, OidDto.class).getObjectType(), is("ORD"));
- assertThat(InteractionDtoUtils.getArg(invocationDto, param, OidDto.class).getObjectIdentifier(), is("12345"));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, OidDto.class).getObjectType(), is("ORD"));
+ assertThat(InteractionDtoUtils.getParameterArgValue(invocationDto, param, OidDto.class).getObjectIdentifier(), is("12345"));
param++;
assertThat(InteractionDtoUtils.getParameterName(invocationDto, param), is("nullReference"));
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
index 2eb5b4e..8a123ee 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -54,7 +54,8 @@ import org.apache.isis.schema.cmd.v1.ParamDto;
import org.apache.isis.schema.cmd.v1.PropertyDto;
import org.apache.isis.schema.common.v1.InteractionType;
import org.apache.isis.schema.common.v1.OidDto;
-import org.apache.isis.schema.utils.CommandDtoUtils;
+import org.apache.isis.schema.common.v1.ValueWithTypeDto;
+import org.apache.isis.schema.utils.CommonDtoUtils;
/**
* Intended to be used as a base class for executing queued up {@link Command background action}s.
@@ -266,8 +267,8 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
}
protected ObjectAdapter newValueAdapterFor(final PropertyDto propertyDto) {
- final ParamDto paramDto = propertyDto.getNewValue();
- final Object arg = CommandDtoUtils.paramArgOf(paramDto);
+ final ValueWithTypeDto newValue = propertyDto.getNewValue();
+ final Object arg = CommonDtoUtils.getValue(newValue);
return adapterFor(arg);
}
@@ -327,12 +328,12 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
}
private ObjectAdapter[] argAdaptersFor(final ActionDto actionDto) {
- final List<ParamDto> params = actionDto.getParameters();
+ final List<ParamDto> params = actionDto.getParameters().getParameter();
final List<ObjectAdapter> args = Lists.newArrayList(
Iterables.transform(params, new Function<ParamDto, ObjectAdapter>() {
@Override
public ObjectAdapter apply(final ParamDto paramDto) {
- final Object arg = CommandDtoUtils.paramArgOf(paramDto);
+ final Object arg = CommonDtoUtils.getValue(paramDto);
return adapterFor(arg);
}
})
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
index c64c18f..c55b347 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -50,7 +50,8 @@ import org.apache.isis.schema.cmd.v1.CommandDto;
import org.apache.isis.schema.cmd.v1.ParamDto;
import org.apache.isis.schema.cmd.v1.PropertyDto;
import org.apache.isis.schema.common.v1.InteractionType;
-import org.apache.isis.schema.utils.CommandDtoUtils;
+import org.apache.isis.schema.common.v1.ValueWithTypeDto;
+import org.apache.isis.schema.utils.CommonDtoUtils;
@DomainService(
nature = NatureOfService.DOMAIN
@@ -202,9 +203,10 @@ public class CommandDtoServiceInternalDefault implements CommandDtoServiceIntern
final Class<?> paramType = actionParameter.getSpecification().getCorrespondingClass();
final ObjectAdapter argAdapter = argAdapters[paramNum];
final Object arg = argAdapter != null? argAdapter.getObject(): null;
- final List<ParamDto> parameters = actionDto.getParameters();
+ final List<ParamDto> parameters = actionDto.getParameters().getParameter();
- ParamDto paramDto = CommandDtoUtils.newParamDto(parameterName, paramType, arg, bookmarkService);
+ ParamDto paramDto = CommonDtoUtils.newParamDto(
+ parameterName, paramType, arg, bookmarkService);
parameters.add(paramDto);
}
}
@@ -221,9 +223,9 @@ public class CommandDtoServiceInternalDefault implements CommandDtoServiceIntern
final ObjectSpecification valueSpec = property.getSpecification();
final Class<?> valueType = valueSpec.getCorrespondingClass();
- final ParamDto paramDto = CommandDtoUtils.newParamDto(
- "newValue", valueType, ObjectAdapter.Util.unwrap(valueAdapter), bookmarkService);
- propertyDto.setNewValue(paramDto);
+ final ValueWithTypeDto newValue = CommonDtoUtils.newValueWithTypeDto(
+ valueType, ObjectAdapter.Util.unwrap(valueAdapter), bookmarkService);
+ propertyDto.setNewValue(newValue);
}
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ixn/InteractionDtoServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
index 14b096f..abac5a5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
@@ -43,7 +43,6 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.schema.cmd.v1.ActionDto;
import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
import org.apache.isis.schema.ixn.v1.PropertyEditDto;
-import org.apache.isis.schema.ixn.v1.ValueWithTypeDto;
import org.apache.isis.schema.utils.InteractionDtoUtils;
@DomainService(nature = NatureOfService.DOMAIN)
@@ -81,7 +80,7 @@ public class InteractionDtoServiceInternalDefault implements InteractionDtoServi
// InteractionDtoUtils.addReturn(invocationDto, returnType, resultPojo, bookmarkService);
return InteractionDtoUtils.newActionInvocation(
nextEventSequence, targetBookmark, targetTitle,
- actionDto.getMemberIdentifier(), actionDto.getParameters(), currentUser,
+ actionDto.getMemberIdentifier(), actionDto.getParameters().getParameter(), currentUser,
transactionIdStr);
}
@@ -92,11 +91,10 @@ public class InteractionDtoServiceInternalDefault implements InteractionDtoServi
final Object resultPojo) {
final ObjectSpecification returnSpec = objectAction.getReturnType();
-
final Class<?> returnType = returnSpec.getCorrespondingClass();
- final ValueWithTypeDto returnDto = new ValueWithTypeDto();
- InteractionDtoUtils.setValue(returnDto, returnType, resultPojo);
+ InteractionDtoUtils.addReturn(
+ actionInvocationDto, returnType, resultPojo, bookmarkService);
return actionInvocationDto;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publishing/PublishingServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publishing/PublishingServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publishing/PublishingServiceInternalDefault.java
index 6340285..d0f1661 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publishing/PublishingServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publishing/PublishingServiceInternalDefault.java
@@ -69,7 +69,7 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.schema.ixn.v1.InteractionDto;
-import org.apache.isis.schema.ixn.v1.InteractionExecutionDto;
+import org.apache.isis.schema.ixn.v1.MemberExecutionDto;
import org.apache.isis.schema.utils.InteractionDtoUtils;
/**
@@ -323,7 +323,7 @@ public class PublishingServiceInternalDefault implements PublishingServiceIntern
// TODO: this is where we could now stitch together a deep call graph from the execution.getDto()s
//
- final InteractionExecutionDto executionDto = execution.getDto();
+ final MemberExecutionDto executionDto = execution.getDto();
final String transactionId = commandContext.getCommand().getTransactionId().toString();
final InteractionDto interactionDto = InteractionDtoUtils.newInteractionDto(transactionId);
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.0.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.0.xsd b/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.0.xsd
index 4be3695..5d6cee9 100644
--- a/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.0.xsd
+++ b/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.0.xsd
@@ -100,9 +100,18 @@
<xs:complexContent>
<xs:extension base="memberDto">
<xs:sequence>
- <xs:sequence minOccurs="0" maxOccurs="unbounded">
- <xs:element name="parameters" type="paramDto"/>
- </xs:sequence>
+ <xs:element name="parameters" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The set of parameter/argument values for this action invocation.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="parameter" type="paramDto"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
@@ -116,7 +125,7 @@
<xs:complexContent>
<xs:extension base="memberDto">
<xs:sequence>
- <xs:element name="newValue" type="paramDto"/>
+ <xs:element name="newValue" type="common:valueWithTypeDto"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/schema/src/main/resources/org/apache/isis/schema/common/common-1.0.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/common/common-1.0.xsd b/core/schema/src/main/resources/org/apache/isis/schema/common/common-1.0.xsd
index acab2cd..6ab8ae6 100644
--- a/core/schema/src/main/resources/org/apache/isis/schema/common/common-1.0.xsd
+++ b/core/schema/src/main/resources/org/apache/isis/schema/common/common-1.0.xsd
@@ -39,6 +39,7 @@
<xs:element name="localDate" type="xs:date"/>
<xs:element name="localDateTime" type="xs:dateTime"/>
<xs:element name="localTime" type="xs:time"/>
+ <xs:element name="timestamp" type="xs:dateTime"/>
<xs:element name="enum" type="enumDto"/>
<xs:element name="reference" type="oidDto"/>
</xs:choice>
@@ -80,7 +81,7 @@
<xs:enumeration value="char"/>
<xs:enumeration value="bigInteger"/>
<xs:enumeration value="bigDecimal"/>
- <xs:enumeration value="javaUtilDate"/>
+ <xs:enumeration value="javaSqlTimestamp"/>
<xs:enumeration value="jodaDateTime"/>
<xs:enumeration value="jodaLocalDate"/>
<xs:enumeration value="jodaLocalTime"/>
@@ -103,13 +104,13 @@
</xs:documentation>
</xs:annotation>
<xs:sequence>
- <xs:element name="start" type="xs:dateTime">
+ <xs:element name="startedAt" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The point in time that this period of time started.
</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element name="complete" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+ <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The point in time that this period of time completed. The duration is the difference between 'start' and 'complete'.
</xs:documentation>
@@ -118,6 +119,19 @@
</xs:sequence>
</xs:complexType>
+ <xs:complexType name="valueWithTypeDto">
+ <xs:annotation>
+ <xs:documentation>Captures both a value and its corresponding type. Used for the return value of action invocations, and for the new value in property edits.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="value" type="valueDto"/>
+ </xs:sequence>
+ <xs:attribute name="type" use="required" type="valueType"/>
+ <xs:attribute name="null" use="optional" type="xs:boolean"/>
+ </xs:complexType>
+
+
<xs:simpleType name="interactionType" >
<xs:annotation>
<xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
http://git-wip-us.apache.org/repos/asf/isis/blob/18c6b495/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.0.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.0.xsd b/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.0.xsd
index 968dd9e..6977fa5 100644
--- a/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.0.xsd
+++ b/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.0.xsd
@@ -53,13 +53,13 @@
</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element name="execution" type="interactionExecutionDto"/>
+ <xs:element name="execution" type="memberExecutionDto"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:complexType name="interactionExecutionDto" abstract="true">
+ <xs:complexType name="memberExecutionDto" abstract="true">
<xs:annotation>
<xs:documentation>Represents either an action invocation or a property edit. Is subclassed by both.
</xs:documentation>
@@ -122,7 +122,7 @@
<xs:element name="childExecutions" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
- <xs:element name="execution" type="interactionExecutionDto" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="execution" type="memberExecutionDto" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Capture interactions with other members from this interaction, using the WrapperFactory service. Typically this will be actions invoking other actions, but it is also possible for an action to perform a property edit, and - much rarer - for a property edit to invoke an action. Whatever; these interactions nest together into a call/stack, more generally into a graph.
</xs:documentation>
@@ -136,7 +136,7 @@
<xs:complexType name="actionInvocationDto">
<xs:complexContent>
- <xs:extension base="interactionExecutionDto">
+ <xs:extension base="memberExecutionDto">
<xs:sequence>
<xs:element name="parameters" minOccurs="1" maxOccurs="1">
<xs:annotation>
@@ -150,7 +150,7 @@
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="returned" type="valueWithTypeDto" minOccurs="0" maxOccurs="1">
+ <xs:element name="returned" type="common:valueWithTypeDto" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>The value returned by this action (including the type of that returned value). Either the 'returned' or the 'threw' element (from 'memberInteractionDto') will be populated.
</xs:documentation>
@@ -163,26 +163,14 @@
<xs:complexType name="propertyEditDto">
<xs:complexContent>
- <xs:extension base="interactionExecutionDto">
+ <xs:extension base="memberExecutionDto">
<xs:sequence>
- <xs:element name="newValue" type="valueWithTypeDto"/>
+ <xs:element name="newValue" type="common:valueWithTypeDto"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
- <xs:complexType name="valueWithTypeDto">
- <xs:annotation>
- <xs:documentation>Captures both a value and its corresponding type. Used for the return value of action invocations, and for the new value in property edits.
- </xs:documentation>
- </xs:annotation>
- <xs:sequence>
- <xs:element name="value" type="common:valueDto"/>
- </xs:sequence>
- <xs:attribute name="type" use="required" type="common:valueType"/>
- <xs:attribute name="null" use="optional" type="xs:boolean"/>
- </xs:complexType>
-
<xs:complexType name="exceptionDto">
<xs:annotation>
<xs:documentation>Captures any exception thrown by an action invocation. Use as the xsd:type of the 'threw' element.