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