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 2021/12/13 12:35:37 UTC
[isis] branch master updated: ISIS-2918: [SecMan] new property ApplicationUser.locale: Locale
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 fae64b7 ISIS-2918: [SecMan] new property ApplicationUser.locale: Locale
fae64b7 is described below
commit fae64b731142f198aed03d4a3637f6096cd8b890
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon Dec 13 13:35:22 2021 +0100
ISIS-2918: [SecMan] new property ApplicationUser.locale: Locale
- also implement LocaleValueSemantics
---
.../value/semantics/ValueSemanticsAbstract.java | 6 ++
.../core/metamodel/IsisModuleCoreMetamodel.java | 2 +
.../valuesemantics/BigDecimalValueSemantics.java | 6 ++
.../valuesemantics/BigIntegerValueSemantics.java | 6 ++
.../valuesemantics/BlobValueSemantics.java | 9 +++
.../valuesemantics/BookmarkValueSemantics.java | 8 +++
.../valuesemantics/BooleanValueSemantics.java | 6 ++
.../BufferedImageValueSemantics.java | 9 ++-
.../valuesemantics/ByteValueSemantics.java | 8 +++
.../valuesemantics/ChangesDtoValueSemantics.java | 6 ++
.../valuesemantics/CharacterValueSemantics.java | 5 ++
.../valuesemantics/ClobValueSemantics.java | 9 +++
.../valuesemantics/CommandDtoValueSemantics.java | 6 ++
.../valuesemantics/DoubleValueSemantics.java | 6 ++
.../valuesemantics/EnumValueSemanticsAbstract.java | 8 +++
.../valuesemantics/FloatValueSemantics.java | 6 ++
.../valuesemantics/IntValueSemantics.java | 6 ++
.../InteractionDtoValueSemantics.java | 6 ++
.../LocalResourcePathValueSemantics.java | 8 +++
...lueSemantics.java => LocaleValueSemantics.java} | 67 +++++++++++++-------
.../valuesemantics/LongValueSemantics.java | 6 ++
.../valuesemantics/MarkupValueSemantics.java | 8 +++
.../valuesemantics/OidDtoValueSemantics.java | 8 +++
.../valuesemantics/PasswordValueSemantics.java | 6 ++
.../valuesemantics/ShortValueSemantics.java | 8 +++
.../valuesemantics/StringValueSemantics.java | 6 ++
.../valuesemantics/TreeNodeValueSemantics.java | 24 ++++++++
.../valuesemantics/URLValueSemantics.java | 11 ++++
.../valuesemantics/UUIDValueSemantics.java | 8 +++
.../temporal/LocalDateTimeValueSemantics.java | 8 +++
.../temporal/LocalDateValueSemantics.java | 8 +++
.../temporal/LocalTimeValueSemantics.java | 8 +++
.../temporal/OffsetDateTimeValueSemantics.java | 8 +++
.../temporal/OffsetTimeValueSemantics.java | 7 +++
.../temporal/ZonedDateTimeValueSemantics.java | 8 +++
.../temporal/legacy/JavaSqlDateValueSemantics.java | 7 +++
.../legacy/JavaSqlTimeStampValueSemantics.java | 8 +++
.../temporal/legacy/JavaSqlTimeValueSemantics.java | 8 +++
.../legacy/JavaUtilDateValueSemantics.java | 8 +++
.../secman/applib/user/dom/ApplicationUser.java | 28 +++++++++
.../dom/mixins/ApplicationUser_updateLocale.java | 72 ++++++++++++++++++++++
.../secman/jdo/user/dom/ApplicationUser.java | 37 +++++++----
.../secman/jpa/user/dom/ApplicationUser.java | 15 +++++
extensions/vw/fullcalendar/applib/pom.xml | 5 ++
.../value/CalendarEventSemanticsProvider.java | 12 +++-
.../model/valuetypes/ValueTypeExample.java | 12 ++++
.../model/valuetypes/ValueTypeExampleService.java | 10 +--
.../semantics/AsciiDocValueSemantics.java | 8 +++
.../valuesemantics/JodaDateTimeValueSemantics.java | 8 +++
.../JodaLocalDateTimeValueSemantics.java | 9 +++
.../JodaLocalDateValueSemantics.java | 9 +++
.../JodaLocalTimeValueSemantics.java | 9 +++
.../semantics/MarkdownValueSemantics.java | 8 +++
53 files changed, 556 insertions(+), 42 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsAbstract.java
index 9adb8c2..2ba58fd 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsAbstract.java
@@ -35,6 +35,7 @@ import org.springframework.lang.Nullable;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.schema.common.v2.ValueType;
@@ -89,6 +90,11 @@ implements
}
/**
+ * JUnit support.
+ */
+ public Can<T> getExamples() { return Can.empty(); }
+
+ /**
* @param context - nullable in support of JUnit testing
* @return {@link Locale} from given context or else system's default
*/
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 50a68a0..8354c8e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -64,6 +64,7 @@ import org.apache.isis.core.metamodel.valuesemantics.FloatValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.IntValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.InteractionDtoValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.LocalResourcePathValueSemantics;
+import org.apache.isis.core.metamodel.valuesemantics.LocaleValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.LongValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.MarkupValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.OidDtoValueSemantics;
@@ -127,6 +128,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
BookmarkValueSemantics.class,
OidDtoValueSemantics.class,
UUIDValueSemantics.class,
+ LocaleValueSemantics.class,
TreeNodeValueSemantics.class,
ChangesDtoValueSemantics.class,
CommandDtoValueSemantics.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
index 345b1fe..26eedca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacet;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.schema.common.v2.ValueType;
@@ -131,4 +132,9 @@ implements
format.setMaximumFractionDigits(digits));
}
+ @Override
+ public Can<BigDecimal> getExamples() {
+ return Can.of(new BigDecimal("-63.1"), BigDecimal.ZERO);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
index e874397..e423752 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -95,4 +96,9 @@ implements
return 10;
}
+ @Override
+ public Can<BigInteger> getExamples() {
+ return Can.of(BigInteger.valueOf(-63L), BigInteger.ZERO);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java
index 00a2bb3..596f18f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java
@@ -28,10 +28,12 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.Blob;
+import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Bytes;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -84,4 +86,11 @@ implements
}
}
+ @Override
+ public Can<Blob> getExamples() {
+ return Can.of(
+ Blob.of("a Blob", CommonMimeType.BIN, new byte[] {1, 2, 3}),
+ Blob.of("another Blob", CommonMimeType.BIN, new byte[] {3, 4}));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BookmarkValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BookmarkValueSemantics.java
index d59ea45..9499d8c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BookmarkValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BookmarkValueSemantics.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -123,4 +124,11 @@ implements
return 4048;
}
+ @Override
+ public Can<Bookmark> getExamples() {
+ return Can.of(
+ Bookmark.parseElseFail("a:b"),
+ Bookmark.parseElseFail("c:d"));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java
index 8c037ae..8a4b59c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -140,4 +141,9 @@ implements
return 6;
}
+ @Override
+ public Can<Boolean> getExamples() {
+ return Can.of(Boolean.TRUE, Boolean.FALSE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BufferedImageValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
index 53b2f9a..840ca01 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
@@ -29,6 +29,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.OrderRelation;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.image._Images;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -119,7 +120,11 @@ implements
/*sonar-ignore-off*/
}
-
-
+ @Override
+ public Can<BufferedImage> getExamples() {
+ return Can.of(
+ new BufferedImage(4, 4, BufferedImage.TYPE_INT_RGB),
+ new BufferedImage(8, 8, BufferedImage.TYPE_INT_RGB));
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
index b8b313c..6a610f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -115,4 +116,11 @@ implements
return 6;
}
+ @Override
+ public Can<Byte> getExamples() {
+ return Can.of(
+ Byte.MIN_VALUE,
+ Byte.MAX_VALUE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java
index d0ef62d..1d21c0f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.util.schema.ChangesDtoUtils;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.chg.v2.ChangesDto;
import org.apache.isis.schema.common.v2.ValueType;
@@ -66,4 +67,9 @@ implements
return render(value, ChangesDtoUtils::toXml);
}
+ @Override
+ public Can<ChangesDto> getExamples() {
+ return Can.of(new ChangesDto(), new ChangesDto());
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
index 14666dd..3b00f28 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -110,5 +111,9 @@ implements
return 1;
}
+ @Override
+ public Can<Character> getExamples() {
+ return Can.of('a', 'b');
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java
index 35241ea..fbcd3cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java
@@ -25,10 +25,12 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.Clob;
+import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -77,4 +79,11 @@ implements
}
}
+ @Override
+ public Can<Clob> getExamples() {
+ return Can.of(
+ Clob.of("a Clob", CommonMimeType.TXT, "abc"),
+ Clob.of("another Clob", CommonMimeType.TXT, "ef"));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CommandDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CommandDtoValueSemantics.java
index 369ff34..06bc345 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CommandDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CommandDtoValueSemantics.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.util.schema.CommandDtoUtils;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.cmd.v2.CommandDto;
import org.apache.isis.schema.common.v2.ValueType;
@@ -66,4 +67,9 @@ implements
return render(value, CommandDtoUtils::toXml);
}
+ @Override
+ public Can<CommandDto> getExamples() {
+ return Can.of(new CommandDto(), new CommandDto());
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/DoubleValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/DoubleValueSemantics.java
index 720201f..603eea2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/DoubleValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/DoubleValueSemantics.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
import lombok.val;
@@ -109,5 +110,10 @@ implements
return 25;
}
+ @Override
+ public Can<Double> getExamples() {
+ return Can.of(Double.MIN_VALUE, Double.MAX_VALUE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java
index fb9e7ad..95fb8c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
@@ -200,4 +201,11 @@ implements
return max;
}
+ @Override
+ public Can<T> getExamples() {
+ return Stream.of(correspondingClass.getEnumConstants())
+ .limit(2)
+ .collect(Can.toCan());
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/FloatValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/FloatValueSemantics.java
index e229622..8e9c255 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/FloatValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/FloatValueSemantics.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
import lombok.val;
@@ -109,5 +110,10 @@ implements
return 20;
}
+ @Override
+ public Can<Float> getExamples() {
+ return Can.of(Float.MIN_VALUE, Float.MAX_VALUE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
index c664968..bd1712a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -115,4 +116,9 @@ implements
return 16;
}
+ @Override
+ public Can<Integer> getExamples() {
+ return Can.of(Integer.MIN_VALUE, Integer.MAX_VALUE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java
index efb854e..3417b21 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.util.schema.InteractionDtoUtils;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
import org.apache.isis.schema.ixn.v2.InteractionDto;
@@ -66,4 +67,9 @@ implements
return render(value, InteractionDtoUtils::toXml);
}
+ @Override
+ public Can<InteractionDto> getExamples() {
+ return Can.of(new InteractionDto(), new InteractionDto());
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
index cfb8fd0..8b146fe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -111,5 +112,12 @@ implements
return 2083;
}
+ @Override
+ public Can<LocalResourcePath> getExamples() {
+ return Can.of(
+ new LocalResourcePath("img/a"),
+ new LocalResourcePath("img/b"));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java
similarity index 56%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java
index 0be0511..a1c33ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocaleValueSemantics.java
@@ -18,7 +18,8 @@
*/
package org.apache.isis.core.metamodel.valuesemantics;
-import java.util.UUID;
+import java.util.Locale;
+import java.util.stream.Stream;
import javax.inject.Named;
@@ -29,23 +30,24 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
import lombok.val;
@Component
-@Named("isis.val.UUIDValueSemantics")
-public class UUIDValueSemantics
-extends ValueSemanticsAbstract<UUID>
+@Named("isis.val.LocaleValueSemantics")
+public class LocaleValueSemantics
+extends ValueSemanticsAbstract<Locale>
implements
- EncoderDecoder<UUID>,
- Parser<UUID>,
- Renderer<UUID> {
+ EncoderDecoder<Locale>,
+ Parser<Locale>,
+ Renderer<Locale> {
@Override
- public Class<UUID> getCorrespondingClass() {
- return UUID.class;
+ public Class<Locale> getCorrespondingClass() {
+ return Locale.class;
}
@Override
@@ -56,34 +58,34 @@ implements
// -- ENCODER DECODER
@Override
- public String toEncodedString(final UUID object) {
- return object.toString();
+ public String toEncodedString(final Locale object) {
+ return object.toLanguageTag();
}
@Override
- public UUID fromEncodedString(final String data) {
- return UUID.fromString(data);
+ public Locale fromEncodedString(final String data) {
+ return Locale.forLanguageTag(data);
}
// -- RENDERER
@Override
- public String simpleTextPresentation(final ValueSemanticsProvider.Context context, final UUID value) {
- return value == null ? "" : value.toString();
+ public String simpleTextPresentation(final ValueSemanticsProvider.Context context, final Locale value) {
+ return value == null ? "" : value.getDisplayLanguage(context.getInteractionContext().getLocale());
}
// -- PARSER
@Override
- public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final UUID value) {
- return value == null ? null : value.toString();
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final Locale value) {
+ return value == null ? null : toEncodedString(value);
}
@Override
- public UUID parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
+ public Locale parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
val input = _Strings.blankToNullOrTrim(text);
return input!=null
- ? UUID.fromString(input)
+ ? fromEncodedString(input)
: null;
}
@@ -94,10 +96,31 @@ implements
@Override
public int maxLength() {
- return 36;
+ return 80;
+ }
+
+ // -- EXAMPLES
+
+ @Override
+ public Can<Locale> getExamples() {
+ return Can.of(Locale.US, Locale.GERMAN);
+ }
+
+ // -- UTILITY
+
+ /**
+ * Stream subset of {@link Locale#getAvailableLocales()} that supports round-tripping.
+ */
+ public static Stream<Locale> streamSupportedValues() {
+ return Stream.of(Locale.getAvailableLocales())
+ .filter(LocaleValueSemantics::isRoundtripSupported);
+ }
+
+ // -- HELPER
+
+ private static boolean isRoundtripSupported(final Locale locale) {
+ return locale.equals(Locale.forLanguageTag(locale.toLanguageTag()));
}
- // private static final Pattern pattern = Pattern.compile(
- // "[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}");
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
index ea9772b..2d696ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -115,4 +116,9 @@ implements
return 28;
}
+ @Override
+ public Can<Long> getExamples() {
+ return Can.of(Long.MIN_VALUE, Long.MAX_VALUE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java
index eac8f1a..00847de 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -91,5 +92,12 @@ implements
return 0;
}
+ @Override
+ public Can<Markup> getExamples() {
+ return Can.of(
+ Markup.valueOf("a Markup"),
+ Markup.valueOf("another Markup"));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java
index 341f06d..4768aba 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/OidDtoValueSemantics.java
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuetypes.ValueSemanticsAdapter;
import org.apache.isis.schema.common.v2.OidDto;
@@ -55,4 +56,11 @@ extends ValueSemanticsAdapter<OidDto, Bookmark, Void> {
return value!=null ? Bookmark.forOidDto(value) : null;
}
+ @Override
+ public Can<OidDto> getExamples() {
+ return Can.of(
+ Bookmark.parseElseFail("a:b").toOidDto(),
+ Bookmark.parseElseFail("c:d").toOidDto());
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java
index c02c8c9..9202ad2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -94,4 +95,9 @@ implements
return 12;
}
+ @Override
+ public Can<Password> getExamples() {
+ return Can.of(Password.of("a Password"), Password.of("another Password"));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
index 8198507..e1eaab6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -115,4 +116,11 @@ implements
return 9;
}
+ @Override
+ public Can<Short> getExamples() {
+ return Can.of(
+ Short.MIN_VALUE,
+ Short.MAX_VALUE);
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
index 4115551..3414287 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -83,4 +84,9 @@ implements
return 25;
}
+ @Override
+ public Can<String> getExamples() {
+ return Can.of("a String", "another String");
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
index 696081d..603404d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
@@ -18,17 +18,22 @@
*/
package org.apache.isis.core.metamodel.valuesemantics;
+import java.util.Optional;
+import java.util.stream.Stream;
+
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.stereotype.Component;
+import org.apache.isis.applib.graph.tree.TreeAdapter;
import org.apache.isis.applib.graph.tree.TreeNode;
import org.apache.isis.applib.graph.tree.TreeState;
import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.memento._Mementos;
import org.apache.isis.commons.internal.memento._Mementos.Memento;
@@ -85,6 +90,25 @@ implements
memento.get("treeState", TreeState.class));
}
+ // -- EXAMPLES
+
+ @Override
+ public Can<TreeNode<?>> getExamples() {
+
+ class TreeAdapterString implements TreeAdapter<String> {
+ @Override public Optional<String> parentOf(final String value) {
+ return null; }
+ @Override public int childCountOf(final String value) {
+ return 0; }
+ @Override public Stream<String> childrenOf(final String value) {
+ return Stream.empty(); }
+ }
+
+ return Can.of(
+ TreeNode.of("TreeRoot", TreeAdapterString.class, TreeState.rootCollapsed()),
+ TreeNode.of("another TreeRoot", TreeAdapterString.class, TreeState.rootCollapsed()));
+ }
+
// -- HELPER
private _Mementos.Memento newMemento(){
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java
index 5f74870..a3afe84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.valuesemantics;
import java.net.MalformedURLException;
+import java.net.URL;
import javax.inject.Named;
@@ -29,9 +30,11 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
+import lombok.SneakyThrows;
import lombok.val;
@Component
@@ -109,4 +112,12 @@ implements
return 2083;
}
+ @SneakyThrows
+ @Override
+ public Can<URL> getExamples() {
+ return Can.of(
+ new URL("https://a.b.c"),
+ new URL("https://b.c.d"));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
index 0be0511..a92fc29 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -97,6 +98,13 @@ implements
return 36;
}
+ @Override
+ public Can<UUID> getExamples() {
+ return Can.of(
+ UUID.randomUUID(),
+ UUID.randomUUID());
+ }
+
// private static final Pattern pattern = Pattern.compile(
// "[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}");
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java
index f8f1d7e..7ae71c4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java
@@ -26,6 +26,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.OrderRelation;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -62,4 +63,11 @@ implements OrderRelation<LocalDateTime, Duration> {
return ALMOST_A_SECOND;
}
+ @Override
+ public Can<LocalDateTime> getExamples() {
+ return Can.of(
+ LocalDateTime.now(),
+ LocalDateTime.now().plusDays(2).plusSeconds(15));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java
index f9f92ea..1a2ca76 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java
@@ -26,6 +26,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.OrderRelation;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -62,4 +63,11 @@ implements OrderRelation<LocalDate, Duration> {
return Duration.ZERO; // not used for dates, as these are integer based
}
+ @Override
+ public Can<LocalDate> getExamples() {
+ return Can.of(
+ LocalDate.now(),
+ LocalDate.now().plusDays(2));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java
index 24f236b..f5dfd9c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -60,4 +61,11 @@ extends TemporalValueSemanticsProvider<LocalTime> {
return ALMOST_A_SECOND;
}
+ @Override
+ public Can<LocalTime> getExamples() {
+ return Can.of(
+ LocalTime.now(),
+ LocalTime.now().plusSeconds(15));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java
index e64168b..fd22054 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -60,4 +61,11 @@ extends TemporalValueSemanticsProvider<OffsetDateTime> {
return ALMOST_A_SECOND;
}
+ @Override
+ public Can<OffsetDateTime> getExamples() {
+ return Can.of(
+ OffsetDateTime.now(),
+ OffsetDateTime.now().plusDays(2).plusSeconds(15));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java
index 8ae0eb6..fcecaf3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -60,5 +61,11 @@ extends TemporalValueSemanticsProvider<OffsetTime> {
return ALMOST_A_SECOND;
}
+ @Override
+ public Can<OffsetTime> getExamples() {
+ return Can.of(
+ OffsetTime.now(),
+ OffsetTime.now().plusSeconds(15));
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java
index 33db215..12ba84b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
@Component
@@ -60,4 +61,11 @@ extends TemporalValueSemanticsProvider<ZonedDateTime> {
return ALMOST_A_SECOND;
}
+ @Override
+ public Can<ZonedDateTime> getExamples() {
+ return Can.of(
+ ZonedDateTime.now(),
+ ZonedDateTime.now().plusDays(2).plusSeconds(15));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java
index 2c1420b..0433a7c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java
@@ -27,6 +27,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalDateValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
@@ -63,5 +64,11 @@ extends TemporalSemanticsAdapter<Date, LocalDate> {
return value.toLocalDate();
}
+ @Override
+ public Can<Date> getExamples() {
+ return Can.of(
+ new java.sql.Date(new java.util.Date().getTime()),
+ new java.sql.Date(0L));
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
index 997dd86..d1677eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
@@ -27,6 +27,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
@@ -57,4 +58,11 @@ extends TemporalSemanticsAdapter<Timestamp, LocalDateTime> {
return value.toLocalDateTime();
}
+ @Override
+ public Can<Timestamp> getExamples() {
+ return Can.of(
+ new Timestamp(new java.util.Date().getTime()),
+ new Timestamp(0L));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java
index 2abba15..cfe07dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java
@@ -27,6 +27,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalTimeValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
@@ -61,4 +62,11 @@ extends TemporalSemanticsAdapter<Time, LocalTime> {
return value.toLocalTime();
}
+ @Override
+ public Can<Time> getExamples() {
+ return Can.of(
+ new java.sql.Time(new java.util.Date().getTime()),
+ new java.sql.Time(0L));
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
index 8d9ccc0..128a626 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
@@ -28,6 +28,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
@@ -68,4 +69,11 @@ extends TemporalSemanticsAdapter<java.util.Date, LocalDateTime> {
value.toInstant(), ZoneId.systemDefault());
}
+ @Override
+ public Can<Date> getExamples() {
+ return Can.of(
+ new java.util.Date(),
+ new java.util.Date(0L));
+ }
+
}
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java
index 5282c8a..052311b 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/ApplicationUser.java
@@ -23,6 +23,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.List;
+import java.util.Locale;
import java.util.Objects;
import java.util.Set;
@@ -386,6 +387,33 @@ public abstract class ApplicationUser
public abstract String getFaxNumber();
public abstract void setFaxNumber(String faxNumber);
+ // -- LOCALE
+
+ @Property(
+ domainEvent = UserLocale.DomainEvent.class,
+ editing = Editing.ENABLED,
+ maxLength = UserLocale.MAX_LENGTH
+ )
+ @PropertyLayout(
+ fieldSetId = "identity",
+ sequence = "2"
+ )
+ @Parameter(
+ optionality = Optionality.OPTIONAL
+ )
+ @ParameterLayout(
+ named = "Locale"
+ )
+ @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface UserLocale {
+ int MAX_LENGTH = 120;
+ class DomainEvent extends PropertyDomainEvent<Locale> {}
+ }
+
+ @UserLocale
+ public abstract Locale getLocale();
+ public abstract void setLocale(Locale locale);
// -- AT PATH
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
new file mode 100644
index 0000000..bf79eb7
--- /dev/null
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.extensions.secman.applib.user.dom.mixins;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.applib.annotation.MinLength;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.core.metamodel.valuesemantics.LocaleValueSemantics;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
+import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
+import org.apache.isis.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateLocale.DomainEvent;
+
+import lombok.RequiredArgsConstructor;
+
+@Action(
+ domainEvent = DomainEvent.class,
+ semantics = SemanticsOf.IDEMPOTENT
+)
+@ActionLayout(
+ associateWith = "locale",
+ promptStyle = PromptStyle.INLINE_AS_IF_EDIT,
+ sequence = "1"
+)
+@RequiredArgsConstructor
+public class ApplicationUser_updateLocale {
+
+ public static class DomainEvent
+ extends IsisModuleExtSecmanApplib.ActionDomainEvent<ApplicationUser_updateLocale> {}
+
+ private final ApplicationUser target;
+
+ @MemberSupport public ApplicationUser act(
+ final Locale locale) {
+ target.setLocale(locale);
+ return target;
+ }
+
+ @MemberSupport public String disableAct() {
+ return target.isForSelfOrRunAsAdministrator()? null: "Can only update your own user record.";
+ }
+ @MemberSupport public Locale defaultLocale() { return target.getLocale(); }
+
+ @MemberSupport public List<Locale> autoCompleteLocale(@MinLength(1) final String search) {
+ return LocaleValueSemantics.streamSupportedValues()
+ .filter(locale->locale.toLanguageTag().toLowerCase().contains(search.toLowerCase()))
+ .collect(Collectors.toList());
+ }
+
+}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
index c651265..2d1d7f4 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.extensions.secman.jdo.user.dom;
+import java.util.Locale;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -112,7 +113,7 @@ public class ApplicationUser
return username;
}
@Override
- public void setUsername(String username) { this.username = username; }
+ public void setUsername(final String username) { this.username = username; }
// -- FAMILY NAME
@@ -126,7 +127,7 @@ public class ApplicationUser
return familyName;
}
@Override
- public void setFamilyName(String familyName) {
+ public void setFamilyName(final String familyName) {
this.familyName = familyName;
}
@@ -142,7 +143,7 @@ public class ApplicationUser
return givenName;
}
@Override
- public void setGivenName(String givenName) {
+ public void setGivenName(final String givenName) {
this.givenName = givenName;
}
@@ -158,7 +159,7 @@ public class ApplicationUser
return knownAs;
}
@Override
- public void setKnownAs(String knownAs) {
+ public void setKnownAs(final String knownAs) {
this.knownAs = knownAs;
}
@@ -174,7 +175,7 @@ public class ApplicationUser
return emailAddress;
}
@Override
- public void setEmailAddress(String emailAddress) {
+ public void setEmailAddress(final String emailAddress) {
this.emailAddress = emailAddress;
}
@@ -190,7 +191,7 @@ public class ApplicationUser
return phoneNumber;
}
@Override
- public void setPhoneNumber(String phoneNumber) {
+ public void setPhoneNumber(final String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@@ -206,10 +207,24 @@ public class ApplicationUser
return faxNumber;
}
@Override
- public void setFaxNumber(String faxNumber) {
+ public void setFaxNumber(final String faxNumber) {
this.faxNumber = faxNumber;
}
+ // -- LOCALE
+
+ @Column(allowsNull="true")
+ private Locale locale;
+
+ @UserLocale
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+ @Override
+ public void setLocale(final Locale locale) {
+ this.locale = locale;
+ }
// -- AT PATH
@@ -222,7 +237,7 @@ public class ApplicationUser
return atPath;
}
@Override
- public void setAtPath(String atPath) {
+ public void setAtPath(final String atPath) {
this.atPath = atPath;
}
@@ -238,7 +253,7 @@ public class ApplicationUser
return accountType;
}
@Override
- public void setAccountType(org.apache.isis.extensions.secman.applib.user.dom.AccountType accountType) {
+ public void setAccountType(final org.apache.isis.extensions.secman.applib.user.dom.AccountType accountType) {
this.accountType = accountType;
}
@@ -254,7 +269,7 @@ public class ApplicationUser
return status;
}
@Override
- public void setStatus(ApplicationUserStatus status) {
+ public void setStatus(final ApplicationUserStatus status) {
this.status = status;
}
@@ -270,7 +285,7 @@ public class ApplicationUser
return encryptedPassword;
}
@Override
- public void setEncryptedPassword(String encryptedPassword) {
+ public void setEncryptedPassword(final String encryptedPassword) {
this.encryptedPassword = encryptedPassword;
}
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUser.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUser.java
index 971eaa2..76f8039 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUser.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUser.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.extensions.secman.jpa.user.dom;
+import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
@@ -211,6 +212,20 @@ public class ApplicationUser
this.faxNumber = faxNumber;
}
+ // -- LOCALE
+
+ @Column(nullable = true)
+ private Locale locale;
+
+ @UserLocale
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+ @Override
+ public void setLocale(final Locale locale) {
+ this.locale = locale;
+ }
// -- AT PATH
diff --git a/extensions/vw/fullcalendar/applib/pom.xml b/extensions/vw/fullcalendar/applib/pom.xml
index df915d4..be831f1 100644
--- a/extensions/vw/fullcalendar/applib/pom.xml
+++ b/extensions/vw/fullcalendar/applib/pom.xml
@@ -36,6 +36,11 @@
<dependencies>
+ <dependency>
+ <groupId>org.apache.isis.commons</groupId>
+ <artifactId>isis-commons</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-applib</artifactId>
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java
index 1c34729..283ee44 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.value.semantics.DefaultsProvider;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
import lombok.RequiredArgsConstructor;
@@ -91,6 +92,14 @@ implements
return render(value, v->v.toString());
}
+ // -- EXAMPLES
+
+ @Override
+ public Can<CalendarEvent> getExamples() {
+ //TODO provide examples
+ return Can.empty();
+ }
+
// -- EMBEDDING
// typed tuple of base-types
@@ -177,7 +186,4 @@ implements
}
-
-
-
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java
index 1216545..69c96fa 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java
@@ -30,6 +30,7 @@ import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZonedDateTime;
import java.util.List;
+import java.util.Locale;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;
@@ -212,6 +213,17 @@ public abstract class ValueTypeExample<T> {
private UUID updateValue = UUID.randomUUID();
}
+ @DomainObject(
+ logicalTypeName = "isis.testdomain.valuetypes.ValueTypeExampleLocale",
+ nature = Nature.BEAN)
+ public static class ValueTypeExampleLocale
+ extends ValueTypeExample<Locale> {
+ @Property @Getter @Setter
+ private Locale value = Locale.US;
+ @Getter
+ private Locale updateValue = Locale.GERMAN;
+ }
+
// -- EXAMPLES - NUMBERS
@DomainObject(
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExampleService.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExampleService.java
index ad71080..7747b4f 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExampleService.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExampleService.java
@@ -28,6 +28,7 @@ import javax.inject.Inject;
import org.junit.jupiter.params.provider.Arguments;
import org.springframework.stereotype.Service;
+import org.apache.isis.applib.value.semantics.ValueSemanticsResolver;
import org.apache.isis.commons.internal.base._Strings;
import lombok.Value;
@@ -36,12 +37,9 @@ import lombok.val;
@Service
public class ValueTypeExampleService {
+ @Inject ValueSemanticsResolver valueSemanticsResolver;
@Inject List<ValueTypeExample<?>> examples;
- public Stream<ValueTypeExample<?>> streamExamples() {
- return examples.stream();
- }
-
@Value(staticConstructor = "of")
public static class Scenario implements Comparable<Scenario> {
static Scenario of(final ValueTypeExample<?> example) {
@@ -58,6 +56,10 @@ public class ValueTypeExampleService {
}
}
+ public Stream<ValueTypeExample<?>> streamExamples() {
+ return examples.stream();
+ }
+
public Stream<Scenario> streamScenarios() {
val sortedScenarios = streamExamples()
.map(Scenario::of)
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
index 943697a..ebea831 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
@@ -85,4 +86,11 @@ implements
return AsciiDoc.valueOf(encodedString);
}
+ @Override
+ public Can<AsciiDoc> getExamples() {
+ return Can.of(
+ AsciiDoc.valueOf("a AsciiDoc"),
+ AsciiDoc.valueOf("another AsciiDoc"));
+ }
+
}
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java
index 1152e6e..f2d68c8 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java
@@ -27,6 +27,7 @@ import org.joda.time.DateTime;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.ZonedDateTimeValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
import org.apache.isis.valuetypes.jodatime.applib.value.JodaTimeConverters;
@@ -58,4 +59,11 @@ extends TemporalSemanticsAdapter<org.joda.time.DateTime, ZonedDateTime> {
return JodaTimeConverters.fromJoda(value);
}
+ @Override
+ public Can<DateTime> getExamples() {
+ return Can.of(
+ org.joda.time.DateTime.now(),
+ org.joda.time.DateTime.now().plusDays(2).plusSeconds(15));
+ }
+
}
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java
index f97d789..703207a 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java
@@ -21,9 +21,11 @@ package org.apache.isis.valuetypes.jodatime.integration.valuesemantics;
import javax.inject.Inject;
import javax.inject.Named;
+import org.joda.time.LocalDateTime;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
import org.apache.isis.valuetypes.jodatime.applib.value.JodaTimeConverters;
@@ -55,5 +57,12 @@ extends TemporalSemanticsAdapter<org.joda.time.LocalDateTime, java.time.LocalDat
return JodaTimeConverters.fromJoda(value);
}
+ @Override
+ public Can<LocalDateTime> getExamples() {
+ return Can.of(
+ org.joda.time.LocalDateTime.now(),
+ org.joda.time.LocalDateTime.now().plusDays(2).plusSeconds(15));
+ }
+
}
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java
index b37c6f9..bf7be7b 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java
@@ -21,9 +21,11 @@ package org.apache.isis.valuetypes.jodatime.integration.valuesemantics;
import javax.inject.Inject;
import javax.inject.Named;
+import org.joda.time.LocalDate;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalDateValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
import org.apache.isis.valuetypes.jodatime.applib.value.JodaTimeConverters;
@@ -55,5 +57,12 @@ extends TemporalSemanticsAdapter<org.joda.time.LocalDate, java.time.LocalDate>
return JodaTimeConverters.fromJoda(value);
}
+ @Override
+ public Can<LocalDate> getExamples() {
+ return Can.of(
+ org.joda.time.LocalDate.now(),
+ org.joda.time.LocalDate.now().plusDays(2));
+ }
+
}
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java
index bc9b0d9..f5e7350 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/isis/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java
@@ -21,9 +21,11 @@ package org.apache.isis.valuetypes.jodatime.integration.valuesemantics;
import javax.inject.Inject;
import javax.inject.Named;
+import org.joda.time.LocalTime;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.valuesemantics.temporal.LocalTimeValueSemantics;
import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
import org.apache.isis.valuetypes.jodatime.applib.value.JodaTimeConverters;
@@ -55,4 +57,11 @@ extends TemporalSemanticsAdapter<org.joda.time.LocalTime, java.time.LocalTime>
return JodaTimeConverters.fromJoda(value);
}
+ @Override
+ public Can<LocalTime> getExamples() {
+ return Can.of(
+ org.joda.time.LocalTime.now(),
+ org.joda.time.LocalTime.now().plusSeconds(15));
+ }
+
}
diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java
index a21b110..bcaa605 100644
--- a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java
+++ b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.value.semantics.EncoderDecoder;
import org.apache.isis.applib.value.semantics.Parser;
import org.apache.isis.applib.value.semantics.Renderer;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.schema.common.v2.ValueType;
import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
@@ -96,4 +97,11 @@ implements
return 0;
}
+ @Override
+ public Can<Markdown> getExamples() {
+ return Can.of(
+ Markdown.valueOf("a Markdown"),
+ Markdown.valueOf("another Markdown"));
+ }
+
}