You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/05/02 12:28:33 UTC

[isis] branch master updated: ISIS-2340: simplify

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new b590273  ISIS-2340: simplify
b590273 is described below

commit b5902733373690b42c19772fcf9f00a706e0d813
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat May 2 14:28:22 2020 +0200

    ISIS-2340: simplify
---
 .../ActionParameterDefaultsFacetViaMethod.java     | 71 +++++-----------------
 .../specimpl/ObjectActionParameterAbstract.java    | 18 +++---
 .../specimpl/PendingParameterModelHead.java        | 39 ++----------
 scripts/ci/build-demo-app.sh                       | 44 +++++++-------
 .../domainobjects/ObjectActionReprRenderer.java    |  2 +-
 5 files changed, 52 insertions(+), 122 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
index da36b91..67cea69 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
@@ -34,7 +34,9 @@ import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
 
 import lombok.NonNull;
 
-public class ActionParameterDefaultsFacetViaMethod extends ActionParameterDefaultsFacetAbstract implements ImperativeFacet {
+public class ActionParameterDefaultsFacetViaMethod 
+extends ActionParameterDefaultsFacetAbstract 
+implements ImperativeFacet {
 
     private final Method method;
     private final int paramNum;
@@ -75,65 +77,20 @@ public class ActionParameterDefaultsFacetViaMethod extends ActionParameterDefaul
 
     @Override
     public Object getDefault(@NonNull PendingParameterModel pendingArgs) {
-
-//        if(pendingArgs.isPopulated()) {
-            
-            // call with args: defaultNAct(X x, Y y, ...) 
-            
-            if(ppmFactory.isPresent()) {
-                // PPM programming model
-                return ManagedObject.InvokeUtil
-                        .invokeWithPPM(ppmFactory.get(), method, 
-                                pendingArgs.getActionTarget(), pendingArgs.getParamValues());    
-            }
             
-            // else legacy programming model
-            return ManagedObject.InvokeUtil
-                    .invokeAutofit(method, 
-                        pendingArgs.getActionTarget(), pendingArgs.getParamValues());
-//        }
-        
-        // call no-arg defaultNAct() instead
+        // call with args: defaultNAct(X x, Y y, ...) 
         
-//        if(ppmFactory.isPresent()) {
-//            // PPM programming model
-//            return ManagedObject.InvokeUtil
-//                    .invokeWithPPM(ppmFactory.get(), method, 
-//                            pendingArgs.getActionTarget(), pendingArgs.getEmptyValues());    
-//        }
-//        
-//        return ManagedObject.InvokeUtil.invoke(method, pendingArgs.getActionTarget());
+        if(ppmFactory.isPresent()) {
+            // PPM programming model
+            return ManagedObject.InvokeUtil
+                    .invokeWithPPM(ppmFactory.get(), method, 
+                            pendingArgs.getActionTarget(), pendingArgs.getParamValues());    
+        }
         
-// legacy of        
-//        // this isn't a dependent defaults situation, so just evaluate the default.
-//        if (_NullSafe.isEmpty(pendingArgs) || paramNumUpdated == null) {
-//            return ManagedObject.InvokeUtil.invokeAutofit(method, target, pendingArgs);
-//        }
-//
-//        // this could be a dependent defaults situation, but has a previous parameter been updated
-//        // that this parameter is dependent upon?
-//        final int numParams = method.getParameterCount();
-//        if (paramNumUpdated < numParams) {
-//            // in this case the parameter that was updated is previous
-//            //
-//            // eg, suppose the method is default2Foo(int, int), and the second param is updated... we want to re-evaluate
-//            // so numParams == 2, and paramNumUpdated == 1, and (paramNumUpdated < numParams) is TRUE
-//            //
-//            // conversely, if method default2Foo(int), and the second param is updated... we don't want to re-evaluate
-//            // so numParams == 1, and paramNumUpdated == 1, and (paramNumUpdated < numParams) is FALSE
-//            //
-//            return ManagedObject.InvokeUtil.invokeAutofit(method, target, pendingArgs);
-//        }
-//
-//        // otherwise, just return the arguments that are already known; we don't want to recompute the default
-//        // because if we did then this would trample over any pending changes already made by the end-user.
-//        val argPojo = pendingArgs.stream()
-//                .skip(paramNum)
-//                .findFirst()
-//                .map(ManagedObject::getPojo)
-//                .orElse(null) ;
-//                
-//        return argPojo;
+        // else support legacy programming model, call any-arg defaultNAct(...)
+        return ManagedObject.InvokeUtil
+                .invokeAutofit(method, 
+                    pendingArgs.getActionTarget(), pendingArgs.getParamValues());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index d615d0d..34c9574 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -61,6 +61,7 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 import static org.apache.isis.core.commons.internal.base._With.requires;
 
+import lombok.NonNull;
 import lombok.val;
 
 public abstract class ObjectActionParameterAbstract 
@@ -270,20 +271,17 @@ implements ObjectActionParameter, FacetHolder.Delegating {
     // -- Defaults
 
     @Override
+    @NonNull
     public ManagedObject getDefault(
-            final PendingParameterModel pendingArgs) {
+            @NonNull final PendingParameterModel pendingArgs) {
         
+        val paramSpec = getSpecification();
         val defaultsFacet = getFacet(ActionParameterDefaultsFacet.class);
-        if (defaultsFacet != null) {
-            final Object defaultValue = defaultsFacet.getDefault(pendingArgs);
-            if (defaultValue == null) {
-                // it's possible that even though there is a default facet, when
-                // invoked it is unable to return a default.
-                return null;
-            }
-            return getObjectManager().adapt(defaultValue);
+        if (defaultsFacet != null && !defaultsFacet.isFallback()) {
+            final Object paramValuePojo = defaultsFacet.getDefault(pendingArgs);
+            return ManagedObject.of(paramSpec, paramValuePojo);
         }
-        return null;
+        return ManagedObject.of(paramSpec, null);
     }
 
     // helpers
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/PendingParameterModelHead.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/PendingParameterModelHead.java
index e1a50eb..42052cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/PendingParameterModelHead.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/PendingParameterModelHead.java
@@ -19,13 +19,10 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.Objects;
-import java.util.function.Function;
 
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
 import lombok.Getter;
@@ -82,13 +79,13 @@ public class PendingParameterModelHead {
     public PendingParameterModel defaults() {
         
         final int maxIterations = getAction().getParameterCount();
-        val paramDefaultProviders = getParameterDefaultProviders();
+        
+        val params = getAction().getParameters();
         
         // init defaults with empty pending-parameter values 
         val emptyModel = emptyModel();
-        val initialDefaults = paramDefaultProviders
-        .map(paramDefaultProvider->paramDefaultProvider
-                .getDefault(emptyModel));
+        val initialDefaults = params
+                .map(param->param.getDefault(emptyModel));
         
         // fixed point search
         
@@ -96,8 +93,8 @@ public class PendingParameterModelHead {
         for(int i=0; i<maxIterations; ++i) {
             val ppm = model(pl);
             old_pl = pl;
-            pl = paramDefaultProviders
-                    .map(paramDefaultProvider->paramDefaultProvider.getDefault(ppm));
+            pl = params
+                    .map(param->param.getDefault(ppm));
             
             if(equals(old_pl, pl)) {
                 // fixed point found, return the latest iteration 
@@ -113,30 +110,6 @@ public class PendingParameterModelHead {
 
     // -- HELPER
     
-    @RequiredArgsConstructor(staticName = "of")
-    private static final class ParameterDefaultProvider {
-        
-        final ObjectSpecification paramSpec;
-        final Function<PendingParameterModel, Object> defaultPojoProvider;
-        
-        ManagedObject getDefault(PendingParameterModel ppm) {
-            val paramValuePojo = defaultPojoProvider.apply(ppm);
-            return ManagedObject.of(paramSpec, paramValuePojo);
-        }
-    }
-    
-    private Can<ParameterDefaultProvider> getParameterDefaultProviders() {
-        return getAction().getParameters().stream()
-        .map(objectActionParameter->{
-            val paramSpec = objectActionParameter.getSpecification();
-            val paramDefaultFacet = objectActionParameter.getFacet(ActionParameterDefaultsFacet.class);
-            return (paramDefaultFacet != null && !paramDefaultFacet.isFallback()) 
-                        ? ParameterDefaultProvider.of(paramSpec, ppm->paramDefaultFacet.getDefault(ppm))
-                        : ParameterDefaultProvider.of(paramSpec, ppm->null);
-        })
-        .collect(Can.toCan());
-    }
-    
     private boolean equals(Can<ManagedObject> left, Can<ManagedObject> right) {
         // equal length is guaranteed as used only local to this class
         val leftIt = left.iterator();
diff --git a/scripts/ci/build-demo-app.sh b/scripts/ci/build-demo-app.sh
index fbf726c..9d364cc 100644
--- a/scripts/ci/build-demo-app.sh
+++ b/scripts/ci/build-demo-app.sh
@@ -49,11 +49,11 @@ echo ""
 #
 # update version (but just for the modules we need to build)
 #
-if [ ! -z "$REVISION" ]; then
-  cd $PROJECT_ROOT_PATH/core-parent
-  mvn versions:set -DnewVersion=$REVISION -Ddemo-app-modules
-  cd $PROJECT_ROOT_PATH
-fi
+#if [ ! -z "$REVISION" ]; then
+#  cd $PROJECT_ROOT_PATH/core-parent
+#  mvn versions:set -DnewVersion=$REVISION -Ddemo-app-modules
+#  cd $PROJECT_ROOT_PATH
+#fi
 
 #
 # now build the apps
@@ -62,31 +62,33 @@ for app in demo
 do
   cd $PROJECT_ROOT_PATH/examples/$app
 
+  mvn versions:set -DnewVersion=$REVISION
   mvn clean install \
       $BATCH_MODE \
       -Dskip.git \
       -Dskip.arch \
       -DskipTests
 
-	for variant in wicket
-	do
-	  cd $variant
+  for variant in wicket
+  do
+	cd $variant
 	
-	  mvn clean install \
-	      $BATCH_MODE \
-	      -Dflavor=$FLAVOR \
-	      -Dskip.git \
-	      -Dskip.arch \
-	      -DskipTests
+	mvn versions:set -DnewVersion=$REVISION
+	mvn clean install \
+	    $BATCH_MODE \
+	    -Dflavor=$FLAVOR \
+	    -Dskip.git \
+	    -Dskip.arch \
+	    -DskipTests
 	
-	  mvn --batch-mode \
-	      compile jib:build \
-	      -Dflavor=$FLAVOR \
-	      -Dskip.git \
-	      -Dskip.arch \
-	      -DskipTests
+	mvn --batch-mode \
+	    compile jib:build \
+	    -Dflavor=$FLAVOR \
+	    -Dskip.git \
+	    -Dskip.arch \
+	    -DskipTests
 	
-	  cd $PROJECT_ROOT_PATH/examples/$app
+	cd $PROJECT_ROOT_PATH/examples/$app
 	done
 
 
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index d3630f0..407d83a 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -192,7 +192,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
     private Object defaultFor(final ObjectActionParameter param) {
         
         final ManagedObject defaultAdapter = param.getDefault(objectAdapter);
-        if (defaultAdapter == null) {
+        if (ManagedObject.isNullOrUnspecifiedOrEmpty(defaultAdapter)) {
             return null;
         }
         // REVIEW: previously was using the spec of the parameter, but think instead it should be the spec of the adapter itself