[isis] 10/11: ISIS-898 further reduce compiler warnings
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit b02c336eebb0507e1bf2dd552ad1062947dfed1c Author: Andi HuberAuthorDate: Tue Apr 17 05:54:24 2018 +0200 ISIS-898 further reduce compiler warnings --- .../value/ValueSemanticsProviderAbstractTemporal.java | 3 ++- .../facets/value/image/ImageValueSemanticsProvider.java | 1 - .../imageawt/JavaAwtImageValueSemanticsProvider.java| 1 - .../bookmarks/BookmarkServiceInternalDefault.java | 17 + .../core/runtime/persistence/adapter/PojoAdapter.java | 8 +++- .../isis/viewer/wicket/model/models/ScalarModel.java| 2 +- .../actions/ActionParametersFormPanelFactory.java | 6 ++ .../ui/components/actions/ActionParametersPanel.java| 4 +++- .../bookmarkedpages/BookmarkedPagesPanel.java | 8 ++-- .../ui/components/scalars/markup/MarkupPanel.java | 3 +-- 10 files changed, 27 insertions(+), 26 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java index 1d4fa11..41cd71a 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java @@ -33,6 +33,7 @@ import java.util.TimeZone; import com.google.common.collect.Maps; import org.apache.isis.applib.adapters.EncodingException; +import org.apache.isis.applib.internal.base._Casts; import org.apache.isis.core.commons.config.ConfigurationConstants; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.facetapi.Facet; @@ -200,7 +201,7 @@ public abstract class ValueSemanticsProviderAbstractTemporal extends ValueSem } try { -T date = (T) object; +T date = _Casts.uncheckedCast(object); final StringTokenizer st = new StringTokenizer(str.substring(1), " "); while (st.hasMoreTokens()) { final String token = st.nextToken(); diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java index ceea52e..0b5cd74 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java @@ -20,7 +20,6 @@ package org.apache.isis.core.metamodel.facets.value.image; import org.apache.isis.applib.value.Image; -import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.facetapi.Facet; import org.apache.isis.core.metamodel.facetapi.FacetHolder; diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java index 422cf73..c6e768b 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java @@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.value.imageawt; import java.awt.Image; -import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.facetapi.FacetHolder; import org.apache.isis.core.metamodel.facets.value.image.ImageValueSemanticsProviderAbstract; diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java index 771629d..e08334a 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java @@ -202,14 +202,15 @@ public class BookmarkServiceInternalDefault implements BookmarkService, Serializ // -- HELPER private final static Set serializableFinalTypes = _Sets.of( - String.class, -
[isis] 04/11: ISIS-898 simplify markup panel factories
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit fe0cbe7ee8029c8b40b8098b46ef67ec0112c915 Author: Andi HuberAuthorDate: Mon Apr 16 07:34:10 2018 +0200 ISIS-898 simplify markup panel factories --- .../ComponentFactoryRegistrarDefault.java | 8 +- .../scalars/markup/MarkupPanelFactories.java | 102 .../scalars/markup/MarkupPanelFactory.java | 105 - 3 files changed, 105 insertions(+), 110 deletions(-) diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java index 52058f8..da812b9 100644 --- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java +++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java @@ -23,7 +23,6 @@ import java.util.ServiceLoader; import org.apache.isis.applib.internal.context._Plugin; import org.apache.isis.viewer.wicket.ui.ComponentFactory; -import org.apache.isis.viewer.wicket.ui.ComponentType; import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar; import org.apache.isis.viewer.wicket.ui.components.about.AboutPanelFactory; import org.apache.isis.viewer.wicket.ui.components.actioninfo.ActionInfoPanelFactory; @@ -65,7 +64,7 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigIn import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaDateTimePanelFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDatePanelFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDateTimePanelFactory; -import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactory; +import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories; import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.BooleanPanelFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.BytePanelFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.CharacterPanelFactory; @@ -193,15 +192,14 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr } protected void addComponentFactoriesForValue(final ComponentFactoryList componentFactories) { - componentFactories.add(new MarkupPanelFactory(ComponentType.VALUE)); + componentFactories.add(MarkupPanelFactories.standalone()); componentFactories.add(new StandaloneValuePanelFactory()); } protected void addComponentFactoriesForScalar(final ComponentFactoryList componentFactories) { componentFactories.add(new ReferencePanelFactory()); - -componentFactories.add(new MarkupPanelFactory(ComponentType.SCALAR_NAME_AND_VALUE)); +componentFactories.add(MarkupPanelFactories.parented()); componentFactories.add(new BooleanPanelFactory()); componentFactories.add(new BytePanelFactory()); diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupPanelFactories.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupPanelFactories.java new file mode 100644 index 000..79e62b0 --- /dev/null +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupPanelFactories.java @@ -0,0 +1,102 @@ +/* + * 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.viewer.wicket.ui.components.scalars.markup; + +import org.apache.isis.applib.value.Markup; +import org.apache.isis.core.metamodel.adapter.ObjectAdapter; +import
[isis] branch dev/2.0.0/ISIS-898-treeview created (now 0e3abd9)
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a change to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git. at 0e3abd9 ISIS-898 initial (naive) lazy tree feature This branch includes the following new commits: new d337130 ISIS-898 applib: introduces initial tree model new a8c547d ISIS-898 refine TreeNode interface new b4535da ISIS-898 interim TreePanel stubs new fe0cbe7 ISIS-898 simplify markup panel factories new 275252b ISIS-898 adds missing license head new a25c43c ISIS-898 register TreePanel factories new 28f1b61 ISIS-898 Internal API: introduces _Lazy a memoizing supplier new a9215a8 ISIS-898 refine, also add missing license headers new f960d6e ISIS-898 add missing cases, add serial version ids new b02c336 ISIS-898 further reduce compiler warnings new 0e3abd9 ISIS-898 initial (naive) lazy tree feature The 11 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. -- To stop receiving notification emails like this one, please contact ahu...@apache.org.
[isis] 11/11: ISIS-898 initial (naive) lazy tree feature
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit 0e3abd90395665e94d76bacf55e39b3286ec39c3 Author: Andi HuberAuthorDate: Tue Apr 17 09:24:52 2018 +0200 ISIS-898 initial (naive) lazy tree feature fails when lazily fetching child nodes --- .../org/apache/isis/applib/tree/LazyTreeNode.java | 7 +- .../java/org/apache/isis/applib/tree/TreeNode.java | 51 ++--- .../facets/value/treenode/TreeNodeValueFacet.java} | 17 +- ...deValueFacetUsingSemanticsProviderFactory.java} | 30 +-- .../treenode/TreeNodeValueSemanticsProvider.java | 133 + .../ComponentFactoryRegistrarDefault.java | 3 +- .../wicket/model/models/tree/TreeViewModel.java| 1 + .../components/tree/IsisToWicketTreeAdapter.java | 209 + .../ui/components/tree/StandaloneTreePanel.html| 4 +- .../ui/components/tree/StandaloneTreePanel.java| 14 +- .../wicket/ui/components/tree/TreePanel.html | 66 +++ .../wicket/ui/components/tree/TreePanel.java | 54 -- .../ui/components/tree/TreePanelFactories.java | 14 +- 13 files changed, 519 insertions(+), 84 deletions(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java index e464373..1d75d33 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java @@ -21,15 +21,17 @@ package org.apache.isis.applib.tree; import java.util.Objects; import java.util.stream.Stream; +import org.apache.isis.applib.annotation.Value; import org.apache.isis.applib.internal.base._Lazy; +@Value(semanticsProviderName="org.apache.isis.core.metamodel.facets.value.treenode.TreeNodeValueSemanticsProvider") public class LazyTreeNode implements TreeNode { private final T value; private final Class> treeAdapterClass; private final _Lazy treeAdapter = _Lazy.of(this::newTreeAdapter); - static TreeNode of(T value, Class> treeAdapterClass) { + public static TreeNode of(T value, Class> treeAdapterClass) { return new LazyTreeNode(value, treeAdapterClass); } @@ -66,6 +68,7 @@ public class LazyTreeNode implements TreeNode { ; } + @Override public Class> getTreeAdapterClass() { return treeAdapterClass; } @@ -77,7 +80,7 @@ public class LazyTreeNode implements TreeNode { return treeAdapterClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new IllegalArgumentException( - String.format("failed to instanciate treeAdapter '%s'", treeAdapterClass.getName()), e); + String.format("failed to instantiate TreeAdapter '%s'", treeAdapterClass.getName()), e); } } diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java index 0b07924..e387c0c 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java @@ -27,33 +27,33 @@ import java.util.stream.StreamSupport; import javax.annotation.Nullable; public interface TreeNode { - + // -- VALUE - + public T getValue(); - + // -- PARENT - + public @Nullable TreeNode getParentIfAny(); - + // -- CHILDREN - + public int getChildCount(); public Stream streamChildren(); - + // -- BASIC PREDICATES - + public default boolean isRoot() { return getParentIfAny() == null; } - + public default boolean isLeaf() { return getChildCount() == 0; } // -- CONSTRUCTION - + /** * Convenient shortcut. * @param node @@ -63,43 +63,52 @@ public interface TreeNode { public static TreeNode lazy(T node, Class> treeAdapterClass) { return LazyTreeNode.of(node, treeAdapterClass); } - + // -- PARENT NODE ITERATION - + public default Iterator iteratorHierarchyUp(){ return new TreeNode_iteratorHierarchyUp<>(this); } - + // -- PARENT NODE STREAMING - + public default Stream streamHierarchyUp(){ return StreamSupport.stream(
[isis] 03/11: ISIS-898 interim TreePanel stubs
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit b4535dae220ab738e5cc64d957daad754e6e6a65 Author: Andi HuberAuthorDate: Sun Apr 15 21:05:15 2018 +0200 ISIS-898 interim TreePanel stubs --- .../java/org/apache/isis/applib/tree/TreeNode.java | 2 +- .../ui/components/tree/StandaloneTreePanel.html| 34 +++ .../ui/components/tree/StandaloneTreePanel.java| 36 +++ .../wicket/ui/components/tree/TreePanel.java | 65 .../ui/components/tree/TreePanelFactory.java | 110 + 5 files changed, 246 insertions(+), 1 deletion(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java index 6d641a5..6ce17a3 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java @@ -38,7 +38,7 @@ public interface TreeNode { // -- CONSTRUCTION public static TreeNode of(T node, TreeAdapter treeAdapter) { - return TreeNodeBean.of(node, treeAdapter); + return TreeNode_Lazy.of(node, treeAdapter); } // -- PARENT NODE ITERATION diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/StandaloneTreePanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/StandaloneTreePanel.html new file mode 100644 index 000..cfd86c4 --- /dev/null +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/StandaloneTreePanel.html @@ -0,0 +1,34 @@ + + +http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd;> +http://www.w3.org/1999/xhtml; + xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd; + xml:lang="en" + lang="en"> + + + + + + + + + + diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/StandaloneTreePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/StandaloneTreePanel.java new file mode 100644 index 000..7375410 --- /dev/null +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/StandaloneTreePanel.java @@ -0,0 +1,36 @@ +/* + * 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.viewer.wicket.ui.components.tree; + +import org.apache.isis.viewer.wicket.model.models.ValueModel; +import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent; +import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract; + +public class StandaloneTreePanel extends PanelAbstract { + +private static final long serialVersionUID = 1L; +private static final String ID_STANDALONE_VALUE = "standaloneValue"; + +public StandaloneTreePanel(final String id, final ValueModel valueModel) { +super(id, valueModel); +add(new MarkupComponent(ID_STANDALONE_VALUE, getModel())); +} + +} diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanel.java new file mode 100644 index 000..8377bc0 --- /dev/null +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanel.java @@ -0,0 +1,65 @@ +/* + * 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
[isis] 01/11: ISIS-898 applib: introduces initial tree model
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit d337130decc55615a92e7272b5c0100fe6d36bac Author: Andi HuberAuthorDate: Sat Apr 14 09:13:34 2018 +0200 ISIS-898 applib: introduces initial tree model --- .../org/apache/isis/applib/tree/TreeAdapter.java | 14 .../java/org/apache/isis/applib/tree/TreeNode.java | 80 ++ .../org/apache/isis/applib/tree/TreeNode_Lazy.java | 57 +++ .../applib/tree/TreeNode_iteratorBreadthFirst.java | 42 .../applib/tree/TreeNode_iteratorDepthFirst.java | 53 ++ .../applib/tree/TreeNode_iteratorHierarchyUp.java | 35 ++ 6 files changed, 281 insertions(+) diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java new file mode 100644 index 000..5c39b59 --- /dev/null +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java @@ -0,0 +1,14 @@ +package org.apache.isis.applib.tree; + +import java.util.Optional; +import java.util.stream.Stream; + +public interface TreeAdapter { + + public Optional parentOf(T value); + + public int childCountOf(T value); + + public Stream childrenOf(T value); + +} diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java new file mode 100644 index 000..f8f6fc4 --- /dev/null +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java @@ -0,0 +1,80 @@ +package org.apache.isis.applib.tree; + +import java.util.Iterator; +import java.util.Optional; +import java.util.Spliterator; +import java.util.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +public interface TreeNode { + + // -- VALUE + + public T getValue(); + + // -- PARENT + + public Optional getParent(); + + // -- CHILDREN + + public int getChildCount(); + + public Stream streamChildren(); + + // -- BASIC PREDICATES + + public default boolean isRoot() { + return !getParent().isPresent(); + } + + public default boolean isLeaf() { + return getChildCount() == 0; + } + + // -- CONSTRUCTION + + public static TreeNode of(T node, TreeAdapter treeAdapter) { + return TreeNode_Lazy.of(node, treeAdapter); + } + + // -- PARENT NODE ITERATION + + public default Iterator iteratorHierarchyUp(){ + return new TreeNode_iteratorHierarchyUp<>(this); + } + + // -- PARENT NODE STREAMING + + public default Stream streamHierarchyUp(){ + return StreamSupport.stream( + Spliterators.spliteratorUnknownSize(iteratorHierarchyUp(), Spliterator.ORDERED), + false); // not parallel + } + + // -- CHILD NODE ITERATION + + public default Iterator iteratorDepthFirst(){ + return new TreeNode_iteratorDepthFirst<>(this); + } + + public default Iterator iteratorBreadthFirst(){ + return new TreeNode_iteratorBreadthFirst<>(this); + } + + // -- CHILD NODE STREAMING + + public default Stream streamDepthFirst(){ + return StreamSupport.stream( + Spliterators.spliteratorUnknownSize(iteratorDepthFirst(), Spliterator.ORDERED), + false); // not parallel + } + + public default Stream streamBreadthFirst(){ + return StreamSupport.stream( + Spliterators.spliteratorUnknownSize(iteratorBreadthFirst(), Spliterator.ORDERED), + false); // not parallel + } + +} diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java new file mode 100644 index 000..83cd503 --- /dev/null +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java @@ -0,0 +1,57 @@ +package org.apache.isis.applib.tree; + +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Stream; + +class TreeNode_Lazy implements TreeNode { + + private final T value; + private final TreeAdapter treeAdapter; + + static TreeNode_Lazy of(T value, TreeAdapter treeAdapter) { + Objects.requireNonNull(value); +
[isis] 07/11: ISIS-898 Internal API: introduces _Lazy a memoizing supplier
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit 28f1b610e3182404d1d83ef1a816738a2e44f2a0 Author: Andi HuberAuthorDate: Mon Apr 16 08:17:56 2018 +0200 ISIS-898 Internal API: introduces _Lazy a memoizing supplier --- .../apache/isis/applib/internal/base/_Lazy.java| 79 ++ 1 file changed, 79 insertions(+) diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Lazy.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Lazy.java new file mode 100644 index 000..802ec57 --- /dev/null +++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Lazy.java @@ -0,0 +1,79 @@ +/* + * 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.applib.internal.base; + +import java.util.Objects; +import java.util.function.Supplier; + +/** + * - internal use only - + * + * Supplier with memoization. + * + * + * WARNING: Do NOT use any of the classes provided by this package! + * These may be changed or removed without notice! + * + * + * @since 2.0.0 + */ +public final class _Lazy implements Supplier { + + private final Supplier supplier; + private T value; + private boolean memoized; + + public static _Lazy of(Supplier supplier) { + return new _Lazy(supplier); + } + + private _Lazy(Supplier supplier) { + Objects.requireNonNull(supplier, "supplier required"); + this.supplier = supplier; + } + + public boolean isMemoized() { + return memoized; + } + + /** +* Clears the lazy's memoized value. Resets this lazy to its initial state. +* isMemoized() = false; +* +*/ + public void clear() { + this.memoized = false; + this.value = null; + } + + /** +* Evaluates this lazy value and memoizes it, when called the first time +* after initialization or clear(). +*/ + @Override + public T get() { + if(memoized) { + return value; + } + memoized=true; + return value = supplier.get(); + } + +} -- To stop receiving notification emails like this one, please contact ahu...@apache.org.
[isis] 08/11: ISIS-898 refine, also add missing license headers
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit a9215a8939a8ae0095b586c27e8e8ef5049e6ddf Author: Andi HuberAuthorDate: Mon Apr 16 08:33:31 2018 +0200 ISIS-898 refine, also add missing license headers --- .../org/apache/isis/applib/tree/LazyTreeNode.java | 93 ++ .../org/apache/isis/applib/tree/TreeAdapter.java | 18 + .../java/org/apache/isis/applib/tree/TreeNode.java | 33 ++-- .../org/apache/isis/applib/tree/TreeNode_Lazy.java | 57 - .../applib/tree/TreeNode_iteratorBreadthFirst.java | 18 + .../applib/tree/TreeNode_iteratorDepthFirst.java | 18 + .../applib/tree/TreeNode_iteratorHierarchyUp.java | 18 + .../wicket/model/models/tree/TreeViewModel.java| 27 +++ 8 files changed, 220 insertions(+), 62 deletions(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java new file mode 100644 index 000..e464373 --- /dev/null +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/LazyTreeNode.java @@ -0,0 +1,93 @@ +/* + * 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.applib.tree; + +import java.util.Objects; +import java.util.stream.Stream; + +import org.apache.isis.applib.internal.base._Lazy; + +public class LazyTreeNode implements TreeNode { + + private final T value; + private final Class> treeAdapterClass; + private final _Lazy treeAdapter = _Lazy.of(this::newTreeAdapter); + + static TreeNode of(T value, Class> treeAdapterClass) { + return new LazyTreeNode(value, treeAdapterClass); + } + + protected LazyTreeNode(T value, Class> treeAdapterClass) { + this.value = Objects.requireNonNull(value); + this.treeAdapterClass = Objects.requireNonNull(treeAdapterClass); + } + + @Override + public T getValue() { + return value; + } + + @Override + public TreeNode getParentIfAny() { + return treeAdapter().parentOf(getValue()) + .map(this::toTreeNode) + .orElse(null) + ; + } + + @Override + public int getChildCount() { + return treeAdapter().childCountOf(value); + } + + @Override + public Stream streamChildren() { + if(isLeaf()) { + return Stream.empty(); + } + return treeAdapter().childrenOf(value) + .map(this::toTreeNode) + ; + } + + public Class> getTreeAdapterClass() { + return treeAdapterClass; + } + + // -- HELPER + + private TreeAdapter newTreeAdapter() { + try { + return treeAdapterClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + throw new IllegalArgumentException( + String.format("failed to instanciate treeAdapter '%s'", treeAdapterClass.getName()), e); + } + } + + private TreeAdapter treeAdapter() { + return treeAdapter.get(); + } + + private TreeNode toTreeNode(T value){ + return of(value, getTreeAdapterClass()); + } + + +} diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java index 5c39b59..379e902 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeAdapter.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed
[isis] 02/11: ISIS-898 refine TreeNode interface
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit a8c547dc2546fb73c2a82bb46e8de28c8473e8b2 Author: Andi HuberAuthorDate: Sun Apr 15 19:55:11 2018 +0200 ISIS-898 refine TreeNode interface --- .../src/main/java/org/apache/isis/applib/tree/TreeNode.java| 10 ++ .../main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java | 4 ++-- .../apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java index f8f6fc4..6d641a5 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode.java @@ -1,12 +1,14 @@ package org.apache.isis.applib.tree; import java.util.Iterator; -import java.util.Optional; import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.StreamSupport; +import org.apache.isis.applib.annotation.ViewModel; + +@ViewModel public interface TreeNode { // -- VALUE @@ -15,7 +17,7 @@ public interface TreeNode { // -- PARENT - public Optional getParent(); + public TreeNode getParentIfAny(); // -- CHILDREN @@ -26,7 +28,7 @@ public interface TreeNode { // -- BASIC PREDICATES public default boolean isRoot() { - return !getParent().isPresent(); + return getParentIfAny() == null; } public default boolean isLeaf() { @@ -36,7 +38,7 @@ public interface TreeNode { // -- CONSTRUCTION public static TreeNode of(T node, TreeAdapter treeAdapter) { - return TreeNode_Lazy.of(node, treeAdapter); + return TreeNodeBean.of(node, treeAdapter); } // -- PARENT NODE ITERATION diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java index 83cd503..1bc2341 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_Lazy.java @@ -1,7 +1,6 @@ package org.apache.isis.applib.tree; import java.util.Objects; -import java.util.Optional; import java.util.stream.Stream; class TreeNode_Lazy implements TreeNode { @@ -26,9 +25,10 @@ class TreeNode_Lazy implements TreeNode { } @Override - public Optional getParent() { + public TreeNode getParentIfAny() { return treeAdapter.parentOf(getValue()) .map(this::toTreeNode) + .orElse(null) ; } diff --git a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java index 62813b2..9b29e2b 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java +++ b/core/applib/src/main/java/org/apache/isis/applib/tree/TreeNode_iteratorHierarchyUp.java @@ -29,7 +29,7 @@ class TreeNode_iteratorHierarchyUp implements Iterator { // -- HELPER private TreeNode fetchNext(TreeNode current) { - return current.getParent().orElse(null); + return current.getParentIfAny(); } } -- To stop receiving notification emails like this one, please contact ahu...@apache.org.
[isis] 09/11: ISIS-898 add missing cases, add serial version ids
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit f960d6e2585b2fae4bd8b7d22cd476c531c8d9b6 Author: Andi HuberAuthorDate: Tue Apr 17 05:15:07 2018 +0200 ISIS-898 add missing cases, add serial version ids --- .../components/scalars/ScalarPanelAbstract2.java | 25 +++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java index fa47ecb..4e03256 100644 --- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java @@ -624,7 +624,12 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract im private void configureInlinePromptLinkCallback(final WebMarkupContainer inlinePromptLink) { inlinePromptLink.add(new AjaxEventBehavior("click") { -@Override +/** +* +*/ + private static final long serialVersionUID = -3034584614218331440L; + + @Override protected void onEvent(final AjaxRequestTarget target) { scalarModel.toEditMode(); @@ -649,7 +654,12 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract im final ActionLink actionLink) { inlinePromptLink.add(new AjaxEventBehavior("click") { -@Override +/** +* +*/ + private static final long serialVersionUID = 2171203212348044948L; + + @Override protected void onEvent(final AjaxRequestTarget target) { actionLink.onClick(target); } @@ -692,7 +702,12 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract im scalarIfRegularFormGroup.addOrReplace(editProperty); editProperty.add(new AjaxEventBehavior("click") { -protected void onEvent(AjaxRequestTarget target) { +/** +* +*/ + private static final long serialVersionUID = -3561635292986591682L; + + protected void onEvent(AjaxRequestTarget target) { final ActionPrompt prompt = ActionPromptProvider.Util .getFrom(ScalarPanelAbstract2.this).getActionPrompt(); @@ -767,6 +782,10 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract im return "label-none"; case TOP: return "label-top"; + case DEFAULT: + case NOT_SPECIFIED: + default: + break; } } return "label-left"; -- To stop receiving notification emails like this one, please contact ahu...@apache.org.
[isis] 06/11: ISIS-898 register TreePanel factories
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit a25c43ce61a56d8e27fb2eefc973857da0d6cfec Author: Andi HuberAuthorDate: Mon Apr 16 07:46:59 2018 +0200 ISIS-898 register TreePanel factories --- .../ComponentFactoryRegistrarDefault.java | 3 + .../ui/components/tree/TreePanelFactories.java | 102 +++ .../ui/components/tree/TreePanelFactory.java | 110 - 3 files changed, 105 insertions(+), 110 deletions(-) diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java index da812b9..2e03d81 100644 --- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java +++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java @@ -79,6 +79,7 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.uuid.UuidPanelFactory import org.apache.isis.viewer.wicket.ui.components.scalars.value.ValuePanelFactory; import org.apache.isis.viewer.wicket.ui.components.scalars.valuechoices.ValueChoicesSelect2PanelFactory; import org.apache.isis.viewer.wicket.ui.components.standalonecollection.StandaloneCollectionPanelFactory; +import org.apache.isis.viewer.wicket.ui.components.tree.TreePanelFactories; import org.apache.isis.viewer.wicket.ui.components.unknown.UnknownModelPanelFactory; import org.apache.isis.viewer.wicket.ui.components.value.StandaloneValuePanelFactory; import org.apache.isis.viewer.wicket.ui.components.voidreturn.VoidReturnPanelFactory; @@ -193,6 +194,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr protected void addComponentFactoriesForValue(final ComponentFactoryList componentFactories) { componentFactories.add(MarkupPanelFactories.standalone()); + componentFactories.add(TreePanelFactories.standalone()); componentFactories.add(new StandaloneValuePanelFactory()); } @@ -200,6 +202,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr componentFactories.add(new ReferencePanelFactory()); componentFactories.add(MarkupPanelFactories.parented()); +componentFactories.add(TreePanelFactories.parented()); componentFactories.add(new BooleanPanelFactory()); componentFactories.add(new BytePanelFactory()); diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java new file mode 100644 index 000..70b0470 --- /dev/null +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java @@ -0,0 +1,102 @@ +/* + * 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.viewer.wicket.ui.components.tree; + +import org.apache.isis.core.metamodel.adapter.ObjectAdapter; +import org.apache.isis.viewer.wicket.model.models.ScalarModel; +import org.apache.isis.viewer.wicket.model.models.ValueModel; +import org.apache.isis.viewer.wicket.ui.ComponentFactory; +import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract; +import org.apache.isis.viewer.wicket.ui.ComponentType; +import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanel; +import org.apache.wicket.Component; +import org.apache.wicket.model.IModel; + +/** + * {@link ComponentFactory} for {@link MarkupPanel}. + */ +public class TreePanelFactories { + + // -- PARENTED + + static class Parented extends ComponentFactoryAbstract { + private static final long serialVersionUID = 1L; + + public Parented() { +
[isis] 05/11: ISIS-898 adds missing license head
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-898-treeview in repository https://gitbox.apache.org/repos/asf/isis.git commit 275252ba496d9e35241bff6aa0a2b4eae32df8f3 Author: Andi HuberAuthorDate: Mon Apr 16 07:35:19 2018 +0200 ISIS-898 adds missing license head --- .../apache/isis/applib/internal/base/_Reduction.java | 5 - .../apache/isis/viewer/wicket/model/models/Util.java | 19 +++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Reduction.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Reduction.java index b915938..a65aef1 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Reduction.java +++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Reduction.java @@ -11,7 +11,10 @@ import javax.annotation.Nullable; /** * - internal use only - * - * Provides a generic reduction class. Most intuitive example of a reduction is finding the + * Provides a generic (left-fold) reduction class. + * + * + * Most intuitive example of a reduction is finding the * minimum value from a list of values. See {@link ReductionTest} for examples. * * diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/Util.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/Util.java index ce0c86b..52de9fc 100644 --- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/Util.java +++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/Util.java @@ -1,3 +1,22 @@ +/* + * 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.viewer.wicket.model.models; import java.util.Optional; -- To stop receiving notification emails like this one, please contact ahu...@apache.org.