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:02 UTC
[20/50] [abbrv] isis git commit: ISIS-1397: changing cmd.xsd for
props to use a paramDto instead of simple valueDto for the new value (so that
it is typed). Completed BackgroundCommandExecution to support property
modifications.
ISIS-1397: changing cmd.xsd for props to use a paramDto instead of simple valueDto for the new value (so that it is typed). Completed BackgroundCommandExecution to support property modifications.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e315af85
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e315af85
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e315af85
Branch: refs/heads/master
Commit: e315af85523e46f9dfee53573c507406bc58341a
Parents: 3f2711c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon May 2 16:49:06 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon May 2 16:49:06 2016 +0100
----------------------------------------------------------------------
.../src/main/asciidoc/schema/cmd/cmd-1.0.xsd | 2 +-
.../isis/schema/utils/CommandDtoUtils.java | 115 ++++++++-----------
.../background/BackgroundCommandExecution.java | 11 +-
.../command/CommandDtoServiceDefault.java | 16 ++-
.../org/apache/isis/schema/cmd/cmd-1.0.xsd | 2 +-
5 files changed, 63 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e315af85/adocs/documentation/src/main/asciidoc/schema/cmd/cmd-1.0.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/cmd/cmd-1.0.xsd b/adocs/documentation/src/main/asciidoc/schema/cmd/cmd-1.0.xsd
index e91efc8..a5c02cf 100644
--- a/adocs/documentation/src/main/asciidoc/schema/cmd/cmd-1.0.xsd
+++ b/adocs/documentation/src/main/asciidoc/schema/cmd/cmd-1.0.xsd
@@ -111,7 +111,7 @@
<xs:complexContent>
<xs:extension base="memberDto">
<xs:sequence>
- <xs:element name="newValue" type="common:valueDto"/>
+ <xs:element name="newValue" type="paramDto"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
http://git-wip-us.apache.org/repos/asf/isis/blob/e315af85/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 f4c108d..b0c3c61 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
@@ -114,7 +114,6 @@ public final class CommandDtoUtils {
}
/**
- *
* @param params
* @param parameterName
* @param parameterType - to determine the value type (if any)
@@ -127,106 +126,94 @@ public final class CommandDtoUtils {
final Class<?> parameterType,
final Object arg,
final BookmarkService bookmarkService) {
- boolean isValueType = addParamArgValue(params, parameterName, parameterType, arg);
- if(!isValueType) {
- addParamArgReference(
- params, parameterName,
- arg instanceof Bookmark
- ? (Bookmark)arg
- : bookmarkService.bookmarkFor(arg));
- }
+
+ ParamDto paramDto = newParamDto(parameterName, parameterType, arg, bookmarkService);
+ params.add(paramDto);
}
- private static boolean addParamArgValue(
- final List<ParamDto> params,
+ public static ParamDto newParamDto(
final String parameterName,
final Class<?> parameterType,
- final Object arg) {
+ 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(params, parameterName, ValueType.STRING, arg);
+ paramDto = newParamDto(parameterName, ValueType.STRING, arg);
} else
if(parameterType == byte.class || parameterType == Byte.class) {
- paramDto = newParamDto(params, parameterName, ValueType.BYTE, arg);
+ paramDto = newParamDto(parameterName, ValueType.BYTE, arg);
} else
if(parameterType == short.class || parameterType == Short.class) {
- paramDto = newParamDto(params, parameterName, ValueType.SHORT, arg);
+ paramDto = newParamDto(parameterName, ValueType.SHORT, arg);
}else
if(parameterType == int.class || parameterType == Integer.class) {
- paramDto = newParamDto(params, parameterName, ValueType.INT, arg);
+ paramDto = newParamDto(parameterName, ValueType.INT, arg);
}else
if(parameterType == long.class || parameterType == Long.class) {
- paramDto = newParamDto(params, parameterName, ValueType.LONG, arg);
+ paramDto = newParamDto(parameterName, ValueType.LONG, arg);
}else
if(parameterType == char.class || parameterType == Character.class) {
- paramDto = newParamDto(params, parameterName, ValueType.CHAR, arg);
+ paramDto = newParamDto(parameterName, ValueType.CHAR, arg);
}else
if(parameterType == boolean.class || parameterType == Boolean.class) {
- paramDto = newParamDto(params, parameterName, ValueType.BOOLEAN, arg);
+ paramDto = newParamDto(parameterName, ValueType.BOOLEAN, arg);
}else
if(parameterType == float.class || parameterType == Float.class) {
- paramDto = newParamDto(params, parameterName, ValueType.FLOAT, arg);
+ paramDto = newParamDto(parameterName, ValueType.FLOAT, arg);
}else
if(parameterType == double.class || parameterType == Double.class) {
- paramDto = newParamDto(params, parameterName, ValueType.DOUBLE, arg);
+ paramDto = newParamDto(parameterName, ValueType.DOUBLE, arg);
}else
if(parameterType == BigInteger.class) {
- paramDto = newParamDto(params, parameterName, ValueType.BIG_INTEGER, arg);
+ paramDto = newParamDto(parameterName, ValueType.BIG_INTEGER, arg);
}else
if(parameterType == BigDecimal.class) {
- paramDto = newParamDto(params, parameterName, ValueType.BIG_DECIMAL, arg);
+ paramDto = newParamDto(parameterName, ValueType.BIG_DECIMAL, arg);
}else
if(parameterType == DateTime.class) {
- paramDto = newParamDto(params, parameterName, ValueType.JODA_DATE_TIME, arg);
+ paramDto = newParamDto(parameterName, ValueType.JODA_DATE_TIME, arg);
}else
if(parameterType == LocalDateTime.class) {
- paramDto =
- newParamDto(params, parameterName, ValueType.JODA_LOCAL_DATE_TIME, arg);
+ paramDto = newParamDto(parameterName, ValueType.JODA_LOCAL_DATE_TIME, arg);
}else
if(parameterType == LocalDate.class) {
- paramDto = newParamDto(params, parameterName, ValueType.JODA_LOCAL_DATE, arg);
+ paramDto = newParamDto(parameterName, ValueType.JODA_LOCAL_DATE, arg);
}else
if(parameterType == LocalTime.class) {
- paramDto = newParamDto(params, parameterName, ValueType.JODA_LOCAL_TIME, arg);
+ paramDto = newParamDto(parameterName, ValueType.JODA_LOCAL_TIME, arg);
}else
if(parameterType.isEnum()) {
- paramDto = newParamDto(params, parameterName, ValueType.ENUM, arg);
- }
-
- if(paramDto != null) {
- if (arg != null) {
- final ValueDto valueDto = argumentFor(paramDto);
- CommonDtoUtils.setValue(valueDto, parameterType, arg);
- }
- return true;
- }
-
- // none of the supported value types
- return false;
- }
-
- private static void addParamArgReference(
- final List<ParamDto> params,
- final String parameterName,
- final Bookmark bookmark) {
- final ParamDto paramDto =
- newParamDto(params, parameterName, ValueType.REFERENCE, bookmark);
-
- if (bookmark != null) {
- final ValueDto valueDto = argumentFor(paramDto);
-
- OidDto argValue = CommonDtoUtils.asOidDto(bookmark);
- valueDto.setReference(argValue);
+ paramDto = newParamDto(parameterName, ValueType.ENUM, arg);
}
- }
-
- private static ParamDto newParamDto(
- final List<ParamDto> params,
- final String parameterName,
- final ValueType parameterType,
- final Object value) {
- final ParamDto paramDto = newParamDto(parameterName, parameterType, value);
- params.add(paramDto);
return paramDto;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e315af85/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 c377f42..4decd5b 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,6 @@ 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.common.v1.ValueDto;
import org.apache.isis.schema.utils.CommandDtoUtils;
/**
@@ -267,13 +266,9 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
}
protected ObjectAdapter newValueAdapterFor(final PropertyDto propertyDto) {
-
- final ValueDto newValue = propertyDto.getNewValue();
- if(newValue == null) {
- return null;
- } else {
- throw new RuntimeException("NOT YET IMPLEMENTED; need to refactor cmd.xsd to take a paramDto for newValue");
- }
+ final ParamDto paramDto = propertyDto.getNewValue();
+ final Object arg = CommandDtoUtils.paramArgOf(paramDto);
+ return adapterFor(arg);
}
private static ObjectAction findActionElseNull(
http://git-wip-us.apache.org/repos/asf/isis/blob/e315af85/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceDefault.java
index 78adaba..5cbc472 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceDefault.java
@@ -51,9 +51,7 @@ 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.common.v1.ValueDto;
import org.apache.isis.schema.utils.CommandDtoUtils;
-import org.apache.isis.schema.utils.CommonDtoUtils;
/**
* Depends on an implementation of {@link BackgroundCommandService} to
@@ -210,8 +208,9 @@ public class CommandDtoServiceDefault implements CommandDtoService {
final ObjectAdapter argAdapter = argAdapters[paramNum];
final Object arg = argAdapter != null? argAdapter.getObject(): null;
final List<ParamDto> parameters = actionDto.getParameters();
- CommandDtoUtils.addParamArg(
- parameters, parameterName, paramType, arg, bookmarkService);
+
+ ParamDto paramDto = CommandDtoUtils.newParamDto(parameterName, paramType, arg, bookmarkService);
+ parameters.add(paramDto);
}
}
@@ -225,12 +224,11 @@ public class CommandDtoServiceDefault implements CommandDtoService {
propertyDto.setMemberIdentifier(actionIdentifier);
final ObjectSpecification valueSpec = property.getSpecification();
+ final Class<?> valueType = valueSpec.getCorrespondingClass();
- final ValueDto valueDto = new ValueDto();
- CommonDtoUtils.setValue(
- valueDto, valueSpec.getCorrespondingClass(), ObjectAdapter.Util.unwrap(valueAdapter));
-
- propertyDto.setNewValue(valueDto);
+ final ParamDto paramDto = CommandDtoUtils.newParamDto(
+ "newValue", valueType, ObjectAdapter.Util.unwrap(valueAdapter), bookmarkService);
+ propertyDto.setNewValue(paramDto);
}
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/e315af85/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 e91efc8..a5c02cf 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
@@ -111,7 +111,7 @@
<xs:complexContent>
<xs:extension base="memberDto">
<xs:sequence>
- <xs:element name="newValue" type="common:valueDto"/>
+ <xs:element name="newValue" type="paramDto"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>