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>