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/29 15:15:16 UTC
[isis] branch master updated: ISIS-2510: some house keeping
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 de5e9ba ISIS-2510: some house keeping
de5e9ba is described below
commit de5e9bad29e4537c77ca369f88612e8b6a0e26ad
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 29 16:15:00 2021 +0100
ISIS-2510: some house keeping
---
.../facets/actcoll/typeof/TypeOfFacet.java | 3 +-
.../core/metamodel/spec/feature/CurrentHolder.java | 2 +-
.../api/permission/ApplicationPermission.java | 17 ++++++
.../ApplicationOrphanedPermissionManager.java | 8 ++-
.../jdo/dom/permission/ApplicationPermission.java | 7 ---
.../jpa/dom/permission/ApplicationPermission.java | 7 ---
.../wicket/model/models/EntityCollectionModel.java | 65 +++++++++++-----------
7 files changed, 59 insertions(+), 50 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
index 0acd4842..3cc71b5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
@@ -25,6 +25,7 @@ import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
+import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.commons.internal.collections._Arrays;
import org.apache.isis.commons.internal.collections._Collections;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,7 +39,7 @@ import lombok.val;
* <p>
* In the standard Apache Isis Programming Model, corresponds to annotating the
* collection's accessor or the action's invoker method with the
- * <tt>@TypeOf</tt> annotation.
+ * {@link Collection#typeOf} annotation.
*/
public interface TypeOfFacet extends SingleClassValueFacet {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
index 5a0e372..67f1b57 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/CurrentHolder.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
* action parameter}s (but not {@link ObjectAction action}s themselves).
*/
public interface CurrentHolder {
-
+
/**
* Returns the referenced {@link ManagedObject} for the owning
* {@link ManagedObject}.
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
index d95ed38..8c5c04e 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
@@ -20,7 +20,12 @@ package org.apache.isis.extensions.secman.api.permission;
import java.util.Optional;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureType;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
@@ -56,6 +61,7 @@ import lombok.val;
* </ul>
* </p>
*/
+@DomainObject
public interface ApplicationPermission {
// -- DOMAIN EVENTS
@@ -115,15 +121,26 @@ public interface ApplicationPermission {
ApplicationFeatureType getFeatureType();
+ @Property
+ @MemberOrder(name="Feature", sequence = "5.1")
String getFeatureFqn();
void setFeatureFqn(String featureFqn);
+ @Property
+ @MemberOrder(name="Permissions", sequence = "2")
ApplicationPermissionRule getRule();
void setRule(ApplicationPermissionRule rule);
+ @Property
+ @MemberOrder(name="Permissions", sequence = "3")
ApplicationPermissionMode getMode();
void setMode(ApplicationPermissionMode changing);
+ @Property
+ @PropertyLayout(
+ hidden=Where.REFERENCES_PARENT
+ )
+ @MemberOrder(name="Role", sequence = "1")
ApplicationRole getRole();
void setRole(ApplicationRole applicationRole);
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager.java
index 1b5e23a..f3ab4a7 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager.java
@@ -22,6 +22,7 @@ import java.util.Collection;
import javax.inject.Inject;
+import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
@@ -39,9 +40,14 @@ public class ApplicationOrphanedPermissionManager {
return "Manage Orphaned Permissions";
}
- @org.apache.isis.applib.annotation.Collection
+ @org.apache.isis.applib.annotation.Collection(typeOf = ApplicationPermission.class)
public Collection<? extends ApplicationPermission> getOrphanedPermissions() {
return applicationPermissionRepository.findOrphaned();
}
+ @Action
+ public Collection<? extends ApplicationPermission> debugOrphanedPermissions() {
+ return applicationPermissionRepository.findOrphaned();
+ }
+
}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
index b711609..cd71ac2 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
@@ -126,10 +126,6 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
domainEvent = RoleDomainEvent.class,
editing = Editing.DISABLED
)
- @PropertyLayout(
- hidden=Where.REFERENCES_PARENT
- )
- @MemberOrder(name="Role", sequence = "1")
@Getter(onMethod = @__(@Override))
private ApplicationRole role;
@@ -147,7 +143,6 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
domainEvent = RuleDomainEvent.class,
editing = Editing.DISABLED
)
- @MemberOrder(name="Permissions", sequence = "2")
@Getter(onMethod = @__(@Override))
@Setter(onMethod = @__(@Override))
private ApplicationPermissionRule rule;
@@ -162,7 +157,6 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
domainEvent = ModeDomainEvent.class,
editing = Editing.DISABLED
)
- @MemberOrder(name="Permissions", sequence = "3")
@Getter(onMethod = @__(@Override))
@Setter(onMethod = @__(@Override))
private ApplicationPermissionMode mode;
@@ -246,7 +240,6 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
domainEvent = FeatureFqnDomainEvent.class,
editing = Editing.DISABLED
)
- @MemberOrder(name="Feature", sequence = "5.1")
@Getter @Setter
private String featureFqn;
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
index e57fe2d..4e048d5 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
@@ -138,10 +138,6 @@ implements
domainEvent = RoleDomainEvent.class,
editing = Editing.DISABLED
)
- @PropertyLayout(
- hidden=Where.REFERENCES_PARENT
- )
- @MemberOrder(name="Role", sequence = "1")
@Getter(onMethod = @__(@Override))
private ApplicationRole role;
@@ -159,7 +155,6 @@ implements
domainEvent = RuleDomainEvent.class,
editing = Editing.DISABLED
)
- @MemberOrder(name="Permissions", sequence = "2")
@Getter(onMethod = @__(@Override))
@Setter(onMethod = @__(@Override))
private ApplicationPermissionRule rule;
@@ -174,7 +169,6 @@ implements
domainEvent = ModeDomainEvent.class,
editing = Editing.DISABLED
)
- @MemberOrder(name="Permissions", sequence = "3")
@Getter(onMethod = @__(@Override))
@Setter(onMethod = @__(@Override))
private ApplicationPermissionMode mode;
@@ -258,7 +252,6 @@ implements
domainEvent = FeatureFqnDomainEvent.class,
editing = Editing.DISABLED
)
- @MemberOrder(name="Feature", sequence = "5.1")
@Getter @Setter
private String featureFqn;
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 845ec47..a79fa64 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -42,10 +42,10 @@ import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.core.runtime.memento.ObjectMemento;
import org.apache.isis.core.runtime.memento.ObjectMementoService;
@@ -68,8 +68,11 @@ import lombok.val;
* So that the model is {@link Serializable}, the {@link ManagedObject}s within
* the collection are stored as {@link ObjectMemento}s.
*/
-public class EntityCollectionModel extends ModelAbstract<List<ManagedObject>>
-implements LinksProvider, UiHintContainer {
+public class EntityCollectionModel
+extends ModelAbstract<List<ManagedObject>>
+implements
+ LinksProvider,
+ UiHintContainer {
private static final long serialVersionUID = 1L;
@@ -80,21 +83,20 @@ implements LinksProvider, UiHintContainer {
public static EntityCollectionModel createParented(EntityModel entityModel) {
- final OneToManyAssociation collection = collectionFor(entityModel);
- final Class<?> typeOf = forName(collection.getSpecification());
- final int pageSize = pageSize(collection.getFacet(PagedFacet.class), PAGE_SIZE_DEFAULT_FOR_PARENTED);
- final SortedByFacet sortedByFacet = collection.getFacet(SortedByFacet.class);
+ val oneToManyAssociation = collectionFor(entityModel);
+ val typeOf = forName(oneToManyAssociation.getSpecification());
+ final int pageSize = pageSize(oneToManyAssociation.getFacet(PagedFacet.class), PAGE_SIZE_DEFAULT_FOR_PARENTED);
+ val sortedByFacet = oneToManyAssociation.getFacet(SortedByFacet.class);
- final EntityCollectionModel colModel = new EntityCollectionModel(
+ val entityCollectionModel = new EntityCollectionModel(
entityModel.getCommonContext(), Variant.PARENTED, entityModel, typeOf, pageSize);
-
- colModel.collectionMemento = new CollectionMemento(collection);
- colModel.sortedBy = sortedByFacet != null ? sortedByFacet.value(): null;
-
- return colModel;
+ entityCollectionModel.collectionMemento = new CollectionMemento(oneToManyAssociation);
+ entityCollectionModel.sortedBy = (sortedByFacet != null)
+ ? sortedByFacet.value()
+ : null;
+ return entityCollectionModel;
}
- //XXX lombok enum issue, cannot use val here ...
public static EntityCollectionModel createStandalone(
ManagedObject collectionAsAdapter,
ModelAbstract<?> model) {
@@ -102,38 +104,35 @@ implements LinksProvider, UiHintContainer {
// dynamically determine the spec of the elements
// (ie so a List<Object> can be rendered according to the runtime type of its elements,
// rather than the compile-time type
- final ClassExtensions.CommonSuperclassFinder commonSuperClassFinder =
- new ClassExtensions.CommonSuperclassFinder();
+ val commonSuperClassFinder = new ClassExtensions.CommonSuperclassFinder();
+
+ val mementoService = model.getMementoService();
- final ObjectMementoService mementoService = model.getMementoService();
-
final List<ObjectMemento> mementoList = streamElementsOf(collectionAsAdapter) // pojos
.filter(_NullSafe::isPresent)
.peek(commonSuperClassFinder::collect)
.map(mementoService::mementoForPojo)
.collect(Collectors.toList());
- final SpecificationLoader specificationLoader = model.getSpecificationLoader();
+ val specificationLoader = model.getSpecificationLoader();
- final ObjectSpecification elementSpec = commonSuperClassFinder.getCommonSuperclass()
+ val elementSpec = commonSuperClassFinder.getCommonSuperclass()
.map(specificationLoader::loadSpecification)
.orElseGet(()->collectionAsAdapter.getSpecification().getElementSpecification().orElse(null));
- final Class<?> elementType;
- int pageSize = PAGE_SIZE_DEFAULT_FOR_STANDALONE;
- if (elementSpec != null) {
- elementType = elementSpec.getCorrespondingClass();
- pageSize = pageSize(elementSpec.getFacet(PagedFacet.class), PAGE_SIZE_DEFAULT_FOR_STANDALONE);
- } else {
- elementType = Object.class;
- }
-
- final EntityModel entityModel = null;
+ final int pageSize = (elementSpec != null)
+ ? pageSize(elementSpec.getFacet(PagedFacet.class), PAGE_SIZE_DEFAULT_FOR_STANDALONE)
+ : PAGE_SIZE_DEFAULT_FOR_STANDALONE;
+
+ val elementType = (elementSpec != null)
+ ? elementSpec.getCorrespondingClass()
+ : Object.class;
- final EntityCollectionModel colModel = new EntityCollectionModel(
+ val entityModel = (EntityModel)null;
+ val entityCollectionModel = new EntityCollectionModel(
model.getCommonContext(), Variant.STANDALONE, entityModel, elementType, pageSize);
- colModel.mementoList = mementoList;
- return colModel;
+ entityCollectionModel.mementoList = mementoList;
+ return entityCollectionModel;
}