From 712e5c3a4e4d4cad0d2908bbe554bfac70139b38 Mon Sep 17 00:00:00 2001 From: jensp Date: Mon, 11 Jan 2016 14:19:56 +0000 Subject: [PATCH] CCM NG: Some cleanup, and new KernelConfig class git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3779 8810af33-2d31-482b-a856-94f89814c4df --- .../main/java/com/arsdigita/bebop/Page.java | 4 +- .../com/arsdigita/bebop/SimpleComponent.java | 4 +- .../arsdigita/bebop/page/PageTransformer.java | 4 +- .../dispatcher/DispatcherHelper.java | 4 +- .../globalization/GlobalizationHelper.java | 8 +- .../com/arsdigita/kernel/KernelConfig.java | 313 +++++++++--------- .../arsdigita/kernel/LegacyKernelConfig.java | 203 ++++++++++++ .../com/arsdigita/templating/Templating.java | 4 +- .../java/com/arsdigita/ui/admin/UserForm.java | 4 +- .../ui/login/ChangePasswordForm.java | 4 +- .../java/com/arsdigita/ui/login/UserForm.java | 4 +- .../com/arsdigita/ui/login/UserLoginForm.java | 12 +- .../com/arsdigita/ui/login/UserNewForm.java | 8 +- .../main/java/com/arsdigita/web/Debugger.java | 8 +- .../org/libreccm/security/CcmShiroRealm.java | 4 +- .../java/org/libreccm/security/Shiro.java | 6 +- .../kernel/KernelConfigDescription.properties | 10 + ...> LegacyKernelConfig_parameter.properties} | 0 ...gTest.java => LegacyKernelConfigTest.java} | 8 +- .../kernel/security/SecurityConfigTest.java | 4 +- .../ConfigurationManagerTest.java | 13 +- .../configuration/ExampleConfiguration.java | 12 + .../AuthorizationInterceptorTest.java | 4 +- .../libreccm/security/GroupManagerTest.java | 4 +- .../security/PermissionCheckerTest.java | 4 +- .../security/PermissionManagerTest.java | 4 +- .../libreccm/security/RoleManagerTest.java | 4 +- .../security/SecuredCollectionTest.java | 4 +- .../security/SecuredIteratorTest.java | 4 +- .../java/org/libreccm/security/ShiroTest.java | 4 +- .../libreccm/security/UserManagerTest.java | 4 +- .../ConfigurationManagerTest/data.yml | 9 + 32 files changed, 467 insertions(+), 219 deletions(-) create mode 100644 ccm-core/src/main/java/com/arsdigita/kernel/LegacyKernelConfig.java create mode 100644 ccm-core/src/main/resources/com/arsdigita/kernel/KernelConfigDescription.properties rename ccm-core/src/main/resources/com/arsdigita/kernel/{KernelConfig_parameter.properties => LegacyKernelConfig_parameter.properties} (100%) rename ccm-core/src/test/java/com/arsdigita/kernel/{KernelConfigTest.java => LegacyKernelConfigTest.java} (96%) diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/Page.java b/ccm-core/src/main/java/com/arsdigita/bebop/Page.java index 6ec4cc0de..0a7d1a40e 100755 --- a/ccm-core/src/main/java/com/arsdigita/bebop/Page.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/Page.java @@ -26,7 +26,7 @@ import com.arsdigita.bebop.parameters.BitSetParameter; import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.util.Traversal; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.util.Assert; import com.arsdigita.util.SystemInformation; import com.arsdigita.xml.Document; @@ -625,7 +625,7 @@ public class Page extends SimpleComponent implements Container { m_panel.generateXML(state, page); } - if (KernelConfig.getConfig().isDebugEnabled() + if (LegacyKernelConfig.getConfig().isDebugEnabled() && debugStructure(state.getRequest())) { Element structure = page.newChildElement("bebop:structure", diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/SimpleComponent.java b/ccm-core/src/main/java/com/arsdigita/bebop/SimpleComponent.java index 06eef74e3..fd5c58bd7 100755 --- a/ccm-core/src/main/java/com/arsdigita/bebop/SimpleComponent.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/SimpleComponent.java @@ -22,7 +22,7 @@ import java.util.Collections; import java.util.Iterator; import com.arsdigita.bebop.util.Attributes; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.util.Assert; import com.arsdigita.xml.Element; @@ -294,7 +294,7 @@ public class SimpleComponent extends Completable if (m_attr != null) { m_attr.exportAttributes(target); } - if (KernelConfig.getConfig().isDebugEnabled() || + if (LegacyKernelConfig.getConfig().isDebugEnabled() || Bebop.getConfig().showClassName()) { target.addAttribute("bebop:classname", getClass().getName(), BEBOP_XML_NS); diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/page/PageTransformer.java b/ccm-core/src/main/java/com/arsdigita/bebop/page/PageTransformer.java index 0033a7fd8..3f053bc36 100755 --- a/ccm-core/src/main/java/com/arsdigita/bebop/page/PageTransformer.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/page/PageTransformer.java @@ -22,7 +22,7 @@ import com.arsdigita.bebop.Bebop; import com.arsdigita.dispatcher.DispatcherHelper; import com.arsdigita.globalization.Globalization; import com.arsdigita.globalization.GlobalizationHelper; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.templating.PresentationManager; import com.arsdigita.templating.Templating; import com.arsdigita.templating.XSLParameterGenerator; @@ -454,7 +454,7 @@ public class PageTransformer implements PresentationManager { } // copy and paste from BasePresentationManager - if (KernelConfig.getConfig().isDebugEnabled()) { + if (LegacyKernelConfig.getConfig().isDebugEnabled()) { Document origDoc = (Document) req.getAttribute( "com.arsdigita.xml.Document"); Debugger.addDebugger(new TransformationDebugger(template. diff --git a/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherHelper.java b/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherHelper.java index 47b660056..35d44627a 100644 --- a/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherHelper.java +++ b/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherHelper.java @@ -19,7 +19,7 @@ package com.arsdigita.dispatcher; //import com.arsdigita.kernel.Kernel; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.util.Assert; import com.arsdigita.util.ParameterProvider; import com.arsdigita.util.StringUtils; @@ -1135,7 +1135,7 @@ public final class DispatcherHelper implements DispatcherConstants { * @return The negotiated locale */ public static Locale getNegotiatedLocale() { - KernelConfig kernelConfig = KernelConfig.getConfig(); + LegacyKernelConfig kernelConfig = LegacyKernelConfig.getConfig(); // Set the preferedLocale to the default locale (first entry in the // config parameter list) diff --git a/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationHelper.java b/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationHelper.java index 1d5783b56..b0adefcd5 100644 --- a/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationHelper.java +++ b/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationHelper.java @@ -5,7 +5,7 @@ package com.arsdigita.globalization; import com.arsdigita.dispatcher.DispatcherHelper; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import java.util.Enumeration; import javax.servlet.ServletRequest; import java.util.Locale; @@ -19,7 +19,7 @@ import javax.servlet.http.HttpSession; */ public class GlobalizationHelper { - public static final String LANG_INDEPENDENT = KernelConfig.getConfig().getLanguagesIndependentCode(); + public static final String LANG_INDEPENDENT = LegacyKernelConfig.getConfig().getLanguagesIndependentCode(); private static final String LANG_PARAM = "lang"; // Don't instantiate @@ -34,7 +34,7 @@ public class GlobalizationHelper { * @return The negotiated locale */ public static java.util.Locale getNegotiatedLocale() { - KernelConfig kernelConfig = KernelConfig.getConfig(); + LegacyKernelConfig kernelConfig = LegacyKernelConfig.getConfig(); // Set the preferedLocale to the default locale (first entry in the config parameter list) java.util.Locale preferedLocale = getPrefferedLocale(); @@ -81,7 +81,7 @@ public class GlobalizationHelper { // // } private static Locale getPrefferedLocale() { - KernelConfig kernelConfig = KernelConfig.getConfig(); + LegacyKernelConfig kernelConfig = LegacyKernelConfig.getConfig(); java.util.Locale preferedLocale = new java.util.Locale(kernelConfig.getDefaultLanguage(), "", ""); return preferedLocale; } diff --git a/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java b/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java index 342a8dbd0..8257d7a0b 100644 --- a/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java +++ b/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java @@ -1,203 +1,214 @@ /* - * Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. + * Copyright (C) 2016 LibreCCM Foundation. * * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA */ package com.arsdigita.kernel; -import com.arsdigita.runtime.AbstractConfig; -import com.arsdigita.util.parameter.BooleanParameter; -import com.arsdigita.util.parameter.EnumerationParameter; -import com.arsdigita.util.parameter.Parameter; -import com.arsdigita.util.parameter.StringParameter; -import java.util.StringTokenizer; - -import org.apache.log4j.Logger; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; +import org.libreccm.configuration.Configuration; +import org.libreccm.configuration.Setting; /** - * @author Justin Ross - * @see com.arsdigita.kernel.Kernel - * @version $Id$ + * + * @author Jens Pelzetter */ -public final class KernelConfig extends AbstractConfig { +@Configuration(descBundle = "com.arsdigita.kernel.KernelConfigDescription", + descKey = "kernel.config.description") +public final class KernelConfig { - /** A logger instance. */ - private static final Logger s_log = Logger.getLogger(KernelConfig.class); + @Setting(descKey = "kernel.config.debug_enabled") + private boolean debugEnabled = false; - /** Singelton config object. */ - private static KernelConfig s_conf; + @Setting(descKey = "kernel.config.webdev_support_enabled") + private boolean webdevSupportEnabled = false; - /** - * Gain a KernelConfig object. - * - * Singelton pattern, don't instantiate a KernelConfig object using the - * constructor directly! - * @return - */ - public static synchronized KernelConfig getConfig() { - if (s_conf == null) { - s_conf = new KernelConfig(); - s_conf.load(); - } + @Setting(descKey = "kernel.config.data_permission_check_enabled") + private boolean dataPermissionCheckEnabled = true; - return s_conf; - } + @Setting(descKey = "kernel.config.primary_user_identifier") + private String primaryUserIdentifier = "email"; - /** TODO: should be renamed waf.kernel.debug" */ - private static Parameter m_debug = new BooleanParameter - ("waf.debug", Parameter.REQUIRED, Boolean.FALSE); - /** Whether WEB development support should be activated (true) or not. */ - // Handled in OLD initializer c.ad.webdevsupport.LegacyInitializer - private static Parameter m_webdevSupport = new BooleanParameter - ("waf.webdev_support", Parameter.REQUIRED, Boolean.FALSE); - private final Parameter m_permissions = new BooleanParameter - ("waf.kernel.data_permission_check_enabled", Parameter.REQUIRED, - Boolean.TRUE); - /** User Login by screen name or email address */ - private final EnumerationParameter m_identifier = new EnumerationParameter - ("waf.kernel.primary_user_identifier", Parameter.REQUIRED, - "email"); - /** - * */ - private final Parameter m_SSO = new BooleanParameter - ("waf.kernel.sso_login", Parameter.REQUIRED, Boolean.FALSE); + @Setting(descKey = "kernel.config.sso_enabled") + private boolean ssoEnabled = false; - /** - * */ - private final Parameter m_remember = new BooleanParameter - ("waf.kernel.remember_login", Parameter.REQUIRED, Boolean.TRUE); + @Setting(descKey = "kernel.config.remember_login_enabled") + private boolean rememberLoginEnabled = true; - /** - * */ - private final Parameter m_secureLogin = new BooleanParameter - ("waf.kernel.secure_login", Parameter.REQUIRED, Boolean.FALSE); + @Setting(descKey = "kernel_config.secure_login_enabled") + private boolean secureLoginEnabled = false; - /** String containing the supported languages. - The first one is considered default. */ - private final Parameter m_supportedLanguages = new StringParameter - ("waf.kernel.supported_languages", Parameter.REQUIRED, - "en,de,fr,nl,it,pt,es"); - private final Parameter m_languageIndependentItems = new BooleanParameter - ("waf.kernel.language_independent_items", Parameter.REQUIRED, Boolean.FALSE); - private final Parameter m_languageIndependentCode = new StringParameter - ("waf.kernel.language_independent_code", Parameter.OPTIONAL, - "--"); + @Setting(descKey = "kernel.config.supported_languages") + private Set supportedLanguages = new HashSet<>( + Arrays.asList(new String[]{"en"})); - /** - * Constructor - */ public KernelConfig() { + super(); - // Add recognised Login user identification to enumeration parameter - m_identifier.put("email", "email"); - m_identifier.put("screen_name", "screenName"); - - - register(m_debug); - register(m_webdevSupport); - register(m_permissions); - register(m_identifier); - register(m_SSO); - register(m_remember); - register(m_secureLogin); - register(m_supportedLanguages); - register(m_languageIndependentItems); - register(m_languageIndependentCode); - - loadInfo(); } - - public final boolean isDebugEnabled() { - return ((Boolean) get(m_debug)).booleanValue(); + public boolean isDebugEnabled() { + return debugEnabled; } - /** - * Return true, if WEB developer support should be activated. - */ - public final boolean isWebdevSupportActive() { - return ((Boolean) get(m_webdevSupport)).booleanValue(); + public void setDebugEnabled(final boolean debugEnabled) { + this.debugEnabled = debugEnabled; } - public final boolean isDataPermissionCheckEnabled() { - return ((Boolean) get(m_permissions)).booleanValue(); + public boolean isWebdevSupportEnabled() { + return webdevSupportEnabled; } - public final String getPrimaryUserIdentifier() { - return (String) get(m_identifier); - } - - public final boolean emailIsPrimaryIdentifier() { - return "email".equals(get(m_identifier)); - } - - public final boolean screenNameIsPrimaryIdentifier() { - return !emailIsPrimaryIdentifier(); - } - - public final boolean isSSOenabled() { - return ((Boolean) get(m_SSO)).booleanValue(); + public void setWebdevSupportEnabled(final boolean webdevSupportEnabled) { + this.webdevSupportEnabled = webdevSupportEnabled; } - // XXX Move this to WebConfig. - public final boolean isLoginRemembered() { - return ((Boolean) get(m_remember)).booleanValue(); - } - - public final boolean isSecureLoginRequired() { - return ((Boolean) get(m_secureLogin)).booleanValue(); + public boolean isDataPermissionCheckEnabled() { + return dataPermissionCheckEnabled; } - /** - * Returns the defaultLanguage flag. - */ - public final String getDefaultLanguage() { - return ((String) get(m_supportedLanguages)).trim().substring(0, 2); + public void setDataPermissionCheckEnabled( + final boolean dataPermissionCheckEnabled) { + this.dataPermissionCheckEnabled = dataPermissionCheckEnabled; } - /** - * Returns the supportedLanguages as String. - */ - public final String getSupportedLanguages() { - return (String) get(m_supportedLanguages); + public String getPrimaryUserIdentifier() { + return primaryUserIdentifier; } - /** - * Returns the supportedLanguages as StringTokenizer. - */ - public final StringTokenizer getSupportedLanguagesTokenizer() { - return new StringTokenizer(this.getSupportedLanguages(), ",", false); + public void setPrimaryUserIdentifier(final String primaryUserIdentifier) { + if ("screen_name".equals(primaryUserIdentifier) + || "email".equals(primaryUserIdentifier)) { + this.primaryUserIdentifier = primaryUserIdentifier; + } else { + throw new IllegalArgumentException( + "Primary user identifier can only be \"screen_name\" or " + + "\"email\""); + } } - /** - * Returns the languagesIndependentCode as String. - */ - public final String getLanguagesIndependentCode() { - return (String) get(m_languageIndependentCode); + public boolean isSsoEnabled() { + return ssoEnabled; } - /** - * Return true, if language lang is part of supported langs - */ - public final boolean hasLanguage(String lang) { - return ((String) get(m_supportedLanguages)).contains(lang); + public void setSsoEnabled(final boolean ssoEnabled) { + this.ssoEnabled = ssoEnabled; } - public final boolean languageIndependentItems() { - return ((Boolean) get(m_languageIndependentItems)).booleanValue(); + public boolean isRememberLoginEnabled() { + return rememberLoginEnabled; } + public void setRememberLoginEnabled(final boolean rememberLoginEnabled) { + this.rememberLoginEnabled = rememberLoginEnabled; + } + + public boolean isSecureLoginEnabled() { + return secureLoginEnabled; + } + + public void setSecureLoginEnabled(final boolean secureLoginEnabled) { + this.secureLoginEnabled = secureLoginEnabled; + } + + public Set getSupportedLanguages() { + return supportedLanguages; + } + + public void setSupportedLanguages(final Set supportedLanguages) { + this.supportedLanguages = supportedLanguages; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 61 * hash + (debugEnabled ? 1 : 0); + hash = 61 * hash + (webdevSupportEnabled ? 1 : 0); + hash = 61 * hash + (dataPermissionCheckEnabled ? 1 : 0); + hash = 61 * hash + Objects.hashCode(primaryUserIdentifier); + hash = 61 * hash + (ssoEnabled ? 1 : 0); + hash = 61 * hash + (rememberLoginEnabled ? 1 : 0); + hash = 61 * hash + (secureLoginEnabled ? 1 : 0); + hash = 61 * hash + Objects.hashCode(supportedLanguages); + return hash; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof KernelConfig)) { + return false; + } + final KernelConfig other = (KernelConfig) obj; + if (debugEnabled != other.debugEnabled) { + return false; + } + if (webdevSupportEnabled != other.webdevSupportEnabled) { + return false; + } + if (dataPermissionCheckEnabled != other.dataPermissionCheckEnabled) { + return false; + } + if (ssoEnabled != other.ssoEnabled) { + return false; + } + if (rememberLoginEnabled != other.rememberLoginEnabled) { + return false; + } + if (secureLoginEnabled != other.secureLoginEnabled) { + return false; + } + if (!Objects.equals(primaryUserIdentifier, + other.primaryUserIdentifier)) { + return false; + } + return Objects.equals(supportedLanguages, other.supportedLanguages); + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + supportedLanguages.forEach(s -> builder.append(s)); + + return String.format("%s{ " + + "debugEnabled = %b, " + + "webdevSupportEnabled = %b, " + + "dataPermissionCheckEnabled = %b, " + + "primaryUserIdentifier = \"%s\", " + + "ssoEnabled = %b, " + + "rememberLoginEnabeled = %b, " + + "secureLoginEnabled = %b, " + + "supportedLanguages = \"%s\"" + + " }", + super.toString(), + debugEnabled, + webdevSupportEnabled, + dataPermissionCheckEnabled, + primaryUserIdentifier, + ssoEnabled, + rememberLoginEnabled, + secureLoginEnabled, + builder.toString()); + } } diff --git a/ccm-core/src/main/java/com/arsdigita/kernel/LegacyKernelConfig.java b/ccm-core/src/main/java/com/arsdigita/kernel/LegacyKernelConfig.java new file mode 100644 index 000000000..d503af840 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/kernel/LegacyKernelConfig.java @@ -0,0 +1,203 @@ +/* + * Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.kernel; + +import com.arsdigita.runtime.AbstractConfig; +import com.arsdigita.util.parameter.BooleanParameter; +import com.arsdigita.util.parameter.EnumerationParameter; +import com.arsdigita.util.parameter.Parameter; +import com.arsdigita.util.parameter.StringParameter; +import java.util.StringTokenizer; + +import org.apache.log4j.Logger; + +/** + * @author Justin Ross + * @see com.arsdigita.kernel.Kernel + * @version $Id$ + */ +public final class LegacyKernelConfig extends AbstractConfig { + + /** A logger instance. */ + private static final Logger s_log = Logger.getLogger(LegacyKernelConfig.class); + + /** Singelton config object. */ + private static LegacyKernelConfig s_conf; + + /** + * Gain a LegacyKernelConfig object. + * + * Singelton pattern, don't instantiate a LegacyKernelConfig object using the + constructor directly! + * @return + */ + public static synchronized LegacyKernelConfig getConfig() { + if (s_conf == null) { + s_conf = new LegacyKernelConfig(); + s_conf.load(); + } + + return s_conf; + } + + /** TODO: should be renamed waf.kernel.debug" */ + private static Parameter m_debug = new BooleanParameter + ("waf.debug", Parameter.REQUIRED, Boolean.FALSE); + /** Whether WEB development support should be activated (true) or not. */ + // Handled in OLD initializer c.ad.webdevsupport.LegacyInitializer + private static Parameter m_webdevSupport = new BooleanParameter + ("waf.webdev_support", Parameter.REQUIRED, Boolean.FALSE); + private final Parameter m_permissions = new BooleanParameter + ("waf.kernel.data_permission_check_enabled", Parameter.REQUIRED, + Boolean.TRUE); + /** User Login by screen name or email address */ + private final EnumerationParameter m_identifier = new EnumerationParameter + ("waf.kernel.primary_user_identifier", Parameter.REQUIRED, + "email"); + /** + * */ + private final Parameter m_SSO = new BooleanParameter + ("waf.kernel.sso_login", Parameter.REQUIRED, Boolean.FALSE); + + /** + * */ + private final Parameter m_remember = new BooleanParameter + ("waf.kernel.remember_login", Parameter.REQUIRED, Boolean.TRUE); + + /** + * */ + private final Parameter m_secureLogin = new BooleanParameter + ("waf.kernel.secure_login", Parameter.REQUIRED, Boolean.FALSE); + + /** String containing the supported languages. + The first one is considered default. */ + private final Parameter m_supportedLanguages = new StringParameter + ("waf.kernel.supported_languages", Parameter.REQUIRED, + "en,de,fr,nl,it,pt,es"); + private final Parameter m_languageIndependentItems = new BooleanParameter + ("waf.kernel.language_independent_items", Parameter.REQUIRED, Boolean.FALSE); + private final Parameter m_languageIndependentCode = new StringParameter + ("waf.kernel.language_independent_code", Parameter.OPTIONAL, + "--"); + + /** + * Constructor + */ + public LegacyKernelConfig() { + + // Add recognised Login user identification to enumeration parameter + m_identifier.put("email", "email"); + m_identifier.put("screen_name", "screenName"); + + + register(m_debug); + register(m_webdevSupport); + register(m_permissions); + register(m_identifier); + register(m_SSO); + register(m_remember); + register(m_secureLogin); + register(m_supportedLanguages); + register(m_languageIndependentItems); + register(m_languageIndependentCode); + + loadInfo(); + } + + + public final boolean isDebugEnabled() { + return ((Boolean) get(m_debug)).booleanValue(); + } + + /** + * Return true, if WEB developer support should be activated. + */ + public final boolean isWebdevSupportActive() { + return ((Boolean) get(m_webdevSupport)).booleanValue(); + } + + public final boolean isDataPermissionCheckEnabled() { + return ((Boolean) get(m_permissions)).booleanValue(); + } + + public final String getPrimaryUserIdentifier() { + return (String) get(m_identifier); + } + + public final boolean emailIsPrimaryIdentifier() { + return "email".equals(get(m_identifier)); + } + + public final boolean screenNameIsPrimaryIdentifier() { + return !emailIsPrimaryIdentifier(); + } + + public final boolean isSSOenabled() { + return ((Boolean) get(m_SSO)).booleanValue(); + } + + // XXX Move this to WebConfig. + public final boolean isLoginRemembered() { + return ((Boolean) get(m_remember)).booleanValue(); + } + + public final boolean isSecureLoginRequired() { + return ((Boolean) get(m_secureLogin)).booleanValue(); + } + + /** + * Returns the defaultLanguage flag. + */ + public final String getDefaultLanguage() { + return ((String) get(m_supportedLanguages)).trim().substring(0, 2); + } + + /** + * Returns the supportedLanguages as String. + */ + public final String getSupportedLanguages() { + return (String) get(m_supportedLanguages); + } + + /** + * Returns the supportedLanguages as StringTokenizer. + */ + public final StringTokenizer getSupportedLanguagesTokenizer() { + return new StringTokenizer(this.getSupportedLanguages(), ",", false); + } + + /** + * Returns the languagesIndependentCode as String. + */ + public final String getLanguagesIndependentCode() { + return (String) get(m_languageIndependentCode); + } + + /** + * Return true, if language lang is part of supported langs + */ + public final boolean hasLanguage(String lang) { + return ((String) get(m_supportedLanguages)).contains(lang); + } + + public final boolean languageIndependentItems() { + return ((Boolean) get(m_languageIndependentItems)).booleanValue(); + } + +} diff --git a/ccm-core/src/main/java/com/arsdigita/templating/Templating.java b/ccm-core/src/main/java/com/arsdigita/templating/Templating.java index 17ee373e2..df8c99297 100755 --- a/ccm-core/src/main/java/com/arsdigita/templating/Templating.java +++ b/ccm-core/src/main/java/com/arsdigita/templating/Templating.java @@ -18,7 +18,7 @@ package com.arsdigita.templating; import com.arsdigita.bebop.Bebop; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.util.Assert; import com.arsdigita.util.ExceptionUnwrapper; import com.arsdigita.util.Exceptions; @@ -193,7 +193,7 @@ public class Templating { template = new XSLTemplate(source); } - } else if (KernelConfig.getConfig().isDebugEnabled() + } else if (LegacyKernelConfig.getConfig().isDebugEnabled() && template.isModified()) { // XXX referencing Kernel above is a broken dependency. // Debug mode should be captured at a lower level, diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/UserForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/UserForm.java index 7eeb9fe43..034bfea37 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/UserForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/UserForm.java @@ -33,7 +33,7 @@ import com.arsdigita.bebop.parameters.EmailParameter; import com.arsdigita.bebop.parameters.NotEmptyValidationListener; import com.arsdigita.bebop.parameters.StringLengthValidationListener; import com.arsdigita.bebop.parameters.StringParameter; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import static com.arsdigita.ui.admin.AdminConstants.*; @@ -158,7 +158,7 @@ class UserForm extends Form implements FormValidationListener, AdminConstants { // Screen name m_screenName = new TextField(new StringParameter( USER_FORM_INPUT_SCREEN_NAME)); - if (KernelConfig.getConfig().screenNameIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().screenNameIsPrimaryIdentifier()) { m_screenName.addValidationListener(new NotEmptyValidationListener()); } add(USER_FORM_LABEL_SCREEN_NAME); diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/ChangePasswordForm.java b/ccm-core/src/main/java/com/arsdigita/ui/login/ChangePasswordForm.java index 0c948b2c9..acefbc8da 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/login/ChangePasswordForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/login/ChangePasswordForm.java @@ -37,7 +37,7 @@ import com.arsdigita.bebop.form.Password; import com.arsdigita.bebop.form.Submit; import com.arsdigita.bebop.parameters.NotNullValidationListener; import com.arsdigita.bebop.parameters.URLParameter; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.ui.UI; import com.arsdigita.web.URL; import com.arsdigita.web.ReturnSignal; @@ -126,7 +126,7 @@ public class ChangePasswordForm extends Form final Subject subject = cdiUtil.findBean(Subject.class); final Shiro shiro = cdiUtil.findBean(Shiro.class); - final KernelConfig kernelConfig = KernelConfig.getConfig(); + final LegacyKernelConfig kernelConfig = LegacyKernelConfig.getConfig(); final User user = shiro.getUser(); final Label greeting = new Label(LoginHelper.getMessage( diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserForm.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserForm.java index e6ca0e840..7b2bb13ad 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserForm.java @@ -36,7 +36,7 @@ import com.arsdigita.bebop.parameters.EmailParameter; import com.arsdigita.bebop.parameters.NotEmptyValidationListener; import com.arsdigita.bebop.parameters.StringLengthValidationListener; import com.arsdigita.bebop.parameters.StringParameter; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import org.apache.log4j.Logger; import org.libreccm.cdi.utils.CdiUtil; @@ -285,7 +285,7 @@ public abstract class UserForm extends Form final String oldEmail = user.getPrimaryEmailAddress().getAddress(); final String email = (String) m_email.getValue(state); - if (KernelConfig.getConfig().emailIsPrimaryIdentifier() + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier() && email != null && !email.equals(oldEmail)) { final User result = userRepository.findByEmailAddress(email); if (result != null) { diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserLoginForm.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserLoginForm.java index b9bed8131..6864fa954 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserLoginForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserLoginForm.java @@ -42,7 +42,7 @@ import com.arsdigita.bebop.parameters.EmailParameter; import com.arsdigita.bebop.parameters.NotNullValidationListener; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.parameters.URLParameter; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.ui.UI; @@ -158,7 +158,7 @@ public class UserLoginForm extends Form implements LoginConstants, "login.userRegistrationForm.cookieOption")); Option opt = new Option(FORM_PERSISTENT_LOGIN_P_DEFAULT, optLabel); m_isPersistent.addOption(opt); - if (KernelConfig.getConfig().isLoginRemembered()) { + if (LegacyKernelConfig.getConfig().isLoginRemembered()) { m_isPersistent.setOptionSelected(FORM_PERSISTENT_LOGIN_P_DEFAULT); } cookiePanel.add(m_isPersistent); @@ -192,7 +192,7 @@ public class UserLoginForm extends Form implements LoginConstants, "subsite:loginPromptMsg", LoginServlet.SUBSITE_NS_URI); - if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { loginMessage.setClassAttr("email"); } else { loginMessage.setClassAttr("screenName"); @@ -200,7 +200,7 @@ public class UserLoginForm extends Form implements LoginConstants, add(loginMessage); - if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { add(new Label(LoginHelper.getMessage( "login.userRegistrationForm.email"))); m_loginName = new TextField(new EmailParameter(FORM_LOGIN)); @@ -228,7 +228,7 @@ public class UserLoginForm extends Form implements LoginConstants, public void init(FormSectionEvent event) throws FormProcessException { s_log.info("In init"); - if (KernelConfig.getConfig().isSSOenabled()) { + if (LegacyKernelConfig.getConfig().isSSOenabled()) { // try SSO login s_log.info("trying SSO"); // try { @@ -349,7 +349,7 @@ public class UserLoginForm extends Form implements LoginConstants, // try { // final CcmSessionContext ctx = Web.getUserContext(); // final String username; -// if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { +// if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { // username = ((InternetAddress) m_loginName.getValue(state)). // getAddress(); // } else { diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserNewForm.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserNewForm.java index 41843ce69..1ee5e7027 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserNewForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserNewForm.java @@ -30,7 +30,7 @@ import com.arsdigita.bebop.form.Hidden; import com.arsdigita.bebop.parameters.ArrayParameter; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.parameters.URLParameter; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.ui.UI; import com.arsdigita.web.URL; import com.arsdigita.web.ReturnSignal; @@ -121,7 +121,7 @@ public class UserNewForm extends UserForm implements FormInitListener, m_confirm.setValue(state, ""); String loginName = (String) m_loginName.getValue(state); if (loginName != null) { - if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { m_email.setValue(state, loginName); } else { m_screenName.setValue(state, loginName); @@ -143,7 +143,7 @@ public class UserNewForm extends UserForm implements FormInitListener, final String firstName = (String) m_firstName.getValue(state); final String lastName = (String) m_lastName.getValue(state); final String screenName; - if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { screenName = null; } else { screenName = (String) m_screenName.getValue(state); @@ -175,7 +175,7 @@ public class UserNewForm extends UserForm implements FormInitListener, try { final String loginName; - if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { loginName = email; } else { loginName = screenName; diff --git a/ccm-core/src/main/java/com/arsdigita/web/Debugger.java b/ccm-core/src/main/java/com/arsdigita/web/Debugger.java index cd0949812..591730c71 100755 --- a/ccm-core/src/main/java/com/arsdigita/web/Debugger.java +++ b/ccm-core/src/main/java/com/arsdigita/web/Debugger.java @@ -18,7 +18,7 @@ */ package com.arsdigita.web; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import java.util.ArrayList; import java.util.Iterator; @@ -48,7 +48,7 @@ public abstract class Debugger { public static class DebugParameterListener implements ParameterListener { public void run(HttpServletRequest sreq, ParameterMap map) { - if (KernelConfig.getConfig().isDebugEnabled()) { + if (LegacyKernelConfig.getConfig().isDebugEnabled()) { final String value = sreq.getParameter(DEBUG_PARAMETER); if (value != null) { @@ -86,7 +86,7 @@ public abstract class Debugger { private static class DebuggerListLocal extends InternalRequestLocal { @Override protected Object initialValue() { - if (KernelConfig.getConfig().isDebugEnabled()) { + if (LegacyKernelConfig.getConfig().isDebugEnabled()) { return new ArrayList(); } else { return null; @@ -95,7 +95,7 @@ public abstract class Debugger { @Override protected void clearValue() { - if (KernelConfig.getConfig().isDebugEnabled()) { + if (LegacyKernelConfig.getConfig().isDebugEnabled()) { ArrayList list = (ArrayList) get(); list.clear(); } diff --git a/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealm.java b/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealm.java index 8c99bf1f7..cbbfefcb0 100644 --- a/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealm.java +++ b/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealm.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; @@ -202,7 +202,7 @@ public class CcmShiroRealm extends AuthorizingRealm { // Depending of the configuration of CCM use the appropriate method // for finding the user in the database. - final KernelConfig config = KernelConfig.getConfig(); + final LegacyKernelConfig config = LegacyKernelConfig.getConfig(); final User user; if ("email".equals(config.getPrimaryUserIdentifier())) { user = userRepository.findByEmailAddress(userIdentifier); diff --git a/ccm-core/src/main/java/org/libreccm/security/Shiro.java b/ccm-core/src/main/java/org/libreccm/security/Shiro.java index f0cd80311..9f9648c50 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Shiro.java +++ b/ccm-core/src/main/java/org/libreccm/security/Shiro.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Produces; @@ -97,7 +97,7 @@ public class Shiro { } public Subject getPublicUser() { - if (KernelConfig.getConfig().emailIsPrimaryIdentifier()) { + if (LegacyKernelConfig.getConfig().emailIsPrimaryIdentifier()) { return buildInternalSubject("public-user@localhost"); } else { return buildInternalSubject("public-user"); @@ -109,7 +109,7 @@ public class Shiro { } public User getUser() { - final KernelConfig kernelConfig = KernelConfig.getConfig(); + final LegacyKernelConfig kernelConfig = LegacyKernelConfig.getConfig(); if (kernelConfig.emailIsPrimaryIdentifier()) { return userRepository.findByEmailAddress((String) getSubject(). getPrincipal()); diff --git a/ccm-core/src/main/resources/com/arsdigita/kernel/KernelConfigDescription.properties b/ccm-core/src/main/resources/com/arsdigita/kernel/KernelConfigDescription.properties new file mode 100644 index 000000000..69926c74e --- /dev/null +++ b/ccm-core/src/main/resources/com/arsdigita/kernel/KernelConfigDescription.properties @@ -0,0 +1,10 @@ +kernel.config.description=Configure several basic properties for LibreCCM + +kernel.config.debug_enabled=Enables or disables WAF debugging +kernel.config.kernel.config.webdev_support_enabled=Enables or disables Webdev support +kernel.config.kernel.config.data_permission_check_enabled=Enables or disables permissions checks on database writes +kernel.config.kernel.config.primary_user_identifier=Determines whether email addresses or screen names are used to authenticate users. Valid values: "screen_name" or "email" +kernel.config.kernel.config.sso_enabled=Enables or disables SSO login +kernel.config.kernel.config.remember_login_enabled=Determines whether the "remember login" feature is enabled or disabled by default +kernel.config.kernel_config.secure_login_enabled=Accept only credentials presented over secure connection? +kernel.config.kernel.config.supported_languages=Set the languages supported for this installation (for content creation). Uses the ISO language codes. diff --git a/ccm-core/src/main/resources/com/arsdigita/kernel/KernelConfig_parameter.properties b/ccm-core/src/main/resources/com/arsdigita/kernel/LegacyKernelConfig_parameter.properties similarity index 100% rename from ccm-core/src/main/resources/com/arsdigita/kernel/KernelConfig_parameter.properties rename to ccm-core/src/main/resources/com/arsdigita/kernel/LegacyKernelConfig_parameter.properties diff --git a/ccm-core/src/test/java/com/arsdigita/kernel/KernelConfigTest.java b/ccm-core/src/test/java/com/arsdigita/kernel/LegacyKernelConfigTest.java similarity index 96% rename from ccm-core/src/test/java/com/arsdigita/kernel/KernelConfigTest.java rename to ccm-core/src/test/java/com/arsdigita/kernel/LegacyKernelConfigTest.java index ef634c795..81fb2befc 100644 --- a/ccm-core/src/test/java/com/arsdigita/kernel/KernelConfigTest.java +++ b/ccm-core/src/test/java/com/arsdigita/kernel/LegacyKernelConfigTest.java @@ -63,9 +63,9 @@ import static org.junit.Assert.*; */ @RunWith(Arquillian.class) @Category(IntegrationTest.class) -public class KernelConfigTest { +public class LegacyKernelConfigTest { - public KernelConfigTest() { + public LegacyKernelConfigTest() { } @BeforeClass @@ -109,7 +109,7 @@ public class KernelConfigTest { .addPackage(UriConverter.class.getPackage()) .addPackage(ApplicationRepository.class.getPackage()) .addPackage(EntityManagerProducer.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameter.class.getPackage()) .addPackage(JavaPropertyReader.class.getPackage()) @@ -139,7 +139,7 @@ public class KernelConfigTest { @Test public void verifyKernelConfig() { - final KernelConfig kernelConfig = KernelConfig.getConfig(); + final LegacyKernelConfig kernelConfig = LegacyKernelConfig.getConfig(); assertThat(kernelConfig.isDebugEnabled(), is(true)); diff --git a/ccm-core/src/test/java/com/arsdigita/kernel/security/SecurityConfigTest.java b/ccm-core/src/test/java/com/arsdigita/kernel/security/SecurityConfigTest.java index 582191c87..fb938a1f3 100644 --- a/ccm-core/src/test/java/com/arsdigita/kernel/security/SecurityConfigTest.java +++ b/ccm-core/src/test/java/com/arsdigita/kernel/security/SecurityConfigTest.java @@ -18,7 +18,7 @@ */ package com.arsdigita.kernel.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.JavaPropertyReader; import com.arsdigita.util.parameter.AbstractParameter; @@ -111,7 +111,7 @@ public class SecurityConfigTest { .addPackage(UriConverter.class.getPackage()) .addPackage(ApplicationRepository.class.getPackage()) .addPackage(EntityManagerProducer.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameter.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java b/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java index 6f36e6cf0..1cc512d83 100644 --- a/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java +++ b/ccm-core/src/test/java/org/libreccm/configuration/ConfigurationManagerTest.java @@ -161,6 +161,9 @@ public class ConfigurationManagerTest { assertThat(configuration.getItemsPerPage(), is(20L)); assertThat(configuration.getHelpUrl(), is(equalTo("http://www.example.org"))); +// assertThat(configuration.getLanguages().size(), is(2)); +// assertThat(configuration.getLanguages(), hasItem("de")); +// assertThat(configuration.getLanguages(), hasItem("en")); } @Test @@ -173,13 +176,13 @@ public class ConfigurationManagerTest { public void saveConfiguration() { final ExampleConfiguration configuration = configurationManager .findConfiguration(ExampleConfiguration.class); - + configuration.setPrice(new BigDecimal("109.99")); configuration.setItemsPerPage(30L); - + configurationManager.saveConfiguration(configuration); } - + @Test @UsingDataSet( "datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml") @@ -187,10 +190,10 @@ public class ConfigurationManagerTest { public void loadNewConfiguration() { final TestConfiguration configuration = configurationManager .findConfiguration(TestConfiguration.class); - + assertThat(configuration, is(nullValue())); } - + @Test @UsingDataSet( "datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml") diff --git a/ccm-core/src/test/java/org/libreccm/configuration/ExampleConfiguration.java b/ccm-core/src/test/java/org/libreccm/configuration/ExampleConfiguration.java index 221b2bfaf..927cd722a 100644 --- a/ccm-core/src/test/java/org/libreccm/configuration/ExampleConfiguration.java +++ b/ccm-core/src/test/java/org/libreccm/configuration/ExampleConfiguration.java @@ -19,6 +19,7 @@ package org.libreccm.configuration; import java.math.BigDecimal; +import java.util.Set; /** * @@ -41,6 +42,9 @@ public class ExampleConfiguration { @Setting private String helpUrl; + +// @Setting +// private Set languages; public BigDecimal getPrice() { return price; @@ -81,4 +85,12 @@ public class ExampleConfiguration { public void setHelpUrl(final String helpUrl) { this.helpUrl = helpUrl; } + +// public Set getLanguages() { +// return languages; +// } +// +// private void setLanguages(final Set languages) { +// this.languages = languages; +// } } diff --git a/ccm-core/src/test/java/org/libreccm/security/AuthorizationInterceptorTest.java b/ccm-core/src/test/java/org/libreccm/security/AuthorizationInterceptorTest.java index efbc6df86..621cef7d7 100644 --- a/ccm-core/src/test/java/org/libreccm/security/AuthorizationInterceptorTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/AuthorizationInterceptorTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -136,7 +136,7 @@ public class AuthorizationInterceptorTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/GroupManagerTest.java b/ccm-core/src/test/java/org/libreccm/security/GroupManagerTest.java index e6f448f81..73480bba0 100644 --- a/ccm-core/src/test/java/org/libreccm/security/GroupManagerTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/GroupManagerTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -132,7 +132,7 @@ public class GroupManagerTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/PermissionCheckerTest.java b/ccm-core/src/test/java/org/libreccm/security/PermissionCheckerTest.java index ea3c9a83a..503198b69 100644 --- a/ccm-core/src/test/java/org/libreccm/security/PermissionCheckerTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/PermissionCheckerTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -146,7 +146,7 @@ public class PermissionCheckerTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/PermissionManagerTest.java b/ccm-core/src/test/java/org/libreccm/security/PermissionManagerTest.java index 57f958367..97b7090f9 100644 --- a/ccm-core/src/test/java/org/libreccm/security/PermissionManagerTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/PermissionManagerTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -137,7 +137,7 @@ public class PermissionManagerTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/RoleManagerTest.java b/ccm-core/src/test/java/org/libreccm/security/RoleManagerTest.java index 5dd30860d..47fdd14c3 100644 --- a/ccm-core/src/test/java/org/libreccm/security/RoleManagerTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/RoleManagerTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -132,7 +132,7 @@ public class RoleManagerTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/SecuredCollectionTest.java b/ccm-core/src/test/java/org/libreccm/security/SecuredCollectionTest.java index bdcd87721..da0c1c6b8 100644 --- a/ccm-core/src/test/java/org/libreccm/security/SecuredCollectionTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/SecuredCollectionTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -163,7 +163,7 @@ public class SecuredCollectionTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/SecuredIteratorTest.java b/ccm-core/src/test/java/org/libreccm/security/SecuredIteratorTest.java index 540a539ed..9feb9fa50 100644 --- a/ccm-core/src/test/java/org/libreccm/security/SecuredIteratorTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/SecuredIteratorTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -163,7 +163,7 @@ public class SecuredIteratorTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java b/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java index db34dc2c5..ed36f5ce3 100644 --- a/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/ShiroTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -132,7 +132,7 @@ public class ShiroTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/java/org/libreccm/security/UserManagerTest.java b/ccm-core/src/test/java/org/libreccm/security/UserManagerTest.java index 89a3e9935..62c8f02cb 100644 --- a/ccm-core/src/test/java/org/libreccm/security/UserManagerTest.java +++ b/ccm-core/src/test/java/org/libreccm/security/UserManagerTest.java @@ -18,7 +18,7 @@ */ package org.libreccm.security; -import com.arsdigita.kernel.KernelConfig; +import com.arsdigita.kernel.LegacyKernelConfig; import com.arsdigita.kernel.security.SecurityConfig; import com.arsdigita.runtime.AbstractConfig; import com.arsdigita.util.UncheckedWrapperException; @@ -133,7 +133,7 @@ public class UserManagerTest { .addPackage(MimeTypeConverter.class.getPackage()) .addPackage(EqualsVerifier.class.getPackage()) .addPackage(IntegrationTest.class.getPackage()) - .addPackage(KernelConfig.class.getPackage()) + .addPackage(LegacyKernelConfig.class.getPackage()) .addPackage(SecurityConfig.class.getPackage()) .addPackage(AbstractConfig.class.getPackage()) .addPackage(AbstractParameterContext.class.getPackage()) diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml b/ccm-core/src/test/resources/datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml index 6b019a8cd..b89b330fa 100644 --- a/ccm-core/src/test/resources/datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml +++ b/ccm-core/src/test/resources/datasets/org/libreccm/configuration/ConfigurationManagerTest/data.yml @@ -132,3 +132,12 @@ ccm_core.settings_long: ccm_core.settings_string: - object_id: -3500 setting_value: http://www.example.org + +ccm_core.settings_enum: + - object_id: -3600 + +ccm_core.settings_values: + - enum_id: -3600 + value: de + - enum_id: -3600 + value: en