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 0a2de7c763 CAUSEWAY-2297: internal util polishing; adoc builder readme
update
0a2de7c763 is described below
commit 0a2de7c76395fca2283f74691569f19100157efd
Author: Andi Huber <[email protected]>
AuthorDate: Sat Mar 16 10:12:03 2024 +0100
CAUSEWAY-2297: internal util polishing; adoc builder readme update
---
.../core/metamodel/object/MmValueUtils.java | 21 ++++++++++++++++++++-
.../apache/causeway/core/metamodel/util/Facets.java | 17 -----------------
valuetypes/asciidoc/builder/README.adoc | 9 ++-------
.../ScalarPanelTextFieldWithTemporalPicker.java | 13 +++++++------
4 files changed, 29 insertions(+), 31 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmValueUtils.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmValueUtils.java
index d0f7e36a54..db26e3d559 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmValueUtils.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmValueUtils.java
@@ -26,10 +26,12 @@ import org.apache.causeway.applib.value.semantics.Renderer;
import org.apache.causeway.applib.value.semantics.TemporalSupport;
import
org.apache.causeway.applib.value.semantics.TemporalSupport.TemporalDecomposition;
import org.apache.causeway.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.causeway.commons.internal.exceptions._Exceptions;
import org.apache.causeway.core.metamodel.facets.object.value.ValueFacet;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import org.apache.causeway.core.metamodel.spec.feature.ObjectFeature;
+import lombok.NonNull;
import lombok.val;
import lombok.experimental.UtilityClass;
@@ -77,7 +79,24 @@ public class MmValueUtils {
return
renderer.htmlPresentation(valueFacet.createValueSemanticsContext(feature),
adapter.getPojo());
}
- // -- TEMPORAL DECOMPOSITION
+ // -- TEMPORAL SUPPORT
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public Optional<TemporalSupport> temporalSupport(
+ final @Nullable ObjectFeature objectFeature,
+ final @Nullable ObjectSpecification elementType) {
+ return valueFacet(elementType)
+ .flatMap(valueFacet->(Optional<TemporalSupport>)valueFacet
+ .selectTemporalSupportForFeature(objectFeature));
+ }
+
+ public TemporalSupport<?> temporalSupportElseFail(
+ final @Nullable ObjectFeature objectFeature,
+ final @NonNull ObjectSpecification elementType) {
+ return temporalSupport(objectFeature, elementType)
+ .orElseThrow(()->_Exceptions.illegalState("no temporal support
found for %s",
+ elementType));
+ }
@SuppressWarnings({ "rawtypes", "unchecked" })
public Optional<TemporalDecomposition> temporalDecomposition(
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
index 6d81aeb757..b827844c57 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
@@ -34,7 +34,6 @@ import org.apache.causeway.applib.annotation.TableDecorator;
import org.apache.causeway.applib.annotation.Where;
import org.apache.causeway.applib.id.LogicalType;
import org.apache.causeway.applib.layout.grid.bootstrap.BSGrid;
-import
org.apache.causeway.applib.value.semantics.TemporalCharacteristicsProvider;
import org.apache.causeway.applib.value.semantics.ValueSemanticsProvider;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.commons.internal.base._Casts;
@@ -445,22 +444,6 @@ public final class Facets {
objectSpec.getCorrespondingClass().getName()));
}
- @SuppressWarnings("unchecked")
- public Optional<TemporalCharacteristicsProvider>
valueTemporalCharacteristicsProvider(
- final ObjectSpecification objectSpec) {
- return objectSpec.valueFacet()
- .flatMap(valueFacet->valueFacet.getAllValueSemantics().stream()
- .findFirst())
-
.flatMap(valueSemantics->_Casts.castTo(TemporalCharacteristicsProvider.class,
valueSemantics));
- }
-
- public TemporalCharacteristicsProvider
valueTemporalCharacteristicsProviderElseFail(
- final ObjectSpecification objectSpec) {
- return valueTemporalCharacteristicsProvider(objectSpec)
- .orElseThrow(()->_Exceptions.illegalState("no temporal
characteristics found for %s",
- objectSpec));
- }
-
// -- HELPER
@SuppressWarnings("rawtypes")
diff --git a/valuetypes/asciidoc/builder/README.adoc
b/valuetypes/asciidoc/builder/README.adoc
index 324b23e6dc..7007eb4a48 100644
--- a/valuetypes/asciidoc/builder/README.adoc
+++ b/valuetypes/asciidoc/builder/README.adoc
@@ -10,10 +10,6 @@ and https://accounts.eclipse.org/mailing-list/asciidoc-wg[].
However, we are hap
help with transfer of source code, if any project (under the umbrella of the
_AsciiDoc Working Group_) is willing to take over.
-WARNING: This is work-in-progress, no official Maven artifacts are published
yet at the time of writing.
-However, snapshots are available with our nightly-builds:
-https://github.com/apache-causeway-committers/causeway-nightly[]
-
== Usage
Say we have a list of employees, which we want to express as ascii-doc table.
@@ -123,9 +119,8 @@
https://github.com/apache-causeway-committers/causeway-nightly#maven[]
[source,xml]
----
<dependency>
- <groupId>org.apache.causeway.tooling</groupId>
- <artifactId>causeway-tooling-model4adoc</artifactId>
- <version>2.0.0-???</version>
+ <groupId>org.apache.causeway.valuetypes</groupId>
+ <artifactId>causeway-valuetypes-asciidoc-builder</artifactId>
</dependency>
----
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
index 18c616436a..1dfe7ca002 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
@@ -29,8 +29,9 @@ import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.PropertyModel;
-import
org.apache.causeway.applib.value.semantics.TemporalCharacteristicsProvider;
import
org.apache.causeway.applib.value.semantics.TemporalCharacteristicsProvider.OffsetCharacteristic;
+import org.apache.causeway.applib.value.semantics.TemporalSupport;
+import org.apache.causeway.core.metamodel.object.MmValueUtils;
import org.apache.causeway.core.metamodel.util.Facets;
import org.apache.causeway.viewer.wicket.model.models.ScalarModel;
import
org.apache.causeway.viewer.wicket.model.value.ConverterBasedOnValueSemantics;
@@ -93,13 +94,13 @@ extends ScalarPanelTextFieldWithValueSemantics<T> {
case OFFSET:
Wkt.dropDownChoiceWithAjaxUpdateAdd(container, "timeoffset",
new PropertyModel<ZoneOffset>(temporalDecomposition,
"zoneOffset"),
- temporalCharacteristicsProvider().getAvailableOffsets())
+ temporalSupport().getAvailableOffsets())
.setRequired(true);
break;
case ZONED:
Wkt.dropDownChoiceWithAjaxUpdateAdd(container, "timezone",
new PropertyModel<ZoneId>(temporalDecomposition, "zoneId"),
- temporalCharacteristicsProvider().getAvailableZoneIds())
+ temporalSupport().getAvailableZoneIds())
.setRequired(true);
break;
case LOCAL:
@@ -131,12 +132,12 @@ extends ScalarPanelTextFieldWithValueSemantics<T> {
// -- HELPER
- private TemporalCharacteristicsProvider temporalCharacteristicsProvider() {
- return
Facets.valueTemporalCharacteristicsProviderElseFail(scalarModel().getElementType());
+ private TemporalSupport<?> temporalSupport() {
+ return
MmValueUtils.temporalSupportElseFail(scalarModel().getMetaModel(),
scalarModel().getElementType());
}
private OffsetCharacteristic offsetCharacteristic() {
- return temporalCharacteristicsProvider().getOffsetCharacteristic();
+ return temporalSupport().getOffsetCharacteristic();
}
private <X> TextField<X> installUpdateNotifier(final TextField<X>
textField) {