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/11/30 08:35:19 UTC
[isis] branch master updated: ISIS-2904: make ObjectActionContainer API more explicit, as to whether to include mixed-in actions
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 efc0e75 ISIS-2904: make ObjectActionContainer API more explicit, as to whether to include mixed-in actions
efc0e75 is described below
commit efc0e752f6e480869163dc0ae9f5ed43b7c6b40f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Nov 30 09:35:08 2021 +0100
ISIS-2904: make ObjectActionContainer API more explicit, as to
whether to include mixed-in actions
---
.../core/metamodel/spec/feature/ObjectAction.java | 6 +-
.../spec/feature/ObjectActionContainer.java | 65 ++++++++++++----------
.../spec/feature/memento/ActionMemento.java | 8 +--
.../specloader/specimpl/ObjectActionDefault.java | 12 ++--
.../specloader/specimpl/ObjectMemberContainer.java | 12 ++--
.../specimpl/ObjectSpecificationAbstract.java | 6 +-
.../specimpl/dflt/ObjectSpecificationDefault.java | 21 +++----
.../testspec/ObjectSpecificationStub.java | 12 ++--
.../sitemap/SitemapServiceDefault.java | 4 +-
.../domainobjects/ObjectActionReprRenderer.java | 2 +-
.../service/swagger/internal/Caching.java | 2 +-
.../service/swagger/internal/Generation.java | 50 ++++++++---------
.../swagger/internal/{Util.java => _Util.java} | 36 ++++++------
.../wicket/model/util/PageParameterUtils.java | 9 +--
14 files changed, 123 insertions(+), 122 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index a26b920..a45a2e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -73,7 +73,7 @@ public interface ObjectAction extends ObjectMember {
&& ObjectAction.Util.isNoParameters(this);
}
- ActionScope getType();
+ ActionScope getScope();
boolean isPrototype();
@@ -354,8 +354,8 @@ public interface ObjectAction extends ObjectMember {
public static final class Predicates {
- public static Predicate<ObjectAction> ofActionType(final ActionScope type) {
- return (final ObjectAction oa) -> oa.getType() == type;
+ public static Predicate<ObjectAction> ofActionType(final ActionScope scope) {
+ return (final ObjectAction oa) -> oa.getScope() == scope;
}
public static Predicate<ObjectAction> isPositioned(
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 9853554..f6d9f78 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,8 +22,6 @@ import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Stream;
-import org.springframework.lang.Nullable;
-
import org.apache.isis.applib.Identifier;
import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -34,7 +32,7 @@ public interface ObjectActionContainer {
// -- ACTION LOOKUP (INHERITANCE CONSIDERED)
/**
- * Similar to {@link #getDeclaredAction(String, ActionScope)},
+ * Similar to {@link #getDeclaredAction(String, ImmutableEnumSet, MixedIn)},
* but also considering any inherited object members. (mixed-in included)
* @param id
* @param type
@@ -43,22 +41,31 @@ public interface ObjectActionContainer {
* and if nothing found there, search the interfaces. Special care needs to be taken, as the
* {@link ActionScope} might be redeclared when inheriting from a super-type or interface.
*/
- Optional<ObjectAction> getAction(String id, @Nullable ActionScope type);
+ Optional<ObjectAction> getAction(String id, ImmutableEnumSet<ActionScope> actionScopes, MixedIn mixedIn);
- default ObjectAction getActionElseFail(String id, @Nullable ActionScope type) {
- return getAction(id, type)
- .orElseThrow(()->_Exceptions.noSuchElement("id=%s type=%s",
+ default ObjectAction getActionElseFail(
+ final String id, final ImmutableEnumSet<ActionScope> actionScopes, final MixedIn mixedIn) {
+ return getAction(id, actionScopes, mixedIn)
+ .orElseThrow(()->_Exceptions.noSuchElement("actionId=%s scope=%s mixedIn=%s",
id,
- type==null ? "any" : type.name()));
+ actionScopes,
+ mixedIn.name()));
}
- default Optional<ObjectAction> getAction(String id) {
- return getAction(id, null);
- }
+ default Optional<ObjectAction> getAction(final String id, final MixedIn mixedIn) {
+ return getAction(id, ActionScope.ANY, mixedIn); }
+ default ObjectAction getActionElseFail(final String id, final MixedIn mixedIn) {
+ return getActionElseFail(id, ActionScope.ANY, mixedIn); }
- default ObjectAction getActionElseFail(String id) {
- return getActionElseFail(id, null);
- }
+ default Optional<ObjectAction> getAction(final String id, final ImmutableEnumSet<ActionScope> actionScopes) {
+ return getAction(id, actionScopes, MixedIn.INCLUDED); }
+ default ObjectAction getActionElseFail(final String id, final ImmutableEnumSet<ActionScope> actionScopes) {
+ return getActionElseFail(id, actionScopes, MixedIn.INCLUDED); }
+
+ default Optional<ObjectAction> getAction(final String id) {
+ return getAction(id, ActionScope.ANY, MixedIn.INCLUDED); }
+ default ObjectAction getActionElseFail(final String id) {
+ return getActionElseFail(id, ActionScope.ANY, MixedIn.INCLUDED); }
// -- ACTION LOOKUP, DECLARED ACTIONS (NO INHERITANCE CONSIDERED)
@@ -70,18 +77,21 @@ public interface ObjectActionContainer {
* {@link Identifier#getMemberNameAndParameterClassNamesIdentityString()} or in abbreviated form (
* {@link Identifier#getMemberLogicalName()}).
*
- * @see #getDeclaredAction(String)
+ * @see #getDeclaredAction(String, MixedIn)
*/
- Optional<ObjectAction> getDeclaredAction(String id, @Nullable ActionScope type);
+ Optional<ObjectAction> getDeclaredAction(String id, ImmutableEnumSet<ActionScope> actionScopes, MixedIn mixedIn);
/**
- * Shortcut to {@link #getDeclaredAction(String, ActionScope)} with {@code ActionType = null},
+ * Shortcut to {@link #getDeclaredAction(String, ImmutableEnumSet, MixedIn)} with {@code ActionType = null},
* meaning where action type is <i>any</i>.
- * @see #getDeclaredAction(String, ActionScope)
+ * @see #getDeclaredAction(String, ImmutableEnumSet, MixedIn)
*/
- default Optional<ObjectAction> getDeclaredAction(String id) {
- return getDeclaredAction(id, null);
- }
+ default Optional<ObjectAction> getDeclaredAction(final String id, final MixedIn mixedIn) {
+ return getDeclaredAction(id, ActionScope.ANY, mixedIn);}
+ default Optional<ObjectAction> getDeclaredAction(final String id, final ImmutableEnumSet<ActionScope> actionScopes) {
+ return getDeclaredAction(id, actionScopes, MixedIn.INCLUDED);}
+ default Optional<ObjectAction> getDeclaredAction(final String id) {
+ return getDeclaredAction(id, ActionScope.ANY, MixedIn.INCLUDED);}
// -- ACTION STREAM (WITH INHERITANCE)
@@ -102,8 +112,8 @@ public interface ObjectActionContainer {
* @param mixedIn - whether to include mixed in actions
*/
default Stream<ObjectAction> streamActions(
- ImmutableEnumSet<ActionScope> actionTypes,
- MixedIn mixedIn) {
+ final ImmutableEnumSet<ActionScope> actionTypes,
+ final MixedIn mixedIn) {
return streamActions(actionTypes, mixedIn, __->{});
}
@@ -112,7 +122,7 @@ public interface ObjectActionContainer {
* @param actionType
* @param mixedIn - whether to include mixed in actions
*/
- default Stream<ObjectAction> streamActions(ActionScope actionType, MixedIn mixedIn) {
+ default Stream<ObjectAction> streamActions(final ActionScope actionType, final MixedIn mixedIn) {
return streamActions(ImmutableEnumSet.of(actionType), mixedIn);
}
@@ -120,7 +130,7 @@ public interface ObjectActionContainer {
* Returns a Stream of all actions of any type, with inheritance considered.
* @param mixedIn - whether to include mixed in actions
*/
- default Stream<ObjectAction> streamAnyActions(MixedIn mixedIn) {
+ default Stream<ObjectAction> streamAnyActions(final MixedIn mixedIn) {
return streamActions(ActionScope.ANY, mixedIn);
}
@@ -139,13 +149,12 @@ public interface ObjectActionContainer {
*/
Stream<ObjectAction> streamDeclaredActions(ImmutableEnumSet<ActionScope> actionTypes, MixedIn mixedIn);
- default Stream<ObjectAction> streamDeclaredActions(ActionScope type, MixedIn mixedIn) {
+ default Stream<ObjectAction> streamDeclaredActions(final ActionScope type, final MixedIn mixedIn) {
return streamDeclaredActions(ImmutableEnumSet.of(type), mixedIn);
}
- default Stream<ObjectAction> streamDeclaredActions(MixedIn mixedIn) {
+ default Stream<ObjectAction> streamDeclaredActions(final MixedIn mixedIn) {
return streamDeclaredActions(ActionScope.ANY, mixedIn);
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/memento/ActionMemento.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/memento/ActionMemento.java
index a220304..60a2a88 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/memento/ActionMemento.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/memento/ActionMemento.java
@@ -22,7 +22,6 @@ import java.io.Serializable;
import java.util.function.Supplier;
import org.apache.isis.applib.Identifier;
-import org.apache.isis.core.metamodel.spec.ActionScope;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -49,15 +48,11 @@ public class ActionMemento implements Serializable {
@EqualsAndHashCode.Include
@Getter private final @NonNull Identifier identifier;
- @EqualsAndHashCode.Exclude
- private final @NonNull ActionScope actionType; // not strictly required, but helps with load/unmarshal
-
// -- FACTORY
public static ActionMemento forAction(final @NonNull ObjectAction action) {
return new ActionMemento(
action.getFeatureIdentifier(),
- action.getType(),
action);
}
@@ -72,8 +67,7 @@ public class ActionMemento implements Serializable {
action = specLoader.get()
.specForLogicalTypeElseFail(getIdentifier().getLogicalType())
.getActionElseFail(
- getIdentifier().getMemberNameAndParameterClassNamesIdentityString(),
- actionType);
+ getIdentifier().getMemberNameAndParameterClassNamesIdentityString());
}
return action;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 265ad5a..c7b89f7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -147,11 +147,11 @@ implements ObjectAction {
// -- TYPE
@Override
- public ActionScope getType() {
- return getType(this);
+ public ActionScope getScope() {
+ return getScope(this);
}
- private static ActionScope getType(final FacetHolder facetHolder) {
+ private static ActionScope getScope(final FacetHolder facetHolder) {
return facetHolder.containsFacet(PrototypeFacet.class)
? ActionScope.PROTOTYPE
: ActionScope.PRODUCTION;
@@ -458,7 +458,7 @@ implements ObjectAction {
@Override
public boolean isPrototype() {
- return getType().isPrototype();
+ return getScope().isPrototype();
}
@Getter(lazy=true, onMethod_ = {@Override})
@@ -491,8 +491,8 @@ implements ObjectAction {
final StringBuffer sb = new StringBuffer();
sb.append("Action [");
sb.append(super.toString());
- sb.append(",type=");
- sb.append(getType());
+ sb.append(",scope=");
+ sb.append(getScope());
sb.append(",returns=");
sb.append(getReturnType());
sb.append(",parameters={");
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java
index 0f55786..47c101a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java
@@ -22,8 +22,6 @@ import java.util.Optional;
import java.util.function.Consumer;
import java.util.stream.Stream;
-import org.springframework.lang.Nullable;
-
import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -62,14 +60,14 @@ implements
// -- ACTIONS
@Override
- public Optional<ObjectAction> getAction(final String id, @Nullable final ActionScope type) {
+ public Optional<ObjectAction> getAction(
+ final String id, final ImmutableEnumSet<ActionScope> scopes, final MixedIn mixedIn) {
- val declaredAction = getDeclaredAction(id); // no inheritance nor type considered
+ val declaredAction = getDeclaredAction(id, mixedIn); // no inheritance nor type considered
if(declaredAction.isPresent()) {
// action found but if its not the right type, stop searching
- if(type!=null
- && declaredAction.get().getType() != type) {
+ if(!scopes.contains(declaredAction.get().getScope())) {
return Optional.empty();
}
return declaredAction;
@@ -77,7 +75,7 @@ implements
return isTypeHierarchyRoot()
? Optional.empty() // stop searching
- : superclass().getAction(id, type);
+ : superclass().getAction(id, scopes, mixedIn);
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 86badb2..7f2d787 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -702,7 +702,7 @@ implements ObjectSpecification {
@Override
public Stream<ObjectAction> streamDeclaredActions(
- final ImmutableEnumSet<ActionScope> actionTypes,
+ final ImmutableEnumSet<ActionScope> actionScopes,
final MixedIn mixedIn) {
introspectUpTo(IntrospectionState.FULLY_INTROSPECTED);
@@ -710,8 +710,8 @@ implements ObjectSpecification {
createMixedInActions(); // only if not already
}
- return actionTypes.stream()
- .flatMap(actionType->stream(objectActionsByType.get(actionType)))
+ return actionScopes.stream()
+ .flatMap(actionScope->stream(objectActionsByType.get(actionScope)))
.filter(mixedIn.isIncluded()
? _Predicates.alwaysTrue()
: MixedIn::isNotMixedIn);
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 0ddc5cf..9b274cf 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
@@ -263,22 +263,19 @@ implements FacetHolder {
@Override
public Optional<ObjectAction> getDeclaredAction(
final @Nullable String id,
- final @Nullable ActionScope type) {
+ final ImmutableEnumSet<ActionScope> actionScopes,
+ final MixedIn mixedIn) {
introspectUpTo(IntrospectionState.FULLY_INTROSPECTED);
return id == null
- ? Optional.empty()
- : streamDeclaredActions(
- type==null
- ? ActionScope.ANY
- : ImmutableEnumSet.of(type),
- MixedIn.INCLUDED)
- .filter(action->
- id.equals(action.getFeatureIdentifier().getMemberNameAndParameterClassNamesIdentityString())
- || id.equals(action.getFeatureIdentifier().getMemberLogicalName())
- )
- .findFirst();
+ ? Optional.empty()
+ : streamDeclaredActions(actionScopes, mixedIn)
+ .filter(action->
+ id.equals(action.getFeatureIdentifier().getMemberNameAndParameterClassNamesIdentityString())
+ || id.equals(action.getFeatureIdentifier().getMemberLogicalName())
+ )
+ .findFirst();
}
@Override
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 5a25eb0..5904803 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
@@ -172,16 +172,17 @@ implements ObjectSpecification {
}
@Override
- public Optional<ObjectAction> getDeclaredAction(final String id, final ActionScope type) {
+ public Optional<ObjectAction> getDeclaredAction(
+ final String id, final ImmutableEnumSet<ActionScope> scopes, final MixedIn mixedIn) {
val nameParmsIdentityString = id.substring(0, id.indexOf('('));
val action = lookupObjectAction(nameParmsIdentityString);
- if(type==null) {
+ if(scopes==null) {
return action;
}
if (action.isPresent()
- && action.get().getType() == type) {
+ && scopes.contains(action.get().getScope())) {
return action;
}
return Optional.empty();
@@ -346,9 +347,10 @@ implements ObjectSpecification {
}
@Override
- public Optional<ObjectAction> getAction(final String id, final ActionScope type) {
+ public Optional<ObjectAction> getAction(
+ final String id, final ImmutableEnumSet<ActionScope> scopes, final MixedIn mixedIn) {
// poorly implemented, inheritance not supported
- return getDeclaredAction(id, type);
+ return getDeclaredAction(id, scopes, mixedIn);
}
@Override
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
index ff8b028..fde60df 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
@@ -118,7 +118,7 @@ public class SitemapServiceDefault implements SitemapService {
val grid = toGrid(actionElementType.getCorrespondingClass(), Style.CURRENT);
grid.visit(new Grid.VisitorAdapter() {
@Override public void visit(final ActionLayoutData actionLayoutData) {
- actionElementType.getAction(actionLayoutData.getId(), ActionScope.PRODUCTION)
+ actionElementType.getAction(actionLayoutData.getId(), ActionScope.PRODUCTION_ONLY)
.ifPresent(action->{
flushGroupStack.run();
val describedAs = action.getCanonicalDescription()
@@ -177,7 +177,7 @@ public class SitemapServiceDefault implements SitemapService {
private Optional<ObjectAction> lookupAction(final ServiceActionLayoutData actionLayout) {
return specificationLoader
.specForLogicalTypeName(actionLayout.getLogicalTypeName())
- .map(typeSpec->typeSpec.getAction(actionLayout.getId(), ActionScope.PRODUCTION).orElse(null));
+ .map(typeSpec->typeSpec.getAction(actionLayout.getId(), ActionScope.PRODUCTION_ONLY).orElse(null));
}
private Grid toGrid(final Class<?> domainClass, final Style style) {
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index c55aad6..17d2425 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -202,7 +202,7 @@ extends AbstractObjectMemberReprRenderer<ObjectAction> {
@Override
protected void putExtensionsIsisProprietary() {
- getExtensions().mapPut("actionType", objectMember.getType().name().toLowerCase());
+ getExtensions().mapPut("actionScope", objectMember.getScope().name().toLowerCase());
final SemanticsOf semantics = objectMember.getSemantics();
getExtensions().mapPut("actionSemantics", semantics.getCamelCaseName());
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Caching.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Caching.java
index e9f7981..439f652 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Caching.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Caching.java
@@ -58,7 +58,7 @@ enum Caching {
response
.header("Cache-Control",
new IntegerProperty()
- ._default(86400).description(Util.roSpec("2.13")));
+ ._default(86400).description(_Util.roSpec("2.13")));
}
};
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
index 442e6ad..610ef0b 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
@@ -155,7 +155,7 @@ class Generation {
continue;
}
- val serviceActions = Util.actionsOf(spec, visibility, classExcluder);
+ val serviceActions = _Util.actionsOf(spec, visibility, classExcluder);
if(serviceActions.isEmpty()) {
continue;
}
@@ -192,7 +192,7 @@ class Generation {
if (mixinFacet != null) {
continue;
}
- if(visibility.isPublic() && !Util.isVisibleForPublic(objectSpec)) {
+ if(visibility.isPublic() && !_Util.isVisibleForPublic(objectSpec)) {
continue;
}
if(objectSpec.isAbstract()) {
@@ -206,9 +206,9 @@ class Generation {
continue;
}
- final List<OneToOneAssociation> objectProperties = Util.propertiesOf(objectSpec, visibility);
- final List<OneToManyAssociation> objectCollections = Util.collectionsOf(objectSpec, visibility);
- final List<ObjectAction> objectActions = Util.actionsOf(objectSpec, visibility, classExcluder);
+ final List<OneToOneAssociation> objectProperties = _Util.propertiesOf(objectSpec, visibility);
+ final List<OneToManyAssociation> objectCollections = _Util.collectionsOf(objectSpec, visibility);
+ final List<ObjectAction> objectActions = _Util.actionsOf(objectSpec, visibility, classExcluder);
if(objectProperties.isEmpty() && objectCollections.isEmpty()) {
continue;
@@ -234,26 +234,26 @@ class Generation {
new Path()
.get(newOperation("home-page")
.tag(tag)
- .description(Util.roSpec("5.1"))
+ .description(_Util.roSpec("5.1"))
.response(200,
newResponse(Caching.NON_EXPIRING)
.description("OK")
.schema(newRefProperty("RestfulObjectsSupportingHomePageRepr"))
)));
- addDefinition("RestfulObjectsSupportingHomePageRepr", newModel(Util.roSpec("5.2")));
+ addDefinition("RestfulObjectsSupportingHomePageRepr", newModel(_Util.roSpec("5.2")));
swagger.path("/user",
new Path()
.get(newOperation("user")
.tag(tag)
- .description(Util.roSpec("6.1"))
+ .description(_Util.roSpec("6.1"))
.response(200,
newResponse(Caching.USER_INFO)
.description("OK")
.schema(newRefProperty("RestfulObjectsSupportingUserRepr"))
)));
addDefinition("RestfulObjectsSupportingUserRepr",
- newModel(Util.roSpec("6.2"))
+ newModel(_Util.roSpec("6.2"))
.property("userName", stringProperty())
.property("roles", arrayOfStrings())
.property("links", arrayOfLinks())
@@ -264,14 +264,14 @@ class Generation {
new Path()
.get(newOperation("services")
.tag(tag)
- .description(Util.roSpec("7.1"))
+ .description(_Util.roSpec("7.1"))
.response(200,
newResponse(Caching.USER_INFO)
.description("OK")
.schema(newRefProperty("RestfulObjectsSupportingServicesRepr"))
)));
addDefinition("RestfulObjectsSupportingServicesRepr",
- newModel(Util.roSpec("7.2"))
+ newModel(_Util.roSpec("7.2"))
.property("value", arrayOfLinks())
.required("userName")
.required("roles"));
@@ -280,14 +280,14 @@ class Generation {
new Path()
.get(newOperation("RestfulObjectsSupportingServicesRepr")
.tag(tag)
- .description(Util.roSpec("8.1"))
+ .description(_Util.roSpec("8.1"))
.response(200,
newResponse(Caching.NON_EXPIRING)
.description("OK")
.schema(new ObjectProperty())
)));
swagger.addDefinition("RestfulObjectsSupportingServicesRepr",
- newModel(Util.roSpec("8.2"))
+ newModel(_Util.roSpec("8.2"))
.property("specVersion", stringProperty())
.property("implVersion", stringProperty())
.property("optionalCapabilities",
@@ -341,7 +341,7 @@ class Generation {
path.get(
newOperation("object")
.tag(tag)
- .description(Util.roSpec("15.1"))
+ .description(_Util.roSpec("15.1"))
.response(200,
newResponse(Caching.TRANSACTIONAL)
.description("OK")
@@ -349,7 +349,7 @@ class Generation {
);
final ModelImpl model =
- newModel(Util.roSpec("15.1.2") + ": representation of " + serviceId)
+ newModel(_Util.roSpec("15.1.2") + ": representation of " + serviceId)
.property("title", stringProperty())
.property("serviceId", stringProperty()._default(serviceId))
.property("members", new ObjectProperty());
@@ -369,7 +369,7 @@ class Generation {
path.get(operation);
operation
.tag(tag)
- .description(Util.roSpec("14.1"))
+ .description(_Util.roSpec("14.1"))
.parameter(
new PathParameter()
.name("objectId")
@@ -386,7 +386,7 @@ class Generation {
.schema(newRefProperty(restfulObjectsModelDefinition)));
final ModelImpl roSpecModel =
- newModel(Util.roSpec("14.4") + ": representation of " + logicalTypeName)
+ newModel(_Util.roSpec("14.4") + ": representation of " + logicalTypeName)
.property("title", stringProperty())
.property("domainType", stringProperty()._default(logicalTypeName))
.property("instanceId", stringProperty())
@@ -443,7 +443,7 @@ class Generation {
final Operation invokeOperation =
newOperation("object", "action-result")
.tag(tag)
- .description(Util.roSpec("19.1") + ": (invoke) resource of " + serviceId + "#" + actionId);
+ .description(_Util.roSpec("19.1") + ": (invoke) resource of " + serviceId + "#" + actionId);
final SemanticsOf semantics = serviceAction.getSemantics();
if(semantics.isSafeInNature()) {
@@ -457,7 +457,7 @@ class Generation {
.parameter(
new QueryParameter()
.name(parameter.getId())
- .description(Util.roSpec("2.9.1")
+ .description(_Util.roSpec("2.9.1")
+ (_Strings.isNotEmpty(describedAs)
? (": " + describedAs)
: ""))
@@ -468,7 +468,7 @@ class Generation {
if(!parameters.isEmpty()) {
invokeOperation.parameter(new QueryParameter()
.name("x-isis-querystring")
- .description(Util.roSpec("2.10") + ": all (formal) arguments as base64 encoded string")
+ .description(_Util.roSpec("2.10") + ": all (formal) arguments as base64 encoded string")
.required(false)
.type("string"));
}
@@ -528,7 +528,7 @@ class Generation {
final Operation collectionOperation =
newOperation("object-collection")
.tag(tag)
- .description(Util.roSpec("17.1") + ": resource of " + logicalTypeName + "#" + collectionId)
+ .description(_Util.roSpec("17.1") + ": resource of " + logicalTypeName + "#" + collectionId)
.parameter(
new PathParameter()
.name("objectId")
@@ -558,7 +558,7 @@ class Generation {
final Operation invokeOperation =
newOperation("action-result")
.tag(tag)
- .description(Util.roSpec("19.1") + ": (invoke) resource of " + logicalTypeName + "#" + actionId)
+ .description(_Util.roSpec("19.1") + ": (invoke) resource of " + logicalTypeName + "#" + actionId)
.parameter(
new PathParameter()
.name("objectId")
@@ -576,7 +576,7 @@ class Generation {
.parameter(
new QueryParameter()
.name(parameter.getId())
- .description(Util.roSpec("2.9.1")
+ .description(_Util.roSpec("2.9.1")
+ (_Strings.isNotEmpty(describedAs)
? (": " + describedAs)
: ""))
@@ -587,7 +587,7 @@ class Generation {
if(!parameters.isEmpty()) {
invokeOperation.parameter(new QueryParameter()
.name("x-isis-querystring")
- .description(Util.roSpec("2.10") + ": all (formal) arguments as base64 encoded string")
+ .description(_Util.roSpec("2.10") + ": all (formal) arguments as base64 encoded string")
.required(false)
.type("string"));
}
@@ -807,7 +807,7 @@ class Generation {
}
static Response newResponse(final Caching caching) {
- return Util.withCachingHeaders(new Response(), caching);
+ return _Util.withCachingHeaders(new Response(), caching);
}
String tagForlogicalTypeName(final String logicalTypeName, final String fallback) {
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Util.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/_Util.java
similarity index 83%
rename from viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Util.java
rename to viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/_Util.java
index 6f53bd2..d54a310 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Util.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/_Util.java
@@ -38,21 +38,21 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import lombok.val;
+import lombok.experimental.UtilityClass;
import io.swagger.models.Response;
-public final class Util {
+@UtilityClass
+final class _Util {
- private Util(){}
-
- static boolean isVisibleForPublic(final ObjectAction objectAction) {
+ boolean isVisibleForPublic(final ObjectAction objectAction) {
final ObjectSpecification specification = objectAction.getReturnType();
return ( isVisibleForPublic(specification) || isTypeOfVisibleForPublic(objectAction) )
&& isVisibleForPublic(objectAction.getParameterTypes());
}
- private static boolean isTypeOfVisibleForPublic(final ObjectAction objectAction) {
+ private boolean isTypeOfVisibleForPublic(final ObjectAction objectAction) {
final TypeOfFacet typeOfFacet = objectAction.getFacet(TypeOfFacet.class);
if (typeOfFacet == null) {
return false;
@@ -60,27 +60,27 @@ public final class Util {
return isVisibleForPublic(typeOfFacet.valueSpec());
}
- private static boolean isVisibleForPublic(final Can<ObjectSpecification> parameterTypes) {
+ private boolean isVisibleForPublic(final Can<ObjectSpecification> parameterTypes) {
final boolean atLeastOneParamNotVisible =
parameterTypes.stream()
- .map(Util::isNotVisibleForPublic)
+ .map(_Util::isNotVisibleForPublic)
.findAny()
.isPresent();
return !atLeastOneParamNotVisible;
}
- static boolean isVisibleForPublic(final ObjectAssociation objectAssociation) {
+ boolean isVisibleForPublic(final ObjectAssociation objectAssociation) {
final ObjectSpecification specification = objectAssociation.getElementType();
return isVisibleForPublic(specification);
}
- static boolean isNotVisibleForPublic(final ObjectSpecification specification) {
+ boolean isNotVisibleForPublic(final ObjectSpecification specification) {
return ! isVisibleForPublic(specification);
}
- static boolean isVisibleForPublic(final ObjectSpecification specification) {
+ boolean isVisibleForPublic(final ObjectSpecification specification) {
if (specification == null) {
return true;
}
@@ -105,7 +105,7 @@ public final class Util {
correspondingClass == Void.class;
}
- static Predicate<ObjectAssociation> associationsWith(final Visibility visibility) {
+ Predicate<ObjectAssociation> associationsWith(final Visibility visibility) {
return new Predicate<ObjectAssociation>() {
@Override
public boolean test(final ObjectAssociation objectAssociation) {
@@ -114,19 +114,19 @@ public final class Util {
};
}
- static List<OneToOneAssociation> propertiesOf(
+ List<OneToOneAssociation> propertiesOf(
final ObjectSpecification objectSpecification,
final Visibility visibility) {
return associationsOf(objectSpecification, ObjectAssociation.Predicates.PROPERTIES, visibility);
}
- static List<OneToManyAssociation> collectionsOf(
+ List<OneToManyAssociation> collectionsOf(
final ObjectSpecification objectSpecification,
final Visibility visibility) {
return associationsOf(objectSpecification, ObjectAssociation.Predicates.COLLECTIONS, visibility);
}
- private static <T extends ObjectAssociation> List<T> associationsOf(
+ private <T extends ObjectAssociation> List<T> associationsOf(
final ObjectSpecification objectSpecification,
final Predicate<ObjectAssociation> associationPredicate, final Visibility visibility) {
@@ -136,7 +136,7 @@ public final class Util {
.collect(Collectors.toList());
}
- static List<ObjectAction> actionsOf(
+ List<ObjectAction> actionsOf(
final ObjectSpecification objectSpec,
final Visibility visibility,
final ClassExcluder classExcluder) {
@@ -150,17 +150,17 @@ public final class Util {
.collect(Collectors.toList());
}
- static String roSpec(final String section) {
+ String roSpec(final String section) {
return "RO Spec v1.0, section " + section;
}
- static Response withCachingHeaders(final Response response, final Caching caching) {
+ Response withCachingHeaders(final Response response, final Caching caching) {
caching.withHeaders(response);
return response;
}
- static ImmutableEnumSet<ActionScope> actionScopesFor(final Visibility visibility) {
+ ImmutableEnumSet<ActionScope> actionScopesFor(final Visibility visibility) {
switch (visibility) {
case PUBLIC:
case PRIVATE:
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java
index f317b7a..02ca31b 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java
@@ -36,6 +36,7 @@ import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.primitives._Ints;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -185,8 +186,8 @@ public class PageParameterUtils {
.ifPresent(oidStr->
PageParameterNames.OBJECT_OID.addStringTo(pageParameters, oidStr));
- val actionType = objectAction.getType();
- PageParameterNames.ACTION_TYPE.addEnumTo(pageParameters, actionType);
+ val actionScope = objectAction.getScope();
+ PageParameterNames.ACTION_TYPE.addEnumTo(pageParameters, actionScope);
val actionOnTypeSpec = objectAction.getDeclaringType();
if (actionOnTypeSpec != null) {
@@ -221,12 +222,12 @@ public class PageParameterUtils {
val owningLogicalTypeName = PageParameterNames.ACTION_OWNING_SPEC.getStringFrom(pageParameters);
val owningLogicalType = specLoader.lookupLogicalTypeElseFail(owningLogicalTypeName);
- final ActionScope actionType = PageParameterNames.ACTION_TYPE.getEnumFrom(pageParameters, ActionScope.class);
+ final ActionScope actionScope = PageParameterNames.ACTION_TYPE.getEnumFrom(pageParameters, ActionScope.class);
final String actionNameParms = PageParameterNames.ACTION_ID.getStringFrom(pageParameters);
val action = specLoader
.specForLogicalTypeElseFail(owningLogicalType)
- .getActionElseFail(actionNameParms, actionType);
+ .getActionElseFail(actionNameParms, ImmutableEnumSet.of(actionScope));
return action;
}