You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/09/16 09:17:53 UTC
[isis] branch master updated: ISIS-2871: Spring managed value
semantics for TreeNode
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 faeae0f ISIS-2871: Spring managed value semantics for TreeNode
faeae0f is described below
commit faeae0f57b44fa13fdeb2d229aa007978d2b63d1
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 11:17:44 2021 +0200
ISIS-2871: Spring managed value semantics for TreeNode
---
.../core/metamodel/IsisModuleCoreMetamodel.java | 5 +-
.../facets/value/treenode/TreeNodeValueFacet.java | 26 -----
...odeValueFacetUsingSemanticsProviderFactory.java | 47 --------
.../value/treenode/TreeNodeValueSemantics.java | 85 ++++++++++++++
.../treenode/TreeNodeValueSemanticsProvider.java | 126 ---------------------
5 files changed, 88 insertions(+), 201 deletions(-)
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 3319b0a..33fd1e9 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
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemantics;
import org.apache.isis.core.metamodel.facets.value.localrespath.LocalResourcePathValueSemantics;
import org.apache.isis.core.metamodel.facets.value.markup.MarkupValueSemantics;
import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemanticsProvider;
-import org.apache.isis.core.metamodel.facets.value.treenode.TreeNodeValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.treenode.TreeNodeValueSemantics;
import org.apache.isis.core.metamodel.facets.value.url.URLValueSemantics;
import org.apache.isis.core.metamodel.facets.value.uuid.UUIDValueSemantics;
import org.apache.isis.core.metamodel.inspect.IsisModuleCoreMetamodelInspection;
@@ -97,9 +97,10 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
URLValueSemantics.class,
LocalResourcePathValueSemantics.class,
UUIDValueSemantics.class,
+ TreeNodeValueSemantics.class,
//TODO convert to non-facets ...
PasswordValueSemanticsProvider.class,
- TreeNodeValueSemanticsProvider.class,
+
// @Service's
ObjectManagerDefault.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueFacet.java
deleted file mode 100644
index 423bec5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueFacet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.facets.value.treenode;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public interface TreeNodeValueFacet extends Facet {
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 115c97b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueFacetUsingSemanticsProviderFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.facets.value.treenode;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.graph.tree.TreeNode;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
-
-@SuppressWarnings("rawtypes")
-public class TreeNodeValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<TreeNode> {
-
- @Inject
- public TreeNodeValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
- super(mmc);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> type = processClassContext.getCls();
- final FacetHolder holder = processClassContext.getFacetHolder();
-
- if (!TreeNode.class.isAssignableFrom(type)) {
- return;
- }
- addValueFacet(new TreeNodeValueSemanticsProvider(holder));
- }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemantics.java
new file mode 100644
index 0000000..a37b5f8
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemantics.java
@@ -0,0 +1,85 @@
+/*
+ * 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.facets.value.treenode;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.graph.tree.TreeNode;
+import org.apache.isis.applib.graph.tree.TreeState;
+import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
+import org.apache.isis.commons.internal.memento._Mementos;
+import org.apache.isis.commons.internal.memento._Mementos.Memento;
+import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
+
+@Component
+@SuppressWarnings("rawtypes")
+public class TreeNodeValueSemantics
+extends AbstractValueSemanticsProvider<TreeNode>
+implements
+ EncoderDecoder<TreeNode>,
+ Renderer<TreeNode> {
+
+ @Inject UrlEncodingService urlEncodingService;
+ @Inject SerializingAdapter serializingAdapter;
+
+ // -- RENDERER
+
+ @Override
+ public String presentationValue(final Context context, final TreeNode value) {
+ return super.render(value, TreeNode::toString);
+ }
+
+ // -- ENCODER DECODER
+
+ @Override
+ public String toEncodedString(final TreeNode treeNode) {
+
+ final Memento memento = newMemento();
+ memento.put("primaryValue", treeNode.getValue());
+ memento.put("adapterClass", treeNode.getTreeAdapterClass());
+ memento.put("treeState", treeNode.getTreeState());
+ return memento.asString();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public TreeNode<?> fromEncodedString(final String input) {
+ final Memento memento = parseMemento(input);
+ return TreeNode.of(
+ memento.get("primaryValue", Object.class),
+ memento.get("adapterClass", Class.class),
+ memento.get("treeState", TreeState.class));
+ }
+
+ // -- HELPER
+
+ private _Mementos.Memento newMemento(){
+ return _Mementos.create(urlEncodingService, serializingAdapter);
+ }
+
+ private _Mementos.Memento parseMemento(final String input){
+ return _Mementos.parse(urlEncodingService, serializingAdapter, input);
+ }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java
deleted file mode 100644
index 160054d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.facets.value.treenode;
-
-import org.springframework.stereotype.Component;
-
-import org.apache.isis.applib.adapters.DefaultsProvider;
-import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.applib.graph.tree.TreeNode;
-import org.apache.isis.applib.graph.tree.TreeState;
-import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
-import org.apache.isis.commons.internal.memento._Mementos;
-import org.apache.isis.commons.internal.memento._Mementos.Memento;
-import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-
-@Component
-@SuppressWarnings("rawtypes")
-public class TreeNodeValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<TreeNode>
-implements TreeNodeValueFacet {
-
- private static final int TYPICAL_LENGTH = 0;
-
- private static Class<? extends Facet> type() {
- return TreeNodeValueFacet.class;
- }
-
- private static final TreeNode DEFAULT_VALUE = null;
- private static final Class<TreeNode> VALUE_TYPE = TreeNode.class;
-
- public TreeNodeValueSemanticsProvider() {
- this(null);
- }
-
- public TreeNodeValueSemanticsProvider(final FacetHolder holder) {
- super(type(), holder, VALUE_TYPE, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE,
- EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
- }
-
- @Override
- public String titleString(final Object object) {
- return object != null ? ((TreeNode<?>)object).toString() : "[null]"; //TODO implement
- }
-
- // //////////////////////////////////////////////////////////////////
- // Parser
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public Parser<TreeNode> getParser() {
- return null;
- }
-
- @Override
- protected TreeNode doParse(final ValueSemanticsProvider.Context context, final String entry) {
- return null;
- }
-
- // //////////////////////////////////////////////////////////////////
- // DefaultsProvider
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public DefaultsProvider<TreeNode> getDefaultsProvider() {
- return null;
- }
-
- // //////////////////////////////////////////////////////////////////
- // EncoderDecoder
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public String toEncodedString(final TreeNode treeNode) {
-
- final Memento memento = newMemento();
- memento.put("primaryValue", treeNode.getValue());
- memento.put("adapterClass", treeNode.getTreeAdapterClass());
- memento.put("treeState", treeNode.getTreeState());
- return memento.asString();
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public TreeNode<?> fromEncodedString(final String input) {
- final Memento memento = parseMemento(input);
- return TreeNode.of(
- memento.get("primaryValue", Object.class),
- memento.get("adapterClass", Class.class),
- memento.get("treeState", TreeState.class));
- }
-
- // -- HELPER
-
- private _Mementos.Memento newMemento(){
- final UrlEncodingService codec = getServiceRegistry().lookupServiceElseFail(UrlEncodingService.class);
- final SerializingAdapter serializer = getServiceRegistry().lookupServiceElseFail(SerializingAdapter.class);
- return _Mementos.create(codec, serializer);
- }
-
- private _Mementos.Memento parseMemento(final String input){
- final UrlEncodingService codec = getServiceRegistry().lookupServiceElseFail(UrlEncodingService.class);
- final SerializingAdapter serializer = getServiceRegistry().lookupServiceElseFail(SerializingAdapter.class);
- return _Mementos.parse(codec, serializer, input);
- }
-
-}