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;
         
     }