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 3929aba  ISIS-2361: some fixes, also prepares demo so can reproduce 
the issue
3929aba is described below

commit 3929aba67d18f917d0b25668254ff520c4f010ad
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Wed May 6 17:48:52 2020 +0200

    ISIS-2361: some fixes, also prepares demo so can reproduce the issue
---
 .../metamodel/commons/CanonicalParameterUtil.java  |  7 ++-
 .../dom/actions/assoc/AssociatedActionDemo.java    |  5 +-
 .../actions/depargs/DependentArgsActionDemo.java   |  1 -
 ...ava => DependentArgsActionDemo_bulkAction.java} | 73 +++++++++++++---------
 .../components/scalars/ScalarPanelAbstract2.java   |  2 +-
 5 files changed, 55 insertions(+), 33 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
index 60679f3..806ca87 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.SortedSet;
 
+import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.commons.internal.base._NullSafe;
 import org.apache.isis.core.commons.internal.collections._Arrays;
@@ -104,7 +105,11 @@ public class CanonicalParameterUtil {
         if(obj==null) {
             return null;
         }
-
+        
+        if(obj instanceof Can) {
+            obj = ((Can<?>)obj).toList();            
+        }
+        
         if(_Arrays.isArrayType(parameterType)) {
             final Class<?> componentType = 
_Arrays.inferComponentTypeIfAny(parameterType);
             if(componentType==null) {
diff --git 
a/examples/demo/src/main/java/demoapp/dom/actions/assoc/AssociatedActionDemo.java
 
b/examples/demo/src/main/java/demoapp/dom/actions/assoc/AssociatedActionDemo.java
index 6be9ec0..11e7345 100644
--- 
a/examples/demo/src/main/java/demoapp/dom/actions/assoc/AssociatedActionDemo.java
+++ 
b/examples/demo/src/main/java/demoapp/dom/actions/assoc/AssociatedActionDemo.java
@@ -53,7 +53,10 @@ public class AssociatedActionDemo extends DemoStub {
 
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
     @Action(associateWith="items")
-    public AssociatedActionDemo doSomethingWithItems(Set<DemoItem> items) {
+    public AssociatedActionDemo doSomethingWithItems(
+            Set<DemoItem> items,
+            int test
+            ) {
         if(items!=null) {
             items.forEach(item->messageService.informUser(item.getName()));    
         }
diff --git 
a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
 
b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
index 7223d1c..952cc16 100644
--- 
a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
+++ 
b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
@@ -90,7 +90,6 @@ public class DependentArgsActionDemo extends DemoStub {
         items.add(DemoItem.of("third", Parity.ODD));
         items.add(DemoItem.of("last", Parity.EVEN));
     }
-    
 
 }
 
diff --git 
a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
 
b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_bulkAction.java
similarity index 73%
rename from 
examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
rename to 
examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_bulkAction.java
index 6fccb64..60514f0 100644
--- 
a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
+++ 
b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_bulkAction.java
@@ -18,6 +18,9 @@
  */
 package demoapp.dom.actions.depargs;
 
+import java.util.Collection;
+import java.util.Set;
+
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
@@ -26,6 +29,7 @@ import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.internal.debug._Probe;
 import org.apache.isis.incubator.model.applib.annotation.Model;
 
@@ -33,10 +37,10 @@ import lombok.RequiredArgsConstructor;
 import lombok.Value;
 import lombok.experimental.Accessors;
 
-@ActionLayout(named="Default (Fixed Point Search)", promptStyle = 
PromptStyle.DIALOG_MODAL)
-@Action
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+@Action(associateWith="items")
 @RequiredArgsConstructor
-public class DependentArgsActionDemo_useDefaultFixedPoint {
+public class DependentArgsActionDemo_bulkAction {
 
     @Inject MessageService messageService;
 
@@ -44,6 +48,7 @@ public class DependentArgsActionDemo_useDefaultFixedPoint {
     
     @Value @Accessors(fluent = true) // fluent so we can replace this with 
Java(14+) records later
     static class Parameters {
+        Set<DemoItem> demoItems;
         int a;
         int b;
         int c;
@@ -52,19 +57,22 @@ public class DependentArgsActionDemo_useDefaultFixedPoint {
 
     public DependentArgsActionDemo act(
 
-            // PARAM 0
+            // BULK
+            Set<DemoItem> demoItems,
+            
+            // PARAM 1
             @Parameter(optionality = Optionality.MANDATORY)
             int a,
 
-            // PARAM 1
+            // PARAM 2
             @Parameter(optionality = Optionality.MANDATORY)
             int b,
             
-            // PARAM 2
+            // PARAM 3
             @Parameter(optionality = Optionality.MANDATORY)
             int c,
             
-            // PARAM 3
+            // PARAM 4
             @Parameter(optionality = Optionality.MANDATORY)
             int d
 
@@ -74,58 +82,65 @@ public class DependentArgsActionDemo_useDefaultFixedPoint {
         return holder;
     }
     
-    // -- PARAM 0
+    // -- PARAM 1
 
     @Model
-    public int default0Act(Parameters params) {
+    public int default1Act(Parameters params) {
         _Probe.sysOut("p0: %d %d %d %d", params.a, params.b, params.c, 
params.d);
         return 1;
     }
     
-    // -- PARAM 1
+    // -- PARAM 2
     
     @Model
-    public int default1Act(Parameters params) {
+    public int default2Act(Parameters params) {
         _Probe.sysOut("p1: %d %d %d %d", params.a, params.b, params.c, 
params.d);
         return params.a() + 1;
     }
     
-    // -- PARAM 2
+    // -- PARAM 3
     
     @Model
-    public int[] choices2Act(Parameters params) {
-        return new int[] {1,2,3,4};
+    public Collection<Integer> choices3Act(Parameters params) {
+        return _Lists.of(1,2,3,4);
     }
     
 //    @Model
-//    public int default2Act(Parameters params) {
+//    public int default3Act(Parameters params) {
 //        _Probe.sysOut("p2: %d %d %d %d", params.a, params.b, params.c, 
params.d);
 //        return params.b() + 1;
 //    }
     
-    // -- PARAM 3
+    // -- PARAM 4
     
     @Model
-    public int default3Act(Parameters params) {
+    public int default4Act(Parameters params) {
         _Probe.sysOut("p3: %d %d %d %d", params.a, params.b, params.c, 
params.d);
         return params.c() + 1;
     }
+
+//TODO not yet supported    
+//    @Model
+//    public String validate3Act(Parameters params) {
+//        
+//        int cPlusD = params.c()+params.d();
+//        
+//        return (cPlusD%2 == 1)
+//                ? "c plus d must be even"
+//                : null;
+//    }
+
     
     @Model
-    public String validate3Act(Parameters params) {
-        
-        int cPlusD = params.c()+params.d();
-        
-        return (cPlusD%2 == 1)
-                ? "c plus d must be even"
-                : null;
+    public String validateAct(
+            Set<DemoItem> demoItems,
+            int a,
+            int b,
+            int c,
+            int d) {
+        return "just failing always";
     }
 
-    
-    
-    
-    
-
 
 }
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 560a653..2568281 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -118,7 +118,7 @@ implements ScalarModelSubscriber2 {
     }
 
     /** this is a hack for the ScalarParameterModel, which does not support 
usability constraints in the model*/
-    private Runnable postInit;
+    private transient Runnable postInit;
     public void postInit(@NonNull final ActionArgumentModelAndConsents 
argsAndConsents) {
         this.postInit = () ->{
             // visibility

Reply via email to