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 2019/07/11 07:02:59 UTC
[isis] branch v2 updated: ISIS-2151 remove dependency on guava
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new b147834 ISIS-2151 remove dependency on guava
b147834 is described below
commit b147834d11a71f1ffcea3997342b500aa92932db
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jul 11 09:02:51 2019 +0200
ISIS-2151 remove dependency on guava
---
.../commons/internal/collections/_Multimaps.java | 31 +-
.../permission/ApplicationPermissionValueSet.java | 20 +-
...PermissionsEvaluationServiceVetoBeatsAllow.java | 4 +-
extensions/secman/encryption-jbcrypt/pom.xml | 1 +
.../extensions/secman/jdo/TransitionHelper.java | 9 +-
.../app/feature/ApplicationFeatureViewModel.java | 687 +++++++++++----------
.../app/feature/ApplicationFeatureViewModels.java | 18 +-
.../user/ApplicationUser_filterPermissions.java | 34 +-
.../jdo/app/user/ApplicationUser_permissions.java | 19 +-
.../jdo/app/user/UserPermissionViewModel.java | 41 +-
.../jdo/dom/permission/ApplicationPermission.java | 24 +-
.../ApplicationPermissionRepository.java | 71 +--
.../secman/jdo/dom/role/ApplicationRole.java | 28 +-
.../jdo/dom/role/ApplicationRoleRepository.java | 7 +-
.../secman/jdo/dom/tenancy/ApplicationTenancy.java | 56 +-
.../dom/tenancy/ApplicationTenancyRepository.java | 25 +-
.../secman/jdo/dom/user/ApplicationUser.java | 43 +-
.../jdo/dom/user/ApplicationUserRepository.java | 33 +-
.../facets/TenantedAuthorizationFacetFactory.java | 39 +-
.../AbstractRoleAndPermissionsFixtureScript.java | 38 +-
.../scripts/AbstractUserAndRolesFixtureScript.java | 5 +-
extensions/secman/pom.xml | 9 -
22 files changed, 575 insertions(+), 667 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
index 36d6d43..a68ff0d 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
@@ -23,14 +23,23 @@ import static org.apache.isis.commons.internal.base._With.requires;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
+import javax.annotation.Nullable;
+
+import org.apache.isis.commons.internal.base._Casts;
+
/**
* <h1>- internal use only -</h1>
* <p>
@@ -133,15 +142,15 @@ public class _Multimaps {
};
}
- public static <K, V> SetMultimap<K, V> newSetMultimap(
- final Supplier<Map<K, Set<V>>> mapFactory,
- final Supplier<Set<V>> elementCollectionFactory){
+ public static <K, V, S extends Set<V>> SetMultimap<K, V> newSetMultimap(
+ final Supplier<? extends Map<K, S>> mapFactory,
+ final Supplier<S> elementCollectionFactory){
requires(mapFactory, "mapFactory");
requires(elementCollectionFactory, "elementCollectionFactory");
return new SetMultimap<K, V>() {
- final Map<K, Set<V>> delegate = mapFactory.get();
+ final Map<K, Set<V>> delegate = _Casts.uncheckedCast(mapFactory.get());
@Override public int size() { return delegate.size(); }
@Override public boolean isEmpty() { return delegate.isEmpty(); }
@@ -220,6 +229,20 @@ public class _Multimaps {
}
/**
+ * @param keyComparator - if {@code null} uses natural ordering
+ * @param elementComparator - if {@code null} uses natural ordering
+ * @return TreeMap of TreeSets
+ */
+ public static <K, V> SetMultimap<K, V> newSortedSetMultimap(
+ @Nullable Comparator<K> keyComparator,
+ @Nullable Comparator<V> elementComparator){
+
+ final Supplier<SortedMap<K, SortedSet<V>>> mapFactory = ()->new TreeMap<K, SortedSet<V>>(keyComparator);
+ final Supplier<SortedSet<V>> elementSetFactory = ()->new TreeSet<V>(elementComparator);
+ return newSetMultimap(mapFactory, elementSetFactory);
+ }
+
+ /**
* @return HashMap of HashMaps
*/
public static <K1, K2, V> MapMultimap<K1, K2, V> newMapMultimap(){
diff --git a/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java b/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java
index 4b12a12..a9cae93 100644
--- a/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java
+++ b/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java
@@ -25,13 +25,11 @@ import java.util.Collections;
import java.util.List;
import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Multimaps;
import org.apache.isis.extensions.secman.api.SecurityModule;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.TreeMultimap;
-
/**
* A serializable value object representing a set of (anonymized)
* {@link ApplicationPermissionValue permission}s.
@@ -90,9 +88,11 @@ public class ApplicationPermissionValueSet implements Serializable {
* meaning that it is checked first and therefore also takes precedence.
* </p>
*/
- private final Multimap<ApplicationFeatureId, ApplicationPermissionValue> permissionsByFeature = TreeMultimap.create(
- Collections.reverseOrder(ApplicationFeatureId.Comparators.natural()),
- ApplicationPermissionValue.Comparators.natural());
+ private final _Multimaps.SetMultimap<ApplicationFeatureId, ApplicationPermissionValue> permissionsByFeature =
+ _Multimaps.newSortedSetMultimap(
+ Collections.reverseOrder(ApplicationFeatureId.Comparators.natural()),
+ null // natural element order
+ );
/**
* Note that we require PermissionsEvaluationService to be serializable.
@@ -100,8 +100,6 @@ public class ApplicationPermissionValueSet implements Serializable {
private final PermissionsEvaluationService permissionsEvaluationService;
-
-
// -- constructor
ApplicationPermissionValueSet(final ApplicationPermissionValue... permissionValues) {
this(Arrays.asList(permissionValues));
@@ -110,10 +108,10 @@ public class ApplicationPermissionValueSet implements Serializable {
this(permissionValues, null);
}
public ApplicationPermissionValueSet(final Iterable<ApplicationPermissionValue> permissionValues, final PermissionsEvaluationService permissionsEvaluationService) {
- this.values = Collections.unmodifiableList(Lists.newArrayList(permissionValues));
+ this.values = Collections.unmodifiableList(_Lists.newArrayList(permissionValues));
for (final ApplicationPermissionValue permissionValue : permissionValues) {
final ApplicationFeatureId featureId = permissionValue.getFeatureId();
- permissionsByFeature.put(featureId, permissionValue);
+ permissionsByFeature.putElement(featureId, permissionValue);
}
this.permissionsEvaluationService =
permissionsEvaluationService != null
diff --git a/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java b/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java
index b935fb7..f22cf5e 100644
--- a/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java
+++ b/extensions/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java
@@ -22,7 +22,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import com.google.common.collect.Lists;
+import org.apache.isis.commons.internal.collections._Lists;
/**
* An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
@@ -44,7 +44,7 @@ public class PermissionsEvaluationServiceVetoBeatsAllow extends PermissionsEvalu
*/
@Override
protected Iterable<ApplicationPermissionValue> ordered(final Collection<ApplicationPermissionValue> permissionValues) {
- final ArrayList<ApplicationPermissionValue> reversed = Lists.newArrayList(permissionValues);
+ final ArrayList<ApplicationPermissionValue> reversed = _Lists.newArrayList(permissionValues);
Collections.reverse(reversed);
return reversed;
}
diff --git a/extensions/secman/encryption-jbcrypt/pom.xml b/extensions/secman/encryption-jbcrypt/pom.xml
index 966bb01..d0bec69 100644
--- a/extensions/secman/encryption-jbcrypt/pom.xml
+++ b/extensions/secman/encryption-jbcrypt/pom.xml
@@ -35,6 +35,7 @@
<jar-plugin.automaticModuleName>org.apache.isis.extensions.secman-encryption-jbcrypt</jar-plugin.automaticModuleName>
<git-plugin.propertiesDir>org/apache/isis/extensions/secman-encryption-jbcrypt</git-plugin.propertiesDir>
+ <jbcrypt.version>0.4</jbcrypt.version>
</properties>
<dependencies>
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/TransitionHelper.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/TransitionHelper.java
index 0e21260..7190c97 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/TransitionHelper.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/TransitionHelper.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.extensions.secman.jdo;
+import java.util.stream.Collectors;
+
import javax.inject.Inject;
import org.apache.isis.applib.ViewModel;
@@ -25,6 +27,7 @@ import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.commons.exceptions.IsisException;
+import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureType;
@@ -32,8 +35,6 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
import org.apache.isis.runtime.system.context.IsisContext;
-import com.google.common.base.Joiner;
-
@DomainService(nature=NatureOfService.DOMAIN)
public class TransitionHelper {
@@ -50,7 +51,9 @@ public class TransitionHelper {
public static String join(Object ... args) {
try {
- return Joiner.on(":").join(args);
+ return _NullSafe.stream(args)
+ .map(arg->""+arg)
+ .collect(Collectors.joining(":"));
} catch (Exception e) {
debug(args);
throw e;
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModel.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModel.java
index 811119d..473a6f3 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModel.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModel.java
@@ -20,10 +20,7 @@ package org.apache.isis.extensions.secman.jdo.app.feature;
import java.util.List;
import java.util.SortedSet;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
+import java.util.function.Function;
import org.apache.isis.applib.ViewModel;
import org.apache.isis.applib.annotation.Collection;
@@ -35,6 +32,8 @@ import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.extensions.secman.api.SecurityModule;
import org.apache.isis.extensions.secman.jdo.TransitionHelper;
import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermission;
@@ -44,6 +43,8 @@ import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureType;
+import lombok.val;
+
/**
* View model identified by {@link ApplicationFeatureId} and backed by an {@link ApplicationFeature}.
*/
@@ -54,344 +55,344 @@ import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureType;
//)
public abstract class ApplicationFeatureViewModel implements ViewModel {
- public static abstract class PropertyDomainEvent<S extends ApplicationFeatureViewModel,T> extends SecurityModule.PropertyDomainEvent<S, T> {}
-
- public static abstract class CollectionDomainEvent<S extends ApplicationFeatureViewModel,T> extends SecurityModule.CollectionDomainEvent<S, T> {}
-
- public static abstract class ActionDomainEvent<S extends ApplicationFeatureViewModel> extends SecurityModule.ActionDomainEvent<S> {}
-
-
-
- // -- constructors
- public static ApplicationFeatureViewModel newViewModel(
- final ApplicationFeatureId featureId,
- final ApplicationFeatureRepositoryDefault applicationFeatureRepository,
- final TransitionHelper transitionHelper) {
- final Class<? extends ApplicationFeatureViewModel> cls = viewModelClassFor(featureId, applicationFeatureRepository);
- return transitionHelper.newViewModelInstance(cls, featureId.asEncodedString());
- }
-
- private static Class<? extends ApplicationFeatureViewModel> viewModelClassFor(
- final ApplicationFeatureId featureId,
- final ApplicationFeatureRepositoryDefault applicationFeatureRepository) {
- switch (featureId.getType()) {
- case PACKAGE:
- return ApplicationPackage.class;
- case CLASS:
- return ApplicationClass.class;
- case MEMBER:
- final ApplicationFeature feature = applicationFeatureRepository.findFeature(featureId);
-
- if(feature == null) {
- // TODO: not sure why, yet...
- return null;
- }
- switch(feature.getMemberType()) {
- case PROPERTY:
- return ApplicationClassProperty.class;
- case COLLECTION:
- return ApplicationClassCollection.class;
- case ACTION:
- return ApplicationClassAction.class;
- }
- }
- throw new IllegalArgumentException("could not determine feature type; featureId = " + featureId);
- }
-
- public ApplicationFeatureViewModel() {
- this(TransitionHelper.defaultFeatureId());
- }
-
- ApplicationFeatureViewModel(final ApplicationFeatureId featureId) {
- setFeatureId(featureId);
- }
-
-
- // -- identification
- /**
- * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
- * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
- */
- public String title() {
- return getFullyQualifiedName();
- }
- public String iconName() {
- return "applicationFeature";
- }
-
-
-
-
- // -- ViewModel impl
- @Override
- public String viewModelMemento() {
- return getFeatureId().asEncodedString();
- }
-
- @Override
- public void viewModelInit(final String encodedMemento) {
- final ApplicationFeatureId applicationFeatureId = ApplicationFeatureId.parseEncoded(encodedMemento);
- setFeatureId(applicationFeatureId);
- }
-
-
-
-
-
- // -- featureId (property, programmatic)
- private ApplicationFeatureId featureId;
-
- @Programmatic
- public ApplicationFeatureId getFeatureId() {
- return featureId;
- }
-
- public void setFeatureId(final ApplicationFeatureId applicationFeatureId) {
- this.featureId = applicationFeatureId;
- }
-
-
- // -- feature (property, programmatic)
- @Programmatic
- ApplicationFeature getFeature() {
- return applicationFeatureRepository.findFeature(getFeatureId());
- }
-
-
- // -- fullyQualifiedName (property, programmatic)
- @Programmatic // in the title
- public String getFullyQualifiedName() {
- return getFeatureId().getFullyQualifiedName();
- }
-
-
-
-
- // -- type (programmatic)
- @Programmatic
- public ApplicationFeatureType getType() {
- return getFeatureId().getType();
- }
-
-
-
-
- // -- packageName
- public static class PackageNameDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, String> {}
-
- @Property(
- domainEvent = PackageNameDomainEvent.class
- )
- @PropertyLayout(typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
- @MemberOrder(name="Id", sequence = "2.2")
- public String getPackageName() {
- return getFeatureId().getPackageName();
- }
-
-
-
-
-
- // -- className
-
- public static class ClassNameDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, String> {}
-
- /**
- * For packages, will be null. Is in this class (rather than subclasses) so is shown in
- * {@link ApplicationPackage#getContents() package contents}.
- */
- @Property(
- domainEvent = ClassNameDomainEvent.class
- )
- @PropertyLayout(typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
- @MemberOrder(name="Id", sequence = "2.3")
- public String getClassName() {
- return getFeatureId().getClassName();
- }
- public boolean hideClassName() {
- return getType().hideClassName();
- }
-
-
-
-
-
- // -- memberName
-
- public static class MemberNameDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, String> {}
-
- /**
- * For packages and class names, will be null.
- */
- @Property(
- domainEvent = MemberNameDomainEvent.class
- )
- @PropertyLayout(typicalLength=ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
- @MemberOrder(name="Id", sequence = "2.4")
- public String getMemberName() {
- return getFeatureId().getMemberName();
- }
-
- public boolean hideMemberName() {
- return getType().hideMember();
- }
-
-
-
-
-
-
- // -- parent (property)
-
- public static class ParentDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, ApplicationFeatureViewModel> {}
-
- @Property(
- domainEvent = ParentDomainEvent.class
- )
- @PropertyLayout(hidden=Where.ALL_TABLES)
- @MemberOrder(name = "Parent", sequence = "2.6")
- public ApplicationFeatureViewModel getParent() {
- final ApplicationFeatureId parentId;
- parentId = getType() == ApplicationFeatureType.MEMBER
- ? getFeatureId().getParentClassId()
- : getFeatureId().getParentPackageId();
- if(parentId == null) {
- return null;
- }
- final ApplicationFeature feature = applicationFeatureRepository.findFeature(parentId);
- if (feature == null) {
- return null;
- }
- final Class<? extends ApplicationFeatureViewModel> cls =
- viewModelClassFor(parentId, applicationFeatureRepository);
- return transitionHelper
- .newViewModelInstance(cls, parentId.asEncodedString());
-
- }
-
-
-
-
- // -- contributed (property)
-
- public static class ContributedDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, Boolean> {}
-
- /**
- * For packages and class names, will be null.
- */
- @Property(
- domainEvent = ContributedDomainEvent.class
- )
- @MemberOrder(name="Contributed", sequence = "2.5.5")
- public boolean isContributed() {
- return getFeature().isContributed();
- }
-
- public boolean hideContributed() {
- return getType().hideMember();
- }
-
-
-
-
- // -- permissions (collection)
- public static class PermissionsDomainEvent extends CollectionDomainEvent<ApplicationFeatureViewModel, ApplicationPermission> {}
-
- @Collection(
- domainEvent = PermissionsDomainEvent.class
- )
- @CollectionLayout(
- defaultView="table"
- )
- @MemberOrder(sequence = "10")
- public List<ApplicationPermission> getPermissions() {
- return applicationPermissionRepository.findByFeatureCached(getFeatureId());
- }
-
-
-
-
- // -- parentPackage (property, programmatic, for packages & classes only)
-
- /**
- * The parent package feature of this class or package.
- */
- @Programmatic
- public ApplicationFeatureViewModel getParentPackage() {
- return Functions.asViewModelForId(applicationFeatureRepository, transitionHelper).apply(getFeatureId().getParentPackageId());
- }
-
-
-
-
- // -- equals, hashCode, toString
-
- private final static String propertyNames = "featureId";
-
- @Override
- public boolean equals(final Object obj) {
- return ObjectContracts.equals(this, obj, propertyNames);
- }
-
- @Override
- public int hashCode() {
- return ObjectContracts.hashCode(this, propertyNames);
- }
-
- @Override
- public String toString() {
- return ObjectContracts.toString(this, propertyNames);
- }
-
-
- // -- helpers
- <T extends ApplicationFeatureViewModel> List<T> asViewModels(final SortedSet<ApplicationFeatureId> members) {
- final Function<ApplicationFeatureId, T> function = Functions.<T>asViewModelForId(applicationFeatureRepository, transitionHelper);
- return Lists.newArrayList(
- Iterables.transform(members, function));
- }
-
-
- // -- Functions
-
- public static class Functions {
- private Functions(){}
- public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeatureId, T> asViewModelForId(
- final ApplicationFeatureRepositoryDefault applicationFeatureRepository, final TransitionHelper transitionHelper) {
- return new Function<ApplicationFeatureId, T>(){
- @Override
- public T apply(final ApplicationFeatureId input) {
- return (T)ApplicationFeatureViewModel.newViewModel(input, applicationFeatureRepository, transitionHelper);
- }
- };
- }
- public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeature, T> asViewModel(
- final ApplicationFeatureRepositoryDefault applicationFeatureRepository, final TransitionHelper transitionHelper) {
- return new Function<ApplicationFeature, T>(){
- @Override
- public T apply(final ApplicationFeature input) {
- return (T) ApplicationFeatureViewModel.newViewModel(input.getFeatureId(), applicationFeatureRepository, transitionHelper);
- }
- };
- }
- }
-
-
-
-
- // -- injected services
- @javax.inject.Inject
- RepositoryService repository;
-
- @javax.inject.Inject
- ApplicationFeatureRepositoryDefault applicationFeatureRepository;
-
- @javax.inject.Inject
- ApplicationPermissionRepository applicationPermissionRepository;
-
- @javax.inject.Inject
- TransitionHelper transitionHelper;
-
-
+ public static abstract class PropertyDomainEvent<S extends ApplicationFeatureViewModel,T> extends SecurityModule.PropertyDomainEvent<S, T> {
+ private static final long serialVersionUID = 1L;}
+
+ public static abstract class CollectionDomainEvent<S extends ApplicationFeatureViewModel,T> extends SecurityModule.CollectionDomainEvent<S, T> {
+ private static final long serialVersionUID = 1L;}
+
+ public static abstract class ActionDomainEvent<S extends ApplicationFeatureViewModel> extends SecurityModule.ActionDomainEvent<S> {
+ private static final long serialVersionUID = 1L;}
+
+
+
+ // -- constructors
+ public static ApplicationFeatureViewModel newViewModel(
+ final ApplicationFeatureId featureId,
+ final ApplicationFeatureRepositoryDefault applicationFeatureRepository,
+ final TransitionHelper transitionHelper) {
+ final Class<? extends ApplicationFeatureViewModel> cls = viewModelClassFor(featureId, applicationFeatureRepository);
+ return transitionHelper.newViewModelInstance(cls, featureId.asEncodedString());
+ }
+
+ private static Class<? extends ApplicationFeatureViewModel> viewModelClassFor(
+ final ApplicationFeatureId featureId,
+ final ApplicationFeatureRepositoryDefault applicationFeatureRepository) {
+ switch (featureId.getType()) {
+ case PACKAGE:
+ return ApplicationPackage.class;
+ case CLASS:
+ return ApplicationClass.class;
+ case MEMBER:
+ final ApplicationFeature feature = applicationFeatureRepository.findFeature(featureId);
+
+ if(feature == null) {
+ // TODO: not sure why, yet...
+ return null;
+ }
+ switch(feature.getMemberType()) {
+ case PROPERTY:
+ return ApplicationClassProperty.class;
+ case COLLECTION:
+ return ApplicationClassCollection.class;
+ case ACTION:
+ return ApplicationClassAction.class;
+ }
+ }
+ throw new IllegalArgumentException("could not determine feature type; featureId = " + featureId);
+ }
+
+ public ApplicationFeatureViewModel() {
+ this(TransitionHelper.defaultFeatureId());
+ }
+
+ ApplicationFeatureViewModel(final ApplicationFeatureId featureId) {
+ setFeatureId(featureId);
+ }
+
+
+ // -- identification
+ /**
+ * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
+ * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
+ */
+ public String title() {
+ return getFullyQualifiedName();
+ }
+ public String iconName() {
+ return "applicationFeature";
+ }
+
+
+
+
+ // -- ViewModel impl
+ @Override
+ public String viewModelMemento() {
+ return getFeatureId().asEncodedString();
+ }
+
+ @Override
+ public void viewModelInit(final String encodedMemento) {
+ final ApplicationFeatureId applicationFeatureId = ApplicationFeatureId.parseEncoded(encodedMemento);
+ setFeatureId(applicationFeatureId);
+ }
+
+
+
+
+
+ // -- featureId (property, programmatic)
+ private ApplicationFeatureId featureId;
+
+ @Programmatic
+ public ApplicationFeatureId getFeatureId() {
+ return featureId;
+ }
+
+ public void setFeatureId(final ApplicationFeatureId applicationFeatureId) {
+ this.featureId = applicationFeatureId;
+ }
+
+
+ // -- feature (property, programmatic)
+ @Programmatic
+ ApplicationFeature getFeature() {
+ return applicationFeatureRepository.findFeature(getFeatureId());
+ }
+
+
+ // -- fullyQualifiedName (property, programmatic)
+ @Programmatic // in the title
+ public String getFullyQualifiedName() {
+ return getFeatureId().getFullyQualifiedName();
+ }
+
+
+
+
+ // -- type (programmatic)
+ @Programmatic
+ public ApplicationFeatureType getType() {
+ return getFeatureId().getType();
+ }
+
+
+
+
+ // -- packageName
+ public static class PackageNameDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, String> {}
+
+ @Property(
+ domainEvent = PackageNameDomainEvent.class
+ )
+ @PropertyLayout(typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+ @MemberOrder(name="Id", sequence = "2.2")
+ public String getPackageName() {
+ return getFeatureId().getPackageName();
+ }
+
+
+
+
+
+ // -- className
+
+ public static class ClassNameDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, String> {}
+
+ /**
+ * For packages, will be null. Is in this class (rather than subclasses) so is shown in
+ * {@link ApplicationPackage#getContents() package contents}.
+ */
+ @Property(
+ domainEvent = ClassNameDomainEvent.class
+ )
+ @PropertyLayout(typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
+ @MemberOrder(name="Id", sequence = "2.3")
+ public String getClassName() {
+ return getFeatureId().getClassName();
+ }
+ public boolean hideClassName() {
+ return getType().hideClassName();
+ }
+
+
+
+
+
+ // -- memberName
+
+ public static class MemberNameDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, String> {}
+
+ /**
+ * For packages and class names, will be null.
+ */
+ @Property(
+ domainEvent = MemberNameDomainEvent.class
+ )
+ @PropertyLayout(typicalLength=ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
+ @MemberOrder(name="Id", sequence = "2.4")
+ public String getMemberName() {
+ return getFeatureId().getMemberName();
+ }
+
+ public boolean hideMemberName() {
+ return getType().hideMember();
+ }
+
+
+
+
+
+
+ // -- parent (property)
+
+ public static class ParentDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, ApplicationFeatureViewModel> {}
+
+ @Property(
+ domainEvent = ParentDomainEvent.class
+ )
+ @PropertyLayout(hidden=Where.ALL_TABLES)
+ @MemberOrder(name = "Parent", sequence = "2.6")
+ public ApplicationFeatureViewModel getParent() {
+ final ApplicationFeatureId parentId;
+ parentId = getType() == ApplicationFeatureType.MEMBER
+ ? getFeatureId().getParentClassId()
+ : getFeatureId().getParentPackageId();
+ if(parentId == null) {
+ return null;
+ }
+ final ApplicationFeature feature = applicationFeatureRepository.findFeature(parentId);
+ if (feature == null) {
+ return null;
+ }
+ final Class<? extends ApplicationFeatureViewModel> cls =
+ viewModelClassFor(parentId, applicationFeatureRepository);
+ return transitionHelper
+ .newViewModelInstance(cls, parentId.asEncodedString());
+
+ }
+
+
+
+
+ // -- contributed (property)
+
+ public static class ContributedDomainEvent extends PropertyDomainEvent<ApplicationFeatureViewModel, Boolean> {}
+
+ /**
+ * For packages and class names, will be null.
+ */
+ @Property(
+ domainEvent = ContributedDomainEvent.class
+ )
+ @MemberOrder(name="Contributed", sequence = "2.5.5")
+ public boolean isContributed() {
+ return getFeature().isContributed();
+ }
+
+ public boolean hideContributed() {
+ return getType().hideMember();
+ }
+
+
+
+
+ // -- permissions (collection)
+ public static class PermissionsDomainEvent extends CollectionDomainEvent<ApplicationFeatureViewModel, ApplicationPermission> {}
+
+ @Collection(
+ domainEvent = PermissionsDomainEvent.class
+ )
+ @CollectionLayout(
+ defaultView="table"
+ )
+ @MemberOrder(sequence = "10")
+ public List<ApplicationPermission> getPermissions() {
+ return applicationPermissionRepository.findByFeatureCached(getFeatureId());
+ }
+
+
+
+
+ // -- parentPackage (property, programmatic, for packages & classes only)
+
+ /**
+ * The parent package feature of this class or package.
+ */
+ @Programmatic
+ public ApplicationFeatureViewModel getParentPackage() {
+ return Functions.asViewModelForId(applicationFeatureRepository, transitionHelper).apply(getFeatureId().getParentPackageId());
+ }
+
+
+
+
+ // -- equals, hashCode, toString
+
+ private final static String propertyNames = "featureId";
+
+ @Override
+ public boolean equals(final Object obj) {
+ return ObjectContracts.equals(this, obj, propertyNames);
+ }
+
+ @Override
+ public int hashCode() {
+ return ObjectContracts.hashCode(this, propertyNames);
+ }
+
+ @Override
+ public String toString() {
+ return ObjectContracts.toString(this, propertyNames);
+ }
+
+
+ // -- helpers
+ <T extends ApplicationFeatureViewModel> List<T> asViewModels(final SortedSet<ApplicationFeatureId> members) {
+ val viewModelForId = Functions.<T>asViewModelForId(applicationFeatureRepository, transitionHelper);
+ return _Lists.map(members, viewModelForId);
+ }
+
+
+ // -- Functions
+
+ public static final class Functions {
+ private Functions(){}
+
+ public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeatureId, T> asViewModelForId(
+ final ApplicationFeatureRepositoryDefault applicationFeatureRepository,
+ final TransitionHelper transitionHelper) {
+
+ return (ApplicationFeatureId input) ->
+ _Casts.uncheckedCast(ApplicationFeatureViewModel
+ .newViewModel(input, applicationFeatureRepository, transitionHelper));
+
+ }
+ public static <T extends ApplicationFeatureViewModel> Function<ApplicationFeature, T> asViewModel(
+ final ApplicationFeatureRepositoryDefault applicationFeatureRepository,
+ final TransitionHelper transitionHelper) {
+
+ return (ApplicationFeature input) ->
+ _Casts.uncheckedCast(ApplicationFeatureViewModel
+ .newViewModel(input.getFeatureId(), applicationFeatureRepository, transitionHelper));
+ }
+ }
+
+
+ // -- injected services
+ @javax.inject.Inject
+ RepositoryService repository;
+
+ @javax.inject.Inject
+ ApplicationFeatureRepositoryDefault applicationFeatureRepository;
+
+ @javax.inject.Inject
+ ApplicationPermissionRepository applicationPermissionRepository;
+
+ @javax.inject.Inject
+ TransitionHelper transitionHelper;
+
+
}
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModels.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModels.java
index c4a43de..f241033 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModels.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/feature/ApplicationFeatureViewModels.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.extensions.secman.jdo.app.feature;
+import java.util.Collection;
import java.util.List;
import javax.inject.Inject;
@@ -32,14 +33,12 @@ import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.annotation.SemanticsOf;
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.SecurityModule;
import org.apache.isis.extensions.secman.jdo.TransitionHelper;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeature;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
@DomainService(
nature = NatureOfService.VIEW,
objectType = "isissecurity.ApplicationFeatureViewModels",
@@ -158,12 +157,15 @@ public class ApplicationFeatureViewModels {
// -- HELPERS
- private <T extends ApplicationFeatureViewModel> List<T> asViewModels(final Iterable<ApplicationFeature> features, final Class<T> cls) {
- return Lists.newArrayList(
- Iterables.transform(
+ private <T extends ApplicationFeatureViewModel> List<T> asViewModels(
+ final Collection<ApplicationFeature> features,
+ final Class<T> cls) {
+
+ return _Lists.map(
features,
- ApplicationFeatureViewModel.Functions.<T>asViewModel(applicationFeatureRepository, transitionHelper)
- ));
+ ApplicationFeatureViewModel.Functions
+ .<T>asViewModel(applicationFeatureRepository, transitionHelper)
+ );
}
// -- DEPENDENCIES
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_filterPermissions.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_filterPermissions.java
index 0b4d65f..5ba1854 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_filterPermissions.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_filterPermissions.java
@@ -20,12 +20,8 @@ package org.apache.isis.extensions.secman.jdo.app.user;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
+import java.util.Objects;
+import java.util.function.Predicate;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.MemberOrder;
@@ -36,6 +32,7 @@ import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.SemanticsOf;
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.SecurityModule;
import org.apache.isis.extensions.secman.jdo.TransitionHelper;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUser;
@@ -43,6 +40,8 @@ import org.apache.isis.metamodel.services.appfeat.ApplicationFeature;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
+import lombok.val;
+
@Mixin
public class ApplicationUser_filterPermissions {
@@ -56,13 +55,9 @@ public class ApplicationUser_filterPermissions {
public ApplicationUser_filterPermissions(final ApplicationUser user) {
this.user = user;
}
-
-
-
// -- filterPermissions (action)
-
@Action(
domainEvent = ActionDomainEvent.class,
semantics = SemanticsOf.SAFE
@@ -74,8 +69,8 @@ public class ApplicationUser_filterPermissions {
@Parameter(optionality = Optionality.OPTIONAL)
@ParameterLayout(named="Class", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
final String className) {
- final java.util.Collection<ApplicationFeature> allMembers = applicationFeatureRepository.allMembers();
- final Iterable<ApplicationFeature> filtered = Iterables.filter(allMembers, within(packageFqn, className));
+ val allMembers = applicationFeatureRepository.allMembers();
+ val filtered = _Lists.filter(allMembers, within(packageFqn, className));
return asViewModels(filtered);
}
@@ -96,9 +91,7 @@ public class ApplicationUser_filterPermissions {
static Predicate<ApplicationFeature> within(final String packageFqn, final String className) {
- return new Predicate<ApplicationFeature>() {
- @Override
- public boolean apply(final ApplicationFeature input) {
+ return (ApplicationFeature input) -> {
final ApplicationFeatureId inputFeatureId = input.getFeatureId();
// recursive match on package
@@ -109,17 +102,14 @@ public class ApplicationUser_filterPermissions {
}
// match on class (if specified)
- return className == null || Objects.equal(inputFeatureId.getClassName(), className);
- }
+ return className == null || Objects.equals(inputFeatureId.getClassName(), className);
};
}
- List<UserPermissionViewModel> asViewModels(final Iterable<ApplicationFeature> features) {
- return Lists.newArrayList(
- Iterables.transform(
+ List<UserPermissionViewModel> asViewModels(final Collection<ApplicationFeature> features) {
+ return _Lists.map(
features,
- UserPermissionViewModel.Functions.asViewModel(user, transitionHelper))
- );
+ UserPermissionViewModel.Functions.asViewModel(user, transitionHelper));
}
@javax.inject.Inject
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_permissions.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_permissions.java
index 0ef0641..76d2288 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_permissions.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/ApplicationUser_permissions.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.extensions.secman.jdo.app.user;
+import java.util.Collection;
import java.util.List;
import org.apache.isis.applib.annotation.Action;
@@ -29,20 +30,20 @@ import org.apache.isis.applib.annotation.Mixin;
import org.apache.isis.applib.annotation.SemanticsOf;
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.SecurityModule;
import org.apache.isis.extensions.secman.jdo.TransitionHelper;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUser;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeature;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
+import lombok.val;
@Mixin
public class ApplicationUser_permissions {
-
- public static class ActionDomainEvent extends SecurityModule.ActionDomainEvent<ApplicationUser_permissions> {}
+ public static class ActionDomainEvent extends SecurityModule.ActionDomainEvent<ApplicationUser_permissions> {
+ private static final long serialVersionUID = 1L;}
// -- constructor
private final ApplicationUser user;
@@ -65,16 +66,14 @@ public class ApplicationUser_permissions {
)
@MemberOrder(sequence = "30")
public List<UserPermissionViewModel> $$() {
- final java.util.Collection<ApplicationFeature> allMembers = applicationFeatureRepository.allMembers();
+ val allMembers = applicationFeatureRepository.allMembers();
return asViewModels(allMembers);
}
- List<UserPermissionViewModel> asViewModels(final Iterable<ApplicationFeature> features) {
- return Lists.newArrayList(
- Iterables.transform(
+ List<UserPermissionViewModel> asViewModels(final Collection<ApplicationFeature> features) {
+ return _Lists.map(
features,
- UserPermissionViewModel.Functions.asViewModel(user, transitionHelper))
- );
+ UserPermissionViewModel.Functions.asViewModel(user, transitionHelper));
}
@javax.inject.Inject
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/UserPermissionViewModel.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/UserPermissionViewModel.java
index e03f610..b4352d2 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/UserPermissionViewModel.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/app/user/UserPermissionViewModel.java
@@ -18,12 +18,11 @@
*/
package org.apache.isis.extensions.secman.jdo.app.user;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
import java.util.Iterator;
-
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
-import com.google.common.io.BaseEncoding;
+import java.util.function.Function;
+import java.util.stream.Collectors;
import org.apache.isis.applib.ViewModel;
import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -38,6 +37,7 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.extensions.secman.api.SecurityModule;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
@@ -54,6 +54,8 @@ import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureType;
+import lombok.val;
+
/**
* View model identified by {@link ApplicationFeatureId} and backed by an
* {@link ApplicationFeature}.
@@ -164,7 +166,9 @@ public class UserPermissionViewModel implements ViewModel {
}
private void parse(final String asString) {
- final Iterator<String> iterator = Splitter.on(":").split(asString).iterator();
+ final Iterator<String> iterator = _Strings.splitThenStream(asString, ":")
+ .collect(Collectors.toList())
+ .listIterator();
this.username = iterator.next();
@@ -215,17 +219,14 @@ public class UserPermissionViewModel implements ViewModel {
}
private static String base64UrlDecode(final String str) {
- final byte[] bytes = BaseEncoding.base64Url().decode(str);
- return new String(bytes, Charset.forName("UTF-8"));
+ val bytes = Base64.getUrlDecoder().decode(str);
+ return _Strings.ofBytes(bytes, StandardCharsets.UTF_8);
}
private static String base64UrlEncode(final String str) {
- final byte[] bytes = str.getBytes(Charset.forName("UTF-8"));
- return BaseEncoding.base64Url().encode(bytes);
+ val bytes = str.getBytes(StandardCharsets.UTF_8);
+ return Base64.getUrlEncoder().encodeToString(bytes);
}
-
-
-
// -- user (derived property, hidden in parented tables)
@@ -389,27 +390,21 @@ public class UserPermissionViewModel implements ViewModel {
}
-
-
// -- Functions
- public static class Functions {
+ public static final class Functions {
+
private Functions(){}
+
public static Function<ApplicationFeature, UserPermissionViewModel> asViewModel(final ApplicationUser user, final TransitionHelper transitionHelper) {
- return new Function<ApplicationFeature, UserPermissionViewModel>(){
- @Override
- public UserPermissionViewModel apply(final ApplicationFeature input) {
+ return (final ApplicationFeature input) -> {
final ApplicationPermissionValueSet permissionSet = user.getPermissionSet();
final ApplicationPermissionValueSet.Evaluation changingEvaluation = permissionSet.evaluate(input.getFeatureId(), ApplicationPermissionMode.CHANGING);
final ApplicationPermissionValueSet.Evaluation viewingEvaluation = permissionSet.evaluate(input.getFeatureId(), ApplicationPermissionMode.VIEWING);
return UserPermissionViewModel.newViewModel(input.getFeatureId(), user, viewingEvaluation, changingEvaluation, transitionHelper);
- }
};
}
}
-
-
-
// -- injected services
@javax.inject.Inject
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
index 1f3f231..cf6cdf7 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
@@ -19,15 +19,14 @@
package org.apache.isis.extensions.secman.jdo.dom.permission;
import java.util.Comparator;
+import java.util.Objects;
+import java.util.function.Function;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.InheritanceStrategy;
import javax.jdo.annotations.VersionStrategy;
-import com.google.common.base.Function;
-import com.google.common.collect.Ordering;
-
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainObject;
@@ -479,7 +478,7 @@ public class ApplicationPermission implements Comparable<ApplicationPermission>
public static class DefaultComparator implements Comparator<ApplicationPermission> {
@Override
public int compare(final ApplicationPermission o1, final ApplicationPermission o2) {
- return Ordering.natural().compare(o1, o2);
+ return Objects.compare(o1, o2, (a, b) -> a.compareTo(b) );
}
}
@@ -490,20 +489,11 @@ public class ApplicationPermission implements Comparable<ApplicationPermission>
private Functions(){}
- public static final Function<ApplicationPermission, ApplicationPermissionValue> AS_VALUE = new Function<ApplicationPermission, ApplicationPermissionValue>() {
- @Override
- public ApplicationPermissionValue apply(final ApplicationPermission input) {
- return new ApplicationPermissionValue(input.getFeatureId(), input.getRule(), input.getMode());
- }
- };
-
+ public static final Function<ApplicationPermission, ApplicationPermissionValue> AS_VALUE =
+ (ApplicationPermission input) ->
+ new ApplicationPermissionValue(input.getFeatureId(), input.getRule(), input.getMode());
- public static final Function<ApplicationPermission, String> GET_FQN = new Function<ApplicationPermission, String>() {
- @Override
- public String apply(final ApplicationPermission input) {
- return input.getFeatureFqn();
- }
- };
+ public static final Function<ApplicationPermission, String> GET_FQN = ApplicationPermission::getFeatureFqn;
}
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java
index fa4129b..412cc20 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java
@@ -23,13 +23,22 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
+import java.util.stream.Collectors;
import javax.inject.Inject;
-import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimaps;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.query.QueryDefault;
+import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
+import org.apache.isis.applib.services.factory.FactoryService;
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.commons.internal.base._NullSafe;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Multimaps;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
@@ -40,15 +49,8 @@ import org.apache.isis.metamodel.services.appfeat.ApplicationFeature;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureType;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.query.QueryDefault;
-import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
-import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
-import org.apache.isis.applib.services.repository.RepositoryService;
+
+import lombok.val;
@DomainService(
nature = NatureOfService.DOMAIN,
@@ -58,7 +60,6 @@ public class ApplicationPermissionRepository {
// -- findByRole (programmatic)
- @Programmatic
public List<ApplicationPermission> findByRoleCached(final ApplicationRole role) {
return queryResultsCache.execute(new Callable<List<ApplicationPermission>>() {
@Override
@@ -68,7 +69,6 @@ public class ApplicationPermissionRepository {
}, ApplicationPermissionRepository.class, "findByRoleCached", role);
}
- @Programmatic
public List<ApplicationPermission> findByRole(final ApplicationRole role) {
return repository.allMatches(
new QueryDefault<>(
@@ -78,7 +78,6 @@ public class ApplicationPermissionRepository {
// -- findByUser (programmatic)
- @Programmatic
public List<ApplicationPermission> findByUserCached(final ApplicationUser user) {
return queryResultsCache.execute(new Callable<List<ApplicationPermission>>() {
@Override public List<ApplicationPermission> call() throws Exception {
@@ -87,7 +86,6 @@ public class ApplicationPermissionRepository {
}, ApplicationPermissionRepository.class, "findByUserCached", user);
}
- @Programmatic
public List<ApplicationPermission> findByUser(final ApplicationUser user) {
final String username = user.getUsername();
return findByUser(username);
@@ -106,11 +104,8 @@ public class ApplicationPermissionRepository {
* Uses the {@link QueryResultsCache} in order to support
* multiple lookups from <code>org.apache.isis.extensions.secman.jdo.app.user.UserPermissionViewModel</code>.
*/
- @Programmatic
public ApplicationPermission findByUserAndPermissionValue(final String username, final ApplicationPermissionValue permissionValue) {
-
-
// obtain all permissions for this user, map by its value, and
// put into query cache (so that this method can be safely called in a tight loop)
final Map<ApplicationPermissionValue, List<ApplicationPermission>> permissions =
@@ -118,11 +113,18 @@ public class ApplicationPermissionRepository {
@Override
public Map<ApplicationPermissionValue, List<ApplicationPermission>> call() throws Exception {
- final List<ApplicationPermission> applicationPermissions = findByUser(username);
- final ImmutableListMultimap<ApplicationPermissionValue, ApplicationPermission> index = Multimaps
- .index(applicationPermissions, ApplicationPermission.Functions.AS_VALUE);
-
- return Multimaps.asMap(index);
+ val permissions = findByUser(username);
+
+ val permissionsByPermissionValue =
+ _Multimaps.<ApplicationPermissionValue, ApplicationPermission>newListMultimap();
+
+ _NullSafe.stream(permissions)
+ .forEach(permission->{
+ val permissionValue = ApplicationPermission.Functions.AS_VALUE.apply(permission);
+ permissionsByPermissionValue.putElement(permissionValue, permission);
+ });
+
+ return permissionsByPermissionValue;
}
// note: it is correct that only username (and not permissionValue) is the key
// (we are obtaining all the perms for this user)
@@ -137,7 +139,6 @@ public class ApplicationPermissionRepository {
// -- findByRoleAndRuleAndFeatureType (programmatic)
- @Programmatic
public List<ApplicationPermission> findByRoleAndRuleAndFeatureTypeCached(
final ApplicationRole role, final ApplicationPermissionRule rule,
final ApplicationFeatureType type) {
@@ -148,7 +149,6 @@ public class ApplicationPermissionRepository {
}, ApplicationPermissionRepository.class, "findByRoleAndRuleAndFeatureTypeCached", role, rule, type);
}
- @Programmatic
public List<ApplicationPermission> findByRoleAndRuleAndFeatureType(
final ApplicationRole role, final ApplicationPermissionRule rule,
final ApplicationFeatureType type) {
@@ -162,7 +162,6 @@ public class ApplicationPermissionRepository {
// -- findByRoleAndRuleAndFeature (programmatic)
- @Programmatic
public ApplicationPermission findByRoleAndRuleAndFeatureCached(
final ApplicationRole role,
final ApplicationPermissionRule rule,
@@ -175,7 +174,6 @@ public class ApplicationPermissionRepository {
}, ApplicationPermissionRepository.class, "findByRoleAndRuleAndFeatureCached", role, rule, type, featureFqn);
}
- @Programmatic
public ApplicationPermission findByRoleAndRuleAndFeature(
final ApplicationRole role,
final ApplicationPermissionRule rule, final ApplicationFeatureType type, final String featureFqn) {
@@ -191,7 +189,6 @@ public class ApplicationPermissionRepository {
// -- findByFeature (programmatic)
- @Programmatic
public List<ApplicationPermission> findByFeatureCached(final ApplicationFeatureId featureId) {
return queryResultsCache.execute(new Callable<List<ApplicationPermission>>() {
@Override public List<ApplicationPermission> call() throws Exception {
@@ -200,7 +197,6 @@ public class ApplicationPermissionRepository {
}, ApplicationPermissionRepository.class, "findByFeatureCached", featureId);
}
- @Programmatic
public List<ApplicationPermission> findByFeature(final ApplicationFeatureId featureId) {
return repository.allMatches(
new QueryDefault<>(
@@ -212,7 +208,6 @@ public class ApplicationPermissionRepository {
// -- newPermission (programmatic)
- @Programmatic
public ApplicationPermission newPermission(
final ApplicationRole role,
final ApplicationPermissionRule rule,
@@ -228,7 +223,6 @@ public class ApplicationPermissionRepository {
return newPermissionNoCheck(role, rule, mode, featureType, featureFqn);
}
- @Programmatic
public ApplicationPermission newPermissionNoCheck(
final ApplicationRole role,
final ApplicationPermissionRule rule,
@@ -249,7 +243,6 @@ public class ApplicationPermissionRepository {
return permission;
}
- @Programmatic
public ApplicationPermission newPermission(
final ApplicationRole role,
final ApplicationPermissionRule rule,
@@ -280,7 +273,6 @@ public class ApplicationPermissionRepository {
// -- allPermission (programmatic)
- @Programmatic
public List<ApplicationPermission> allPermissions() {
return repository.allInstances(ApplicationPermission.class);
}
@@ -288,7 +280,6 @@ public class ApplicationPermissionRepository {
// -- findOrphaned (programmatic)
- @Programmatic
public List<ApplicationPermission> findOrphaned() {
final Collection<String> packageNames = applicationFeatureRepository.packageNames();
@@ -299,7 +290,7 @@ public class ApplicationPermissionRepository {
appendClasses(packageName, ApplicationMemberType.ACTION, availableClasses);
}
- final List<ApplicationPermission> orphaned = Lists.newArrayList();
+ final List<ApplicationPermission> orphaned = _Lists.newArrayList();
final List<ApplicationPermission> permissions = allPermissions();
for (ApplicationPermission permission : permissions) {
@@ -320,7 +311,9 @@ public class ApplicationPermissionRepository {
break;
case MEMBER:
- final List<String> split = Splitter.on('#').splitToList(featureFqn);
+ final List<String> split = _Strings.splitThenStream(featureFqn, "#")
+ .collect(Collectors.toList());
+
final String fqClassName = split.get(0);
final String memberName = split.get(1);
@@ -349,7 +342,7 @@ public class ApplicationPermissionRepository {
}
private List<String> memberNamesOf(final String packageName, final String className) {
- final List<String> memberNames = Lists.newArrayList();
+ final List<String> memberNames = _Lists.newArrayList();
appendMembers(packageName, className, ApplicationMemberType.PROPERTY, memberNames);
appendMembers(packageName, className, ApplicationMemberType.COLLECTION, memberNames);
appendMembers(packageName, className, ApplicationMemberType.ACTION, memberNames);
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
index 112d5f8..ea6d5d3 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
@@ -19,7 +19,6 @@
package org.apache.isis.extensions.secman.jdo.dom.role;
import java.util.List;
-import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -27,11 +26,6 @@ import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.InheritanceStrategy;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -54,6 +48,7 @@ import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.types.DescriptionType;
import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.extensions.secman.api.SecurityModule;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
@@ -564,10 +559,9 @@ public class ApplicationRole implements Comparable<ApplicationRole> {
final ApplicationFeatureType type) {
final List<ApplicationPermission> permissions = applicationPermissionRepository.findByRoleAndRuleAndFeatureTypeCached(
this, rule, type);
- return Lists.newArrayList(
- Iterables.transform(
+ return _Lists.map(
permissions,
- ApplicationPermission.Functions.GET_FQN));
+ ApplicationPermission.Functions.GET_FQN);
}
@@ -620,7 +614,7 @@ public class ApplicationRole implements Comparable<ApplicationRole> {
public List<ApplicationUser> autoComplete0AddUser(final String search) {
final List<ApplicationUser> matchingSearch = applicationUserRepository.find(search);
- final List<ApplicationUser> list = Lists.newArrayList(matchingSearch);
+ final List<ApplicationUser> list = _Lists.newArrayList(matchingSearch);
list.removeAll(getUsers());
return list;
}
@@ -691,20 +685,6 @@ public class ApplicationRole implements Comparable<ApplicationRole> {
}
- // -- Functions
-
- public static class Functions {
- private Functions(){}
-
- public static Function<ApplicationRole, String> GET_NAME = new Function<ApplicationRole, String>() {
- @Override
- public String apply(final ApplicationRole input) {
- return input.getName();
- }
- };
- }
-
-
// -- equals, hashCode, compareTo, toString
private final static String propertyNames = "name";
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRoleRepository.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRoleRepository.java
index f87eda9..729bfd3 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRoleRepository.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRoleRepository.java
@@ -22,8 +22,6 @@ import java.util.List;
import javax.inject.Inject;
-import com.google.common.collect.Lists;
-
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
@@ -33,6 +31,7 @@ import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.commons.internal.collections._Lists;
@DomainService(
nature = NatureOfService.DOMAIN,
@@ -77,7 +76,7 @@ public class ApplicationRoleRepository {
String nameRegex = String.format("(?i).*%s.*", search.replace("*", ".*").replace("?", "."));
return repository.allMatches(new QueryDefault<>(ApplicationRole.class, "findByNameContaining", "nameRegex", nameRegex));
}
- return Lists.newArrayList();
+ return _Lists.newArrayList();
}
@Programmatic
@@ -104,7 +103,7 @@ public class ApplicationRoleRepository {
if (search != null && search.length() > 0 ) {
return findNameContaining(search);
}
- return Lists.newArrayList();
+ return _Lists.newArrayList();
}
}
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
index fb13fff..74c03df 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
@@ -47,12 +47,11 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.extensions.secman.api.SecurityModule;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUser;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUserRepository;
-import com.google.common.collect.Lists;
-
import lombok.Getter;
import lombok.Setter;
@@ -98,24 +97,12 @@ import lombok.Setter;
public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
public static abstract class PropertyDomainEvent<T> extends SecurityModule.PropertyDomainEvent<ApplicationTenancy, T> {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;}
public static abstract class CollectionDomainEvent<T> extends SecurityModule.CollectionDomainEvent<ApplicationTenancy, T> {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;}
public static abstract class ActionDomainEvent extends SecurityModule.ActionDomainEvent<ApplicationTenancy> {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;}
@@ -126,7 +113,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- name (property, title)
- public static class NameDomainEvent extends PropertyDomainEvent<String> {}
+ public static class NameDomainEvent extends PropertyDomainEvent<String> {
+ private static final long serialVersionUID = 1L;}
@javax.jdo.annotations.Column(allowsNull="false", length = MAX_LENGTH_NAME)
@Title
@@ -146,7 +134,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- updateName (action)
- public static class UpdateNameDomainEvent extends ActionDomainEvent {}
+ public static class UpdateNameDomainEvent extends ActionDomainEvent {
+ private static final long serialVersionUID = 1L;}
@Action(
domainEvent =UpdateNameDomainEvent.class,
@@ -168,7 +157,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- path
- public static class PathDomainEvent extends PropertyDomainEvent<String> {}
+ public static class PathDomainEvent extends PropertyDomainEvent<String> {
+ private static final long serialVersionUID = 1L;}
@javax.jdo.annotations.PrimaryKey
@@ -184,7 +174,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- users (collection)
- public static class UsersDomainEvent extends CollectionDomainEvent<ApplicationUser> {}
+ public static class UsersDomainEvent extends CollectionDomainEvent<ApplicationUser> {
+ private static final long serialVersionUID = 1L;}
@Collection(
domainEvent = UsersDomainEvent.class,
@@ -210,7 +201,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- addUser (action)
- public static class AddUserDomainEvent extends ActionDomainEvent {}
+ public static class AddUserDomainEvent extends ActionDomainEvent {
+ private static final long serialVersionUID = 1L;}
@Action(
domainEvent = AddUserDomainEvent.class,
@@ -228,18 +220,16 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
public List<ApplicationUser> autoComplete0AddUser(final String search) {
final List<ApplicationUser> matchingSearch = applicationUserRepository.find(search);
- final List<ApplicationUser> list = Lists.newArrayList(matchingSearch);
+ final List<ApplicationUser> list = _Lists.newArrayList(matchingSearch);
list.removeAll(getUsers());
return list;
}
-
-
-
// -- removeUser (action)
- public static class RemoveUserDomainEvent extends ActionDomainEvent {}
+ public static class RemoveUserDomainEvent extends ActionDomainEvent {
+ private static final long serialVersionUID = 1L;}
@Action(
domainEvent = RemoveUserDomainEvent.class,
@@ -265,7 +255,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- parent (property)
- public static class ParentDomainEvent extends PropertyDomainEvent<ApplicationTenancy> {}
+ public static class ParentDomainEvent extends PropertyDomainEvent<ApplicationTenancy> {
+ private static final long serialVersionUID = 1L;}
@javax.jdo.annotations.Column(name = "parentPath", allowsNull = "true")
@@ -283,7 +274,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- updateParent (action)
- public static class UpdateParentDomainEvent extends ActionDomainEvent {}
+ public static class UpdateParentDomainEvent extends ActionDomainEvent {
+ private static final long serialVersionUID = 1L;}
@Action(
domainEvent = UpdateParentDomainEvent.class,
@@ -307,7 +299,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- children
- public static class ChildrenDomainEvent extends CollectionDomainEvent<ApplicationTenancy> {}
+ public static class ChildrenDomainEvent extends CollectionDomainEvent<ApplicationTenancy> {
+ private static final long serialVersionUID = 1L;}
@javax.jdo.annotations.Persistent(mappedBy = "parent")
@Collection(
@@ -333,7 +326,8 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
// -- addChild (action)
- public static class AddChildDomainEvent extends ActionDomainEvent {}
+ public static class AddChildDomainEvent extends ActionDomainEvent {
+ private static final long serialVersionUID = 1L;}
@Action(
domainEvent = AddChildDomainEvent.class,
@@ -349,7 +343,6 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
return this;
}
-
// -- removeChild (action)
@@ -372,11 +365,10 @@ public class ApplicationTenancy implements Comparable<ApplicationTenancy> {
return choices0RemoveChild().isEmpty()? "No children to remove": null;
}
-
-
// -- delete (action)
- public static class DeleteDomainEvent extends ActionDomainEvent {}
+ public static class DeleteDomainEvent extends ActionDomainEvent {
+ private static final long serialVersionUID = 1L;}
@Action(
domainEvent = DeleteDomainEvent.class,
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancyRepository.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancyRepository.java
index a9114d8..dc3f291 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancyRepository.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancyRepository.java
@@ -26,14 +26,12 @@ import javax.inject.Inject;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
import org.apache.isis.applib.services.repository.RepositoryService;
-
-import com.google.common.collect.Lists;
+import org.apache.isis.commons.internal.collections._Lists;
@DomainService(
nature = NatureOfService.DOMAIN,
@@ -43,7 +41,6 @@ public class ApplicationTenancyRepository {
// -- findByNameOrPathMatching
- @Programmatic
public List<ApplicationTenancy> findByNameOrPathMatchingCached(final String search) {
return queryResultsCache.execute(new Callable<List<ApplicationTenancy>>() {
@Override public List<ApplicationTenancy> call() throws Exception {
@@ -52,18 +49,15 @@ public class ApplicationTenancyRepository {
}, ApplicationTenancyRepository.class, "findByNameOrPathMatchingCached", search);
}
- @Programmatic
public List<ApplicationTenancy> findByNameOrPathMatching(final String search) {
if (search == null) {
- return Lists.newArrayList();
+ return _Lists.newArrayList();
}
return repository.allMatches(new QueryDefault<>(ApplicationTenancy.class, "findByNameOrPathMatching", "regex", String.format("(?i).*%s.*", search.replace("*", ".*").replace("?", "."))));
}
-
-
// -- findByName
- @Programmatic
+
public ApplicationTenancy findByNameCached(final String name) {
return queryResultsCache.execute(new Callable<ApplicationTenancy>() {
@Override
@@ -73,7 +67,6 @@ public class ApplicationTenancyRepository {
}, ApplicationTenancyRepository.class, "findByNameCached", name);
}
- @Programmatic
public ApplicationTenancy findByName(final String name) {
return repository.uniqueMatch(new QueryDefault<>(ApplicationTenancy.class, "findByName", "name", name));
}
@@ -81,7 +74,6 @@ public class ApplicationTenancyRepository {
// -- findByPath
- @Programmatic
public ApplicationTenancy findByPathCached(final String path) {
return queryResultsCache.execute(new Callable<ApplicationTenancy>() {
@Override
@@ -91,7 +83,6 @@ public class ApplicationTenancyRepository {
}, ApplicationTenancyRepository.class, "findByPathCached", path);
}
- @Programmatic
public ApplicationTenancy findByPath(final String path) {
if (path == null) {
return null;
@@ -107,13 +98,12 @@ public class ApplicationTenancyRepository {
if (search != null && search.length() > 0) {
return findByNameOrPathMatching(search);
}
- return Lists.newArrayList();
+ return _Lists.newArrayList();
}
// -- newTenancy
- @Programmatic
public ApplicationTenancy newTenancy(
final String name,
final String path,
@@ -129,10 +119,8 @@ public class ApplicationTenancyRepository {
return tenancy;
}
-
-
// -- allTenancies
- @Programmatic
+
public List<ApplicationTenancy> allTenancies() {
return queryResultsCache.execute(new Callable<List<ApplicationTenancy>>() {
@Override
@@ -142,13 +130,10 @@ public class ApplicationTenancyRepository {
}, ApplicationTenancyRepository.class, "allTenancies");
}
- @Programmatic
public List<ApplicationTenancy> allTenanciesNoCache() {
return repository.allInstances(ApplicationTenancy.class);
}
-
-
// -- injected
/**
* Will only be injected to if the programmer has supplied an implementation. Otherwise
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
index 433da66..bc7deb1 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
@@ -28,24 +28,6 @@ import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.InheritanceStrategy;
import javax.jdo.annotations.VersionStrategy;
-import com.google.common.base.Strings;
-import com.google.common.collect.Iterables;
-import org.apache.isis.commons.internal.collections._Sets;
-import org.apache.isis.extensions.secman.api.SecurityModule;
-import org.apache.isis.extensions.secman.api.encryption.PasswordEncryptionService;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionValueSet;
-import org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationService;
-import org.apache.isis.extensions.secman.api.user.AccountType;
-import org.apache.isis.extensions.secman.api.user.ApplicationUserStatus;
-import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermission;
-import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermissionRepository;
-import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRole;
-import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRoleRepository;
-import org.apache.isis.extensions.secman.jdo.dom.tenancy.HasAtPath;
-import org.apache.isis.extensions.secman.jdo.seed.scripts.IsisModuleSecurityAdminRoleAndPermissions;
-import org.apache.isis.extensions.secman.jdo.seed.scripts.IsisModuleSecurityAdminUser;
-import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -71,9 +53,28 @@ import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.ObjectContracts.ObjectContract;
import org.apache.isis.applib.value.Password;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.extensions.secman.api.SecurityModule;
+import org.apache.isis.extensions.secman.api.encryption.PasswordEncryptionService;
+import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
+import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionValueSet;
+import org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationService;
+import org.apache.isis.extensions.secman.api.user.AccountType;
+import org.apache.isis.extensions.secman.api.user.ApplicationUserStatus;
+import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermission;
+import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermissionRepository;
+import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRole;
+import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRoleRepository;
+import org.apache.isis.extensions.secman.jdo.dom.tenancy.HasAtPath;
+import org.apache.isis.extensions.secman.jdo.seed.scripts.IsisModuleSecurityAdminRoleAndPermissions;
+import org.apache.isis.extensions.secman.jdo.seed.scripts.IsisModuleSecurityAdminUser;
+import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureId;
import lombok.Getter;
import lombok.Setter;
+import lombok.val;
@javax.jdo.annotations.PersistenceCapable(
identityType = IdentityType.DATASTORE,
@@ -676,7 +677,7 @@ public class ApplicationUser implements Comparable<ApplicationUser>, HasUsername
)
@MemberOrder(name="Status", sequence = "4")
public boolean isHasPassword() {
- return !Strings.isNullOrEmpty(getEncryptedPassword());
+ return !_Strings.isNullOrEmpty(getEncryptedPassword());
}
public boolean hideHasPassword() {
@@ -929,10 +930,10 @@ public class ApplicationUser implements Comparable<ApplicationUser>, HasUsername
if(cachedPermissionSet != null) {
return cachedPermissionSet;
}
- final List<ApplicationPermission> permissions = applicationPermissionRepository.findByUser(this);
+ val permissions = applicationPermissionRepository.findByUser(this);
return cachedPermissionSet =
new ApplicationPermissionValueSet(
- Iterables.transform(permissions, ApplicationPermission.Functions.AS_VALUE),
+ _Lists.map(permissions, ApplicationPermission.Functions.AS_VALUE),
permissionsEvaluationService);
}
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserRepository.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserRepository.java
index 1964d4c..1e59f8f 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserRepository.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserRepository.java
@@ -26,21 +26,19 @@ import javax.inject.Inject;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.value.Password;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.extensions.secman.api.encryption.PasswordEncryptionService;
import org.apache.isis.extensions.secman.api.user.AccountType;
import org.apache.isis.extensions.secman.api.user.ApplicationUserStatus;
import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRole;
import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRoleRepository;
-import com.google.common.collect.Lists;
-
@DomainService(
nature = NatureOfService.DOMAIN,
repositoryFor = ApplicationUser.class
@@ -57,7 +55,6 @@ public class ApplicationUserRepository {
* If the user does not exist, it will be automatically created.
* </p>
*/
- @Programmatic
public ApplicationUser findOrCreateUserByUsername(
final String username) {
// slightly unusual to cache a function that modifies state, but safe because this is idempotent
@@ -73,11 +70,8 @@ public class ApplicationUserRepository {
}, ApplicationUserRepository.class, "findOrCreateUserByUsername", username);
}
-
-
// -- findByUsername
- @Programmatic
public ApplicationUser findByUsernameCached(final String username) {
return queryResultsCache.execute(new Callable<ApplicationUser>() {
@Override public ApplicationUser call() throws Exception {
@@ -86,18 +80,14 @@ public class ApplicationUserRepository {
}, ApplicationUserRepository.class, "findByUsernameCached", username);
}
- @Programmatic
public ApplicationUser findByUsername(final String username) {
return repository.uniqueMatch(new QueryDefault<>(
ApplicationUser.class,
"findByUsername", "username", username));
}
-
-
// -- findByEmailAddress (programmatic)
- @Programmatic
public ApplicationUser findByEmailAddressCached(final String emailAddress) {
return queryResultsCache.execute(new Callable<ApplicationUser>() {
@Override public ApplicationUser call() throws Exception {
@@ -106,28 +96,23 @@ public class ApplicationUserRepository {
}, ApplicationUserRepository.class, "findByEmailAddressCached", emailAddress);
}
- @Programmatic
public ApplicationUser findByEmailAddress(final String emailAddress) {
return repository.uniqueMatch(new QueryDefault<>(
ApplicationUser.class,
"findByEmailAddress", "emailAddress", emailAddress));
}
-
// -- findByName
- @Programmatic
public List<ApplicationUser> find(final String search) {
final String regex = String.format("(?i).*%s.*", search.replace("*", ".*").replace("?", "."));
return repository.allMatches(new QueryDefault<>(
ApplicationUser.class,
"find", "regex", regex));
}
-
// -- newDelegateUser (action)
- @Programmatic
public ApplicationUser newDelegateUser(
final String username,
final ApplicationRole initialRole,
@@ -142,11 +127,9 @@ public class ApplicationUserRepository {
repository.persist(user);
return user;
}
-
// -- newLocalUser (action)
- @Programmatic
public ApplicationUser newLocalUser(
final String username,
final Password password,
@@ -174,7 +157,6 @@ public class ApplicationUserRepository {
return user;
}
- @Programmatic
public String validateNewLocalUser(
final String username,
final Password password,
@@ -186,8 +168,6 @@ public class ApplicationUserRepository {
return user.validateResetPassword(password, passwordRepeat);
}
-
-
// -- newLocalUserBasedOn (action)
public ApplicationUser newLocalUserBasedOn(
@@ -203,36 +183,27 @@ public class ApplicationUserRepository {
}
return user;
}
-
-
// -- allUsers
- @Programmatic
public List<ApplicationUser> findByAtPath(final String atPath) {
return repository.allMatches(new QueryDefault<>(
ApplicationUser.class,
"findByAtPath", "atPath", atPath));
}
-
-
-
// -- allUsers
- @Programmatic
public List<ApplicationUser> allUsers() {
return repository.allInstances(ApplicationUser.class);
}
-
-
@Action(semantics = SemanticsOf.SAFE)
public List<ApplicationUser> findMatching(final String search) {
if (search != null && search.length() > 0) {
return find(search);
}
- return Lists.newArrayList();
+ return _Lists.newArrayList();
}
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/facets/TenantedAuthorizationFacetFactory.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/facets/TenantedAuthorizationFacetFactory.java
index 7007b12..af1206f 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/facets/TenantedAuthorizationFacetFactory.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/facets/TenantedAuthorizationFacetFactory.java
@@ -18,16 +18,12 @@
*/
package org.apache.isis.extensions.secman.jdo.facets;
-import java.util.List;
+import java.util.Collections;
import java.util.stream.Collectors;
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.user.UserService;
+import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.extensions.secman.jdo.dom.tenancy.ApplicationTenancyEvaluator;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUserRepository;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -36,6 +32,8 @@ import org.apache.isis.metamodel.facetapi.FeatureType;
import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.runtime.system.context.IsisContext;
+import lombok.val;
+
public class TenantedAuthorizationFacetFactory extends FacetFactoryAbstract {
public TenantedAuthorizationFacetFactory() {
@@ -65,35 +63,34 @@ public class TenantedAuthorizationFacetFactory extends FacetFactoryAbstract {
}
private TenantedAuthorizationFacetDefault createFacet(
- final Class<?> cls, final FacetHolder holder) {
+ final Class<?> cls,
+ final FacetHolder holder) {
- ServiceRegistry serviceRegistry = IsisContext.getServiceRegistry();
+ val serviceRegistry = IsisContext.getServiceRegistry();
- List<ApplicationTenancyEvaluator> evaluators = serviceRegistry
+ val evaluators = serviceRegistry
.select(ApplicationTenancyEvaluator.class)
.stream()
- .collect(Collectors.toList());
+ .collect(Collectors.<ApplicationTenancyEvaluator>toList());
- final ImmutableList<ApplicationTenancyEvaluator> evaluatorsForCls =
- FluentIterable.from(evaluators).filter(new Predicate<ApplicationTenancyEvaluator>() {
- @Override
- public boolean apply(ApplicationTenancyEvaluator applicationTenancyEvaluator) {
- return applicationTenancyEvaluator.handles(cls);
- }
- }).toList();
+ val evaluatorsForCls = Collections.unmodifiableList(
+ _NullSafe.stream(evaluators)
+ .filter(applicationTenancyEvaluator->applicationTenancyEvaluator.handles(cls))
+ .collect(Collectors.<ApplicationTenancyEvaluator>toList()));
if(evaluatorsForCls.isEmpty()) {
return null;
}
- final ApplicationUserRepository applicationUserRepository =
+ val applicationUserRepository =
serviceRegistry.lookupService(ApplicationUserRepository.class).orElse(null);
- final QueryResultsCache queryResultsCache =
+ val queryResultsCache =
serviceRegistry.lookupService(QueryResultsCache.class).orElse(null);
- final UserService userService =
+ val userService =
serviceRegistry.lookupService(UserService.class).orElse(null);
- return new TenantedAuthorizationFacetDefault(evaluatorsForCls, applicationUserRepository, queryResultsCache, userService, holder);
+ return new TenantedAuthorizationFacetDefault(
+ evaluatorsForCls, applicationUserRepository, queryResultsCache, userService, holder);
}
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java
index 9abc465..b65cc69 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java
@@ -19,9 +19,12 @@
package org.apache.isis.extensions.secman.jdo.seed.scripts;
import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
import javax.inject.Inject;
+import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.extensions.fixtures.legacy.fixturescripts.FixtureScript;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
@@ -30,8 +33,7 @@ import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRole;
import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRoleRepository;
import org.apache.isis.metamodel.services.appfeat.ApplicationFeatureType;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
+import lombok.val;
public abstract class AbstractRoleAndPermissionsFixtureScript extends FixtureScript {
@@ -120,27 +122,23 @@ public abstract class AbstractRoleAndPermissionsFixtureScript extends FixtureScr
}
}
- private static Iterable<String> asFeatureFqns(Class<?>[] classes) {
- return Iterables.transform(Arrays.asList(classes), new Function<Class<?>, String>(){
- @Override
- public String apply(Class<?> input) {
- return input.getName();
- }
- });
+ private static List<String> asFeatureFqns(Class<?>[] classes) {
+ return _NullSafe.stream(classes)
+ .map(Class::getName)
+ .collect(Collectors.toList());
}
private static Iterable<String> asFeatureFqns(final Class<?> cls, final String[] members) {
- return Iterables.transform(Arrays.asList(members), new Function<String,String>(){
- @Override
- public String apply(String memberName) {
- final StringBuilder buf = new StringBuilder(cls.getName());
- if(!memberName.startsWith("#")) {
- buf.append("#");
- }
- buf.append(memberName);
- return buf.toString();
- }
- });
+ return _NullSafe.stream(members)
+ .map(memberName->{
+ val buf = new StringBuilder(cls.getName());
+ if(!memberName.startsWith("#")) {
+ buf.append("#");
+ }
+ buf.append(memberName);
+ return buf.toString();
+ })
+ .collect(Collectors.toList());
}
//region > (injected)
diff --git a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractUserAndRolesFixtureScript.java b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractUserAndRolesFixtureScript.java
index f0d59e9..fb737a7 100644
--- a/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractUserAndRolesFixtureScript.java
+++ b/extensions/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractUserAndRolesFixtureScript.java
@@ -24,6 +24,7 @@ import java.util.List;
import javax.inject.Inject;
import org.apache.isis.applib.value.Password;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.extensions.fixtures.legacy.fixturescripts.FixtureScript;
import org.apache.isis.extensions.secman.api.user.AccountType;
@@ -32,8 +33,6 @@ import org.apache.isis.extensions.secman.jdo.dom.role.ApplicationRoleRepository;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUser;
import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUserRepository;
-import com.google.common.collect.Lists;
-
public class AbstractUserAndRolesFixtureScript extends FixtureScript {
private final String username;
@@ -63,7 +62,7 @@ public class AbstractUserAndRolesFixtureScript extends FixtureScript {
this.emailAddress = emailAddress;
this.tenancyPath = tenancyPath;
this.accountType = accountType;
- this.roleNames = Collections.unmodifiableList(Lists.newArrayList(roleNames));
+ this.roleNames = Collections.unmodifiableList(_Lists.newArrayList(roleNames));
}
@Override
diff --git a/extensions/secman/pom.xml b/extensions/secman/pom.xml
index 5304b7d..ae30263 100644
--- a/extensions/secman/pom.xml
+++ b/extensions/secman/pom.xml
@@ -36,9 +36,6 @@
<properties>
<jar-plugin.automaticModuleName>org.apache.isis.extensions.secman</jar-plugin.automaticModuleName>
<git-plugin.propertiesDir>org/apache/isis/extensions/secman</git-plugin.propertiesDir>
-
- <jbcrypt.version>0.4</jbcrypt.version>
-
</properties>
<dependencies>
@@ -52,12 +49,6 @@
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-security</artifactId>
</dependency>
-
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <scope>provided</scope>
- </dependency>
</dependencies>