You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/07/28 11:23:09 UTC

[3/4] syncope git commit: [SYNCOPE-1174] More robust conf params' default value management

[SYNCOPE-1174] More robust conf params' default value management

This reverts commit 6634daaeebbe95fea9e1c104bc64d7b2e0d45e4b.


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/0c9f9585
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/0c9f9585
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/0c9f9585

Branch: refs/heads/2_0_X
Commit: 0c9f9585ba7a0c0c17eef4be511e8c372f808757
Parents: 6fecdc2
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Jul 28 10:02:10 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Jul 28 13:22:58 2017 +0200

----------------------------------------------------------------------
 .../apache/syncope/core/logic/GroupLogic.java   |  2 +-
 .../apache/syncope/core/logic/ReportLogic.java  |  6 +--
 .../apache/syncope/core/logic/SyncopeLogic.java |  6 +--
 .../apache/syncope/core/logic/TaskLogic.java    |  6 +--
 .../core/persistence/api/dao/ConfDAO.java       |  2 +-
 .../core/persistence/jpa/dao/JPAConfDAO.java    | 44 ++++----------------
 .../api/data/AccessTokenDataBinder.java         |  2 +-
 .../java/data/AccessTokenDataBinderImpl.java    | 15 ++-----
 .../java/data/ConnInstanceDataBinderImpl.java   |  2 +-
 .../java/data/ResourceDataBinderImpl.java       |  2 +-
 .../java/data/UserDataBinderImpl.java           |  9 ++--
 .../provisioning/java/job/JobManagerImpl.java   | 13 +++---
 .../notification/NotificationManagerImpl.java   |  2 +-
 .../core/spring/security/AuthDataAccessor.java  |  2 +-
 .../workflow/activiti/task/GenerateToken.java   |  4 +-
 .../workflow/flowable/task/GenerateToken.java   |  4 +-
 .../java/DefaultUserWorkflowAdapter.java        |  4 +-
 .../apache/syncope/core/logic/SAML2SPLogic.java |  2 +-
 18 files changed, 43 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
index 52946a6..8098de0 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
@@ -431,7 +431,7 @@ public class GroupLogic extends AbstractAnyLogic<GroupTO, GroupPatch> {
             Map<String, Object> jobDataMap = jobManager.register(
                     task,
                     null,
-                    confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                    confDAO.find("tasks.interruptMaxRetries", 1L));
 
             jobDataMap.put(TaskJob.DRY_RUN_JOBDETAIL_KEY, false);
             jobDataMap.put(GroupMemberProvisionTaskJobDelegate.GROUP_KEY_JOBDETAIL_KEY, key);

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
index 1f232ad..5243277 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
@@ -97,7 +97,7 @@ public class ReportLogic extends AbstractExecutableLogic<ReportTO> {
             jobManager.register(
                     report,
                     null,
-                    confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                    confDAO.find("tasks.interruptMaxRetries", 1L));
         } catch (Exception e) {
             LOG.error("While registering quartz job for report " + report.getKey(), e);
 
@@ -123,7 +123,7 @@ public class ReportLogic extends AbstractExecutableLogic<ReportTO> {
             jobManager.register(
                     report,
                     null,
-                    confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                    confDAO.find("tasks.interruptMaxRetries", 1L));
         } catch (Exception e) {
             LOG.error("While registering quartz job for report " + report.getKey(), e);
 
@@ -173,7 +173,7 @@ public class ReportLogic extends AbstractExecutableLogic<ReportTO> {
             jobManager.register(
                     report,
                     startAt,
-                    confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                    confDAO.find("tasks.interruptMaxRetries", 1L));
 
             scheduler.getScheduler().triggerJob(JobNamer.getJobKey(report));
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
index 03635bb..a309214 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
@@ -181,15 +181,15 @@ public class SyncopeLogic extends AbstractLogic<AbstractBaseBean> {
     private ImplementationLookup implLookup;
 
     public boolean isSelfRegAllowed() {
-        return confDAO.find("selfRegistration.allowed", "false").getValues().get(0).getBooleanValue();
+        return confDAO.find("selfRegistration.allowed", false);
     }
 
     public boolean isPwdResetAllowed() {
-        return confDAO.find("passwordReset.allowed", "false").getValues().get(0).getBooleanValue();
+        return confDAO.find("passwordReset.allowed", false);
     }
 
     public boolean isPwdResetRequiringSecurityQuestions() {
-        return confDAO.find("passwordReset.securityQuestion", "true").getValues().get(0).getBooleanValue();
+        return confDAO.find("passwordReset.securityQuestion", true);
     }
 
     @PreAuthorize("isAuthenticated()")

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
index a310e47..06e38d2 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
@@ -105,7 +105,7 @@ public class TaskLogic extends AbstractExecutableLogic<AbstractTaskTO> {
             jobManager.register(
                     task,
                     task.getStartAt(),
-                    confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                    confDAO.find("tasks.interruptMaxRetries", 1L));
         } catch (Exception e) {
             LOG.error("While registering quartz job for task " + task.getKey(), e);
 
@@ -133,7 +133,7 @@ public class TaskLogic extends AbstractExecutableLogic<AbstractTaskTO> {
             jobManager.register(
                     task,
                     task.getStartAt(),
-                    confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                    confDAO.find("tasks.interruptMaxRetries", 1L));
         } catch (Exception e) {
             LOG.error("While registering quartz job for task " + task.getKey(), e);
 
@@ -228,7 +228,7 @@ public class TaskLogic extends AbstractExecutableLogic<AbstractTaskTO> {
                     Map<String, Object> jobDataMap = jobManager.register(
                             (SchedTask) task,
                             startAt,
-                            confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
+                            confDAO.find("tasks.interruptMaxRetries", 1L));
 
                     jobDataMap.put(TaskJob.DRY_RUN_JOBDETAIL_KEY, dryRun);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
index 681ee67..b6fe304 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/ConfDAO.java
@@ -25,7 +25,7 @@ public interface ConfDAO extends DAO<Conf> {
 
     CPlainAttr find(String key);
 
-    CPlainAttr find(String key, String defaultValue);
+    <T> T find(String key, T defaultValue);
 
     Conf get();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
index 3e4ea2c..3f11fea 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
@@ -19,17 +19,9 @@
 package org.apache.syncope.core.persistence.jpa.dao;
 
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.conf.CPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.conf.Conf;
-import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr;
-import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue;
 import org.apache.syncope.core.persistence.jpa.entity.conf.JPAConf;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -38,17 +30,6 @@ public class JPAConfDAO extends AbstractDAO<Conf> implements ConfDAO {
 
     private static final String KEY = "cd64d66f-6fff-4008-b966-a06b1cc1436d";
 
-    private PlainSchemaDAO schemaDAO;
-
-    private PlainSchemaDAO schemaDAO() {
-        synchronized (this) {
-            if (schemaDAO == null) {
-                schemaDAO = ApplicationContextProvider.getApplicationContext().getBean(PlainSchemaDAO.class);
-            }
-        }
-        return schemaDAO;
-    }
-
     @Override
     public Conf get() {
         Conf instance = entityManager().find(JPAConf.class, KEY);
@@ -70,28 +51,17 @@ public class JPAConfDAO extends AbstractDAO<Conf> implements ConfDAO {
 
     @Transactional(readOnly = true)
     @Override
-    public CPlainAttr find(final String key, final String defaultValue) {
+    public <T> T find(final String key, final T defaultValue) {
         CPlainAttr result = find(key);
         if (result == null) {
-            PlainSchema schema = schemaDAO().find(key);
-            if (schema != null) {
-                JPACPlainAttr newAttr = new JPACPlainAttr();
-                newAttr.setSchema(schema);
-
-                PlainAttrValue attrValue;
-                if (newAttr.getSchema().isUniqueConstraint()) {
-                    attrValue = new JPACPlainAttrUniqueValue();
-                    ((PlainAttrUniqueValue) attrValue).setSchema(newAttr.getSchema());
-                } else {
-                    attrValue = new JPACPlainAttrValue();
-                }
-                newAttr.add(defaultValue, attrValue);
-
-                result = newAttr;
-            }
+            return defaultValue;
         }
 
-        return result;
+        return result.getUniqueValue() == null
+                ? result.getValues().isEmpty()
+                ? null
+                : result.getValues().get(0).<T>getValue()
+                : result.getUniqueValue().<T>getValue();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AccessTokenDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AccessTokenDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AccessTokenDataBinder.java
index be51926..065f5f7 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AccessTokenDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AccessTokenDataBinder.java
@@ -27,7 +27,7 @@ import org.apache.syncope.core.persistence.api.entity.AccessToken;
 
 public interface AccessTokenDataBinder {
 
-    Triple<String, String, Date> generateJWT(String subject, int duration, Map<String, Object> claims);
+    Triple<String, String, Date> generateJWT(String subject, long duration, Map<String, Object> claims);
 
     Pair<String, Date> create(String subject, Map<String, Object> claims, boolean replaceExisting);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AccessTokenDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AccessTokenDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AccessTokenDataBinderImpl.java
index b415fb2..f30562d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AccessTokenDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AccessTokenDataBinderImpl.java
@@ -38,7 +38,6 @@ import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
 import org.apache.syncope.core.persistence.api.entity.AccessToken;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.conf.CPlainAttr;
 import org.apache.syncope.core.provisioning.api.data.AccessTokenDataBinder;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.BeanUtils;
@@ -84,7 +83,7 @@ public class AccessTokenDataBinderImpl implements AccessTokenDataBinder {
 
     @Override
     public Triple<String, String, Date> generateJWT(
-            final String subject, final int duration, final Map<String, Object> claims) {
+            final String subject, final long duration, final Map<String, Object> claims) {
 
         credentialChecker.checkIsDefaultJWSKeyInUse();
 
@@ -125,17 +124,9 @@ public class AccessTokenDataBinderImpl implements AccessTokenDataBinder {
         }
 
         if (replaceExisting || body == null) {
-            int duration = 120;
-            CPlainAttr jwtLifetimeMins = confDAO.find("jwt.lifetime.minutes", "120");
-            if (jwtLifetimeMins != null) {
-                duration = jwtLifetimeMins.getValues().get(0).getLongValue().intValue();
-            } else {
-                LOG.warn("No schema found for 'jwt.lifetime.minutes'. Using default value of '120'");
-            }
-
             Triple<String, String, Date> created = generateJWT(
                     subject,
-                    duration,
+                    confDAO.find("jwt.lifetime.minutes", 120L),
                     claims);
 
             body = created.getMiddle();
@@ -174,7 +165,7 @@ public class AccessTokenDataBinderImpl implements AccessTokenDataBinder {
         credentialChecker.checkIsDefaultJWSKeyInUse();
 
         Date now = new Date();
-        int duration = confDAO.find("jwt.lifetime.minutes", "120").getValues().get(0).getLongValue().intValue();
+        long duration = confDAO.find("jwt.lifetime.minutes", 120L);
         Date expiry = new Date(now.getTime() + 60L * 1000L * duration);
         consumer.getJwtClaims().setExpiryTime(expiry.getTime());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
index 06a8021..0fc31f7 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
@@ -140,7 +140,7 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder {
 
         // 2. ensure the maximum history size is not exceeded
         List<ConnInstanceHistoryConf> history = connInstanceHistoryConfDAO.findByEntity(connInstance);
-        long maxHistorySize = confDAO.find("connector.conf.history.size", "10").getValues().get(0).getLongValue();
+        long maxHistorySize = confDAO.find("connector.conf.history.size", 10L);
         if (maxHistorySize < history.size()) {
             // always remove the last item since history was obtained  by a query with ORDER BY creation DESC
             for (int i = 0; i < history.size() - maxHistorySize; i++) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
index ba6da63..b21a605 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
@@ -127,7 +127,7 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
 
             // 2. ensure the maximum history size is not exceeded
             List<ExternalResourceHistoryConf> history = resourceHistoryConfDAO.findByEntity(resource);
-            long maxHistorySize = confDAO.find("resource.conf.history.size", "10").getValues().get(0).getLongValue();
+            long maxHistorySize = confDAO.find("resource.conf.history.size", 10L);
             if (maxHistorySize < history.size()) {
                 // always remove the last item since history was obtained  by a query with ORDER BY creation DESC
                 for (int i = 0; i < history.size() - maxHistorySize; i++) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index ed77df4..7c291c0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -116,7 +116,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
     @Transactional(readOnly = true)
     @Override
     public UserTO returnUserTO(final UserTO userTO) {
-        if (!confDAO.find("return.password.value", "false").getValues().get(0).getBooleanValue()) {
+        if (!confDAO.find("return.password.value", false)) {
             userTO.setPassword(null);
         }
         return userTO;
@@ -158,8 +158,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
 
     private void setPassword(final User user, final String password, final SyncopeClientCompositeException scce) {
         try {
-            String algorithm = confDAO.find(
-                    "password.cipher.algorithm", CipherAlgorithm.AES.name()).getValues().get(0).getStringValue();
+            String algorithm = confDAO.find("password.cipher.algorithm", CipherAlgorithm.AES.name());
             CipherAlgorithm predefined = CipherAlgorithm.valueOf(algorithm);
             user.setPassword(password, predefined);
         } catch (IllegalArgumentException e) {
@@ -642,8 +641,8 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
                 @Override
                 public MembershipTO transform(final Group group) {
                     MembershipTO membershipTO = new MembershipTO.Builder().
-                        group(group.getKey(), group.getName()).
-                        build();
+                            group(group.getKey(), group.getName()).
+                            build();
                     return membershipTO;
 
                 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/JobManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/JobManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/JobManagerImpl.java
index 0b2fba0..1af62c5 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/JobManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/JobManagerImpl.java
@@ -30,7 +30,6 @@ import java.util.Set;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.TaskType;
@@ -307,16 +306,16 @@ public class JobManagerImpl implements JobManager, SyncopeLoader {
             public Pair<String, Long> exec() {
                 String notificationJobCronExpression = StringUtils.EMPTY;
 
-                CPlainAttr notificationJobCronExp =
-                        confDAO.find("notificationjob.cronExpression", NotificationJob.DEFAULT_CRON_EXP);
-                if (!notificationJobCronExp.getValuesAsStrings().isEmpty()) {
+                CPlainAttr notificationJobCronExp = confDAO.find("notificationjob.cronExpression");
+                if (notificationJobCronExp == null) {
+                    notificationJobCronExpression = NotificationJob.DEFAULT_CRON_EXP;
+                } else if (!notificationJobCronExp.getValuesAsStrings().isEmpty()) {
                     notificationJobCronExpression = notificationJobCronExp.getValuesAsStrings().get(0);
                 }
 
-                long interruptMaxRetries =
-                        confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue();
+                long interruptMaxRetries = confDAO.find("tasks.interruptMaxRetries", 1L);
 
-                return ImmutablePair.of(notificationJobCronExpression, interruptMaxRetries);
+                return Pair.of(notificationJobCronExpression, interruptMaxRetries);
             }
         });
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
index 1e6f531..5438cee 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
@@ -162,7 +162,7 @@ public class NotificationManagerImpl implements NotificationManager {
     @Transactional(readOnly = true)
     @Override
     public long getMaxRetries() {
-        return confDAO.find("notification.maxRetries", "0").getValues().get(0).getLongValue();
+        return confDAO.find("notification.maxRetries", 0L);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
index 4668750..63e1cf1 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
@@ -221,7 +221,7 @@ public class AuthDataAccessor {
             boolean userModified = false;
             authenticated = AuthDataAccessor.this.authenticate(user, authentication.getCredentials().toString());
             if (authenticated) {
-                if (confDAO.find("log.lastlogindate", Boolean.toString(true)).getValues().get(0).getBooleanValue()) {
+                if (confDAO.find("log.lastlogindate", true)) {
                     user.setLastLoginDate(new Date());
                     userModified = true;
                 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/GenerateToken.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/GenerateToken.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/GenerateToken.java
index 9ce6941..a5e70e5 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/GenerateToken.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/GenerateToken.java
@@ -36,8 +36,8 @@ public class GenerateToken extends AbstractActivitiServiceTask {
                 getVariable(executionId, ActivitiUserWorkflowAdapter.USER, User.class);
 
         user.generateToken(
-                confDAO.find("token.length", "256").getValues().get(0).getLongValue().intValue(),
-                confDAO.find("token.expireTime", "60").getValues().get(0).getLongValue().intValue());
+                confDAO.find("token.length", 256L).intValue(),
+                confDAO.find("token.expireTime", 60L).intValue());
 
         engine.getRuntimeService().setVariable(executionId, ActivitiUserWorkflowAdapter.USER, user);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/GenerateToken.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/GenerateToken.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/GenerateToken.java
index adbd31a..08f6000 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/GenerateToken.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/GenerateToken.java
@@ -36,8 +36,8 @@ public class GenerateToken extends AbstractFlowableServiceTask {
                 getVariable(executionId, FlowableUserWorkflowAdapter.USER, User.class);
 
         user.generateToken(
-                confDAO.find("token.length", "256").getValues().get(0).getLongValue().intValue(),
-                confDAO.find("token.expireTime", "60").getValues().get(0).getLongValue().intValue());
+                confDAO.find("token.length", 256L).intValue(),
+                confDAO.find("token.expireTime", 60L).intValue());
 
         engine.getRuntimeService().setVariable(executionId, FlowableUserWorkflowAdapter.USER, user);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
index a5f7361..f1cf759 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
@@ -132,8 +132,8 @@ public class DefaultUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     @Override
     protected void doRequestPasswordReset(final User user) {
         user.generateToken(
-                confDAO.find("token.length", "256").getValues().get(0).getLongValue().intValue(),
-                confDAO.find("token.expireTime", "60").getValues().get(0).getLongValue().intValue());
+                confDAO.find("token.length", 256L).intValue(),
+                confDAO.find("token.expireTime", 60L).intValue());
         userDAO.save(user);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/0c9f9585/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
index 59d6c2c..ab999d9 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
@@ -123,7 +123,7 @@ import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 @Component
 public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
 
-    private static final Integer JWT_RELAY_STATE_DURATION = 5;
+    private static final long JWT_RELAY_STATE_DURATION = 5L;
 
     private static final String JWT_CLAIM_IDP_DEFLATE = "IDP_DEFLATE";