You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/09/30 17:20:32 UTC

[isis] 01/04: ISIS-2086: refactors 'isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated' to type-safe config

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2086
in repository https://gitbox.apache.org/repos/asf/isis.git

commit c0914541b2e3d509bbec5508f4ed0fe0056f0df2
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Sep 30 18:12:34 2019 +0100

    ISIS-2086: refactors 'isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated' to type-safe config
---
 .../org/apache/isis/config/IsisConfiguration.java  | 23 +++++++++-------------
 .../DomainServiceFacetAnnotationFactory.java       |  4 ++--
 ...jectSpecIdFacetDerivedFromClassNameFactory.java |  2 +-
 .../isis/jdo/persistence/PersistenceSession5.java  |  2 +-
 .../shiro/authentication/ShiroAuthenticator.java   | 13 ++++++------
 5 files changed, 20 insertions(+), 24 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 0e2a720..e507d13 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -61,14 +61,21 @@ import org.springframework.stereotype.Component;
 @Data
 public class IsisConfiguration {
 
-
+    private final Authentication authentication = new Authentication();
+    @Data
+    public static class Authentication {
+        private final Shiro shiro = new Shiro();
+        @Data
+        public static class Shiro {
+            private boolean autoLogoutIfAlreadyAuthenticated = false;
+        }
+    }
     private final Objects objects = new Objects();
     @Data
     public static class Objects {
         private EditingObjectsConfiguration editing = EditingObjectsConfiguration.TRUE;
     }
 
-    // // isis.persistor.datanucleus
     private final Persistor persistor = new Persistor();
     @Data
     public static class Persistor {
@@ -298,18 +305,6 @@ public class IsisConfiguration {
     private final Service service = new Service();
     @Data
     public static class Service {
-        // isis.service.email.sender.username
-        // isis.service.email.sender.address
-        // isis.service.email.sender.password
-        // isis.service.email.sender.hostname
-        // isis.service.email.port
-        // isis.service.email.socketTimeout
-        // isis.service.email.socketConnectionTimeout
-        // isis.service.email.tls.enabled
-        // isis.service.email.throwExceptionOnFail
-        // isis.service.email.override.to
-        // isis.service.email.override.cc
-        // isis.service.email.override.bcc
         private final Email email = new Email();
         @Data
         public static class Email {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
index 6a8307a..8e96a67 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
@@ -82,7 +82,7 @@ implements MetaModelValidatorRefiner {
                     + " convert into a mixin (@Mixin annotation) instead",
                     cls.getName(),
                     natureOfService,
-                    "isis.reflector.validator.mixinsOnly");
+                    "'isis.reflector.validator.mixinsOnly'");
             
             mixinOnlyValidator.addFailure(Identifier.classIdentifier(cls), msg);
             break;
@@ -129,7 +129,7 @@ implements MetaModelValidatorRefiner {
                             thisSpec.getIdentifier(),
                             "%s: services can only have actions ('%s' config property), not properties or collections; annotate with @Programmatic if required.  Found: %s",
                             thisSpec.getFullIdentifier(),
-                            "isis.reflector.validator.serviceActionsOnly",
+                            "'isis.reflector.validator.serviceActionsOnly'",
                             associationNames);
                 }
             }));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
index f444091..0756f84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
@@ -131,7 +131,7 @@ implements MetaModelValidatorRefiner, ObjectSpecIdFacetFactory {
                                             + "Use @Discriminator, @DomainObject(objectType=...) or "
                                             + "@PersistenceCapable(schema=...) to specify explicitly.",
                                     objectSpec.getFullIdentifier(),
-                                    "isis.reflector.validator.explicitObjectType");
+                                    "'isis.reflector.validator.explicitObjectType'");
                         }
                     }
 
diff --git a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
index 74fc8c1..58814e1 100644
--- a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
+++ b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
@@ -432,7 +432,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
      */
     private FixturesInstalledState initialStateFromConfig() {
         val installFixtures = configuration.getPersistor().getDatanucleus().isInstallFixtures();
-        log.info("isFixturesInstalled: {} = {}", "isis.persistor.datanucleus.install-fixtures", installFixtures);
+        log.info("isFixturesInstalled: {} = {}", "'isis.persistor.datanucleus.install-fixtures'", installFixtures);
 
         val objectStoreIsFixturesInstalled = !installFixtures;
         val initialStateFromConfig = objectStoreIsFixturesInstalled
diff --git a/core/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/ShiroAuthenticator.java b/core/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/ShiroAuthenticator.java
index 420609a..b5e92b4 100644
--- a/core/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/ShiroAuthenticator.java
+++ b/core/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/ShiroAuthenticator.java
@@ -23,6 +23,7 @@ import java.util.Collections;
 import java.util.Set;
 import java.util.stream.Stream;
 
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationInfo;
@@ -53,6 +54,8 @@ import static org.apache.isis.config.internal._Config.getConfiguration;
 
 import lombok.extern.log4j.Log4j2;
 
+import javax.inject.Inject;
+
 /**
  * If Shiro is configured for both {@link AuthenticationManagerInstaller authentication} and
  * {@link AuthorizationManagerInstaller authorization} (as recommended), then this class is
@@ -66,16 +69,14 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2
 public class ShiroAuthenticator implements Authenticator {
 
-    private static final String ISIS_AUTHENTICATION_SHIRO_AUTO_LOGOUT_KEY = "isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated";
-    private static final boolean ISIS_AUTHENTICATION_SHIRO_AUTO_LOGOUT_DEFAULT = false;
-
     // -- constructor and fields
     private final boolean autoLogout;
 
+    @Inject
+    IsisConfiguration configuration;
+
     public ShiroAuthenticator() {
-        autoLogout = getConfiguration().getBoolean(
-                ISIS_AUTHENTICATION_SHIRO_AUTO_LOGOUT_KEY,
-                ISIS_AUTHENTICATION_SHIRO_AUTO_LOGOUT_DEFAULT);
+        autoLogout = configuration.getAuthentication().getShiro().isAutoLogoutIfAlreadyAuthenticated();
     }
 
     // -- init, shutdown