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/01/23 09:23:48 UTC
[isis] branch master updated: ISIS-2492: simplify
ObjectActionContainer (3)
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 36362cd ISIS-2492: simplify ObjectActionContainer (3)
36362cd is described below
commit 36362cd6125660581195ec633a5aa2e2d40b3780
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Jan 23 10:23:31 2021 +0100
ISIS-2492: simplify ObjectActionContainer (3)
---
.../spec/feature/ObjectActionContainer.java | 24 ++++++++---------
.../specimpl/dflt/ObjectSpecificationDefault.java | 16 +++++-------
.../testspec/ObjectSpecificationStub.java | 30 +++++++++-------------
3 files changed, 30 insertions(+), 40 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
index 7304092..20fb116 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionContainer.java
@@ -22,6 +22,8 @@ package org.apache.isis.core.metamodel.spec.feature;
import java.util.Optional;
import java.util.stream.Stream;
+import javax.annotation.Nullable;
+
import org.apache.isis.applib.Identifier;
import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -40,24 +42,22 @@ public interface ObjectActionContainer {
*
* @see #getObjectAction(String)
*/
- Optional<ObjectAction> getObjectAction(String id, ActionType type);
+ Optional<ObjectAction> getObjectAction(String id, @Nullable ActionType type);
- default ObjectAction getObjectActionElseFail(String id, ActionType type) {
+ default ObjectAction getObjectActionElseFail(String id, @Nullable ActionType type) {
return getObjectAction(id, type)
- .orElseThrow(()->_Exceptions.noSuchElement("id=%s type=%s", id, type));
+ .orElseThrow(()->_Exceptions.noSuchElement("id=%s type=%s",
+ id,
+ type==null ? "any" : type.name()));
}
/**
- * Get the action object represented by the specified identity string,
- * irrespective of {@link ActionType}.
- * <p>
- * The identity string can be either fully specified with parameters (as per
- * {@link Identifier#toNameParmsIdentityString()} or in abbreviated form (
- * {@link Identifier#toNameIdentityString()}).
- *
- * @see #getObjectAction(ActionType, String)
+ * Shortcut to {@link #getObjectAction(String, null)}, meaning where action type is <i>any</i>.
+ * @see #getObjectAction(String, ActionType)
*/
- Optional<ObjectAction> getObjectAction(String id);
+ default Optional<ObjectAction> getObjectAction(String id) {
+ return getObjectAction(id, null);
+ }
default ObjectAction getObjectActionElseFail(String id) {
return getObjectAction(id)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 38d7b43..107a28d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -28,6 +28,7 @@ import java.util.stream.Stream;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.services.metamodel.BeanSort;
+import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
@@ -272,16 +273,11 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
final Stream<ObjectAction> actions =
- streamObjectActions(type, MixedIn.INCLUDED);
- return firstAction(actions, id);
- }
-
- @Override
- public Optional<ObjectAction> getObjectAction(final String id) {
- introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
-
- final Stream<ObjectAction> actions =
- streamObjectActions(ActionType.ANY, MixedIn.INCLUDED);
+ streamObjectActions(
+ type==null
+ ? ActionType.ANY
+ : ImmutableEnumSet.of(type),
+ MixedIn.INCLUDED);
return firstAction(actions, id);
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index e493979..f4d8cce 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -28,7 +28,6 @@ import java.util.stream.Stream;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.services.metamodel.BeanSort;
-import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.consent.Consent;
@@ -155,12 +154,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
return null;
}
- //@Override
- private Optional<ObjectAction> getObjectAction(
- final ActionType type,
- final String name,
- final Can<ObjectSpecification> parameters) {
-
+ private Optional<ObjectAction> lookupObjectAction(final String name) {
if (action != null && action.getId().equals(name)) {
return Optional.of(action);
}
@@ -169,19 +163,19 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
@Override
public Optional<ObjectAction> getObjectAction(final String id, final ActionType type) {
- final int openBracket = id.indexOf('(');
- return getObjectAction(type, id.substring(0, openBracket), null);
- }
-
- @Override
- public Optional<ObjectAction> getObjectAction(final String nameParmsIdentityString) {
- for (final ActionType type : ActionType.values()) {
- val action = getObjectAction(nameParmsIdentityString, type);
- if (action.isPresent()) {
- return action;
- }
+ val nameParmsIdentityString = id.substring(0, id.indexOf('('));
+ val action = lookupObjectAction(nameParmsIdentityString);
+
+ if(type==null) {
+ return action;
+ }
+
+ if (action.isPresent()
+ && action.get().getType() == type) {
+ return action;
}
return Optional.empty();
+
}
@Override