This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch CAUSEWAY-3719 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit d87c804c4b1d864702314d068466d1ca834f8fec Author: danhaywood <[email protected]> AuthorDate: Tue Apr 9 11:53:18 2024 +0200 CAUSEWAY-3719: adds AutoConfiguration for all value semantics --- .../metamodel/CausewayModuleCoreMetamodel.java | 74 +++++++++++----------- .../ApplicationFeatureIdValueSemantics.java | 15 ++++- .../valuesemantics/BigDecimalValueSemantics.java | 14 +++- .../valuesemantics/BigIntegerValueSemantics.java | 15 ++++- .../valuesemantics/BookmarkValueSemantics.java | 14 +++- .../valuesemantics/BooleanValueSemantics.java | 16 ++++- .../BufferedImageValueSemantics.java | 14 +++- .../valuesemantics/ByteValueSemantics.java | 14 +++- .../valuesemantics/ChangesDtoValueSemantics.java | 14 +++- .../valuesemantics/CharacterValueSemantics.java | 16 ++++- .../valuesemantics/ClobValueSemantics.java | 15 ++++- .../valuesemantics/CommandDtoValueSemantics.java | 14 +++- .../valuesemantics/DoubleValueSemantics.java | 14 +++- .../valuesemantics/EnumValueSemanticsAbstract.java | 4 ++ .../valuesemantics/FloatValueSemantics.java | 14 +++- .../IdStringifierForSerializable.java | 3 + .../valuesemantics/IntValueSemantics.java | 14 +++- .../InteractionDtoValueSemantics.java | 14 +++- .../LocalResourcePathValueSemantics.java | 14 +++- .../valuesemantics/LocaleValueSemantics.java | 14 +++- .../valuesemantics/LongValueSemantics.java | 14 +++- .../valuesemantics/MarkupValueSemantics.java | 14 +++- .../valuesemantics/OidDtoValueSemantics.java | 14 +++- .../valuesemantics/PasswordValueSemantics.java | 14 +++- .../valuesemantics/ShortValueSemantics.java | 15 ++++- .../valuesemantics/StringValueSemantics.java | 14 +++- .../valuesemantics/TreeNodeValueSemantics.java | 14 +++- .../valuesemantics/TreePathValueSemantics.java | 20 ++++-- .../valuesemantics/URLValueSemantics.java | 15 ++++- .../valuesemantics/UUIDValueSemantics.java | 14 +++- .../valuesemantics/XmlValueSemanticsAbstract.java | 14 ++++ .../temporal/LocalDateTimeValueSemantics.java | 15 ++++- .../temporal/LocalDateValueSemantics.java | 14 +++- .../temporal/LocalTimeValueSemantics.java | 14 +++- .../temporal/OffsetDateTimeValueSemantics.java | 14 +++- .../temporal/OffsetTimeValueSemantics.java | 14 +++- .../temporal/ZonedDateTimeValueSemantics.java | 14 +++- .../temporal/legacy/JavaSqlDateValueSemantics.java | 16 ++++- .../legacy/JavaSqlTimeStampValueSemantics.java | 14 +++- .../temporal/legacy/JavaSqlTimeValueSemantics.java | 16 ++++- .../legacy/JavaUtilDateValueSemantics.java | 14 +++- .../commandlog/jpa/dom/CommandLogEntryPK.java | 17 ++++- .../executionlog/jdo/dom/ExecutionLogEntryPK.java | 17 ++++- .../executionlog/jpa/dom/ExecutionLogEntryPK.java | 17 ++++- .../jdo/dom/ExecutionOutboxEntryPK.java | 17 ++++- .../jpa/dom/ExecutionOutboxEntryPK.java | 17 ++++- .../sessionlog/jpa/dom/SessionLogEntryPK.java | 17 ++++- .../applib/value/CalendarEventSemantics.java | 25 ++++++-- .../CausewayModulePersistenceJdoDatanucleus.java | 36 +++++------ .../valuetypes/DnByteIdValueSemantics.java | 17 ++++- .../valuetypes/DnCharIdValueSemantics.java | 16 ++++- .../DnDatastoreIdImplValueSemantics.java | 16 ++++- .../DnDatastoreUniqueLongIdValueSemantics.java | 17 ++++- .../valuetypes/DnIntIdValueSemantics.java | 16 ++++- .../valuetypes/DnLongIdValueSemantics.java | 16 ++++- .../valuetypes/DnObjectIdValueSemantics.java | 16 ++++- .../valuetypes/DnScoidValueSemantics.java | 17 ++++- .../valuetypes/DnShortIdValueSemantics.java | 17 ++++- .../valuetypes/DnStringIdValueSemantics.java | 17 ++++- .../valuetypes/JdoByteIdentityValueSemantics.java | 17 ++++- .../valuetypes/JdoCharIdentityValueSemantics.java | 17 ++++- .../valuetypes/JdoDatastoreIdValueSemantics.java | 17 ++++- .../valuetypes/JdoIntIdentityValueSemantics.java | 17 ++++- .../valuetypes/JdoLongIdentityValueSemantics.java | 17 ++++- .../JdoObjectIdentityValueSemantics.java | 17 ++++- .../valuetypes/JdoShortIdentityValueSemantics.java | 17 ++++- .../JdoStringIdentityValueSemantics.java | 17 ++++- .../metamodel/src/main/java/module-info.java | 1 + .../CausewayModuleValAsciidocMetaModel.java | 2 +- .../semantics/AsciiDocValueSemantics.java | 15 ++++- .../integration/src/main/java/module-info.java | 1 + .../CausewayModuleValJodatimeIntegration.java | 8 +-- .../valuesemantics/JodaDateTimeValueSemantics.java | 16 ++++- .../JodaLocalDateTimeValueSemantics.java | 14 +++- .../JodaLocalDateValueSemantics.java | 16 ++++- .../JodaLocalTimeValueSemantics.java | 16 ++++- .../metamodel/src/main/java/module-info.java | 1 + .../CausewayModuleValMarkdownMetaModel.java | 2 +- .../semantics/MarkdownValueSemantics.java | 15 ++++- .../vega/metamodel/src/main/java/module-info.java | 1 + .../metamodel/CausewayModuleValVegaMetaModel.java | 2 +- .../metamodel/semantics/VegaValueSemantics.java | 16 +++++ 82 files changed, 1074 insertions(+), 149 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java index b9e2e59397..bd6c9ad3c8 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java @@ -135,47 +135,47 @@ import lombok.NonNull; ValueSemanticsResolverDefault.class, // Value Semantics (built-in defaults) - BooleanValueSemantics.class, - ByteValueSemantics.class, - ShortValueSemantics.class, - IntValueSemantics.class, - LongValueSemantics.class, - DoubleValueSemantics.class, - FloatValueSemantics.class, - BigDecimalValueSemantics.class, - BigIntegerValueSemantics.class, - CharacterValueSemantics.class, - StringValueSemantics.class, - PasswordValueSemantics.class, - BufferedImageValueSemantics.class, + BooleanValueSemantics.AutoConfiguration.class, + ByteValueSemantics.AutoConfiguration.class, + ShortValueSemantics.AutoConfiguration.class, + IntValueSemantics.AutoConfiguration.class, + LongValueSemantics.AutoConfiguration.class, + DoubleValueSemantics.AutoConfiguration.class, + FloatValueSemantics.AutoConfiguration.class, + BigDecimalValueSemantics.AutoConfiguration.class, + BigIntegerValueSemantics.AutoConfiguration.class, + CharacterValueSemantics.AutoConfiguration.class, + StringValueSemantics.AutoConfiguration.class, + PasswordValueSemantics.AutoConfiguration.class, + BufferedImageValueSemantics.AutoConfiguration.class, BlobValueSemantics.AutoConfiguration.class, - ClobValueSemantics.class, - MarkupValueSemantics.class, - URLValueSemantics.class, - LocalResourcePathValueSemantics.class, - BookmarkValueSemantics.class, - OidDtoValueSemantics.class, - UUIDValueSemantics.class, - LocaleValueSemantics.class, - TreePathValueSemantics.class, - TreeNodeValueSemantics.class, - ChangesDtoValueSemantics.class, - CommandDtoValueSemantics.class, - InteractionDtoValueSemantics.class, + ClobValueSemantics.AutoConfiguration.class, + MarkupValueSemantics.AutoConfiguration.class, + URLValueSemantics.AutoConfiguration.class, + LocalResourcePathValueSemantics.AutoConfiguration.class, + BookmarkValueSemantics.AutoConfiguration.class, + OidDtoValueSemantics.AutoConfiguration.class, + UUIDValueSemantics.AutoConfiguration.class, + LocaleValueSemantics.AutoConfiguration.class, + TreePathValueSemantics.AutoConfiguration.class, + TreeNodeValueSemantics.AutoConfiguration.class, + ChangesDtoValueSemantics.AutoConfiguration.class, + CommandDtoValueSemantics.AutoConfiguration.class, + InteractionDtoValueSemantics.AutoConfiguration.class, // Value Semantics (temporal) - LocalDateTimeValueSemantics.class, - LocalDateValueSemantics.class, - LocalTimeValueSemantics.class, - OffsetDateTimeValueSemantics.class, - OffsetTimeValueSemantics.class, - ZonedDateTimeValueSemantics.class, + LocalDateTimeValueSemantics.AutoConfiguration.class, + LocalDateValueSemantics.AutoConfiguration.class, + LocalTimeValueSemantics.AutoConfiguration.class, + OffsetDateTimeValueSemantics.AutoConfiguration.class, + OffsetTimeValueSemantics.AutoConfiguration.class, + ZonedDateTimeValueSemantics.AutoConfiguration.class, // Value Semantics (temporal legacy) - JavaSqlDateValueSemantics.class, - JavaSqlTimeValueSemantics.class, - JavaSqlTimeStampValueSemantics.class, - JavaUtilDateValueSemantics.class, + JavaSqlDateValueSemantics.AutoConfiguration.class, + JavaSqlTimeValueSemantics.AutoConfiguration.class, + JavaSqlTimeStampValueSemantics.AutoConfiguration.class, + JavaUtilDateValueSemantics.AutoConfiguration.class, // Value Semantics (meta-model) - ApplicationFeatureIdValueSemantics.class, + ApplicationFeatureIdValueSemantics.AutoConfiguration.class, // fallback IdStringifier IdStringifierForSerializable.class, diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java index 0ace27a19f..c3785ba963 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java @@ -21,7 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.services.appfeat.ApplicationFeatureId; @@ -36,7 +38,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.val; -@Component @Named("causeway.metamodel.value.ApplicationFeatureIdValueSemantics") @Priority(PriorityPrecedence.LATE) public class ApplicationFeatureIdValueSemantics @@ -45,6 +46,16 @@ implements Parser<ApplicationFeatureId>, Renderer<ApplicationFeatureId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ApplicationFeatureIdValueSemantics.class) + public ApplicationFeatureIdValueSemantics defaultApplicationFeatureIdValueSemantics() { + return new ApplicationFeatureIdValueSemantics(); + } + } + @Override public Class<ApplicationFeatureId> getCorrespondingClass() { return ApplicationFeatureId.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java index 0df8eade1e..34c2457996 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java @@ -28,6 +28,9 @@ import javax.annotation.Priority; import javax.inject.Inject; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -49,7 +52,6 @@ import lombok.NonNull; import lombok.Setter; import lombok.val; -@Component @Named("causeway.metamodel.value.BigDecimalValueSemantics") @Priority(PriorityPrecedence.LATE) public class BigDecimalValueSemantics @@ -60,6 +62,16 @@ implements Renderer<BigDecimal>, IdStringifier.EntityAgnostic<BigDecimal> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(BigDecimalValueSemantics.class) + public BigDecimalValueSemantics defaultBigDecimalValueSemantics() { + return new BigDecimalValueSemantics(); + } + } + @Setter @Inject private SpecificationLoader specificationLoader; @Setter @Inject diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java index bbea83b61b..16998f8d7d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java @@ -24,7 +24,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.services.bookmark.IdStringifier; @@ -39,7 +41,6 @@ import org.apache.causeway.schema.common.v2.ValueWithTypeDto; import lombok.NonNull; -@Component @Named("causeway.metamodel.value.BigIntegerValueSemantics") @Priority(PriorityPrecedence.LATE) public class BigIntegerValueSemantics @@ -50,6 +51,16 @@ implements Renderer<BigInteger>, IdStringifier.EntityAgnostic<BigInteger> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(BigIntegerValueSemantics.class) + public BigIntegerValueSemantics defaultBigIntegerValueSemantics() { + return new BigIntegerValueSemantics(); + } + } + @Override public Class<BigInteger> getCorrespondingClass() { return BigInteger.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java index c550f0e835..49716ea9fb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -37,7 +40,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.val; -@Component @Named("causeway.metamodel.value.BookmarkValueSemantics") @Priority(PriorityPrecedence.LATE) public class BookmarkValueSemantics @@ -47,6 +49,16 @@ implements Parser<Bookmark>, Renderer<Bookmark> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(BookmarkValueSemantics.class) + public BookmarkValueSemantics defaultBookmarkValueSemantics() { + return new BookmarkValueSemantics(); + } + } + @Override public Class<Bookmark> getCorrespondingClass() { return Bookmark.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java index edc8aac0d3..319d00c3ed 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java @@ -23,7 +23,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.exceptions.recoverable.TextEntryParseException; @@ -43,7 +45,6 @@ import lombok.val; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.BooleanValueSemantics") @Priority(PriorityPrecedence.LATE) public class BooleanValueSemantics @@ -53,6 +54,17 @@ implements Parser<Boolean>, Renderer<Boolean> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(BooleanValueSemantics.class) + public BooleanValueSemantics defaultBooleanValueSemantics() { + return new BooleanValueSemantics(); + } + } + + @Override public Class<Boolean> getCorrespondingClass() { return Boolean.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java index 7bdfc017c2..897bbdcb97 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java @@ -24,6 +24,9 @@ import java.util.Optional; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -41,7 +44,6 @@ import org.apache.causeway.schema.common.v2.BlobDto; import org.apache.causeway.schema.common.v2.ValueType; import org.apache.causeway.schema.common.v2.ValueWithTypeDto; -@Component @Named("causeway.metamodel.value.BufferedImageValueSemantics") @Priority(PriorityPrecedence.LATE) public class BufferedImageValueSemantics @@ -50,6 +52,16 @@ implements ImageValueSemantics, OrderRelation<BufferedImage, Void> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(BufferedImageValueSemantics.class) + public BufferedImageValueSemantics defaultBufferedImageValueSemantics() { + return new BufferedImageValueSemantics(); + } + } + @Override public Class<BufferedImage> getCorrespondingClass() { return BufferedImage.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java index 40f9b4346b..138f9d82af 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java @@ -24,6 +24,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -45,7 +48,6 @@ import lombok.val; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.ByteValueSemantics") @Priority(PriorityPrecedence.LATE) public class ByteValueSemantics @@ -56,6 +58,16 @@ implements Renderer<Byte>, IdStringifier.EntityAgnostic<Byte> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ByteValueSemantics.class) + public ByteValueSemantics defaultByteValueSemantics() { + return new ByteValueSemantics(); + } + } + @Override public Class<Byte> getCorrespondingClass() { return Byte.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java index 85cfa4c38b..46cce91a6d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -28,12 +31,21 @@ import org.apache.causeway.applib.util.schema.ChangesDtoUtils; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.schema.chg.v2.ChangesDto; -@Component @Named("causeway.metamodel.value.ChangesDtoValueSemantics") @Priority(PriorityPrecedence.LATE) public class ChangesDtoValueSemantics extends XmlValueSemanticsAbstract<ChangesDto> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ChangesDtoValueSemantics.class) + public ChangesDtoValueSemantics defaultChangesDtoValueSemantics() { + return new ChangesDtoValueSemantics(); + } + } + @Override public final Class<ChangesDto> getCorrespondingClass() { return ChangesDto.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java index f2be09b592..5fcadb3793 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java @@ -26,7 +26,9 @@ import java.util.stream.Collectors; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.exceptions.recoverable.InvalidEntryException; @@ -47,7 +49,6 @@ import lombok.val; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.CharacterValueSemantics") @Priority(PriorityPrecedence.LATE) public class CharacterValueSemantics @@ -58,6 +59,17 @@ implements Renderer<Character>, IdStringifier.EntityAgnostic<Character> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(CharacterValueSemantics.class) + public CharacterValueSemantics defaultCharacterValueSemantics() { + return new CharacterValueSemantics(); + } + } + + @Override public Class<Character> getCorrespondingClass() { return Character.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java index 5dc3795146..3b9c5c59db 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java @@ -23,7 +23,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.util.schema.CommonDtoUtils; @@ -36,7 +38,6 @@ import org.apache.causeway.applib.value.semantics.ValueSemanticsProvider; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.ClobValueSemantics") @Priority(PriorityPrecedence.LATE) public class ClobValueSemantics @@ -44,6 +45,16 @@ extends ValueSemanticsAbstract<Clob> implements Renderer<Clob> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ClobValueSemantics.class) + public ClobValueSemantics defaultClobValueSemantics() { + return new ClobValueSemantics(); + } + } + @Override public Class<Clob> getCorrespondingClass() { return Clob.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java index b16d69e391..ea9c9949eb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -28,12 +31,21 @@ import org.apache.causeway.applib.util.schema.CommandDtoUtils; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.schema.cmd.v2.CommandDto; -@Component @Named("causeway.metamodel.value.CommandDtoValueSemantics") @Priority(PriorityPrecedence.LATE) public class CommandDtoValueSemantics extends XmlValueSemanticsAbstract<CommandDto> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(CommandDtoValueSemantics.class) + public CommandDtoValueSemantics defaultCommandDtoValueSemantics() { + return new CommandDtoValueSemantics(); + } + } + @Override public final Class<CommandDto> getCorrespondingClass() { return CommandDto.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java index 97253eafd7..7b7f2f7a18 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java @@ -23,6 +23,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -39,7 +42,6 @@ import org.apache.causeway.schema.common.v2.ValueWithTypeDto; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.DoubleValueSemantics") @Priority(PriorityPrecedence.LATE) public class DoubleValueSemantics @@ -49,6 +51,16 @@ implements Parser<Double>, Renderer<Double> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DoubleValueSemantics.class) + public DoubleValueSemantics defaultDoubleValueSemantics() { + return new DoubleValueSemantics(); + } + } + @Override public Class<Double> getCorrespondingClass() { return Double.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java index 0bec4adf8c..fe759e3b58 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/EnumValueSemanticsAbstract.java @@ -48,6 +48,10 @@ import org.apache.causeway.schema.common.v2.EnumDto; import org.apache.causeway.schema.common.v2.ValueType; import org.apache.causeway.schema.common.v2.ValueWithTypeDto; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + import lombok.Getter; import lombok.val; import lombok.experimental.Accessors; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java index 93b44fdf04..93ad247e79 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java @@ -23,6 +23,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -39,7 +42,6 @@ import org.apache.causeway.schema.common.v2.ValueWithTypeDto; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.FloatValueSemantics") @Priority(PriorityPrecedence.LATE) public class FloatValueSemantics @@ -49,6 +51,16 @@ implements Parser<Float>, Renderer<Float> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(FloatValueSemantics.class) + public FloatValueSemantics defaultFloatValueSemantics() { + return new FloatValueSemantics(); + } + } + @Override public Class<Float> getCorrespondingClass() { return Float.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java index dafa7a82f8..55809f3057 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java @@ -24,6 +24,9 @@ import javax.annotation.Priority; import javax.inject.Inject; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java index 0b1edc0dce..f3eed4933e 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java @@ -24,6 +24,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -45,7 +48,6 @@ import lombok.val; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.IntValueSemantics") @Priority(PriorityPrecedence.LATE) public class IntValueSemantics @@ -56,6 +58,16 @@ implements Renderer<Integer>, IdStringifier.EntityAgnostic<Integer>{ + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(IntValueSemantics.class) + public IntValueSemantics defaultIntValueSemantics() { + return new IntValueSemantics(); + } + } + @Override public Class<Integer> getCorrespondingClass() { return Integer.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java index e8978b1c63..febee888c9 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -28,12 +31,21 @@ import org.apache.causeway.applib.util.schema.InteractionDtoUtils; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.schema.ixn.v2.InteractionDto; -@Component @Named("causeway.metamodel.value.InteractionDtoValueSemantics") @Priority(PriorityPrecedence.LATE) public class InteractionDtoValueSemantics extends XmlValueSemanticsAbstract<InteractionDto> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(InteractionDtoValueSemantics.class) + public InteractionDtoValueSemantics defaultInteractionDtoValueSemantics() { + return new InteractionDtoValueSemantics(); + } + } + @Override public final Class<InteractionDto> getCorrespondingClass() { return InteractionDto.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java index ac5bb45f24..84458c69b4 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java @@ -23,6 +23,9 @@ import java.nio.file.InvalidPathException; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -37,7 +40,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.val; -@Component @Named("causeway.metamodel.value.LocalResourcePathValueSemantics") @Priority(PriorityPrecedence.LATE) public class LocalResourcePathValueSemantics @@ -46,6 +48,16 @@ implements Parser<LocalResourcePath>, Renderer<LocalResourcePath> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(LocalResourcePathValueSemantics.class) + public LocalResourcePathValueSemantics defaultLocalResourcePathValueSemantics() { + return new LocalResourcePathValueSemantics(); + } + } + @Override public Class<LocalResourcePath> getCorrespondingClass() { return LocalResourcePath.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java index bdd33fbd8f..221a46c51a 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java @@ -23,6 +23,9 @@ import java.util.Locale; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -38,7 +41,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.val; -@Component @Named("causeway.metamodel.value.LocaleValueSemantics") @Priority(PriorityPrecedence.LATE) public class LocaleValueSemantics @@ -47,6 +49,16 @@ implements Parser<Locale>, Renderer<Locale> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(LocaleValueSemantics.class) + public LocaleValueSemantics defaultLocaleValueSemantics() { + return new LocaleValueSemantics(); + } + } + @Override public Class<Locale> getCorrespondingClass() { return Locale.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java index fcf82e0428..69ca6b9d66 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java @@ -24,6 +24,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -45,7 +48,6 @@ import lombok.val; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.LongValueSemantics") @Priority(PriorityPrecedence.LATE) public class LongValueSemantics @@ -56,6 +58,16 @@ implements Renderer<Long>, IdStringifier.EntityAgnostic<Long>{ + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(LongValueSemantics.class) + public LongValueSemantics defaultLongValueSemantics() { + return new LongValueSemantics(); + } + } + @Override public Class<Long> getCorrespondingClass() { return Long.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java index 482387eba5..3690172cca 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -34,7 +37,6 @@ import org.apache.causeway.commons.collections.Can; import org.apache.causeway.commons.internal.hardening._Hardening; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.MarkupValueSemantics") @Priority(PriorityPrecedence.LATE) public class MarkupValueSemantics @@ -43,6 +45,16 @@ implements Parser<Markup>, Renderer<Markup> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(MarkupValueSemantics.class) + public MarkupValueSemantics defaultMarkupValueSemantics() { + return new MarkupValueSemantics(); + } + } + @Override public Class<Markup> getCorrespondingClass() { return Markup.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java index d57aec6ca5..f5e4d89826 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java @@ -22,6 +22,9 @@ import javax.annotation.Priority; import javax.inject.Inject; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -32,7 +35,6 @@ import org.apache.causeway.core.metamodel.CausewayModuleCoreMetamodel; import org.apache.causeway.core.metamodel.valuetypes.ValueSemanticsAdapter; import org.apache.causeway.schema.common.v2.OidDto; -@Component @Named(OidDtoValueSemantics.LOGICAL_TYPE_NAME) @Priority(PriorityPrecedence.LATE) public class OidDtoValueSemantics @@ -40,6 +42,16 @@ extends ValueSemanticsAdapter<OidDto, Bookmark, Void> { public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreMetamodel.NAMESPACE_VALUE + ".OidDtoValueSemantics"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(OidDtoValueSemantics.class) + public OidDtoValueSemantics defaultOidDtoValueSemantics() { + return new OidDtoValueSemantics(); + } + } + @Inject BookmarkValueSemantics bookmarkValueSemantics; @Override diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java index bb34371e79..47837df7c2 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -35,7 +38,6 @@ import org.apache.causeway.commons.internal.base._Strings; import org.apache.causeway.schema.common.v2.ValueType; import org.apache.causeway.schema.common.v2.ValueWithTypeDto; -@Component @Named("causeway.metamodel.value.PasswordValueSemantics") @Priority(PriorityPrecedence.LATE) public class PasswordValueSemantics @@ -44,6 +46,16 @@ implements Parser<Password>, Renderer<Password> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(PasswordValueSemantics.class) + public PasswordValueSemantics defaultPasswordValueSemantics() { + return new PasswordValueSemantics(); + } + } + @Override public Class<Password> getCorrespondingClass() { return Password.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java index b29f4d641d..4918245b9f 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java @@ -24,7 +24,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.exceptions.recoverable.TextEntryParseException; @@ -45,7 +47,6 @@ import lombok.val; /** * due to auto-boxing also handles the primitive variant */ -@Component @Named("causeway.metamodel.value.ShortValueSemantics") @Priority(PriorityPrecedence.LATE) public class ShortValueSemantics @@ -56,6 +57,16 @@ implements Renderer<Short>, IdStringifier.EntityAgnostic<Short> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ShortValueSemantics.class) + public ShortValueSemantics defaultShortValueSemantics() { + return new ShortValueSemantics(); + } + } + @Override public Class<Short> getCorrespondingClass() { return Short.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java index e2d1afe459..f1ac62b7ec 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java @@ -25,6 +25,9 @@ import java.util.function.UnaryOperator; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -39,7 +42,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; -@Component @Named("causeway.metamodel.value.StringValueSemantics") @Priority(PriorityPrecedence.LATE) public class StringValueSemantics @@ -49,6 +51,16 @@ implements Renderer<String>, IdStringifier.EntityAgnostic<String> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(StringValueSemantics.class) + public StringValueSemantics defaultStringValueSemantics() { + return new StringValueSemantics(); + } + } + @Override public Class<String> getCorrespondingClass() { return String.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java index 1dff074f2d..878765daf5 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java @@ -24,6 +24,9 @@ import javax.annotation.Priority; import javax.inject.Inject; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -43,7 +46,6 @@ import org.apache.causeway.commons.internal.memento._Mementos.Memento; import org.apache.causeway.commons.internal.memento._Mementos.SerializingAdapter; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.TreeNodeValueSemantics") @Priority(PriorityPrecedence.LATE) public class TreeNodeValueSemantics @@ -51,6 +53,16 @@ extends ValueSemanticsAbstract<TreeNode<?>> implements Renderer<TreeNode<?>> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(TreeNodeValueSemantics.class) + public TreeNodeValueSemantics defaultTreeNodeValueSemantics() { + return new TreeNodeValueSemantics(); + } + } + @Inject UrlEncodingService urlEncodingService; @Inject SerializingAdapter serializingAdapter; @Inject FactoryService factoryService; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreePathValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreePathValueSemantics.java index a9ae584914..31b1f1e3eb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreePathValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreePathValueSemantics.java @@ -21,6 +21,9 @@ package org.apache.causeway.core.metamodel.valuesemantics; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -39,7 +42,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Named("causeway.metamodel.value.TreePathValueSemantics") @Priority(PriorityPrecedence.LATE) public class TreePathValueSemantics @@ -49,6 +51,16 @@ implements Renderer<TreePath>, IdStringifier.EntityAgnostic<TreePath> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(TreePathValueSemantics.class) + public TreePathValueSemantics defaultCharacterValueSemantics() { + return new TreePathValueSemantics(); + } + } + @Override public Class<TreePath> getCorrespondingClass() { return TreePath.class; @@ -121,17 +133,17 @@ implements } // -- HELPER - + private static String canonicalStringify(@Nullable TreePath treePath) { return treePath!=null ? treePath.stringify("/") : null; } - + private static TreePath canonicalDestringify(@Nullable String input) { return input!=null ? TreePath.parse(input, "/") : null; } - + } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java index ac3e2f2965..f5ec8a5dab 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java @@ -23,7 +23,9 @@ import java.net.URL; import javax.annotation.Priority; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.value.semantics.Parser; @@ -38,7 +40,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.SneakyThrows; -@Component @Named("causeway.metamodel.value.URLValueSemantics") @Priority(PriorityPrecedence.LATE) public class URLValueSemantics @@ -47,6 +48,16 @@ implements Parser<java.net.URL>, Renderer<java.net.URL> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(URLValueSemantics.class) + public URLValueSemantics defaultUrlValueSemantics() { + return new URLValueSemantics(); + } + } + @Override public Class<java.net.URL> getCorrespondingClass() { return java.net.URL.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java index a3854cc896..dafb961e88 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java @@ -23,6 +23,9 @@ import java.util.UUID; import javax.annotation.Priority; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -39,7 +42,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Named("causeway.metamodel.value.UUIDValueSemantics") @Priority(PriorityPrecedence.LATE) public class UUIDValueSemantics @@ -49,6 +51,16 @@ implements Renderer<UUID>, IdStringifier.EntityAgnostic<UUID> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(UUIDValueSemantics.class) + public UUIDValueSemantics defaultUUIDValueSemantics() { + return new UUIDValueSemantics(); + } + } + @Override public Class<UUID> getCorrespondingClass() { return UUID.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/XmlValueSemanticsAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/XmlValueSemanticsAbstract.java index 5c16f7beeb..b3859f3c7f 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/XmlValueSemanticsAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/XmlValueSemanticsAbstract.java @@ -26,6 +26,10 @@ import org.apache.causeway.applib.value.semantics.ValueDecomposition; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; import org.apache.causeway.schema.common.v2.ValueType; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + import lombok.NonNull; import lombok.val; @@ -35,6 +39,16 @@ implements OrderRelation<T, Void>, Renderer<T> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(CharacterValueSemantics.class) + public CharacterValueSemantics defaultCharacterValueSemantics() { + return new CharacterValueSemantics(); + } + } + @Override public final ValueType getSchemaValueType() { return ValueType.STRING; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java index 995f146977..67b4c09ea0 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java @@ -24,15 +24,16 @@ import java.util.Optional; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; -import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.OrderRelation; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.commons.internal.base._Temporals; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.LocalDateTimeValueSemantics") //@Log4j2 public class LocalDateTimeValueSemantics @@ -42,6 +43,16 @@ implements OrderRelation<LocalDateTime, Duration> { public static final int MAX_LENGTH = 36; public static final int TYPICAL_LENGTH = 22; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(LocalDateTimeValueSemantics.class) + public LocalDateTimeValueSemantics defaultLocalDateTimeValueSemantics() { + return new LocalDateTimeValueSemantics(); + } + } + @Override public Class<LocalDateTime> getCorrespondingClass() { return LocalDateTime.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java index f2d8051159..ca1dea2173 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java @@ -24,6 +24,9 @@ import java.util.Optional; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -32,7 +35,6 @@ import org.apache.causeway.commons.collections.Can; import org.apache.causeway.commons.internal.base._Temporals; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.LocalDateValueSemantics") //@Log4j2 public class LocalDateValueSemantics @@ -42,6 +44,16 @@ implements OrderRelation<LocalDate, Duration> { public static final int MAX_LENGTH = 12; public static final int TYPICAL_LENGTH = MAX_LENGTH; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(LocalDateValueSemantics.class) + public LocalDateValueSemantics defaultLocalDateValueSemantics() { + return new LocalDateValueSemantics(); + } + } + @Override public Class<LocalDate> getCorrespondingClass() { return LocalDate.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java index ca1b7d3728..93a081a9cb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java @@ -24,6 +24,9 @@ import java.util.Optional; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -31,7 +34,6 @@ import org.apache.causeway.commons.collections.Can; import org.apache.causeway.commons.internal.base._Temporals; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.LocalTimeValueSemantics") //@Log4j2 public class LocalTimeValueSemantics @@ -40,6 +42,16 @@ extends TemporalValueSemanticsProvider<LocalTime> { public static final int MAX_LENGTH = 12; public static final int TYPICAL_LENGTH = MAX_LENGTH; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(LocalTimeValueSemantics.class) + public LocalTimeValueSemantics defaultLocalTimeValueSemantics() { + return new LocalTimeValueSemantics(); + } + } + @Override public Class<LocalTime> getCorrespondingClass() { return LocalTime.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java index cf4e83d689..5d8d84461a 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java @@ -24,6 +24,9 @@ import java.util.Optional; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -32,7 +35,6 @@ import org.apache.causeway.commons.functional.Either; import org.apache.causeway.commons.internal.base._Temporals; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.OffsetDateTimeValueSemantics") //@Log4j2 public class OffsetDateTimeValueSemantics @@ -41,6 +43,16 @@ extends TemporalValueSemanticsProvider<OffsetDateTime> { public static final int MAX_LENGTH = 36; public static final int TYPICAL_LENGTH = 22; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(OffsetDateTimeValueSemantics.class) + public OffsetDateTimeValueSemantics defaultOffsetDateTimeValueSemantics() { + return new OffsetDateTimeValueSemantics(); + } + } + @Override public Class<OffsetDateTime> getCorrespondingClass() { return OffsetDateTime.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java index 0b4593fe72..049a4634e7 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java @@ -24,6 +24,9 @@ import java.util.Optional; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -32,7 +35,6 @@ import org.apache.causeway.commons.functional.Either; import org.apache.causeway.commons.internal.base._Temporals; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.OffsetTimeValueSemantics") //@Log4j2 public class OffsetTimeValueSemantics @@ -41,6 +43,16 @@ extends TemporalValueSemanticsProvider<OffsetTime> { public static final int MAX_LENGTH = 12; public static final int TYPICAL_LENGTH = MAX_LENGTH; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(OffsetTimeValueSemantics.class) + public OffsetTimeValueSemantics defaultOffsetTimeValueSemantics() { + return new OffsetTimeValueSemantics(); + } + } + @Override public Class<OffsetTime> getCorrespondingClass() { return OffsetTime.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java index fdbd616400..8614ac1409 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java @@ -24,6 +24,9 @@ import java.util.Optional; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; @@ -32,7 +35,6 @@ import org.apache.causeway.commons.functional.Either; import org.apache.causeway.commons.internal.base._Temporals; import org.apache.causeway.schema.common.v2.ValueType; -@Component @Named("causeway.metamodel.value.ZonedDateTimeValueSemantics") //@Log4j2 public class ZonedDateTimeValueSemantics @@ -41,6 +43,16 @@ extends TemporalValueSemanticsProvider<ZonedDateTime> { public static final int MAX_LENGTH = 36; public static final int TYPICAL_LENGTH = 22; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ZonedDateTimeValueSemantics.class) + public ZonedDateTimeValueSemantics defaultZonedDateTimeValueSemantics() { + return new ZonedDateTimeValueSemantics(); + } + } + @Override public Class<ZonedDateTime> getCorrespondingClass() { return ZonedDateTime.class; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java index 7e391b64ad..4f722b93e1 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java @@ -24,6 +24,11 @@ import java.time.LocalDate; import javax.inject.Inject; import javax.inject.Named; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -37,11 +42,20 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; * @see JavaUtilDateValueSemantics * @see JavaSqlTimeValueSemantics */ -@Component @Named("causeway.metamodel.value.JavaSqlDateValueSemantics") public class JavaSqlDateValueSemantics extends TemporalSemanticsAdapter<Date, LocalDate> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JavaSqlDateValueSemantics.class) + public JavaSqlDateValueSemantics defaultJavaSqlDateValueSemantics() { + return new JavaSqlDateValueSemantics(); + } + } + @Inject LocalDateValueSemantics localDateValueSemantics; @Override diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java index bad63ca76f..c55f53ef1d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java @@ -24,6 +24,9 @@ import java.time.LocalDateTime; import javax.inject.Inject; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -31,11 +34,20 @@ import org.apache.causeway.commons.collections.Can; import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; -@Component @Named("causeway.metamodel.value.JavaSqlTimeStampValueSemantics") public class JavaSqlTimeStampValueSemantics extends TemporalSemanticsAdapter<Timestamp, LocalDateTime> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JavaSqlTimeStampValueSemantics.class) + public JavaSqlTimeStampValueSemantics defaultJavaSqlTimeStampValueSemantics() { + return new JavaSqlTimeStampValueSemantics(); + } + } + @Inject LocalDateTimeValueSemantics localDateTimeValueSemantics; @Override diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java index b156ad2df8..b6764fcb9e 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java @@ -24,6 +24,11 @@ import java.time.LocalTime; import javax.inject.Inject; import javax.inject.Named; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -35,11 +40,20 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; * Treats {@link java.sql.Time} as a time-only value type. * */ -@Component @Named("causeway.metamodel.value.JavaSqlTimeValueSemantics") public class JavaSqlTimeValueSemantics extends TemporalSemanticsAdapter<Time, LocalTime> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JavaSqlTimeValueSemantics.class) + public JavaSqlTimeValueSemantics defaultJavaSqlTimeValueSemantics() { + return new JavaSqlTimeValueSemantics(); + } + } + @Inject LocalTimeValueSemantics localTimeValueSemantics; @Override diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java index dce7b4e182..a692d568c6 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java @@ -25,6 +25,9 @@ import java.util.Date; import javax.inject.Inject; import javax.inject.Named; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -39,11 +42,20 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; * @see JavaSqlDateValueSemantics * @see JavaSqlTimeValueSemantics */ -@Component @Named("causeway.metamodel.value.JavaUtilDateValueSemantics") public class JavaUtilDateValueSemantics extends TemporalSemanticsAdapter<java.util.Date, LocalDateTime> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JavaUtilDateValueSemantics.class) + public JavaUtilDateValueSemantics defaultJavaUtilDateValueSemantics() { + return new JavaUtilDateValueSemantics(); + } + } + @Inject LocalDateTimeValueSemantics localDateTimeValueSemantics; @Override diff --git a/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/commandlog/jpa/dom/CommandLogEntryPK.java b/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/commandlog/jpa/dom/CommandLogEntryPK.java index 4c9525f36f..a0171e10f2 100644 --- a/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/commandlog/jpa/dom/CommandLogEntryPK.java +++ b/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/commandlog/jpa/dom/CommandLogEntryPK.java @@ -27,6 +27,11 @@ import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.Embeddable; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -62,11 +67,21 @@ public class CommandLogEntryPK implements Serializable { return interactionId != null ? interactionId.toString() : null; } - @Component @Priority(PriorityPrecedence.MIDPOINT) public static class Semantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<CommandLogEntryPK> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(Semantics.class) + public Semantics defaultCommandLogEntryPKSemantics() { + return new Semantics(); + } + } + + public Semantics() { super(CommandLogEntryPK.class); } diff --git a/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java b/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java index 02fb85187e..52cbcad1a1 100644 --- a/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java +++ b/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java @@ -24,6 +24,11 @@ import java.util.UUID; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -60,11 +65,21 @@ public class ExecutionLogEntryPK implements Serializable { return interactionId + SEPARATOR + sequence; } - @Component @Priority(PriorityPrecedence.MIDPOINT) public static class Semantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<ExecutionLogEntryPK> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(Semantics.class) + public Semantics defaultExecutionLogEntryPKSemantics() { + return new Semantics(); + } + } + + public Semantics() { super(ExecutionLogEntryPK.class); } diff --git a/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java b/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java index 0f925c7314..b5805a1973 100644 --- a/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java +++ b/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java @@ -27,6 +27,11 @@ import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.Embeddable; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -73,11 +78,21 @@ public class ExecutionLogEntryPK implements Serializable { return interactionId + SEPARATOR + sequence; } - @Component @Priority(PriorityPrecedence.MIDPOINT) public static class Semantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<ExecutionLogEntryPK> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(Semantics.class) + public Semantics defaultExecutionLogEntryPKSemantics() { + return new Semantics(); + } + } + + public Semantics() { super(ExecutionLogEntryPK.class); } diff --git a/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java b/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java index 702cce8396..9494508400 100644 --- a/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java +++ b/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/causeway/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java @@ -24,6 +24,11 @@ import java.util.UUID; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -60,11 +65,21 @@ public class ExecutionOutboxEntryPK implements Serializable { return interactionId + SEPARATOR + sequence; } - @Component @Priority(PriorityPrecedence.MIDPOINT) public static class Semantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<ExecutionOutboxEntryPK> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(Semantics.class) + public Semantics defaultExecutionLogEntryPKSemantics() { + return new Semantics(); + } + } + + public Semantics() { super(ExecutionOutboxEntryPK.class); } diff --git a/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java b/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java index ad78df5d0e..abe6a34271 100644 --- a/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java +++ b/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/causeway/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java @@ -27,6 +27,11 @@ import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.Embeddable; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -71,11 +76,21 @@ public class ExecutionOutboxEntryPK implements Serializable { return interactionId + SEPARATOR + sequence; } - @Component @Priority(PriorityPrecedence.MIDPOINT) public static class Semantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<ExecutionOutboxEntryPK> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(Semantics.class) + public Semantics defaultExecutionLogEntryPKSemantics() { + return new Semantics(); + } + } + + public Semantics() { super(ExecutionOutboxEntryPK.class); } diff --git a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java index 44d88882dc..e83fbaf7ea 100644 --- a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java +++ b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/causeway/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java @@ -28,6 +28,11 @@ import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.Embeddable; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -64,11 +69,21 @@ public class SessionLogEntryPK implements Serializable { : null; } - @Component @Priority(PriorityPrecedence.MIDPOINT) public static class Semantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<SessionLogEntryPK> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(Semantics.class) + public Semantics defaultSessionLogEntryPKSemantics() { + return new Semantics(); + } + } + + public Semantics() { super(SessionLogEntryPK.class); } diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/causeway/extensions/fullcalendar/applib/value/CalendarEventSemantics.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/causeway/extensions/fullcalendar/applib/value/CalendarEventSemantics.java index 4adde41059..351100f9cc 100644 --- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/causeway/extensions/fullcalendar/applib/value/CalendarEventSemantics.java +++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/causeway/extensions/fullcalendar/applib/value/CalendarEventSemantics.java @@ -29,16 +29,18 @@ import java.util.stream.Collectors; import javax.inject.Inject; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.Action; import org.apache.causeway.applib.annotation.ActionLayout; -import org.apache.causeway.applib.annotation.PrecedingParamsPolicy; import org.apache.causeway.applib.annotation.MemberSupport; import org.apache.causeway.applib.annotation.Optionality; import org.apache.causeway.applib.annotation.Parameter; import org.apache.causeway.applib.annotation.ParameterLayout; +import org.apache.causeway.applib.annotation.PrecedingParamsPolicy; import org.apache.causeway.applib.annotation.PromptStyle; import org.apache.causeway.applib.annotation.Publishing; import org.apache.causeway.applib.annotation.SemanticsOf; @@ -61,17 +63,26 @@ import lombok.Value; import lombok.val; import lombok.experimental.Accessors; -@Component -@Import({ - // mixins - CalendarEventSemantics.CalendarEvent_default.class -}) public class CalendarEventSemantics extends ValueSemanticsAbstract<CalendarEvent> implements DefaultsProvider<CalendarEvent>, Renderer<CalendarEvent> { + @Import({ + // mixins + CalendarEventSemantics.CalendarEvent_default.class + }) + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(CalendarEventSemantics.class) + public CalendarEventSemantics defaultCalendarEventSemantics() { + return new CalendarEventSemantics(); + } + } + @Inject private TemporalValueSemantics<ZonedDateTime> zonedDateTimeValueSemantics; @Override diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/CausewayModulePersistenceJdoDatanucleus.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/CausewayModulePersistenceJdoDatanucleus.java index faa4da52c1..92c6c17994 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/CausewayModulePersistenceJdoDatanucleus.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/CausewayModulePersistenceJdoDatanucleus.java @@ -91,24 +91,24 @@ import lombok.extern.log4j.Log4j2; // @Component's DnEntityStateProvider.class, - DnDatastoreIdImplValueSemantics.class, // datastore identity - DnDatastoreUniqueLongIdValueSemantics.class, - JdoDatastoreIdValueSemantics.class, - JdoShortIdentityValueSemantics.class, // application-defined PK, javax.jdo.identity - JdoLongIdentityValueSemantics.class, - JdoIntIdentityValueSemantics.class, - JdoByteIdentityValueSemantics.class, - JdoCharIdentityValueSemantics.class, - JdoStringIdentityValueSemantics.class, - JdoObjectIdentityValueSemantics.class, - DnShortIdValueSemantics.class, // application-defined PK, org.datanucleus.identity - DnLongIdValueSemantics.class, - DnIntIdValueSemantics.class, - DnByteIdValueSemantics.class, - DnCharIdValueSemantics.class, - DnStringIdValueSemantics.class, - DnObjectIdValueSemantics.class, - DnScoidValueSemantics.class, // in support of @PersistenceCapable(identityType=IdentityType.NONDURABLE) + DnDatastoreIdImplValueSemantics.AutoConfiguration.class, // datastore identity + DnDatastoreUniqueLongIdValueSemantics.AutoConfiguration.class, + JdoDatastoreIdValueSemantics.AutoConfiguration.class, + JdoShortIdentityValueSemantics.AutoConfiguration.class, // application-defined PK, javax.jdo.identity + JdoLongIdentityValueSemantics.AutoConfiguration.class, + JdoIntIdentityValueSemantics.AutoConfiguration.class, + JdoByteIdentityValueSemantics.AutoConfiguration.class, + JdoCharIdentityValueSemantics.AutoConfiguration.class, + JdoStringIdentityValueSemantics.AutoConfiguration.class, + JdoObjectIdentityValueSemantics.AutoConfiguration.class, + DnShortIdValueSemantics.AutoConfiguration.class, // application-defined PK, org.datanucleus.identity + DnLongIdValueSemantics.AutoConfiguration.class, + DnIntIdValueSemantics.AutoConfiguration.class, + DnByteIdValueSemantics.AutoConfiguration.class, + DnCharIdValueSemantics.AutoConfiguration.class, + DnStringIdValueSemantics.AutoConfiguration.class, + DnObjectIdValueSemantics.AutoConfiguration.class, + DnScoidValueSemantics.AutoConfiguration.class, // in support of @PersistenceCapable(identityType=IdentityType.NONDURABLE) // @Service's JdoSupportServiceDefault.class, diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnByteIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnByteIdValueSemantics.java index 10a11d377b..3a8bb6d2bd 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnByteIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnByteIdValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.ByteId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -34,15 +39,25 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnByteIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<ByteId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnByteIdValueSemantics.class) + public DnByteIdValueSemantics defaultDnByteIdValueSemantics() { + return new DnByteIdValueSemantics(); + } + } + public DnByteIdValueSemantics() { super(ByteId.class); } + // -- COMPOSER @Override diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnCharIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnCharIdValueSemantics.java index 145156b126..c8ef5056d4 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnCharIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnCharIdValueSemantics.java @@ -21,8 +21,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; import javax.inject.Inject; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.CharId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -37,11 +42,20 @@ import lombok.Builder; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnCharIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<CharId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnCharIdValueSemantics.class) + public DnCharIdValueSemantics defaultDnCharIdValueSemantics() { + return new DnCharIdValueSemantics(); + } + } + @Inject IdStringifier<Character> idStringifierForCharacter; public DnCharIdValueSemantics() { diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreIdImplValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreIdImplValueSemantics.java index d1fe779831..c5193fec01 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreIdImplValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreIdImplValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.DatastoreIdImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -35,13 +40,22 @@ import lombok.NonNull; import lombok.SneakyThrows; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnDatastoreIdImplValueSemantics extends ValueSemanticsBasedOnIdStringifier<DatastoreIdImpl> { public static final String STRING_DELIMITER = "[OID]"; // as + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnDatastoreIdImplValueSemantics.class) + public DnDatastoreIdImplValueSemantics defaultDnDatastoreIdImplValueSemantics() { + return new DnDatastoreIdImplValueSemantics(); + } + } + public DnDatastoreIdImplValueSemantics() { super(DatastoreIdImpl.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreUniqueLongIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreUniqueLongIdValueSemantics.java index a26bc64782..fb166f5202 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreUniqueLongIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnDatastoreUniqueLongIdValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.DatastoreUniqueLongId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -32,11 +37,21 @@ import lombok.NonNull; /** * @implNote has no targetEntityClass support */ -@Component @Priority(PriorityPrecedence.LATE) public class DnDatastoreUniqueLongIdValueSemantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<DatastoreUniqueLongId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnDatastoreUniqueLongIdValueSemantics.class) + public DnDatastoreUniqueLongIdValueSemantics defaultDnDatastoreUniqueLongIdValueSemantics() { + return new DnDatastoreUniqueLongIdValueSemantics(); + } + } + + public DnDatastoreUniqueLongIdValueSemantics() { super(DatastoreUniqueLongId.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnIntIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnIntIdValueSemantics.java index cb8d6cca8d..81c64e1665 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnIntIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnIntIdValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.IntId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -34,7 +39,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnIntIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<IntId> { @@ -43,6 +47,16 @@ extends ValueSemanticsBasedOnIdStringifier<IntId> { super(IntId.class); } + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnIntIdValueSemantics.class) + public DnIntIdValueSemantics defaultDnIntIdValueSemantics() { + return new DnIntIdValueSemantics(); + } + } + // -- COMPOSER @Override diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnLongIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnLongIdValueSemantics.java index 0c008ca907..a6aa9fea9f 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnLongIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnLongIdValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.LongId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -34,7 +39,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnLongIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<LongId> { @@ -43,6 +47,16 @@ extends ValueSemanticsBasedOnIdStringifier<LongId> { super(LongId.class); } + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnLongIdValueSemantics.class) + public DnLongIdValueSemantics defaultDnLongIdValueSemantics() { + return new DnLongIdValueSemantics(); + } + } + // -- COMPOSER @Override diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnObjectIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnObjectIdValueSemantics.java index b32198b909..58a553b4ed 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnObjectIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnObjectIdValueSemantics.java @@ -22,8 +22,13 @@ import java.util.UUID; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.ObjectId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -45,7 +50,6 @@ import lombok.val; * of type int, long or UUID: rather than encode the fully qualified classname, instead uses a simpler prefix. * </p> */ -@Component @Priority(PriorityPrecedence.LATE) @Builder public class DnObjectIdValueSemantics @@ -55,6 +59,16 @@ extends ValueSemanticsBasedOnIdStringifier<ObjectId> { private static final String PREFIX_LONG = "l_"; private static final String PREFIX_INT = "i_"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnObjectIdValueSemantics.class) + public DnObjectIdValueSemantics defaultDnObjectIdValueSemantics() { + return new DnObjectIdValueSemantics(); + } + } + public DnObjectIdValueSemantics() { super(ObjectId.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnScoidValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnScoidValueSemantics.java index b6abf98084..e21c7a8553 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnScoidValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnScoidValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.SCOID; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -34,11 +39,21 @@ import lombok.NonNull; * * @see SCOID */ -@Component @Priority(PriorityPrecedence.LATE + 100) // after the implementations of DatastoreId; for a custom impl. public class DnScoidValueSemantics extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<SCOID> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnScoidValueSemantics.class) + public DnScoidValueSemantics defaultDnScoidValueSemantics() { + return new DnScoidValueSemantics(); + } + } + + public DnScoidValueSemantics() { super(SCOID.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnShortIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnShortIdValueSemantics.java index 91b8f46808..8100438558 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnShortIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnShortIdValueSemantics.java @@ -20,8 +20,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.ShortId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -34,11 +39,21 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnShortIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<ShortId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnShortIdValueSemantics.class) + public DnShortIdValueSemantics defaultDnShortIdValueSemantics() { + return new DnShortIdValueSemantics(); + } + } + + public DnShortIdValueSemantics() { super(ShortId.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnStringIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnStringIdValueSemantics.java index 3246ce1e34..95d00fcc89 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnStringIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/DnStringIdValueSemantics.java @@ -21,8 +21,13 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; import javax.inject.Inject; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.StringId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -37,11 +42,21 @@ import lombok.Builder; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class DnStringIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<StringId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(DnStringIdValueSemantics.class) + public DnStringIdValueSemantics defaultDnStringIdValueSemantics() { + return new DnStringIdValueSemantics(); + } + } + + @Inject IdStringifier<String> idStringifierForString; public DnStringIdValueSemantics() { diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java index da2dbc369b..165cff02e5 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java @@ -21,6 +21,11 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; import javax.jdo.identity.ByteIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -33,11 +38,21 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class JdoByteIdentityValueSemantics extends ValueSemanticsBasedOnIdStringifier<ByteIdentity> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoByteIdentityValueSemantics.class) + public JdoByteIdentityValueSemantics defaultJdoByteIdentityValueSemantics() { + return new JdoByteIdentityValueSemantics(); + } + } + + public JdoByteIdentityValueSemantics() { super(ByteIdentity.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java index 5e92374065..1d224f9a40 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java @@ -22,6 +22,11 @@ import javax.annotation.Priority; import javax.inject.Inject; import javax.jdo.identity.CharIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -36,11 +41,21 @@ import lombok.Builder; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class JdoCharIdentityValueSemantics extends ValueSemanticsBasedOnIdStringifier<CharIdentity> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoCharIdentityValueSemantics.class) + public JdoCharIdentityValueSemantics defaultJdoCharIdentityValueSemantics() { + return new JdoCharIdentityValueSemantics(); + } + } + + @Inject IdStringifier<Character> idStringifierForCharacter; public JdoCharIdentityValueSemantics() { diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java index abe9fc6832..f04088221a 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java @@ -22,8 +22,13 @@ import java.lang.reflect.Constructor; import javax.annotation.Priority; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.datanucleus.identity.DatastoreId; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -40,11 +45,21 @@ import lombok.NonNull; import lombok.SneakyThrows; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE + 100) // after the implementations of DatastoreId; for a custom impl. public class JdoDatastoreIdValueSemantics extends ValueSemanticsBasedOnIdStringifier<DatastoreId> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoDatastoreIdValueSemantics.class) + public JdoDatastoreIdValueSemantics defaultJdoDatastoreIdValueSemantics() { + return new JdoDatastoreIdValueSemantics(); + } + } + + public JdoDatastoreIdValueSemantics() { super(DatastoreId.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java index 8689d6aa4a..63b3442369 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java @@ -21,6 +21,11 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; import javax.jdo.identity.IntIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -33,11 +38,21 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class JdoIntIdentityValueSemantics extends ValueSemanticsBasedOnIdStringifier<IntIdentity> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoIntIdentityValueSemantics.class) + public JdoIntIdentityValueSemantics defaultJdoIntIdentityValueSemantics() { + return new JdoIntIdentityValueSemantics(); + } + } + + public JdoIntIdentityValueSemantics() { super(IntIdentity.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java index bd9db134f2..04252b7cf5 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java @@ -21,6 +21,11 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; import javax.jdo.identity.LongIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -33,11 +38,21 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class JdoLongIdentityValueSemantics extends ValueSemanticsBasedOnIdStringifier<LongIdentity> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoLongIdentityValueSemantics.class) + public JdoLongIdentityValueSemantics defaultJdoLongIdentityValueSemantics() { + return new JdoLongIdentityValueSemantics(); + } + } + + public JdoLongIdentityValueSemantics() { super(LongIdentity.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java index f1784f0d3f..d4159e35bc 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java @@ -23,6 +23,11 @@ import java.util.UUID; import javax.annotation.Priority; import javax.jdo.identity.ObjectIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -44,7 +49,6 @@ import lombok.val; * of type int, long or UUID: rather than encode the fully qualified classname, instead uses a simpler prefix. * </p> */ -@Component @Priority(PriorityPrecedence.LATE) @Builder public class JdoObjectIdentityValueSemantics @@ -54,6 +58,17 @@ extends ValueSemanticsBasedOnIdStringifier<ObjectIdentity> { private static final String PREFIX_LONG = "l_"; private static final String PREFIX_INT = "i_"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoObjectIdentityValueSemantics.class) + public JdoObjectIdentityValueSemantics defaultJdoObjectIdentityValueSemantics() { + return new JdoObjectIdentityValueSemantics(); + } + } + + public JdoObjectIdentityValueSemantics() { super(ObjectIdentity.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java index c3f014089a..4893f08c5e 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java @@ -21,6 +21,11 @@ package org.apache.causeway.persistence.jdo.datanucleus.valuetypes; import javax.annotation.Priority; import javax.jdo.identity.ShortIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -33,11 +38,21 @@ import org.apache.causeway.schema.common.v2.ValueType; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class JdoShortIdentityValueSemantics extends ValueSemanticsBasedOnIdStringifier<ShortIdentity> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoShortIdentityValueSemantics.class) + public JdoShortIdentityValueSemantics defaultJdoShortIdentityValueSemantics() { + return new JdoShortIdentityValueSemantics(); + } + } + + public JdoShortIdentityValueSemantics() { super(ShortIdentity.class); } diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java index 03e21ed42e..2649ba7142 100644 --- a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java +++ b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java @@ -22,6 +22,11 @@ import javax.annotation.Priority; import javax.inject.Inject; import javax.jdo.identity.StringIdentity; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.annotation.PriorityPrecedence; @@ -36,11 +41,21 @@ import lombok.Builder; import lombok.NonNull; import lombok.val; -@Component @Priority(PriorityPrecedence.LATE) public class JdoStringIdentityValueSemantics extends ValueSemanticsBasedOnIdStringifier<StringIdentity> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JdoStringIdentityValueSemantics.class) + public JdoStringIdentityValueSemantics defaultJdoStringIdentityValueSemantics() { + return new JdoStringIdentityValueSemantics(); + } + } + + @Inject IdStringifier<String> idStringifierForString; public JdoStringIdentityValueSemantics() { diff --git a/valuetypes/asciidoc/metamodel/src/main/java/module-info.java b/valuetypes/asciidoc/metamodel/src/main/java/module-info.java index 5ef7d274ad..dcbaa6f4ac 100644 --- a/valuetypes/asciidoc/metamodel/src/main/java/module-info.java +++ b/valuetypes/asciidoc/metamodel/src/main/java/module-info.java @@ -31,4 +31,5 @@ module org.apache.causeway.valuetypes.asciidoc.metamodel { requires spring.beans; requires spring.context; requires spring.core; + requires spring.boot.autoconfigure; } \ No newline at end of file diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/CausewayModuleValAsciidocMetaModel.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/CausewayModuleValAsciidocMetaModel.java index e1b3fba276..dffe122d01 100644 --- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/CausewayModuleValAsciidocMetaModel.java +++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/CausewayModuleValAsciidocMetaModel.java @@ -31,7 +31,7 @@ import org.apache.causeway.valuetypes.asciidoc.metamodel.semantics.InteractionDt */ @Configuration @Import({ - AsciiDocValueSemantics.class, + AsciiDocValueSemantics.AutoConfiguration.class, ChangesDtoValueSemanticsPrettyRender.class, CommandDtoValueSemanticsPrettyRender.class, InteractionDtoValueSemanticsPrettyRender.class, diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java index 58a09c46ea..2a9ce6bf9d 100644 --- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java +++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/causeway/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java @@ -20,7 +20,9 @@ package org.apache.causeway.valuetypes.asciidoc.metamodel.semantics; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.value.semantics.Parser; import org.apache.causeway.applib.value.semantics.Renderer; @@ -32,7 +34,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import org.apache.causeway.valuetypes.asciidoc.applib.CausewayModuleValAsciidocApplib; import org.apache.causeway.valuetypes.asciidoc.applib.value.AsciiDoc; -@Component @Named(CausewayModuleValAsciidocApplib.NAMESPACE + ".AsciiDocValueSemantics") public class AsciiDocValueSemantics extends ValueSemanticsAbstract<AsciiDoc> @@ -40,6 +41,16 @@ implements Renderer<AsciiDoc>, Parser<AsciiDoc> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(AsciiDocValueSemantics.class) + public AsciiDocValueSemantics defaultAsciiDocValueSemantics() { + return new AsciiDocValueSemantics(); + } + } + @Override public Class<AsciiDoc> getCorrespondingClass() { return AsciiDoc.class; diff --git a/valuetypes/jodatime/integration/src/main/java/module-info.java b/valuetypes/jodatime/integration/src/main/java/module-info.java index 49ebe0438b..2a88f1b255 100644 --- a/valuetypes/jodatime/integration/src/main/java/module-info.java +++ b/valuetypes/jodatime/integration/src/main/java/module-info.java @@ -30,6 +30,7 @@ module org.apache.causeway.valuetypes.jodatime.integration { requires org.apache.causeway.valuetypes.jodatime.applib; requires org.joda.time; requires spring.context; + requires spring.boot.autoconfigure; opens org.apache.causeway.valuetypes.jodatime.integration.valuesemantics to org.apache.causeway.commons; } \ No newline at end of file diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java index 4857550637..279c5cb129 100644 --- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java +++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java @@ -31,10 +31,10 @@ import org.apache.causeway.valuetypes.jodatime.integration.valuesemantics.JodaLo */ @Configuration @Import({ - JodaLocalTimeValueSemantics.class, - JodaLocalDateTimeValueSemantics.class, - JodaLocalDateValueSemantics.class, - JodaDateTimeValueSemantics.class, + JodaLocalTimeValueSemantics.AutoConfiguration.class, + JodaLocalDateTimeValueSemantics.AutoConfiguration.class, + JodaLocalDateValueSemantics.AutoConfiguration.class, + JodaDateTimeValueSemantics.AutoConfiguration.class, }) public class CausewayModuleValJodatimeIntegration { diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java index 55a1156668..bf806544fe 100644 --- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java +++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java @@ -23,8 +23,13 @@ import java.time.ZonedDateTime; import javax.inject.Inject; import javax.inject.Named; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.joda.time.DateTime; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -34,13 +39,22 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters; import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration; -@Component @Named(JodaDateTimeValueSemantics.LOGICAL_TYPE_NAME) public class JodaDateTimeValueSemantics extends TemporalSemanticsAdapter<org.joda.time.DateTime, ZonedDateTime> { public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaDateTimeValueSemantics"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JodaDateTimeValueSemantics.class) + public JodaDateTimeValueSemantics defaultJodaDateTimeValueSemantics() { + return new JodaDateTimeValueSemantics(); + } + } + @Inject ZonedDateTimeValueSemantics zonedDateTimeValueSemantics; @Override diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java index 3a7835fc5c..b2f9e17b7d 100644 --- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java +++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java @@ -23,6 +23,9 @@ import javax.inject.Named; import org.joda.time.LocalDateTime; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -32,13 +35,22 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters; import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration; -@Component @Named(JodaLocalDateTimeValueSemantics.LOGICAL_TYPE_NAME) public class JodaLocalDateTimeValueSemantics extends TemporalSemanticsAdapter<org.joda.time.LocalDateTime, java.time.LocalDateTime> { public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaLocalDateTimeValueSemantics"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JodaLocalDateTimeValueSemantics.class) + public JodaLocalDateTimeValueSemantics defaultJodaLocalDateTimeValueSemantics() { + return new JodaLocalDateTimeValueSemantics(); + } + } + @Inject LocalDateTimeValueSemantics localDateTimeValueSemantics; @Override diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java index 842b8ed909..93af172f2a 100644 --- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java +++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java @@ -21,8 +21,13 @@ package org.apache.causeway.valuetypes.jodatime.integration.valuesemantics; import javax.inject.Inject; import javax.inject.Named; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.joda.time.LocalDate; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -32,13 +37,22 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters; import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration; -@Component @Named(JodaLocalDateValueSemantics.LOGICAL_TYPE_NAME) public class JodaLocalDateValueSemantics extends TemporalSemanticsAdapter<org.joda.time.LocalDate, java.time.LocalDate> { public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaLocalDateValueSemantics"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JodaLocalDateValueSemantics.class) + public JodaLocalDateValueSemantics defaultJodaLocalDateValueSemantics() { + return new JodaLocalDateValueSemantics(); + } + } + @Inject LocalDateValueSemantics localDateValueSemantics; @Override diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java index 07ce4b1e23..26033749bf 100644 --- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java +++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java @@ -21,8 +21,13 @@ package org.apache.causeway.valuetypes.jodatime.integration.valuesemantics; import javax.inject.Inject; import javax.inject.Named; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + import org.joda.time.LocalTime; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.ValueSemanticsAbstract; @@ -32,13 +37,22 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter; import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters; import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration; -@Component @Named(JodaLocalTimeValueSemantics.LOGICAL_TYPE_NAME) public class JodaLocalTimeValueSemantics extends TemporalSemanticsAdapter<org.joda.time.LocalTime, java.time.LocalTime> { public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaLocalTimeValueSemantics"; + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(JodaLocalTimeValueSemantics.class) + public JodaLocalTimeValueSemantics defaultJodaLocalTimeValueSemantics() { + return new JodaLocalTimeValueSemantics(); + } + } + @Inject LocalTimeValueSemantics localTimeValueSemantics; @Override diff --git a/valuetypes/markdown/metamodel/src/main/java/module-info.java b/valuetypes/markdown/metamodel/src/main/java/module-info.java index 9fc413b7c3..8175e8234f 100644 --- a/valuetypes/markdown/metamodel/src/main/java/module-info.java +++ b/valuetypes/markdown/metamodel/src/main/java/module-info.java @@ -27,4 +27,5 @@ module org.apache.causeway.valuetypes.markdown.metamodel { requires org.apache.causeway.schema; requires org.apache.causeway.valuetypes.markdown.applib; requires spring.context; + requires spring.boot.autoconfigure; } \ No newline at end of file diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/CausewayModuleValMarkdownMetaModel.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/CausewayModuleValMarkdownMetaModel.java index 91e32ee82f..474f065f3a 100644 --- a/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/CausewayModuleValMarkdownMetaModel.java +++ b/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/CausewayModuleValMarkdownMetaModel.java @@ -28,7 +28,7 @@ import org.apache.causeway.valuetypes.markdown.metamodel.semantics.MarkdownValue */ @Configuration @Import({ - MarkdownValueSemantics.class, + MarkdownValueSemantics.AutoConfiguration.class, }) public class CausewayModuleValMarkdownMetaModel { diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java index f56f496074..fa7978959c 100644 --- a/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java +++ b/valuetypes/markdown/metamodel/src/main/java/org/apache/causeway/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java @@ -20,7 +20,9 @@ package org.apache.causeway.valuetypes.markdown.metamodel.semantics; import javax.inject.Named; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.apache.causeway.applib.value.semantics.Parser; import org.apache.causeway.applib.value.semantics.Renderer; @@ -32,7 +34,6 @@ import org.apache.causeway.schema.common.v2.ValueType; import org.apache.causeway.valuetypes.markdown.applib.CausewayModuleValMarkdownApplib; import org.apache.causeway.valuetypes.markdown.applib.value.Markdown; -@Component @Named(CausewayModuleValMarkdownApplib.NAMESPACE + ".MarkdownValueSemantics") public class MarkdownValueSemantics extends ValueSemanticsAbstract<Markdown> @@ -40,6 +41,16 @@ implements Parser<Markdown>, Renderer<Markdown> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(MarkdownValueSemantics.class) + public MarkdownValueSemantics defaultCalendarEventSemantics() { + return new MarkdownValueSemantics(); + } + } + @Override public Class<Markdown> getCorrespondingClass() { return Markdown.class; diff --git a/valuetypes/vega/metamodel/src/main/java/module-info.java b/valuetypes/vega/metamodel/src/main/java/module-info.java index 59290ae2e4..70f281ea6d 100644 --- a/valuetypes/vega/metamodel/src/main/java/module-info.java +++ b/valuetypes/vega/metamodel/src/main/java/module-info.java @@ -31,4 +31,5 @@ module org.apache.causeway.valuetypes.vega.metamodel { requires spring.beans; requires spring.context; requires spring.core; + requires spring.boot.autoconfigure; } \ No newline at end of file diff --git a/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/CausewayModuleValVegaMetaModel.java b/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/CausewayModuleValVegaMetaModel.java index 776c5a70e5..bc0433b659 100644 --- a/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/CausewayModuleValVegaMetaModel.java +++ b/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/CausewayModuleValVegaMetaModel.java @@ -28,7 +28,7 @@ import org.apache.causeway.valuetypes.vega.metamodel.semantics.VegaValueSemantic */ @Configuration @Import({ - VegaValueSemantics.class, + VegaValueSemantics.AutoConfiguration.class, }) public class CausewayModuleValVegaMetaModel { diff --git a/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java b/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java index fdbd317893..07c6192bfb 100644 --- a/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java +++ b/valuetypes/vega/metamodel/src/main/java/org/apache/causeway/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java @@ -22,6 +22,11 @@ import java.util.UUID; import javax.inject.Named; +import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeValueSemantics; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.apache.causeway.applib.value.semantics.DefaultsProvider; @@ -47,6 +52,17 @@ implements Renderer<Vega>, Parser<Vega> { + @Configuration + public static class AutoConfiguration { + + @Bean + @ConditionalOnMissingBean(VegaValueSemantics.class) + public VegaValueSemantics defaultVegaValueSemantics() { + return new VegaValueSemantics(); + } + } + + @Override public Class<Vega> getCorrespondingClass() { return Vega.class;
