diff --git a/src/main/java/ch/eitchnet/privilege/i18n/AccessDeniedException.java b/src/main/java/ch/eitchnet/privilege/base/AccessDeniedException.java similarity index 96% rename from src/main/java/ch/eitchnet/privilege/i18n/AccessDeniedException.java rename to src/main/java/ch/eitchnet/privilege/base/AccessDeniedException.java index 818335103..0c8fa5283 100644 --- a/src/main/java/ch/eitchnet/privilege/i18n/AccessDeniedException.java +++ b/src/main/java/ch/eitchnet/privilege/base/AccessDeniedException.java @@ -17,7 +17,7 @@ * along with Privilege. If not, see . * */ -package ch.eitchnet.privilege.i18n; +package ch.eitchnet.privilege.base; /** * Exception thrown if access is denied during login, or if a certain privilege is not granted diff --git a/src/main/java/ch/eitchnet/privilege/i18n/PrivilegeException.java b/src/main/java/ch/eitchnet/privilege/base/PrivilegeException.java similarity index 97% rename from src/main/java/ch/eitchnet/privilege/i18n/PrivilegeException.java rename to src/main/java/ch/eitchnet/privilege/base/PrivilegeException.java index 0f9fe5111..dc254418a 100644 --- a/src/main/java/ch/eitchnet/privilege/i18n/PrivilegeException.java +++ b/src/main/java/ch/eitchnet/privilege/base/PrivilegeException.java @@ -17,7 +17,7 @@ * along with Privilege. If not, see . * */ -package ch.eitchnet.privilege.i18n; +package ch.eitchnet.privilege.base; /** * Main {@link RuntimeException} thrown if something goes wrong in Privilege diff --git a/src/main/java/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java b/src/main/java/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java index 1dbd99a0f..fb614673e 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java @@ -28,9 +28,9 @@ import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.helper.HashHelper; import ch.eitchnet.privilege.helper.XmlConstants; -import ch.eitchnet.privilege.i18n.PrivilegeException; /** *

diff --git a/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java b/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java index 9cc7e9127..a152e8cbd 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java @@ -31,9 +31,9 @@ import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ch.eitchnet.privilege.base.AccessDeniedException; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.helper.ClassHelper; -import ch.eitchnet.privilege.i18n.AccessDeniedException; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.model.Certificate; import ch.eitchnet.privilege.model.PrivilegeRep; import ch.eitchnet.privilege.model.Restrictable; @@ -718,7 +718,8 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler { DefaultPrivilegeHandler.logger.info("User " + username + " authenticated: " + session); } catch (RuntimeException e) { - DefaultPrivilegeHandler.logger.error("User " + username + " Failed to authenticate: " + e.getLocalizedMessage()); + DefaultPrivilegeHandler.logger.error("User " + username + " Failed to authenticate: " + + e.getLocalizedMessage()); throw e; } finally { clearPassword(password); @@ -786,7 +787,8 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler { Role role = this.persistenceHandler.getRole(roleName); if (role == null) { - DefaultPrivilegeHandler.logger.error("No role is defined with name " + roleName + " which is configured for user " + user); + DefaultPrivilegeHandler.logger.error("No role is defined with name " + roleName + + " which is configured for user " + user); continue; } @@ -1188,7 +1190,8 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler { this.sessionMap.put(sessionId, new CertificateSessionPair(session, systemUserCertificate)); // log - DefaultPrivilegeHandler.logger.info("The system user " + systemUsername + " is logged in with session " + session); + DefaultPrivilegeHandler.logger.info("The system user " + systemUsername + " is logged in with session " + + session); return systemUserCertificate; } diff --git a/src/main/java/ch/eitchnet/privilege/handler/PersistenceHandler.java b/src/main/java/ch/eitchnet/privilege/handler/PersistenceHandler.java index bba8f20c0..498f6e8e7 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/PersistenceHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/PersistenceHandler.java @@ -118,7 +118,7 @@ public interface PersistenceHandler { /** * Informs this {@link PersistenceHandler} to persist any changes which need to be saved * - * @return true if changes were persisted successfully, false if something went wrong + * @return true if changes were persisted successfully, false if nothing needed to be persisted */ public boolean persist(); diff --git a/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java b/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java index 4f2c54b2a..7889905e7 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java @@ -22,8 +22,8 @@ package ch.eitchnet.privilege.handler; import java.util.List; import java.util.Locale; -import ch.eitchnet.privilege.i18n.AccessDeniedException; -import ch.eitchnet.privilege.i18n.PrivilegeException; +import ch.eitchnet.privilege.base.AccessDeniedException; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.model.Certificate; import ch.eitchnet.privilege.model.PrivilegeRep; import ch.eitchnet.privilege.model.Restrictable; @@ -401,7 +401,7 @@ public interface PrivilegeHandler { *

* *

- * If the user is not the administrator, then a {@link ch.eitchnet.privilege.i18n.PrivilegeException} is thrown + * If the user is not the administrator, then a {@link ch.eitchnet.privilege.base.PrivilegeException} is thrown *

* * @param certificate diff --git a/src/main/java/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java b/src/main/java/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java index 2d5fc12b8..6ea6fda2e 100644 --- a/src/main/java/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java +++ b/src/main/java/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java @@ -35,9 +35,9 @@ import org.dom4j.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.helper.XmlConstants; import ch.eitchnet.privilege.helper.XmlHelper; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.model.UserState; import ch.eitchnet.privilege.model.internal.Privilege; import ch.eitchnet.privilege.model.internal.Role; @@ -150,11 +150,13 @@ public class XmlPersistenceHandler implements PersistenceHandler { throw new PrivilegeException("[" + PersistenceHandler.class.getName() + "] Defined parameter " + XmlConstants.XML_PARAM_MODEL_FILE + " is invalid"); } + // get model file File modelFile = new File(this.modelPath); boolean modelFileUnchanged = modelFile.exists() && modelFile.lastModified() == this.modelsFileDate; - if (!(modelFileUnchanged && this.roleMapDirty && this.userMapDirty)) { - XmlPersistenceHandler.logger.warn("Not persisting as current file is unchanged and model data is not dirty"); + if (modelFileUnchanged && !this.roleMapDirty && !this.userMapDirty) { + XmlPersistenceHandler.logger + .warn("Not persisting as current file is unchanged and model data is not dirty"); return false; } @@ -181,19 +183,14 @@ public class XmlPersistenceHandler implements PersistenceHandler { } rootElement.add(rolesElement); - // reset dirty states and return if something was dirty, false otherwise - if (this.userMapDirty || this.roleMapDirty) { - this.userMapDirty = false; - this.roleMapDirty = false; - - return true; - - } + // now write the file + XmlHelper.writeElement(rootElement, modelFile); + // reset dirty states this.userMapDirty = false; this.roleMapDirty = false; - return false; + return true; } /** @@ -259,10 +256,13 @@ public class XmlPersistenceHandler implements PersistenceHandler { * @see ch.eitchnet.privilege.handler.PersistenceHandler#initialize(java.util.Map) */ @Override - public void initialize(Map parameterMap) { + public void initialize(Map paramsMap) { + + // copy parameter map + this.parameterMap = Collections.unmodifiableMap(new HashMap(paramsMap)); // get and validate base bath - String basePath = parameterMap.get(XmlConstants.XML_PARAM_BASE_PATH); + String basePath = this.parameterMap.get(XmlConstants.XML_PARAM_BASE_PATH); File basePathF = new File(basePath); if (!basePathF.exists() && !basePathF.isDirectory()) { throw new PrivilegeException("[" + PersistenceHandler.class.getName() + "] Defined parameter " @@ -270,7 +270,7 @@ public class XmlPersistenceHandler implements PersistenceHandler { } // get model file name - String modelFileName = parameterMap.get(XmlConstants.XML_PARAM_MODEL_FILE); + String modelFileName = this.parameterMap.get(XmlConstants.XML_PARAM_MODEL_FILE); if (modelFileName == null || modelFileName.isEmpty()) { throw new PrivilegeException("[" + PersistenceHandler.class.getName() + "] Defined parameter " + XmlConstants.XML_PARAM_MODEL_FILE + " is invalid"); @@ -321,9 +321,11 @@ public class XmlPersistenceHandler implements PersistenceHandler { for (Element roleElement : rolesElementList) { String roleName = roleElement.getTextTrim(); if (roleName.isEmpty()) { - XmlPersistenceHandler.logger.error("User " + username + " has a role defined with no name, Skipped."); + XmlPersistenceHandler.logger.error("User " + username + + " has a role defined with no name, Skipped."); } else if (!this.roleMap.containsKey(roleName)) { - XmlPersistenceHandler.logger.error("User " + username + " has a inexistant role " + roleName + ", Skipped."); + XmlPersistenceHandler.logger.error("User " + username + " has a inexistant role " + roleName + + ", Skipped."); } else { roles.add(roleName); } diff --git a/src/main/java/ch/eitchnet/privilege/helper/ClassHelper.java b/src/main/java/ch/eitchnet/privilege/helper/ClassHelper.java index 41b10b775..5852805d8 100644 --- a/src/main/java/ch/eitchnet/privilege/helper/ClassHelper.java +++ b/src/main/java/ch/eitchnet/privilege/helper/ClassHelper.java @@ -19,7 +19,7 @@ */ package ch.eitchnet.privilege.helper; -import ch.eitchnet.privilege.i18n.PrivilegeException; +import ch.eitchnet.privilege.base.PrivilegeException; /** * The {@link ClassHelper} class is a helper to instantiate classes using reflection diff --git a/src/main/java/ch/eitchnet/privilege/helper/InitializationHelper.java b/src/main/java/ch/eitchnet/privilege/helper/InitializationHelper.java index 94ff3d9d2..401cdb5fd 100644 --- a/src/main/java/ch/eitchnet/privilege/helper/InitializationHelper.java +++ b/src/main/java/ch/eitchnet/privilege/helper/InitializationHelper.java @@ -29,11 +29,11 @@ import org.dom4j.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.handler.DefaultPrivilegeHandler; import ch.eitchnet.privilege.handler.EncryptionHandler; import ch.eitchnet.privilege.handler.PersistenceHandler; import ch.eitchnet.privilege.handler.PrivilegeHandler; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.policy.PrivilegePolicy; import ch.eitchnet.utils.helper.StringHelper; diff --git a/src/main/java/ch/eitchnet/privilege/helper/XmlHelper.java b/src/main/java/ch/eitchnet/privilege/helper/XmlHelper.java index eec3c9eb2..900c8ca87 100644 --- a/src/main/java/ch/eitchnet/privilege/helper/XmlHelper.java +++ b/src/main/java/ch/eitchnet/privilege/helper/XmlHelper.java @@ -37,7 +37,7 @@ import org.dom4j.io.XMLWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import ch.eitchnet.privilege.i18n.PrivilegeException; +import ch.eitchnet.privilege.base.PrivilegeException; /** * Helper class for performing XML based tasks using Dom4J diff --git a/src/main/java/ch/eitchnet/privilege/model/Certificate.java b/src/main/java/ch/eitchnet/privilege/model/Certificate.java index 87d30a3da..0d165e57c 100644 --- a/src/main/java/ch/eitchnet/privilege/model/Certificate.java +++ b/src/main/java/ch/eitchnet/privilege/model/Certificate.java @@ -23,8 +23,8 @@ import java.io.Serializable; import java.util.Locale; import java.util.Map; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.handler.PrivilegeHandler; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.model.internal.Session; /** diff --git a/src/main/java/ch/eitchnet/privilege/model/PrivilegeRep.java b/src/main/java/ch/eitchnet/privilege/model/PrivilegeRep.java index e13d6a1f4..ca3b596d9 100644 --- a/src/main/java/ch/eitchnet/privilege/model/PrivilegeRep.java +++ b/src/main/java/ch/eitchnet/privilege/model/PrivilegeRep.java @@ -22,8 +22,8 @@ package ch.eitchnet.privilege.model; import java.io.Serializable; import java.util.Set; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.handler.PrivilegeHandler; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.model.internal.Privilege; import ch.eitchnet.privilege.model.internal.Role; import ch.eitchnet.privilege.policy.PrivilegePolicy; diff --git a/src/main/java/ch/eitchnet/privilege/model/internal/Privilege.java b/src/main/java/ch/eitchnet/privilege/model/internal/Privilege.java index c62456fbd..55c4fe1a5 100644 --- a/src/main/java/ch/eitchnet/privilege/model/internal/Privilege.java +++ b/src/main/java/ch/eitchnet/privilege/model/internal/Privilege.java @@ -23,8 +23,8 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.handler.PrivilegeHandler; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.model.PrivilegeRep; import ch.eitchnet.privilege.model.Restrictable; import ch.eitchnet.privilege.policy.PrivilegePolicy; diff --git a/src/main/java/ch/eitchnet/privilege/model/internal/Role.java b/src/main/java/ch/eitchnet/privilege/model/internal/Role.java index ab929ffde..d6825717b 100644 --- a/src/main/java/ch/eitchnet/privilege/model/internal/Role.java +++ b/src/main/java/ch/eitchnet/privilege/model/internal/Role.java @@ -23,7 +23,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import ch.eitchnet.privilege.i18n.PrivilegeException; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.model.PrivilegeRep; import ch.eitchnet.privilege.model.RoleRep; diff --git a/src/main/java/ch/eitchnet/privilege/model/internal/Session.java b/src/main/java/ch/eitchnet/privilege/model/internal/Session.java index 7e3bb8614..4abcd08d5 100644 --- a/src/main/java/ch/eitchnet/privilege/model/internal/Session.java +++ b/src/main/java/ch/eitchnet/privilege/model/internal/Session.java @@ -19,8 +19,8 @@ */ package ch.eitchnet.privilege.model.internal; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.handler.PrivilegeHandler; -import ch.eitchnet.privilege.i18n.PrivilegeException; import ch.eitchnet.privilege.model.Certificate; /** diff --git a/src/main/java/ch/eitchnet/privilege/model/internal/User.java b/src/main/java/ch/eitchnet/privilege/model/internal/User.java index 9e12026ac..0405ecec3 100644 --- a/src/main/java/ch/eitchnet/privilege/model/internal/User.java +++ b/src/main/java/ch/eitchnet/privilege/model/internal/User.java @@ -26,7 +26,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; -import ch.eitchnet.privilege.i18n.PrivilegeException; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.model.UserRep; import ch.eitchnet.privilege.model.UserState; @@ -91,9 +91,6 @@ public final class User { if (username == null || username.isEmpty()) { throw new PrivilegeException("No username defined!"); } - - // password may be null, meaning not able to login - if (firstname == null || firstname.isEmpty()) { throw new PrivilegeException("No firstname defined!"); } @@ -104,9 +101,10 @@ public final class User { throw new PrivilegeException("No userState defined!"); } + // password may be null, meaning not able to login // roles may be null, meaning not able to login and must be added later - - // local may be null, meaning use system default + // locale may be null, meaning use system default + // properties may be null, meaning no properties this.userId = userId; @@ -117,11 +115,20 @@ public final class User { this.firstname = firstname; this.surname = surname; - this.roles = Collections.unmodifiableSet(roles); + if (roles == null) + this.roles = Collections.emptySet(); + else + this.roles = Collections.unmodifiableSet(roles); - this.locale = locale; + if (locale == null) + this.locale = Locale.getDefault(); + else + this.locale = locale; - this.propertyMap = Collections.unmodifiableMap(propertyMap); + if (propertyMap == null) + this.propertyMap = Collections.emptyMap(); + else + this.propertyMap = Collections.unmodifiableMap(propertyMap); } /** diff --git a/src/main/java/ch/eitchnet/privilege/policy/DefaultPrivilege.java b/src/main/java/ch/eitchnet/privilege/policy/DefaultPrivilege.java index ebb061656..3db6be69b 100644 --- a/src/main/java/ch/eitchnet/privilege/policy/DefaultPrivilege.java +++ b/src/main/java/ch/eitchnet/privilege/policy/DefaultPrivilege.java @@ -19,8 +19,8 @@ */ package ch.eitchnet.privilege.policy; -import ch.eitchnet.privilege.i18n.AccessDeniedException; -import ch.eitchnet.privilege.i18n.PrivilegeException; +import ch.eitchnet.privilege.base.AccessDeniedException; +import ch.eitchnet.privilege.base.PrivilegeException; import ch.eitchnet.privilege.model.Restrictable; import ch.eitchnet.privilege.model.internal.Privilege; import ch.eitchnet.privilege.model.internal.Role; diff --git a/src/main/java/ch/eitchnet/privilege/policy/PrivilegePolicy.java b/src/main/java/ch/eitchnet/privilege/policy/PrivilegePolicy.java index 50fc79837..62041e636 100644 --- a/src/main/java/ch/eitchnet/privilege/policy/PrivilegePolicy.java +++ b/src/main/java/ch/eitchnet/privilege/policy/PrivilegePolicy.java @@ -19,7 +19,7 @@ */ package ch.eitchnet.privilege.policy; -import ch.eitchnet.privilege.i18n.AccessDeniedException; +import ch.eitchnet.privilege.base.AccessDeniedException; import ch.eitchnet.privilege.model.Restrictable; import ch.eitchnet.privilege.model.internal.Privilege; import ch.eitchnet.privilege.model.internal.Role;