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:40 UTC
[isis] 02/02: ISIS-2253: minor simplifications
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);
}