You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/03/21 09:47:06 UTC
[causeway] branch master updated: CAUSEWAY-3391: de-duplicate ChoiceProviderSort
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/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 568a448c07 CAUSEWAY-3391: de-duplicate ChoiceProviderSort
568a448c07 is described below
commit 568a448c07976caf414c65b002eddd537f726671
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 21 10:47:00 2023 +0100
CAUSEWAY-3391: de-duplicate ChoiceProviderSort
---
.../viewer/commons/model/scalar/UiScalar.java | 6 ++--
...ponentFactoryScalarTypeConstrainedAbstract.java | 8 ++---
.../choices/ChoicesSelect2PanelFactory.java | 2 +-
.../providers/ChoiceProviderForReferences.java | 35 +++++++++-------------
4 files changed, 22 insertions(+), 29 deletions(-)
diff --git a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/scalar/UiScalar.java b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/scalar/UiScalar.java
index 3a48ab8676..65699b0c97 100644
--- a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/scalar/UiScalar.java
+++ b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/scalar/UiScalar.java
@@ -104,17 +104,17 @@ public interface UiScalar extends UiModel, HasMetaModelContext {
return ChoiceProviderSort.valueOf(this);
}
- static enum ChoiceProviderSort {
+ public static enum ChoiceProviderSort {
NO_CHOICES,
CHOICES,
AUTO_COMPLETE,
OBJECT_AUTO_COMPLETE;
- static ChoiceProviderSort valueOf(final UiScalar scalarModel) {
+ public static ChoiceProviderSort valueOf(final UiScalar scalarModel) {
if (scalarModel.hasChoices()) {
return ChoiceProviderSort.CHOICES;
} else if(scalarModel.hasAutoComplete()) {
return ChoiceProviderSort.AUTO_COMPLETE;
- } else if(scalarModel.hasObjectAutoComplete()) {
+ } else if(Facets.autoCompleteIsPresent(scalarModel.getScalarTypeSpec())) {
return ChoiceProviderSort.OBJECT_AUTO_COMPLETE;
}
return NO_CHOICES;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ComponentFactoryScalarTypeConstrainedAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ComponentFactoryScalarTypeConstrainedAbstract.java
index 8610463fb0..4fff995ec0 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ComponentFactoryScalarTypeConstrainedAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ComponentFactoryScalarTypeConstrainedAbstract.java
@@ -53,15 +53,15 @@ extends ComponentFactoryScalarAbstract {
@Override
protected final ApplicationAdvice appliesTo(final ScalarModel scalarModel) {
- // discriminates based on given scalarTypeConstraints, if any
+ // discriminates based on given scalarTypes, if any
if(scalarTypes.isNotEmpty()
&& !scalarModel.isScalarTypeAnyOf(scalarTypes)) {
return ApplicationAdvice.DOES_NOT_APPLY;
}
- // autoComplete not supported on values, only references
- return appliesIf( !(scalarModel.hasChoices()
- /*|| scalarModel.hasAutoComplete()*/) );
+ // if has any choices, use select-2 component instead
+ return appliesIf( !scalarModel.hasChoices()
+ && !scalarModel.hasAutoComplete() );
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
index 5ac52b0eda..6ae1688243 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/choices/ChoicesSelect2PanelFactory.java
@@ -68,7 +68,7 @@ extends ComponentFactoryScalarAbstract {
@Override
protected ApplicationAdvice appliesTo(final ScalarModel scalarModel) {
- return ApplicationAdvice.APPLIES; //FIXME depends on registration order, can we do better?
+ return ApplicationAdvice.APPLIES; //XXX depends on registration order, can we do better?
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/providers/ChoiceProviderForReferences.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/providers/ChoiceProviderForReferences.java
index 685ecdffd0..6791b709d8 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/providers/ChoiceProviderForReferences.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/providers/ChoiceProviderForReferences.java
@@ -24,6 +24,8 @@ import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
import org.apache.causeway.core.metamodel.util.Facets;
import org.apache.causeway.viewer.commons.model.scalar.UiParameter;
+import org.apache.causeway.viewer.commons.model.scalar.UiScalar;
+import org.apache.causeway.viewer.commons.model.scalar.UiScalar.ChoiceProviderSort;
import org.apache.causeway.viewer.wicket.model.models.ScalarModel;
import lombok.val;
@@ -33,23 +35,7 @@ extends ChoiceProviderAbstractForScalarModel {
private static final long serialVersionUID = 1L;
- static enum ChoiceProviderSort {
- NO_CHOICES,
- CHOICES,
- AUTO_COMPLETE,
- OBJECT_AUTO_COMPLETE;
- static ChoiceProviderSort valueOf(final ScalarModel scalarModel) {
- if (scalarModel.hasChoices()) {
- return ChoiceProviderSort.CHOICES;
- } else if(scalarModel.hasAutoComplete()) {
- return ChoiceProviderSort.AUTO_COMPLETE;
- } else {
- return ChoiceProviderSort.OBJECT_AUTO_COMPLETE;
- }
- }
- }
-
- private final ChoiceProviderSort choiceProviderSort;
+ private final UiScalar.ChoiceProviderSort choiceProviderSort;
public ChoiceProviderForReferences(
final ScalarModel scalarModel) {
@@ -65,12 +51,12 @@ extends ChoiceProviderAbstractForScalarModel {
case AUTO_COMPLETE:
return queryWithAutoComplete(term);
case OBJECT_AUTO_COMPLETE:
+ return queryWithAutoCompleteUsingObjectSpecification(term);
+ case NO_CHOICES:
+ default:
// fall through
}
- val scalarTypeSpec = scalarModel().getScalarTypeSpec();
- val autoCompleteAdapters = Facets.autoCompleteExecute(scalarTypeSpec, term);
- return autoCompleteAdapters
- .map(ManagedObject::getMementoElseFail);
+ return Can.empty();
}
// -- HELPER
@@ -80,6 +66,13 @@ extends ChoiceProviderAbstractForScalarModel {
.map(ManagedObject::getMementoElseFail);
}
+ private Can<ObjectMemento> queryWithAutoCompleteUsingObjectSpecification(final String term) {
+ val autoCompleteAdapters = Facets
+ .autoCompleteExecute(scalarModel().getScalarTypeSpec(), term);
+ return autoCompleteAdapters
+ .map(ManagedObject::getMementoElseFail);
+ }
+
private Can<ObjectMemento> queryWithAutoComplete(final String term) {
val scalarModel = scalarModel();
val pendingArgs = scalarModel.isParameter()