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 2020/01/05 17:25:38 UTC

[isis] branch master updated (3f28867 -> 61b7d6b)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 3f28867  ISIS-2183: removes some plugins (ServiceLoader)
     new 87d5b26  ISIS-2158: correcting java-doc
     new 61b7d6b  ISIS-2253: minor simplifications

The 2 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.


Summary of changes:
 .../commons/internal/exceptions/_Exceptions.java   |  8 ++--
 ...meterDefaultsFacetFromAssociatedCollection.java | 27 +++++-------
 .../isis/metamodel/spec/feature/ObjectAction.java  | 15 ++++---
 .../wicket/model/models/ActionPromptProvider.java  | 29 ++++++-------
 .../selector/CollectionSelectorProvider.java       | 29 ++++++-------
 .../CollectionContentsMultipleViewsPanel.java      |  4 +-
 .../components/scalars/ScalarPanelAbstract2.java   |  2 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java    | 50 ++++++++--------------
 .../wicket/ui/panels/PromptFormAbstract.java       |  2 +-
 9 files changed, 72 insertions(+), 94 deletions(-)


[isis] 02/02: ISIS-2253: minor simplifications

Posted by ah...@apache.org.
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

commit 61b7d6b860c6d08c270f6077ac3bc898fe9e07e2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jan 5 17:33:54 2020 +0100

    ISIS-2253: minor simplifications
---
 ...meterDefaultsFacetFromAssociatedCollection.java | 27 +++++-------
 .../isis/metamodel/spec/feature/ObjectAction.java  | 15 ++++---
 .../wicket/model/models/ActionPromptProvider.java  | 29 ++++++-------
 .../selector/CollectionSelectorProvider.java       | 29 ++++++-------
 .../CollectionContentsMultipleViewsPanel.java      |  4 +-
 .../components/scalars/ScalarPanelAbstract2.java   |  2 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java    | 50 ++++++++--------------
 .../wicket/ui/panels/PromptFormAbstract.java       |  2 +-
 8 files changed, 69 insertions(+), 89 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
index e599edd..e937d0f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromAssociatedCollection.java
@@ -19,10 +19,7 @@
 
 package org.apache.isis.metamodel.postprocessors.param;
 
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.Callable;
+import java.util.function.Function;
 
 import org.apache.isis.applib.ApplicationException;
 import org.apache.isis.commons.collections.Can;
@@ -32,22 +29,20 @@ import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class ActionParameterDefaultsFacetFromAssociatedCollection extends ActionParameterDefaultsFacetAbstract {
 
-    private static ThreadLocal<List<Object>> selectedPojos = new ThreadLocal<List<Object>>() {
-        @Override protected List<Object> initialValue() {
-            return Collections.emptyList();
-        }
-    };
-
-    public interface SerializableRunnable<T> extends Callable<T>, Serializable {}
+    private static ThreadLocal<Can<Object>> _selectedPojos = ThreadLocal.withInitial(Can::empty);
 
-    public static <T> T withSelected(final List<Object> objects, final SerializableRunnable<T> callable) {
+    public static <T, R> R applyWithSelected(
+            final Can<Object> selectedPojos, 
+            final Function<T, R> function,
+            final T argument) {
+        
         try {
-            selectedPojos.set(objects);
-            return callable.call();
+            _selectedPojos.set(selectedPojos);
+            return function.apply(argument);
         } catch (Exception e) {
             throw new ApplicationException(e);
         } finally {
-            selectedPojos.set(Collections.emptyList());
+            _selectedPojos.set(Can.empty());
         }
     }
 
@@ -61,7 +56,7 @@ public class ActionParameterDefaultsFacetFromAssociatedCollection extends Action
             final Can<ManagedObject> pendingArgs,
             final Integer paramNumUpdated) {
         
-        return selectedPojos.get();
+        return _selectedPojos.get();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectAction.java
index e4f9d6c..5a7b761 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectAction.java
@@ -448,18 +448,23 @@ public interface ObjectAction extends ObjectMember {
 
             @Override
             public boolean test(final ObjectAction objectAction) {
-                final AssociatedWithFacet associatedWithFacet = objectAction.getFacet(AssociatedWithFacet.class);
+                val associatedWithFacet = objectAction.getFacet(AssociatedWithFacet.class);
                 if(associatedWithFacet == null) {
                     return false;
                 }
-                final String associatedMemberName = associatedWithFacet.value();
+                val associatedMemberName = associatedWithFacet.value();
                 if (associatedMemberName == null) {
                     return false;
                 }
-                final String memberOrderNameLowerCase = associatedMemberName.toLowerCase();
-                return memberName != null && Objects.equals(memberName.toLowerCase(), memberOrderNameLowerCase) ||
-                        memberId   != null && Objects.equals(memberId.toLowerCase(), memberOrderNameLowerCase);
+                val memberOrderNameLowerCase = associatedMemberName.toLowerCase();
+                return equalWhenLowerCase(memberName, memberOrderNameLowerCase) 
+                        || equalWhenLowerCase(memberId, memberOrderNameLowerCase);
             }
+            
+            private boolean equalWhenLowerCase(@Nullable String string, String lowerCaseString) {
+                return string != null && Objects.equals(string.toLowerCase(), lowerCaseString);
+            }
+            
         }
 
         public static class HasParameterMatching implements Predicate<ObjectAction> {
diff --git a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
index 67a7d8f..b8b3d7c 100644
--- a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
+++ b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionPromptProvider.java
@@ -27,24 +27,21 @@ import org.apache.isis.commons.internal.ioc.BeanSort;
 
 public interface ActionPromptProvider {
 
-
-    public static class Util{
-
-        public static ActionPromptProvider getFrom(Component component) {
-            final Page page = component.getPage();
-            if(page == null) {
-                throw new IllegalArgumentException("Programming error: component must be added to a page in order to locate the ActionPromptProvider");
-            }
-            return getFrom(page);
+    public static ActionPromptProvider getFrom(Component component) {
+        final Page page = component.getPage();
+        if(page == null) {
+            throw new IllegalArgumentException("Programming error: component must be added to a page in order to locate the ActionPromptProvider");
         }
-        public static ActionPromptProvider getFrom(Page page) {
-            if(page instanceof ActionPromptProvider) {
-                final ActionPromptProvider provider = (ActionPromptProvider) page;
-                return provider;
-            }
-            // else
-            throw new IllegalArgumentException("Programming error: all pages should inherit from PageAbstract, which serves as the ActionPromptProvider");
+        return getFrom(page);
+    }
+    
+    public static ActionPromptProvider getFrom(Page page) {
+        if(page instanceof ActionPromptProvider) {
+            final ActionPromptProvider provider = (ActionPromptProvider) page;
+            return provider;
         }
+        // else
+        throw new IllegalArgumentException("Programming error: all pages should inherit from PageAbstract, which serves as the ActionPromptProvider");
     }
 
     public ActionPrompt getActionPrompt(
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorProvider.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorProvider.java
index 340cad2..1930e11 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorProvider.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorProvider.java
@@ -23,24 +23,21 @@ import org.apache.wicket.Component;
 public interface CollectionSelectorProvider {
     CollectionSelectorPanel getSelectorDropdownPanel();
 
-    public static class Util {
-
-        /**
-         * Searches up the component hierarchy looking for a parent that implements
-         * {@link org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorProvider}.
-         *
-         * @return the panel, or null (if there are no alternative views)
-         */
-        public static CollectionSelectorPanel getCollectionSelectorProvider(Component component) {
-            while(component != null) {
-                if(component instanceof CollectionSelectorProvider) {
-                    final CollectionSelectorPanel selectorDropdownPanelIfAny = ((CollectionSelectorProvider) component).getSelectorDropdownPanel();
-                    return selectorDropdownPanelIfAny;
-                }
-                component = component.getParent();
+    /**
+     * Searches up the component hierarchy looking for a parent that implements
+     * {@link org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorProvider}.
+     *
+     * @return the panel, or null (if there are no alternative views)
+     */
+    public static CollectionSelectorPanel getCollectionSelectorProvider(Component component) {
+        while(component != null) {
+            if(component instanceof CollectionSelectorProvider) {
+                final CollectionSelectorPanel selectorDropdownPanelIfAny = ((CollectionSelectorProvider) component).getSelectorDropdownPanel();
+                return selectorDropdownPanelIfAny;
             }
-            throw new IllegalStateException("Could not locate parent that implements CollectionSelectorProvider");
+            component = component.getParent();
         }
+        throw new IllegalStateException("Could not locate parent that implements CollectionSelectorProvider");
     }
 
 }
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
index d5a6e18..945b6d8 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
@@ -93,7 +93,7 @@ implements CollectionCountProvider {
         final List<ComponentFactory> componentFactories = selectorHelper.getComponentFactories();
 
         final CollectionSelectorPanel selectorDropdownPanelIfAny =
-                CollectionSelectorProvider.Util.getCollectionSelectorProvider(this);
+                CollectionSelectorProvider.getCollectionSelectorProvider(this);
         final String selected;
         if (selectorDropdownPanelIfAny != null) {
             selected = selectorHelper.honourViewHintElseDefault(selectorDropdownPanelIfAny);
@@ -147,7 +147,7 @@ implements CollectionCountProvider {
         if(selectorEvent == null) {
             return;
         }
-        final CollectionSelectorPanel selectorDropdownPanel = CollectionSelectorProvider.Util.getCollectionSelectorProvider(this);
+        final CollectionSelectorPanel selectorDropdownPanel = CollectionSelectorProvider.getCollectionSelectorProvider(this);
         if(selectorDropdownPanel == null) {
             // not expected, because this event shouldn't be called.
             // but no harm in simply returning...
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 5fd5c55..2e1c8f3 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -864,7 +864,7 @@ implements ScalarModelSubscriber2 {
                             .lookupServiceElseFail(MetaModelService.class);
                     final BeanSort sort = metaModelService.sortOf(specification.getCorrespondingClass(), MetaModelService.Mode.RELAXED);
 
-                    final ActionPrompt prompt = ActionPromptProvider.Util
+                    final ActionPrompt prompt = ActionPromptProvider
                             .getFrom(ScalarPanelAbstract2.this).getActionPrompt(promptStyle, sort);
 
                     PropertyEditPromptHeaderPanel titlePanel = new PropertyEditPromptHeaderPanel(prompt.getTitleId(),
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
index ea1b807..9c92a41 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
@@ -17,8 +17,8 @@
 
 package org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel;
 
-import java.util.List;
-import java.util.stream.Collectors;
+import java.io.Serializable;
+import java.util.function.Function;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.MarkupContainer;
@@ -29,12 +29,9 @@ import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.cycle.RequestCycle;
 
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.metamodel.postprocessors.param.ActionParameterDefaultsFacetFromAssociatedCollection;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -67,7 +64,6 @@ import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import org.apache.isis.webapp.context.IsisWebAppCommonContext;
-import org.apache.isis.webapp.context.memento.ObjectMemento;
 
 import lombok.val;
 
@@ -103,28 +99,18 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
 
                 if(toggledMementosProviderIfAny != null) {
 
-                    final Can<ObjectMemento> selectedMementos =
-                            toggledMementosProviderIfAny.getToggles();
-
-                    final List<Object> selectedPojos = selectedMementos.stream()
-                    .filter(_NullSafe::isPresent)
-                    .map(commonContext::reconstructObject)
-                    .filter(_NullSafe::isPresent)
-                    .map(ManagedObject::getPojo)
-                    .filter(_NullSafe::isPresent)
-                    .collect(Collectors.toList());
-
-                    final ActionPrompt actionPrompt = ActionParameterDefaultsFacetFromAssociatedCollection.withSelected(
-                            selectedPojos,
-                            new ActionParameterDefaultsFacetFromAssociatedCollection.SerializableRunnable<ActionPrompt>() {
-                                private static final long serialVersionUID = 1L;
-
-                                @Override
-                                public ActionPrompt call() {
-                                    return performOnClick(target);
-                                }
-                            }
-                            );
+                    val selectedMementos = toggledMementosProviderIfAny.getToggles();
+                    val selectedPojos = selectedMementos
+                            .map(commonContext::reconstructObject)
+                            .map(ManagedObject::getPojo);
+                    
+                    val actionPrompt = ActionParameterDefaultsFacetFromAssociatedCollection
+                            .applyWithSelected(
+                                    selectedPojos,
+                                    //TODO[2253] can we remove the Serializable cast? 
+                                    (Function<AjaxRequestTarget, ActionPrompt>&Serializable) this::performOnClick,
+                                    target);
+                    
                     if(actionPrompt != null) {
                         actionPrompt.setOnClose(new ActionPrompt.CloseHandler() {
                             private static final long serialVersionUID = 1L;
@@ -158,13 +144,13 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
             final ActionLink actionLink,
             final AjaxRequestTarget target) {
 
-        final ActionModel actionModel = actionLink.getActionModel();
+        val actionModel = actionLink.getActionModel();
 
-        InlinePromptContext inlinePromptContext = determineInlinePromptContext();
-        PromptStyle promptStyle = actionModel.getPromptStyle();
+        val inlinePromptContext = determineInlinePromptContext();
+        val promptStyle = actionModel.getPromptStyle();
 
         if(inlinePromptContext == null || promptStyle.isDialog()) {
-            final ActionPromptProvider promptProvider = ActionPromptProvider.Util.getFrom(actionLink.getPage());
+            final ActionPromptProvider promptProvider = ActionPromptProvider.getFrom(actionLink.getPage());
             val spec = actionModel.getTargetAdapter().getSpecification();
 
             final ActionPrompt prompt = promptProvider.getActionPrompt(promptStyle, spec.getBeanSort());
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
index b15dc67..eb848a6 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
@@ -195,7 +195,7 @@ implements ScalarModelSubscriber2 {
     protected void closePromptIfAny(final AjaxRequestTarget target) {
 
         try {
-            final ActionPromptProvider promptProvider = ActionPromptProvider.Util.getFrom(parentPanel);
+            final ActionPromptProvider promptProvider = ActionPromptProvider.getFrom(parentPanel);
             if(promptProvider != null) {
                 promptProvider.closePrompt(target);
             }


[isis] 01/02: ISIS-2158: correcting java-doc

Posted by ah...@apache.org.
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

commit 87d5b2626943c0e5ad3440b3503a987f5555038a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jan 5 16:47:40 2020 +0100

    ISIS-2158: correcting java-doc
---
 .../org/apache/isis/commons/internal/exceptions/_Exceptions.java  | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
index 974396d..46ea01a 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
@@ -62,17 +62,16 @@ public final class _Exceptions {
     /**
      * Most likely to be used in switch statements to handle the default case.
      * @param _case the unmatched case to be reported
-     * @return
+     * @return new IllegalArgumentException
      */
     public static final IllegalArgumentException unmatchedCase(@Nullable Object _case) {
         return new IllegalArgumentException("internal error: unmatched case in switch statement: "+_case);
     }
 
     /**
-     * Most likely to be used in switch statements to handle the default case.
      * @param format like in {@link java.lang.String#format(String, Object...)}
-     * @param _case the unmatched case to be reported
-     * @return
+     * @param args
+     * @return new IllegalArgumentException
      */
     public static final IllegalArgumentException illegalArgument(
             final String format,
@@ -88,7 +87,6 @@ public final class _Exceptions {
         return new IllegalStateException(String.format(format, args));
     }
 
-
     public static final NoSuchElementException noSuchElement(String msg) {
         return new NoSuchElementException(msg);
     }