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