You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/05/24 16:02:07 UTC
[isis] 01/02: ISIS-2672: moves appfeature vms from secman and into
applib.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2614
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 7f5016f526591b855a77eb50a191948f7ff3f748
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon May 24 16:52:51 2021 +0100
ISIS-2672: moves appfeature vms from secman and into applib.
placed under 'isis.feat' namespace.
---
.../org/apache/isis/applib/IsisModuleApplib.java | 20 +++-
.../services/appfeatui/ApplicationFeatureMenu.java | 29 +++--
.../appfeatui}/ApplicationFeatureViewModel.java | 40 ++-----
...ApplicationFeatureViewModel.layout.fallback.xml | 32 +++--
.../services/appfeatui}/ApplicationNamespace.java | 10 +-
.../services/appfeatui}/ApplicationType.java | 9 +-
.../services/appfeatui}/ApplicationTypeAction.java | 9 +-
.../appfeatui}/ApplicationTypeCollection.java | 9 +-
.../services/appfeatui}/ApplicationTypeMember.java | 9 +-
.../appfeatui}/ApplicationTypeProperty.java | 14 ++-
.../adoc/modules/secman/pages/setting-up.adoc | 4 +
.../secman/api/IsisModuleExtSecmanApi.java | 24 ++--
.../extensions/secman/api/SecmanConfiguration.java | 1 +
.../{dom => api}/ApplicationFeatureChoices.java | 2 +-
.../ApplicationFeatureViewModel_permissions.java | 55 +++++++++
.../dom/ApplicationNamespace.layout.fallback.xml | 131 ---------------------
.../dom/ApplicationTypeAction.layout.fallback.xml | 131 ---------------------
.../ApplicationTypeCollection.layout.fallback.xml | 131 ---------------------
.../dom/ApplicationTypeMember.layout.fallback.xml | 131 ---------------------
.../ApplicationTypeProperty.layout.fallback.xml | 131 ---------------------
.../dom/mixins/ApplicationPermission_feature.java | 2 +-
.../dom/mixins/ApplicationRole_addPermission.java | 4 +-
.../perms/ApplicationUser_filterPermissions.java | 4 +-
.../dom/mixins/perms/UserPermissionViewModel.java | 2 +-
.../other/IsisAppFeatureRoleAndPermissions.java | 67 +++++++++++
25 files changed, 246 insertions(+), 755 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
index c3bf6a7..1f0b395 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
@@ -30,6 +30,13 @@ import org.apache.isis.applib.mixins.metamodel.Object_rebuildMetamodel;
import org.apache.isis.applib.mixins.metamodel.Object_downloadMetamodelXml;
import org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier;
import org.apache.isis.applib.mixins.metamodel.Object_objectType;
+import org.apache.isis.applib.services.appfeatui.ApplicationFeatureMenu;
+import org.apache.isis.applib.services.appfeatui.ApplicationNamespace;
+import org.apache.isis.applib.services.appfeatui.ApplicationType;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeAction;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeCollection;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeMember;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeProperty;
import org.apache.isis.applib.services.bookmark.BookmarkHolder_lookup;
import org.apache.isis.applib.services.bookmark.BookmarkHolder_object;
import org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
@@ -69,6 +76,15 @@ import org.apache.isis.schema.IsisModuleSchema;
Object_openRestApi.class,
Object_rebuildMetamodel.class,
+ // -- ViewModels
+ // TODO: not sure we need to register view models?
+ ApplicationNamespace.class,
+ ApplicationType.class,
+ ApplicationTypeAction.class,
+ ApplicationTypeCollection.class,
+ ApplicationTypeMember.class,
+ ApplicationTypeProperty.class,
+
// @DomainObject(s)
ConfigurationProperty.class,
DomainObjectList.class,
@@ -80,6 +96,7 @@ import org.apache.isis.schema.IsisModuleSchema;
LayoutServiceMenu.class,
ImpersonateMenu.class,
MetaModelServiceMenu.class,
+ ApplicationFeatureMenu.class,
// @Service(s)
CommandDtoProcessorServiceIdentity.class,
@@ -96,7 +113,8 @@ public class IsisModuleApplib {
public static final String NAMESPACE = "isis.applib";
public static final String NAMESPACE_CONF = "isis.conf"; // for configuration; to minimize the risk of granting perms accidentally
- public static final String NAMESPACE_SUDO = "isis.sudo"; // for configuration; to minimize the risk of granting perms accidentally
+ public static final String NAMESPACE_SUDO = "isis.sudo"; // for impersonation
+ public static final String NAMESPACE_FEAT = "isis.feat"; // for app features
// -- UI EVENT CLASSES
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureViewModels.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java
similarity index 88%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureViewModels.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java
index a01067b..d1604b4 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureViewModels.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java
@@ -16,13 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.util.Collection;
import java.util.List;
import javax.inject.Inject;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainService;
@@ -35,28 +36,31 @@ import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
+/**
+ * @since 2.x {@index}
+ */
@DomainService(
nature = NatureOfService.VIEW,
- objectType = ApplicationFeatureViewModels.OBJECT_TYPE
+ objectType = ApplicationFeatureMenu.OBJECT_TYPE
)
@DomainServiceLayout(
- named="Security",
+ named = "Prototyping",
menuBar = DomainServiceLayout.MenuBar.SECONDARY
)
-public class ApplicationFeatureViewModels {
+public class ApplicationFeatureMenu {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationFeatureViewModels";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationFeatureMenu";
public static abstract class PropertyDomainEvent<T>
- extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationFeatureViewModels, T> {}
+ extends IsisModuleApplib.PropertyDomainEvent<ApplicationFeatureMenu, T> {}
public static abstract class CollectionDomainEvent<T>
- extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationFeatureViewModels, T> {}
+ extends IsisModuleApplib.CollectionDomainEvent<ApplicationFeatureMenu, T> {}
public static abstract class ActionDomainEvent
- extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationFeatureViewModels> {}
+ extends IsisModuleApplib.ActionDomainEvent<ApplicationFeatureMenu> {}
+
// -- ICON NAME
@@ -64,6 +68,7 @@ public class ApplicationFeatureViewModels {
return "applicationFeature";
}
+
// -- ALL PACKAGES
public static class AllNamespacesDomainEvent extends ActionDomainEvent {}
@@ -79,7 +84,8 @@ public class ApplicationFeatureViewModels {
return asViewModels(featureRepository.allNamespaces(), ApplicationNamespace.class);
}
- // -- ALL CLASSES
+
+ // -- ALL TYPES
public static class AllTypesDomainEvent extends ActionDomainEvent {}
@@ -94,6 +100,7 @@ public class ApplicationFeatureViewModels {
return asViewModels(featureRepository.allTypes(), ApplicationType.class);
}
+
// -- ALL ACTIONS
public static class AllActionsDomainEvent extends ActionDomainEvent {}
@@ -109,6 +116,7 @@ public class ApplicationFeatureViewModels {
return asViewModels(featureRepository.allActions(), ApplicationTypeAction.class);
}
+
// -- ALL PROPERTIES
public static class AllPropertiesDomainEvent extends ActionDomainEvent {}
@@ -124,6 +132,7 @@ public class ApplicationFeatureViewModels {
return asViewModels(featureRepository.allProperties(), ApplicationTypeProperty.class);
}
+
// -- ALL COLLECTIONS
public static class AllCollectionsDomainEvent extends ActionDomainEvent {}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureViewModel.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java
similarity index 89%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureViewModel.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java
index 985622a..c36281c 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureViewModel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -28,9 +28,8 @@ import java.util.function.Function;
import javax.inject.Inject;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.ViewModel;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Navigable;
import org.apache.isis.applib.annotation.Parameter;
@@ -50,9 +49,6 @@ import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.ToString;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
-import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission;
-import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionRepository;
import lombok.Getter;
import lombok.NonNull;
@@ -61,21 +57,22 @@ import lombok.val;
/**
* View model identified by {@link ApplicationFeatureId} and backed by an {@link ApplicationFeature}.
+ *
+ * @since 2.x {@index}
*/
@DomainObject(
objectType = ApplicationFeatureViewModel.OBJECT_TYPE
)
public abstract class ApplicationFeatureViewModel implements ViewModel {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationFeatureViewModel";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationFeatureViewModel";
- public static abstract class PropertyDomainEvent<S extends ApplicationFeatureViewModel,T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<S, T> {}
- public static abstract class CollectionDomainEvent<S extends ApplicationFeatureViewModel,T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<S, T> {}
- public static abstract class ActionDomainEvent<S extends ApplicationFeatureViewModel> extends IsisModuleExtSecmanApi.ActionDomainEvent<S> {}
+ public static abstract class PropertyDomainEvent<S extends ApplicationFeatureViewModel,T> extends IsisModuleApplib.PropertyDomainEvent<S, T> {}
+ public static abstract class CollectionDomainEvent<S extends ApplicationFeatureViewModel,T> extends IsisModuleApplib.CollectionDomainEvent<S, T> {}
+ public static abstract class ActionDomainEvent<S extends ApplicationFeatureViewModel> extends IsisModuleApplib.ActionDomainEvent<S> {}
@Inject private FactoryService factory;
@Inject private ApplicationFeatureRepository featureRepository;
- @Inject private ApplicationPermissionRepository applicationPermissionRepository;
// -- constructors
@@ -335,27 +332,6 @@ public abstract class ApplicationFeatureViewModel implements ViewModel {
}
- // -- permissions (collection)
-
- @Collection(
- domainEvent = Permissions.DomainEvent.class
- )
- @CollectionLayout(
- defaultView = "table",
- sequence = "10"
- )
- @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
- @Retention(RetentionPolicy.RUNTIME)
- public @interface Permissions {
-
- class DomainEvent extends CollectionDomainEvent<ApplicationFeatureViewModel, ApplicationPermission> {}
- }
-
- @Permissions
- public java.util.Collection<? extends ApplicationPermission> getPermissions() {
- return applicationPermissionRepository.findByFeatureCached(getFeatureId());
- }
-
// -- parentPackage (property, programmatic, for packages & classes only)
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationType.layout.fallback.xml b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.layout.fallback.xml
similarity index 93%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationType.layout.fallback.xml
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.layout.fallback.xml
index e865ea9..c9765b5 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationType.layout.fallback.xml
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.layout.fallback.xml
@@ -52,40 +52,48 @@ under the License.
</bs3:row>
</bs3:tab>
</bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
<bs3:tabGroup collapseIfOne="false">
- <bs3:tab name="Hierarchy">
+ <bs3:tab name="Detail">
<bs3:row>
<bs3:col span="12">
- <cpt:fieldSet name="Parent" id="parent"/>
+ <cpt:fieldSet name="Detail" id="detail"/>
</bs3:col>
</bs3:row>
+ </bs3:tab>
+ <bs3:tab name="Data type">
<bs3:row>
<bs3:col span="12">
- <cpt:collection id="contents"/>
+ <cpt:fieldSet name="Data Type" id="dataType"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:tab>
+ <bs3:tab name="Contributed">
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:fieldSet name="Contributed" id="contributed"/>
</bs3:col>
</bs3:row>
</bs3:tab>
</bs3:tabGroup>
</bs3:col>
<bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Detail">
+ <bs3:tabGroup collapseIfOne="false">
+ <bs3:tab name="Hierarchy">
<bs3:row>
<bs3:col span="12">
- <cpt:fieldSet name="Detail" id="detail"/>
- <cpt:fieldSet name="Data Type" id="dataType"/>
+ <cpt:fieldSet name="Parent" id="parent"/>
</bs3:col>
</bs3:row>
- </bs3:tab>
- <bs3:tab name="Contributed">
<bs3:row>
<bs3:col span="12">
- <cpt:fieldSet name="Contributed" id="contributed"/>
+ <cpt:collection id="contents"/>
</bs3:col>
</bs3:row>
</bs3:tab>
+ </bs3:tabGroup>
+ </bs3:col>
+ <bs3:col span="4">
+ <bs3:tabGroup collapseIfOne="false">
<bs3:tab name="Permissions">
<bs3:row>
<bs3:col span="12">
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationNamespace.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java
similarity index 90%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationNamespace.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java
index 4c8c326..1580da3 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationNamespace.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -25,21 +25,25 @@ import java.lang.annotation.Target;
import java.util.List;
import java.util.SortedSet;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.services.appfeat.ApplicationFeature;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
+/**
+ * @since 2.x {@index}
+ */
@DomainObject(
objectType = ApplicationNamespace.OBJECT_TYPE
)
@DomainObjectLayout(paged=100)
public class ApplicationNamespace extends ApplicationFeatureViewModel {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationNamespace";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationNamespace";
public static abstract class CollectionDomainEvent<T> extends ApplicationFeatureViewModel.CollectionDomainEvent<ApplicationNamespace, T> {}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationType.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationType.java
similarity index 94%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationType.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationType.java
index ec369e6..d1a62b6 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationType.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -25,14 +25,17 @@ import java.lang.annotation.Target;
import java.util.List;
import java.util.SortedSet;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
+/**
+ * @since 2.x {@index}
+ */
@DomainObject(
objectType = ApplicationType.OBJECT_TYPE
)
@@ -42,7 +45,7 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
)
public class ApplicationType extends ApplicationFeatureViewModel {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationType";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationType";
public static abstract class CollectionDomainEvent<T>
extends ApplicationFeatureViewModel.CollectionDomainEvent<ApplicationType, T> {}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeAction.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeAction.java
similarity index 93%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeAction.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeAction.java
index 53beb99..649bf6f 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeAction.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeAction.java
@@ -16,21 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
+/**
+ * @since 2.x {@index}
+ */
@DomainObject(
objectType = ApplicationTypeAction.OBJECT_TYPE
)
@@ -39,7 +42,7 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
)
public class ApplicationTypeAction extends ApplicationTypeMember {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationTypeAction";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationTypeAction";
public static abstract class PropertyDomainEvent<T> extends ApplicationTypeMember.PropertyDomainEvent<ApplicationTypeAction, T> {}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeCollection.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeCollection.java
similarity index 93%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeCollection.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeCollection.java
index bad7cc8..86b576c 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeCollection.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeCollection.java
@@ -16,19 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
+/**
+ * @since 2.x {@index}
+ */
@DomainObject(
objectType = ApplicationTypeCollection.OBJECT_TYPE
)
@@ -37,7 +40,7 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
)
public class ApplicationTypeCollection extends ApplicationTypeMember {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationTypeCollection";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationTypeCollection";
public static abstract class PropertyDomainEvent<T> extends ApplicationTypeMember.PropertyDomainEvent<ApplicationTypeCollection, T> {}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeMember.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeMember.java
similarity index 91%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeMember.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeMember.java
index adaa5b9..c011a62 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeMember.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeMember.java
@@ -16,23 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import lombok.NoArgsConstructor;
+/**
+ * @since 2.x {@index}
+ */
@DomainObject(
objectType = ApplicationTypeMember.OBJECT_TYPE
)
@@ -42,7 +45,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public abstract class ApplicationTypeMember extends ApplicationFeatureViewModel {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationTypeMember";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationTypeMember";
public static abstract class PropertyDomainEvent<S extends ApplicationTypeMember, T> extends ApplicationFeatureViewModel.PropertyDomainEvent<ApplicationTypeMember, T> {}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeProperty.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java
similarity index 94%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeProperty.java
rename to api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java
index 7923447..66b523c 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeProperty.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java
@@ -16,30 +16,35 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.applib.services.appfeatui;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Optionality;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
-import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import lombok.val;
+/**
+ * @since 2.x {@index}
+ */
@DomainObject(
objectType = ApplicationTypeProperty.OBJECT_TYPE
)
-@DomainObjectLayout(paged=100)
+@DomainObjectLayout(
+ paged = 100
+)
public class ApplicationTypeProperty extends ApplicationTypeMember {
- public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationTypeProperty";
+ public static final String OBJECT_TYPE = IsisModuleApplib.NAMESPACE_FEAT + ".ApplicationTypeProperty";
public static abstract class PropertyDomainEvent<T> extends ApplicationTypeMember.PropertyDomainEvent<ApplicationTypeProperty, T> {}
@@ -168,4 +173,3 @@ public class ApplicationTypeProperty extends ApplicationTypeMember {
}
}
-
diff --git a/extensions/security/secman/adoc/modules/secman/pages/setting-up.adoc b/extensions/security/secman/adoc/modules/secman/pages/setting-up.adoc
index 82e8f92..02d7b1e 100644
--- a/extensions/security/secman/adoc/modules/secman/pages/setting-up.adoc
+++ b/extensions/security/secman/adoc/modules/secman/pages/setting-up.adoc
@@ -188,6 +188,10 @@ Access the configuration properties (from the tertiary menu))
* Available only in prototype mode:
+** `IsisAppFeatureRoleAndPermissions.ROLE_NAME`
++
+Browse the application features + permissions (from the "Prototyping" menu).
+
** `IsisPersistenceJdoMetaModelRoleAndPermissions.ROLE_NAME`
+
Download the JDO metamodel (from the "Prototyping" menu).
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java
index 86efc33..8165cad 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java
@@ -22,14 +22,8 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.apache.isis.extensions.secman.api.authorizor.AuthorizorSecman;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationFeatureChoices;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationFeatureViewModels;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationNamespace;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationType;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationTypeAction;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationTypeCollection;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationTypeMember;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationTypeProperty;
+import org.apache.isis.extensions.secman.api.feature.api.ApplicationFeatureChoices;
+import org.apache.isis.extensions.secman.api.feature.contributions.ApplicationFeatureViewModel_permissions;
import org.apache.isis.extensions.secman.api.permission.app.ApplicationOrphanedPermissionManager;
import org.apache.isis.extensions.secman.api.permission.app.mixins.ApplicationOrphanedPermissionManager_relocateSelected;
import org.apache.isis.extensions.secman.api.permission.dom.mixins.ApplicationPermission_allow;
@@ -92,7 +86,6 @@ import org.apache.isis.extensions.secman.api.user.menu.MeService;
AuthorizorSecman.class,
// @DomainService
- ApplicationFeatureViewModels.class,
ApplicationOrphanedPermissionManager.class,
ApplicationPermissionMenu.class,
ApplicationRoleMenu.class,
@@ -104,13 +97,6 @@ import org.apache.isis.extensions.secman.api.user.menu.MeService;
// -- ViewModels
// TODO: not sure we need to register view models?
-
- ApplicationNamespace.class,
- ApplicationType.class,
- ApplicationTypeAction.class,
- ApplicationTypeCollection.class,
- ApplicationTypeMember.class,
- ApplicationTypeProperty.class,
ApplicationUserManager.class,
UserPermissionViewModel.class,
ApplicationOrphanedPermissionManager.class,
@@ -165,8 +151,14 @@ import org.apache.isis.extensions.secman.api.user.menu.MeService;
ApplicationUser_updatePassword.class,
ApplicationUser_updatePhoneNumber.class,
ApplicationUser_updateUsername.class,
+
+ // ApplicationFeatureViewModel
+ ApplicationFeatureViewModel_permissions.class,
+
+ // HasUsername
HasUsername_open.class,
+ // ApplicationUserManager
ApplicationUserManager_allUsers.class,
ApplicationUserManager_newDelegateUser.class,
ApplicationUserManager_newLocalUser.class,
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
index d93282a..04aa1b3 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
@@ -141,6 +141,7 @@ public class SecmanConfiguration {
IsisModuleCoreSecurity.NAMESPACE,
IsisModuleApplib.NAMESPACE_SUDO,
IsisModuleApplib.NAMESPACE_CONF,
+ IsisModuleApplib.NAMESPACE_FEAT,
IsisModuleExtSecmanApi.NAMESPACE
};
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureChoices.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/api/ApplicationFeatureChoices.java
similarity index 98%
rename from extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureChoices.java
rename to extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/api/ApplicationFeatureChoices.java
index 0cee19c..dd3431d 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationFeatureChoices.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/api/ApplicationFeatureChoices.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.secman.api.feature.dom;
+package org.apache.isis.extensions.secman.api.feature.api;
import java.util.Collection;
import java.util.Map;
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/contributions/ApplicationFeatureViewModel_permissions.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/contributions/ApplicationFeatureViewModel_permissions.java
new file mode 100644
index 0000000..4df5658
--- /dev/null
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/contributions/ApplicationFeatureViewModel_permissions.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.extensions.secman.api.feature.contributions;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.IsisModuleApplib;
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.applib.services.appfeatui.ApplicationFeatureViewModel;
+import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission;
+import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionRepository;
+
+import lombok.RequiredArgsConstructor;
+
+@Collection(
+) @CollectionLayout(
+ defaultView = "table",
+ sequence = "10"
+)
+@RequiredArgsConstructor(onConstructor_ = {@Inject})
+public class ApplicationFeatureViewModel_permissions {
+
+ private final ApplicationFeatureViewModel viewModel;
+
+ public static class ActionDomainEvent extends IsisModuleApplib.ActionDomainEvent<ApplicationFeatureViewModel_permissions> {}
+
+ @Inject private ApplicationPermissionRepository applicationPermissionRepository;
+
+ @Action(
+ domainEvent = ApplicationFeatureViewModel_permissions.ActionDomainEvent.class
+ )
+ public java.util.Collection<ApplicationPermission> coll() {
+ return applicationPermissionRepository.findByFeatureCached(viewModel.getFeatureId());
+ }
+
+
+}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationNamespace.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationNamespace.layout.fallback.xml
deleted file mode 100644
index e865ea9..0000000
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationNamespace.layout.fallback.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
- xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
- xmlns:cpt="http://isis.apache.org/applib/layout/component"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup collapseIfOne="false">
- <bs3:tab name="Hierarchy">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Parent" id="parent"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="contents"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Detail">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Detail" id="detail"/>
- <cpt:fieldSet name="Data Type" id="dataType"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Contributed">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Contributed" id="contributed"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Permissions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="permissions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="Actions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="actions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Properties">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="properties"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Collections">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="collections"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeAction.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeAction.layout.fallback.xml
deleted file mode 100644
index e865ea9..0000000
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeAction.layout.fallback.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
- xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
- xmlns:cpt="http://isis.apache.org/applib/layout/component"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup collapseIfOne="false">
- <bs3:tab name="Hierarchy">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Parent" id="parent"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="contents"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Detail">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Detail" id="detail"/>
- <cpt:fieldSet name="Data Type" id="dataType"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Contributed">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Contributed" id="contributed"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Permissions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="permissions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="Actions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="actions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Properties">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="properties"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Collections">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="collections"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeCollection.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeCollection.layout.fallback.xml
deleted file mode 100644
index e865ea9..0000000
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeCollection.layout.fallback.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
- xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
- xmlns:cpt="http://isis.apache.org/applib/layout/component"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup collapseIfOne="false">
- <bs3:tab name="Hierarchy">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Parent" id="parent"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="contents"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Detail">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Detail" id="detail"/>
- <cpt:fieldSet name="Data Type" id="dataType"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Contributed">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Contributed" id="contributed"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Permissions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="permissions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="Actions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="actions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Properties">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="properties"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Collections">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="collections"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeMember.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeMember.layout.fallback.xml
deleted file mode 100644
index e865ea9..0000000
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeMember.layout.fallback.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
- xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
- xmlns:cpt="http://isis.apache.org/applib/layout/component"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup collapseIfOne="false">
- <bs3:tab name="Hierarchy">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Parent" id="parent"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="contents"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Detail">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Detail" id="detail"/>
- <cpt:fieldSet name="Data Type" id="dataType"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Contributed">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Contributed" id="contributed"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Permissions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="permissions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="Actions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="actions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Properties">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="properties"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Collections">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="collections"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeProperty.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeProperty.layout.fallback.xml
deleted file mode 100644
index e865ea9..0000000
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/feature/dom/ApplicationTypeProperty.layout.fallback.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
- xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
- xmlns:cpt="http://isis.apache.org/applib/layout/component"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup collapseIfOne="false">
- <bs3:tab name="Hierarchy">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Parent" id="parent"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="contents"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Detail">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Detail" id="detail"/>
- <cpt:fieldSet name="Data Type" id="dataType"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Contributed">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Contributed" id="contributed"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Permissions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="permissions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="Actions">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="actions"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Properties">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="properties"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Collections">
- <bs3:row>
- <bs3:col span="12">
- <cpt:collection id="collections"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/mixins/ApplicationPermission_feature.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/mixins/ApplicationPermission_feature.java
index 60a07d5..fa1f9f8 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/mixins/ApplicationPermission_feature.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/mixins/ApplicationPermission_feature.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationFeatureViewModel;
+import org.apache.isis.applib.services.appfeatui.ApplicationFeatureViewModel;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission;
import lombok.RequiredArgsConstructor;
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/mixins/ApplicationRole_addPermission.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/mixins/ApplicationRole_addPermission.java
index e56fc7a..324d82a 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/mixins/ApplicationRole_addPermission.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/mixins/ApplicationRole_addPermission.java
@@ -24,14 +24,12 @@ import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.MemberSupport;
import org.apache.isis.applib.annotation.MinLength;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.appfeat.ApplicationFeature;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationFeatureChoices;
+import org.apache.isis.extensions.secman.api.feature.api.ApplicationFeatureChoices;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionMode;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionRepository;
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/ApplicationUser_filterPermissions.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/ApplicationUser_filterPermissions.java
index cff2c5b..db64eac 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/ApplicationUser_filterPermissions.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/ApplicationUser_filterPermissions.java
@@ -29,8 +29,6 @@ import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.MemberSupport;
import org.apache.isis.applib.annotation.MinLength;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
@@ -40,7 +38,7 @@ import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationFeatureChoices;
+import org.apache.isis.extensions.secman.api.feature.api.ApplicationFeatureChoices;
import org.apache.isis.extensions.secman.api.user.dom.ApplicationUser;
import lombok.RequiredArgsConstructor;
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/UserPermissionViewModel.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/UserPermissionViewModel.java
index 7d4ebfc..d7ce13a 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/UserPermissionViewModel.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/mixins/perms/UserPermissionViewModel.java
@@ -50,7 +50,7 @@ import org.apache.isis.applib.util.ToString;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
-import org.apache.isis.extensions.secman.api.feature.dom.ApplicationFeatureViewModel;
+import org.apache.isis.applib.services.appfeatui.ApplicationFeatureViewModel;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionMode;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionRepository;
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/seed/scripts/other/IsisAppFeatureRoleAndPermissions.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/seed/scripts/other/IsisAppFeatureRoleAndPermissions.java
new file mode 100644
index 0000000..b2ec4f1
--- /dev/null
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/seed/scripts/other/IsisAppFeatureRoleAndPermissions.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.extensions.secman.model.seed.scripts.other;
+
+import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
+import org.apache.isis.applib.services.appfeatui.ApplicationFeatureMenu;
+import org.apache.isis.applib.services.appfeatui.ApplicationFeatureViewModel;
+import org.apache.isis.applib.services.appfeatui.ApplicationNamespace;
+import org.apache.isis.applib.services.appfeatui.ApplicationType;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeAction;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeCollection;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeMember;
+import org.apache.isis.applib.services.appfeatui.ApplicationTypeProperty;
+import org.apache.isis.applib.services.confview.ConfigurationMenu;
+import org.apache.isis.applib.services.confview.ConfigurationProperty;
+import org.apache.isis.applib.services.confview.ConfigurationViewmodel;
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionMode;
+import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionRule;
+import org.apache.isis.extensions.secman.api.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
+
+/**
+ * @since 2.0 {@index}
+ */
+public class IsisAppFeatureRoleAndPermissions
+extends AbstractRoleAndPermissionsFixtureScript {
+
+ public static final String ROLE_NAME = ApplicationFeatureMenu.OBJECT_TYPE.replace(".","-");
+
+ public IsisAppFeatureRoleAndPermissions() {
+ super(ROLE_NAME, "Access application features");
+ }
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ newPermissions(
+ ApplicationPermissionRule.ALLOW,
+ ApplicationPermissionMode.CHANGING,
+ Can.of(
+ ApplicationFeatureId.newType(ApplicationFeatureMenu.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationFeatureViewModel.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationNamespace.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationType.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationTypeMember.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationTypeAction.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationTypeProperty.OBJECT_TYPE),
+ ApplicationFeatureId.newType(ApplicationTypeCollection.OBJECT_TYPE)
+ )
+ );
+ }
+}