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/05/04 17:40:09 UTC
[isis] branch master updated: ISIS-2641: SecMan: housekeeping
ApplicationFeatureViewModel helpers
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 ed0416b ISIS-2641: SecMan: housekeeping ApplicationFeatureViewModel helpers
ed0416b is described below
commit ed0416b99c23eac1fc43ff797ea1e1fb0c4efc12
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 4 19:39:52 2021 +0200
ISIS-2641: SecMan: housekeeping ApplicationFeatureViewModel helpers
---
.../dom/feature/ApplicationFeatureViewModel.java | 57 +++++++++-------------
.../dom/feature/ApplicationFeatureViewModels.java | 13 +++--
.../model/dom/feature/ApplicationNamespace.java | 2 +-
.../secman/model/dom/feature/ApplicationType.java | 6 +--
4 files changed, 34 insertions(+), 44 deletions(-)
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModel.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModel.java
index dbcd3be..39e8e77 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModel.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModel.java
@@ -20,7 +20,6 @@ package org.apache.isis.extensions.secman.model.dom.feature;
import java.util.List;
import java.util.Optional;
-import java.util.SortedSet;
import java.util.function.Function;
import javax.inject.Inject;
@@ -48,6 +47,7 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository;
+import lombok.NonNull;
import lombok.val;
/**
@@ -280,11 +280,10 @@ public abstract class ApplicationFeatureViewModel implements ViewModel {
*/
@Programmatic
public ApplicationFeatureViewModel getParentNamespace() {
- return Functions.asViewModelForId(featureRepository, factory)
- .apply(getFeatureId().getParentNamespaceFeatureId());
+ return ApplicationFeatureViewModel
+ .newViewModel(getFeatureId().getParentNamespaceFeatureId(), featureRepository, factory);
}
-
// -- equals, hashCode, toString
@@ -313,39 +312,31 @@ public abstract class ApplicationFeatureViewModel implements ViewModel {
return toString.toString(this);
}
+ // -- FACTORY
+
+ public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeatureId, T> factory(
+ final @NonNull ApplicationFeatureRepository featureRepository,
+ final @NonNull FactoryService factory,
+ final @NonNull Class<T> viewmodelType) {
- // -- helpers
- <T extends ApplicationFeatureViewModel> List<T> asViewModels(final SortedSet<ApplicationFeatureId> members) {
- val viewModelForId = Functions.<T>asViewModelForId(featureRepository, factory);
- return _Lists.map(members, viewModelForId);
+ return featureId -> _Casts.<T>uncheckedCast(ApplicationFeatureViewModel
+ .newViewModel(featureId, featureRepository, factory));
}
-
- // -- Functions
-
- public static final class Functions {
- private Functions(){}
-
- public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeatureId, T> asViewModelForId(
- final ApplicationFeatureRepository applicationFeatureRepository,
- final FactoryService factoryService) {
-
- return (ApplicationFeatureId input) ->
- _Casts.uncheckedCast(ApplicationFeatureViewModel
- .newViewModel(input, applicationFeatureRepository, factoryService));
-
- }
- public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeature, T> asViewModel(
- final ApplicationFeatureRepository applicationFeatureRepository,
- final FactoryService factoryService) {
-
- return (ApplicationFeature input) ->
- _Casts.uncheckedCast(ApplicationFeatureViewModel
- .newViewModel(input.getFeatureId(), applicationFeatureRepository, factoryService));
- }
+ // -- HELPER
+
+ protected <T extends ApplicationFeatureViewModel> List<T> asViewModels(
+ final java.util.Collection<ApplicationFeatureId> featureIds,
+ final Class<T> viewmodelType) {
+ return featureIds.stream()
+ .map(factory(featureRepository, factory, viewmodelType))
+ .collect(_Lists.toUnmodifiable());
}
-
-
+ protected <T extends ApplicationFeatureViewModel> T asViewModel(
+ final ApplicationFeatureId featureId,
+ final Class<T> viewmodelType) {
+ return factory(featureRepository, factory, viewmodelType).apply(featureId);
+ }
}
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModels.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModels.java
index dcaab67..a0b87cb 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModels.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationFeatureViewModels.java
@@ -141,13 +141,12 @@ public class ApplicationFeatureViewModels {
private <T extends ApplicationFeatureViewModel> List<T> asViewModels(
final Collection<ApplicationFeature> features,
- final Class<T> cls) {
-
- return _Lists.map(
- features,
- ApplicationFeatureViewModel.Functions
- .<T>asViewModel(featureRepository, factory)
- );
+ final Class<T> viewmodelType) {
+
+ return features.stream()
+ .map(ApplicationFeature::getFeatureId)
+ .map(ApplicationFeatureViewModel.factory(featureRepository, factory, viewmodelType))
+ .collect(_Lists.toUnmodifiable());
}
// -- DEPENDENCIES
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationNamespace.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationNamespace.java
index 4b8a6d7..cc43495 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationNamespace.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationNamespace.java
@@ -62,7 +62,7 @@ public class ApplicationNamespace extends ApplicationFeatureViewModel {
sequence = "4")
public List<ApplicationFeatureViewModel> getContents() {
final SortedSet<ApplicationFeatureId> contents = getFeature().getContents();
- return asViewModels(contents);
+ return asViewModels(contents, ApplicationFeatureViewModel.class);
}
public boolean hideContents() {
return getSort() != ApplicationFeatureSort.NAMESPACE;
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationType.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationType.java
index 8290601..6796dcb 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationType.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/feature/ApplicationType.java
@@ -73,7 +73,7 @@ public class ApplicationType extends ApplicationFeatureViewModel {
sequence = "20.1")
public List<ApplicationTypeAction> getActions() {
final SortedSet<ApplicationFeatureId> members = getFeature().getActions();
- return asViewModels(members);
+ return asViewModels(members, ApplicationTypeAction.class);
}
@@ -91,7 +91,7 @@ public class ApplicationType extends ApplicationFeatureViewModel {
sequence = "20.2")
public List<ApplicationTypeProperty> getProperties() {
final SortedSet<ApplicationFeatureId> members = getFeature().getProperties();
- return asViewModels(members);
+ return asViewModels(members, ApplicationTypeProperty.class);
}
@@ -107,7 +107,7 @@ public class ApplicationType extends ApplicationFeatureViewModel {
sequence = "20.3")
public List<ApplicationTypeCollection> getCollections() {
final SortedSet<ApplicationFeatureId> members = getFeature().getCollections();
- return asViewModels(members);
+ return asViewModels(members, ApplicationTypeCollection.class);
}