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/13 07:58:10 UTC
[isis] branch master updated: ISIS-2364: fixes this issue,
allows ActionParameterDefaultsFacetFromAssociatedCollection on
first param only (paramNum==0)
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 dca197e ISIS-2364: fixes this issue, allows ActionParameterDefaultsFacetFromAssociatedCollection on first param only (paramNum==0)
dca197e is described below
commit dca197eb8e29007a8881e2e73597ef4db4028b9c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 13 09:57:58 2020 +0200
ISIS-2364: fixes this issue, allows
ActionParameterDefaultsFacetFromAssociatedCollection on first param only
(paramNum==0)
---
.../ActionParameterDefaultsFacetAbstract.java | 4 +++-
.../load/ObjectLoader_builtinHandlers.java | 4 ++--
...arameterDefaultsFacetFromAssociatedCollection.java | 19 ++++++++++---------
.../param/DeriveFacetsPostProcessor.java | 3 +++
.../specimpl/ObjectActionParameterAbstract.java | 6 +++---
.../specimpl/ObjectSpecificationAbstract.java | 18 +++++++-----------
.../isisapplib/IsisBlobOrClobPanelAbstract.java | 11 +++++++----
.../linkandlabel/LinkAndLabelFactoryAbstract.java | 6 ++----
8 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/ActionParameterDefaultsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/ActionParameterDefaultsFacetAbstract.java
index 8d8ccdf..9b841fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/ActionParameterDefaultsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/ActionParameterDefaultsFacetAbstract.java
@@ -23,7 +23,9 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public abstract class ActionParameterDefaultsFacetAbstract extends FacetAbstract implements ActionParameterDefaultsFacet {
+public abstract class ActionParameterDefaultsFacetAbstract
+extends FacetAbstract
+implements ActionParameterDefaultsFacet {
public static Class<? extends Facet> type() {
return ActionParameterDefaultsFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/load/ObjectLoader_builtinHandlers.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/load/ObjectLoader_builtinHandlers.java
index fe534ce..3b325be 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/load/ObjectLoader_builtinHandlers.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/load/ObjectLoader_builtinHandlers.java
@@ -249,8 +249,8 @@ final class ObjectLoader_builtinHandlers {
// unknown object load request
throw _Exceptions.illegalArgument(
- "unknown object load request, loader: %s loading ObjectSpecification %s",
- this.getClass().getName(), objectLoadRequest.getObjectSpecification());
+ "unknown object load request, loader: %s loading %s",
+ this.getClass().getName(), objectLoadRequest);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
index 40dc3d4..59e7427 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
@@ -33,6 +33,16 @@ public class ActionParameterDefaultsFacetFromAssociatedCollection extends Action
private static ThreadLocal<Can<Object>> _selectedPojos = ThreadLocal.withInitial(Can::empty);
+ public ActionParameterDefaultsFacetFromAssociatedCollection(final FacetHolder holder) {
+ super(holder);
+ }
+
+ @Override
+ public Object getDefault(@NonNull PendingParameterModel pendingArgs) {
+
+ return _selectedPojos.get();
+ }
+
public static <T, R> R applyWithSelected(
final Can<Object> selectedPojos,
final Function<T, R> function,
@@ -48,14 +58,5 @@ public class ActionParameterDefaultsFacetFromAssociatedCollection extends Action
}
}
- public ActionParameterDefaultsFacetFromAssociatedCollection(final FacetHolder holder) {
- super(holder);
- }
-
- @Override
- public Object getDefault(@NonNull PendingParameterModel pendingArgs) {
-
- return _selectedPojos.get();
- }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
index 7073105..bd54628 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
@@ -612,6 +612,9 @@ implements ObjectSpecificationPostProcessor, MetaModelContextAware {
private void addCollectionParamDefaultsFacetIfNoneAlready(final ObjectActionParameter collectionParam) {
+ if(collectionParam.getNumber()!=0) {
+ return; // with current programming model this can only be the first parameter of an action dialog
+ }
if(collectionParam.containsNonFallbackFacet(ActionParameterDefaultsFacet.class)) {
return;
}
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 0c86e9f..612d777 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
@@ -19,8 +19,6 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
-import static org.apache.isis.core.commons.internal.base._With.requires;
-
import java.util.ArrayList;
import java.util.List;
@@ -60,6 +58,8 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
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;
@@ -262,7 +262,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
if (defaultsFacet != null && !defaultsFacet.isFallback()) {
final Object paramValuePojo = defaultsFacet.getDefault(pendingArgs);
return ManagedObject.of(paramSpec, paramValuePojo);
- }
+ }
return pendingArgs.getParamValue(getNumber());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 742739e..f9a06d0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -46,7 +46,6 @@ import org.apache.isis.core.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.core.metamodel.commons.ClassExtensions;
-import org.apache.isis.core.metamodel.commons.ToString;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -95,8 +94,12 @@ import lombok.Getter;
import lombok.val;
import lombok.extern.log4j.Log4j2;
-@Log4j2 @EqualsAndHashCode(of = "correspondingClass", callSuper = false)
-public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implements ObjectSpecification {
+@EqualsAndHashCode(of = "correspondingClass", callSuper = false)
+@lombok.ToString(of = {"correspondingClass", "fullName", "managedObjectSort"})
+@Log4j2
+public abstract class ObjectSpecificationAbstract
+extends FacetHolderImpl
+implements ObjectSpecification {
private static class Subclasses {
private final Set<ObjectSpecification> classes = _Sets.newConcurrentHashSet();
@@ -114,7 +117,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
}
-//XXX drop-in for the above,
+//XXX drop-in for the above, rather a question which performs better
// private static class Subclasses {
// private final List<ObjectSpecification> classes = new ArrayList<>();
//
@@ -913,13 +916,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return containsFacet(ParentedCollectionFacet.class);
}
- @Override
- public String toString() {
- final ToString str = new ToString(this);
- str.append("class", getFullIdentifier());
- return str.toString();
- }
-
// -- GUARDS
private boolean contributeeAndMixedInAssociationsAdded;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index f2ce1f6..ea30761 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -56,7 +56,8 @@ import lombok.val;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.BootstrapFileInputField;
-public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> extends ScalarPanelAbstract2 {
+public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType>
+extends ScalarPanelAbstract2 {
private static final long serialVersionUID = 1L;
@@ -271,10 +272,12 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
final MarkupContainer formComponent = (MarkupContainer) getComponentForRegular();
sync(formComponent, visibility, editability, disabledReason, target);
+ // sonar-ignore-on (detects potential NPE, which is a false positive here)
final Component component = formComponent.get(ID_SCALAR_VALUE);
- final InputFieldVisibility editingWidgetVisibility = editability == InputFieldEditability.EDITABLE ?
- InputFieldVisibility.VISIBLE :
- InputFieldVisibility.NOT_VISIBLE;
+ // sonar-ignore-off
+ final InputFieldVisibility editingWidgetVisibility = editability == InputFieldEditability.EDITABLE
+ ? InputFieldVisibility.VISIBLE
+ : InputFieldVisibility.NOT_VISIBLE;
sync(component, editingWidgetVisibility, null, disabledReason, target);
addAcceptFilterTo(component);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
index 999510d..c382f11 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
@@ -108,15 +108,13 @@ implements Serializable {
if(toggledMementosProviderIfAny != null) {
val selectedMementos = toggledMementosProviderIfAny.getToggles();
- val selectedPojos = selectedMementos
+ val selectedPojosFromAssocCollection = selectedMementos
.map(super.getCommonContext()::reconstructObject)
.map(ManagedObject::getPojo);
val actionPrompt = ActionParameterDefaultsFacetFromAssociatedCollection
.applyWithSelected(
- selectedPojos,
- // if this lambda still needs to be serializable uncomment the cast ...
- //(Function<AjaxRequestTarget, ActionPrompt>&Serializable)
+ selectedPojosFromAssocCollection,
this::performOnClick,
target);