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 2022/09/15 13:47:26 UTC
[isis] branch master updated: ISIS-3198: move usability/visibility checks to common models
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 6c1be595e2 ISIS-3198: move usability/visibility checks to common models
6c1be595e2 is described below
commit 6c1be595e28a474f8cf4142303a64a7a7233d5ea
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 15 15:47:18 2022 +0200
ISIS-3198: move usability/visibility checks to common models
---
.../interactions/managed/ActionInteraction.java | 6 ++---
.../managed/CollectionInteraction.java | 2 +-
.../interactions/managed/InteractionVeto.java | 2 ++
.../interactions/managed/MemberInteraction.java | 4 +--
.../managed/ParameterNegotiationModel.java | 1 -
.../interactions/managed/PropertyInteraction.java | 2 +-
.../managed/PropertyNegotiationModel.java | 20 ++++++++++++++-
.../commons/model/scalar/HasUiParameter.java | 10 ++++++++
.../viewer/commons/model/scalar/HasUiProperty.java | 15 +++++++++++
.../viewer/commons/model/scalar/UiParameter.java | 10 ++++++++
.../viewer/commons/model/scalar/UiProperty.java | 15 +++++++++++
.../isis/viewer/commons/model/scalar/UiScalar.java | 4 +--
.../viewer/wicket/model/models/ScalarModel.java | 4 ---
.../wicket/model/models/ScalarParameterModel.java | 10 --------
.../wicket/model/models/ScalarPropertyModel.java | 20 ---------------
.../viewer/wicket/model/models/UiObjectWkt.java | 8 ++----
.../interaction/prop/PropertyInteractionWkt.java | 4 ++-
.../viewer/wicket/ui/components/scalars/_Util.java | 29 ----------------------
18 files changed, 85 insertions(+), 81 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java
index 28f887bf89..8b92bc99af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java
@@ -175,7 +175,7 @@ extends MemberInteraction<ManagedAction, ActionInteraction> {
* was no interaction veto within the originating chain
*/
public Optional<ManagedAction> getManagedAction() {
- return super.getManagedMember();
+ return super.getManagedMember().getSuccess();
}
/**
@@ -264,11 +264,11 @@ extends MemberInteraction<ManagedAction, ActionInteraction> {
return ActionInteraction.wrap(managedAction);
}
}
-
+
//XXX[ISIS-3080] prior to this fix we returned... (which I'm not sure why - makes no sense to me)
//val paramValue = parameterNegotiationModel.getParamValue(paramIndex);
//return ActionInteraction.start(paramValue, memberId, where);
-
+
// else if not a composite value
return ActionInteraction.start(actionOwner, memberId, where);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java
index 8187649c88..a047905de8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java
@@ -54,7 +54,7 @@ extends MemberInteraction<ManagedCollection, CollectionInteraction> {
* was no interaction veto within the originating chain
*/
public Optional<ManagedCollection> getManagedCollection() {
- return super.getManagedMember();
+ return super.getManagedMember().getSuccess();
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/InteractionVeto.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/InteractionVeto.java
index ff3958ab16..30b185900c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/InteractionVeto.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/InteractionVeto.java
@@ -47,6 +47,8 @@ public class InteractionVeto implements Serializable {
ACTION_NOT_SAFE,
ACTION_NOT_IDEMPOTENT,
ACTION_PARAM_INVALID,
+ ;
+ public boolean isHidden() { return this == HIDDEN;};
}
@NonNull private final VetoType vetoType;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java
index d720f548b9..519679e02a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java
@@ -84,8 +84,8 @@ public abstract class MemberInteraction<T extends ManagedMember, H extends Membe
* @return optionally the ManagedMember based on whether there
* was no interaction veto within the originating chain
*/
- protected Optional<T> getManagedMember() {
- return railway.getSuccess();
+ protected InteractionRailway<T> getManagedMember() {
+ return railway;
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ParameterNegotiationModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ParameterNegotiationModel.java
index d3cbed33b8..b19f60ccf5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ParameterNegotiationModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ParameterNegotiationModel.java
@@ -424,5 +424,4 @@ public class ParameterNegotiationModel {
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java
index 272ba35eac..342c2ec08f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java
@@ -74,7 +74,7 @@ extends MemberInteraction<ManagedProperty, PropertyInteraction> {
* was no interaction veto within the originating chain
*/
public Optional<ManagedProperty> getManagedProperty() {
- return super.getManagedMember();
+ return super.getManagedMember().getSuccess();
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java
index 97e0d67b20..1bca4e4222 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.object.ManagedObjects;
import org.apache.isis.core.metamodel.object.MmAssertionUtil;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import lombok.Getter;
import lombok.NonNull;
import lombok.val;
@@ -45,7 +46,7 @@ public class PropertyNegotiationModel implements ManagedValue {
private final @NonNull LazyObservable<String> validation;
private final @NonNull _BindableAbstract<String> searchArgument;
private final @NonNull LazyObservable<Can<ManagedObject>> choices;
- private final @NonNull ManagedProperty managedProperty;
+ @Getter private final @NonNull ManagedProperty managedProperty;
private Observable<String> proposedValueAsTitle;
private Observable<String> proposedValueAsHtml;
private Bindable<String> proposedValueAsParsableText;
@@ -168,6 +169,23 @@ public class PropertyNegotiationModel implements ManagedValue {
return choices;
}
+ // -- VISIBILITY
+
+ public boolean whetherHidden() {
+ return managedProperty
+ .checkVisibility()
+ .isPresent();
+ }
+
+ // -- USABILITY
+
+ public String disableReasonIfAny() {
+ return managedProperty
+ .checkUsability()
+ .map(InteractionVeto::getReason)
+ .orElse(null);
+ }
+
// -- VALIDATION
@NonNull private final _BindableAbstract<Boolean> validationFeedbackActive;
diff --git a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiParameter.java b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiParameter.java
index 6e26b5cd74..8807aab6a5 100644
--- a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiParameter.java
+++ b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiParameter.java
@@ -137,6 +137,16 @@ public interface HasUiParameter extends UiParameter {
return getUiParameter().getIdentifier();
}
+ @Override
+ default boolean whetherHidden() {
+ return getUiParameter().whetherHidden();
+ }
+
+ @Override
+ default String disableReasonIfAny() {
+ return getUiParameter().disableReasonIfAny();
+ }
+
@Override
default ActionInteractionHead getPendingParamHead() {
return getMetaModel().getAction().interactionHead(getUiParameter().getOwner());
diff --git a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiProperty.java b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiProperty.java
index 3f1ddecbd5..39987cfcff 100644
--- a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiProperty.java
+++ b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/HasUiProperty.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.viewer.commons.model.scalar;
+import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
import org.apache.isis.core.metamodel.interactions.managed.PropertyNegotiationModel;
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -42,5 +43,19 @@ public interface HasUiProperty extends UiProperty {
return getUiProperty().getPendingPropertyModel();
}
+ @Override
+ default ManagedProperty getManagedProperty() {
+ return getUiProperty().getManagedProperty();
+ }
+
+ @Override
+ default boolean whetherHidden() {
+ return getUiProperty().whetherHidden();
+ }
+
+ @Override
+ default String disableReasonIfAny() {
+ return getUiProperty().disableReasonIfAny();
+ }
}
diff --git a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiParameter.java b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiParameter.java
index d3bdf82005..e467f46685 100644
--- a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiParameter.java
+++ b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiParameter.java
@@ -47,6 +47,16 @@ public interface UiParameter extends UiScalar {
ParameterNegotiationModel getParameterNegotiationModel();
+ @Override
+ default boolean whetherHidden() {
+ return getParameterNegotiationModel().getVisibilityConsent(getParameterIndex()).isVetoed();
+ }
+
+ @Override
+ default String disableReasonIfAny() {
+ return getParameterNegotiationModel().getUsabilityConsent(getParameterIndex()).getReason();
+ }
+
@Override
default int getAutoCompleteMinLength() {
return hasAutoComplete() ? getMetaModel().getAutoCompleteMinLength() : 0;
diff --git a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiProperty.java b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiProperty.java
index 2382c9a9e2..9aee0b6377 100644
--- a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiProperty.java
+++ b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiProperty.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.commons.model.scalar;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
import org.apache.isis.core.metamodel.interactions.managed.PropertyNegotiationModel;
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -34,6 +35,10 @@ public interface UiProperty extends UiScalar {
PropertyNegotiationModel getPendingPropertyModel();
+ default ManagedProperty getManagedProperty() {
+ return getPendingPropertyModel().getManagedProperty();
+ }
+
// -- SHORTCUTS
@Override
@@ -76,4 +81,14 @@ public interface UiProperty extends UiScalar {
return getMetaModel().getAutoComplete(getOwner(), searchArg, InteractionInitiatedBy.USER);
}
+ @Override
+ default boolean whetherHidden() {
+ return getPendingPropertyModel().whetherHidden();
+ }
+
+ @Override
+ default String disableReasonIfAny() {
+ return getPendingPropertyModel().disableReasonIfAny();
+ }
+
}
diff --git a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiScalar.java b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiScalar.java
index 368d23644d..07da88cae5 100644
--- a/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiScalar.java
+++ b/viewers/commons/model/src/main/java/org/apache/isis/viewer/commons/model/scalar/UiScalar.java
@@ -43,9 +43,9 @@ public interface UiScalar extends UiModel, HasMetaModelContext {
ManagedObject getOwner();
String getIdentifier();
-
String getCssClass();
-
+ boolean whetherHidden();
+ String disableReasonIfAny();
/** feature name */
default String getFriendlyName() {
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index cd43080b11..9e65db18cf 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -172,10 +172,6 @@ implements HasRenderingHints, UiScalar, LinksProvider, FormExecutorContext {
public abstract ManagedValue proposedValue();
- public abstract boolean whetherHidden();
-
- public abstract String disableReasonIfAny();
-
public abstract String validate(ManagedObject proposedAdapter);
/**
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
index e6984279fd..52698a4d7a 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
@@ -54,16 +54,6 @@ implements HasUiParameter {
this.uiParameter = uiParameter;
}
- @Override
- public String disableReasonIfAny() {
- return getParameterNegotiationModel().getUsabilityConsent(getParameterIndex()).getReason();
- }
-
- @Override
- public boolean whetherHidden() {
- return getParameterNegotiationModel().getVisibilityConsent(getParameterIndex()).isVetoed();
- }
-
@Override
public String validate(final ManagedObject proposedValue) {
return getParameterNegotiationModel().getObservableParamValidation(getParameterIndex()).getValue();
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
index d85a70a4b5..f3a0069a89 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.model.models;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.interactions.managed.InteractionVeto;
-import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
import org.apache.isis.core.metamodel.interactions.managed.ManagedValue;
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -69,25 +68,6 @@ implements HasUiProperty {
return wrap(uiProperty, viewOrEdit, renderingHint);
}
- public ManagedProperty getManagedProperty() {
- return uiProperty.propertyInteraction().getManagedProperty().get();
- }
-
- @Override
- public boolean whetherHidden() {
- return getManagedProperty()
- .checkVisibility()
- .isPresent();
- }
-
- @Override
- public String disableReasonIfAny() {
- return getManagedProperty()
- .checkUsability()
- .map(InteractionVeto::getReason)
- .orElse(null);
- }
-
@Override
public String validate(final ManagedObject proposedNewValue) {
return getManagedProperty()
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
index 6b2200755d..dccdc792f4 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/UiObjectWkt.java
@@ -232,17 +232,13 @@ implements
@Override
public UiObjectWkt toEditMode() {
- setMode(ScalarRepresentation.EDITING);
- propertyScalarModels().values()
- .forEach(ScalarPropertyModel::toEditMode);
+ //noop for objects
return this;
}
@Override
public UiObjectWkt toViewMode() {
- setMode(ScalarRepresentation.VIEWING);
- propertyScalarModels().values()
- .forEach(ScalarPropertyModel::toViewMode);
+ //noop for objects
return this;
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java
index 986df74997..ac0c57b293 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java
@@ -80,7 +80,9 @@ extends HasBookmarkedOwnerAbstract<PropertyInteraction> {
val propIa = propertyInteraction();
val prop = propIa.getManagedProperty().orElseThrow();
ManagedObjects.refreshViewmodel(prop.getOwner(), /* bookmark provider*/ null);
- return propIa.startPropertyNegotiation();
+ return propIa.startPropertyNegotiation()
+ //.orElseThrow(()->_Exceptions.noSuchElement(memberId))
+ ;
});
return PropertyInteraction.wrap(
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/_Util.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/_Util.java
index b163bbba1a..e91a978662 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/_Util.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/_Util.java
@@ -162,33 +162,4 @@ class _Util {
prop.getManagedProperty()));
}
- // -- PROBABLY NO LONGER NEEDED
-
-// private Optional<ManagedObject> recoverProposedValue2(
-// final IValidatable<Object> validatable,
-// final ScalarModel scalarModel){
-// return mementoForProposedValue(validatable, scalarModel)
-// .map(scalarModel.getMetaModelContext()::reconstructObject);
-// }
-//
-// private Optional<ObjectMemento> mementoForProposedValue(
-// final IValidatable<Object> validatable,
-// final ScalarModel scalarModel) {
-// final Object proposedValueObj = validatable.getValue();
-//
-// if (proposedValueObj instanceof List) {
-// @SuppressWarnings("unchecked")
-// val proposedValueObjAsList = (List<ObjectMemento>) proposedValueObj;
-// if (proposedValueObjAsList.isEmpty()) {
-// return Optional.empty();
-// }
-// val memento = proposedValueObjAsList.get(0);
-// val logicalType = memento.getLogicalType();
-// return Optional.of(ObjectMemento.pack(proposedValueObjAsList, logicalType));
-// } else {
-// return Optional.of((ObjectMemento) proposedValueObj);
-// }
-//
-// }
-
}