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);
-    }
-
-}