You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/01/26 18:57:10 UTC
[isis] branch master updated: ISIS-2882: adds missing ValueSemantics for ApplicationFeatureId
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 709d620 ISIS-2882: adds missing ValueSemantics for ApplicationFeatureId
709d620 is described below
commit 709d620270f3716526d1da0c8e56e28be29cbf58
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jan 26 19:56:57 2022 +0100
ISIS-2882: adds missing ValueSemantics for ApplicationFeatureId
---
.../core/metamodel/IsisModuleCoreMetamodel.java | 3 +
.../ApplicationFeatureIdValueSemantics.java | 112 +++++++++++++++++++++
.../model/valuetypes/ValueTypeExample.java | 16 ++-
3 files changed, 130 insertions(+), 1 deletion(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 8354c8e..4a66e3a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -48,6 +48,7 @@ import org.apache.isis.core.metamodel.services.tablecol.TableColumnOrderServiceU
import org.apache.isis.core.metamodel.services.title.TitleServiceDefault;
import org.apache.isis.core.metamodel.specloader.ProgrammingModelServiceDefault;
import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
+import org.apache.isis.core.metamodel.valuesemantics.ApplicationFeatureIdValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.BigDecimalValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.BigIntegerValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.BlobValueSemantics;
@@ -145,6 +146,8 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
JavaSqlTimeValueSemantics.class,
JavaSqlTimeStampValueSemantics.class,
JavaUtilDateValueSemantics.class,
+ // Value Semantics (meta-model)
+ ApplicationFeatureIdValueSemantics.class,
// @Service's
ObjectManagerDefault.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java
new file mode 100644
index 0000000..9eafb8c
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.valuesemantics;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
+import org.apache.isis.applib.value.semantics.EncoderDecoder;
+import org.apache.isis.applib.value.semantics.Parser;
+import org.apache.isis.applib.value.semantics.Renderer;
+import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
+import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.schema.common.v2.ValueType;
+
+import lombok.val;
+
+@Component
+@Named("isis.val.ApplicationFeatureIdValueSemantics")
+public class ApplicationFeatureIdValueSemantics
+extends ValueSemanticsAbstract<ApplicationFeatureId>
+implements
+ EncoderDecoder<ApplicationFeatureId>,
+ Parser<ApplicationFeatureId>,
+ Renderer<ApplicationFeatureId> {
+
+ @Override
+ public Class<ApplicationFeatureId> getCorrespondingClass() {
+ return ApplicationFeatureId.class;
+ }
+
+ @Override
+ public ValueType getSchemaValueType() {
+ return ValueType.STRING; // this type can be easily converted to string and back
+ }
+
+ // -- ENCODER DECODER
+
+ @Override
+ public String toEncodedString(final ApplicationFeatureId object) {
+ return object!=null
+ ? object.asEncodedString()
+ : null;
+ }
+
+ @Override
+ public ApplicationFeatureId fromEncodedString(final String data) {
+ if(data==null) {
+ return null;
+ }
+ return ApplicationFeatureId.parseEncoded(data);
+ }
+
+ // -- RENDERER
+
+ @Override
+ public String simpleTextPresentation(final ValueSemanticsProvider.Context context, final ApplicationFeatureId value) {
+ return value == null ? "" : value.stringify();
+ }
+
+ // -- PARSER
+
+ @Override
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final ApplicationFeatureId value) {
+ return value == null ? null : value.stringify();
+ }
+
+ @Override
+ public ApplicationFeatureId parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
+ val input = _Strings.blankToNullOrTrim(text);
+ return input!=null
+ ? ApplicationFeatureId.parse(input)
+ : null;
+ }
+
+ @Override
+ public int typicalLength() {
+ return maxLength();
+ }
+
+ @Override
+ public int maxLength() {
+ return 255;
+ }
+
+ @Override
+ public Can<ApplicationFeatureId> getExamples() {
+ return Can.of(
+ ApplicationFeatureId.newNamespace("a.namespace.only"),
+ ApplicationFeatureId.newMember("a.namespace", "with_member_id"));
+ }
+
+}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java
index 69c96fa..550fd35 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/valuetypes/ValueTypeExample.java
@@ -44,6 +44,7 @@ import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.graph.tree.TreeAdapter;
import org.apache.isis.applib.graph.tree.TreeNode;
import org.apache.isis.applib.graph.tree.TreeState;
+import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.applib.value.Clob;
@@ -51,6 +52,7 @@ import org.apache.isis.applib.value.LocalResourcePath;
import org.apache.isis.applib.value.Markup;
import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
import org.apache.isis.applib.value.Password;
+import org.apache.isis.core.metamodel.valuesemantics.ApplicationFeatureIdValueSemantics;
import org.apache.isis.schema.chg.v2.ChangesDto;
import org.apache.isis.schema.cmd.v2.CommandDto;
import org.apache.isis.schema.common.v2.OidDto;
@@ -429,7 +431,6 @@ public abstract class ValueTypeExample<T> {
}
// -- EXAMPLES - TEMPORAL - JODA TIME
- //TODO org.joda.time.DateTime - fails because format with time-zone fails on CI
@DomainObject(
logicalTypeName = "isis.testdomain.valuetypes.ValueTypeExampleJodaDateTime",
nature = Nature.BEAN)
@@ -474,6 +475,19 @@ public abstract class ValueTypeExample<T> {
private org.joda.time.LocalTime updateValue = org.joda.time.LocalTime.now().plusSeconds(15);
}
+ // -- EXAMPLES - META MODEL
+
+ @DomainObject(
+ logicalTypeName = "isis.testdomain.valuetypes.ValueTypeExampleApplicationFeatureId",
+ nature = Nature.BEAN)
+ public static class ValueTypeExampleApplicationFeatureId
+ extends ValueTypeExample<ApplicationFeatureId> {
+ @Property @Getter @Setter
+ private ApplicationFeatureId value = new ApplicationFeatureIdValueSemantics().getExamples().getElseFail(0);
+ @Getter
+ private ApplicationFeatureId updateValue = new ApplicationFeatureIdValueSemantics().getExamples().getElseFail(1);
+ }
+
// -- EXAMPLES - DATA STRUCTURE
//TODO TreeNode