diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/page/BebopApplicationServlet.java b/ccm-core/src/main/java/com/arsdigita/bebop/page/BebopApplicationServlet.java
index ba8a49f7f..253acd4d4 100644
--- a/ccm-core/src/main/java/com/arsdigita/bebop/page/BebopApplicationServlet.java
+++ b/ccm-core/src/main/java/com/arsdigita/bebop/page/BebopApplicationServlet.java
@@ -37,6 +37,7 @@ import java.util.Map;
import java.util.Set;
import javax.enterprise.inject.spi.CDI;
+import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -66,6 +67,9 @@ public class BebopApplicationServlet extends BaseApplicationServlet {
private static final Logger LOGGER = LogManager.getLogger(
BebopApplicationServlet.class);
+
+ @Inject
+ private Subject subject;
/**
* URL (pathinfo) -> Page object mapping. Based on it (and the http request
@@ -152,7 +156,7 @@ public class BebopApplicationServlet extends BaseApplicationServlet {
final String pathInfo = sreq.getPathInfo();
Assert.exists(pathInfo, "String pathInfo");
- final Subject subject = CDI.current().select(Subject.class).get();
+ //final Subject subject = CDI.current().select(Subject.class).get();
LOGGER.debug("Current session is: {}", sreq.getSession().getId());
LOGGER.debug("Current Shiro session is {}",
subject.getSession().getId().toString());
diff --git a/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherConfig.java b/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherConfig.java
index be7c127fb..fbc41278f 100755
--- a/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/dispatcher/DispatcherConfig.java
@@ -44,9 +44,8 @@ public final class DispatcherConfig {
private String defaultPageClass = "com.arsdigita.bebop.Page";
public static DispatcherConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(DispatcherConfig.class);
}
@@ -119,15 +118,16 @@ public final class DispatcherConfig {
@Override
public String toString() {
return String.format("%s{ "
- + "cachingActive = %b, "
- + "defaultExpiry = %d, "
- + "staticUrlPrefix = \"%s\", "
- + "defaultPageClass = \"%s\""
- + " }",
+ + "cachingActive = %b, "
+ + "defaultExpiry = %d, "
+ + "staticUrlPrefix = \"%s\", "
+ + "defaultPageClass = \"%s\""
+ + " }",
super.toString(),
cachingActive,
defaultExpiry,
staticUrlPrefix,
defaultPageClass);
}
+
}
diff --git a/ccm-core/src/main/java/com/arsdigita/formbuilder/FormBuilderConfig.java b/ccm-core/src/main/java/com/arsdigita/formbuilder/FormBuilderConfig.java
index 4cf0cba90..096f4b6c0 100755
--- a/ccm-core/src/main/java/com/arsdigita/formbuilder/FormBuilderConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/formbuilder/FormBuilderConfig.java
@@ -43,9 +43,8 @@ public final class FormBuilderConfig {
private Boolean interpolateEmailActions;
public static FormBuilderConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(FormBuilderConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationConfig.java b/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationConfig.java
index 26d034694..6d58e3c43 100644
--- a/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/globalization/GlobalizationConfig.java
@@ -29,17 +29,16 @@ import org.libreccm.configuration.Setting;
* @author Jens Pelzetter
*/
@Configuration(
- descBundle = "com.arsdigita.globalization.GlobalizationConfigDescription",
- descKey = "globalization.config.description")
+ descBundle = "com.arsdigita.globalization.GlobalizationConfigDescription",
+ descKey = "globalization.config.description")
public class GlobalizationConfig {
@Setting(descKey = "globalization.config.default_charset")
private String defaultCharset = "UTF-8";
public static GlobalizationConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(GlobalizationConfig.class);
}
@@ -76,9 +75,10 @@ public class GlobalizationConfig {
@Override
public String toString() {
return String.format("%s{ "
- + "defaultCharset = \"%s\""
- + " }",
+ + "defaultCharset = \"%s\""
+ + " }",
super.toString(),
defaultCharset);
}
+
}
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 5e3f2d79a..dfc7df812 100644
--- a/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/kernel/KernelConfig.java
@@ -70,9 +70,6 @@ public final class KernelConfig {
private String defaultLanguage = "en";
public static KernelConfig getConfig() {
-// final CdiUtil cdiUtil = new CdiUtil();
-// final ConfigurationManager confManager = cdiUtil.findBean(
-// ConfigurationManager.class);
final ConfigurationManager confManager = CdiUtil.createCdiUtil()
.findBean(ConfigurationManager.class);
return confManager.findConfiguration(KernelConfig.class);
diff --git a/ccm-core/src/main/java/com/arsdigita/mail/MailConfig.java b/ccm-core/src/main/java/com/arsdigita/mail/MailConfig.java
index 20d1ba25e..7cfa5a709 100755
--- a/ccm-core/src/main/java/com/arsdigita/mail/MailConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/mail/MailConfig.java
@@ -50,9 +50,8 @@ public final class MailConfig {
private Boolean sendHtml = false;
public static MailConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(MailConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/notification/NotificationConfig.java b/ccm-core/src/main/java/com/arsdigita/notification/NotificationConfig.java
index 3edbaf14e..946a537d0 100644
--- a/ccm-core/src/main/java/com/arsdigita/notification/NotificationConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/notification/NotificationConfig.java
@@ -51,9 +51,8 @@ public final class NotificationConfig {
private Integer simpleQueuePeriod = 900;
public static NotificationConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(NotificationConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/templating/TemplatingConfig.java b/ccm-core/src/main/java/com/arsdigita/templating/TemplatingConfig.java
index 5fd8daeb3..61651860a 100755
--- a/ccm-core/src/main/java/com/arsdigita/templating/TemplatingConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/templating/TemplatingConfig.java
@@ -49,9 +49,8 @@ public final class TemplatingConfig {
private Integer stylesheetCacheAge = 3600;
public static TemplatingConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(TemplatingConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/UIConfig.java b/ccm-core/src/main/java/com/arsdigita/ui/UIConfig.java
index fdd486525..99cb9c86b 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/UIConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/UIConfig.java
@@ -55,11 +55,9 @@ public final class UIConfig {
private String workspaceUrl = "/pvt/";
public static UIConfig getConfig() {
-// final CdiUtil cdiUtil = new CdiUtil();
-// final ConfigurationManager confManager = cdiUtil.findBean(
-// ConfigurationManager.class);
- final ConfigurationManager confManager = CDI.current().select(
- ConfigurationManager.class).get();
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
+
return confManager.findConfiguration(UIConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java
index 67b1e1d90..0c91441c5 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java
@@ -116,13 +116,10 @@ public class AdminServlet
ServletException, IOException {
// /////// Some preparational steps ///////////////
/* Determine access privilege: only logged in users may access */
-// final CdiUtil cdiUtil = new CdiUtil();
-// final Subject subject = cdiUtil.findBean(Subject.class);
- final Subject subject = CDI.current().select(Subject.class).get();
-// final PermissionChecker permissionChecker = cdiUtil.findBean(
-// PermissionChecker.class);
- final PermissionChecker permissionChecker = CDI.current().select(
- PermissionChecker.class).get();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final Subject subject = cdiUtil.findBean(Subject.class);
+ final PermissionChecker permissionChecker = cdiUtil.findBean(
+ PermissionChecker.class);
final ConfigurationManager confManager = CDI.current().select(ConfigurationManager.class).get();
if (confManager == null) {
@@ -172,9 +169,11 @@ public class AdminServlet
// final Document doc = page.buildDocument(sreq, sresp);
// Templating.getPresentationManager().servePage(doc, sreq, sresp);
// }
- final Page page = new Page();
+ final Page page = PageFactory.buildPage("admin", "LibreCCM NG Admin");
page.add(new Label("admin"));
+ page.lock();
+
final Document doc = page.buildDocument(sreq, sresp);
Templating.getPresentationManager().servePage(doc, sreq, sresp);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java
index cdc41f052..7e96d7909 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java
@@ -78,7 +78,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements
setLeft(applicationTree);
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final org.libreccm.web.ApplicationManager appManager = cdiUtil.findBean(
org.libreccm.web.ApplicationManager.class);
@@ -213,7 +213,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements
}
} else {
// Selected key is the name of a instance pane
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ApplicationRepository appRepo = cdiUtil.findBean(
ApplicationRepository.class);
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/GroupEditForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/GroupEditForm.java
index e7154b243..8a42e9fb9 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/GroupEditForm.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/GroupEditForm.java
@@ -64,7 +64,7 @@ class GroupEditForm extends GroupForm implements FormInitListener,
final Long id = (Long) state.getValue(USER_ID_PARAM);
// if (id != null) {
-// final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final GroupRepository groupRepository;
//
@@ -86,7 +86,7 @@ class GroupEditForm extends GroupForm implements FormInitListener,
final PageState state = event.getPageState();
final Long id = (Long) state.getValue(GROUP_ID_PARAM);
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final GroupRepository groupRepository;
// groupRepository = cdiUtil.findBean(GroupRepository.class);
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/SubMemberPanel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/SubMemberPanel.java
index 6e174aad7..29fe6f604 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/SubMemberPanel.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/SubMemberPanel.java
@@ -81,7 +81,7 @@ class SubMemberPanel extends BoxPanel {
if (key != null) {
final Long userID = new Long(key);
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// final GroupManager groupManager;
// final GroupRepository groupRepository;
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/UserBrowsePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/UserBrowsePane.java
index 60d1e600b..d715c16dc 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/UserBrowsePane.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/UserBrowsePane.java
@@ -113,7 +113,7 @@ class UserBrowsePane extends SegmentedPanel
@Override
public void actionPerformed(final ActionEvent event) {
// final PageState state = event.getPageState();
-// final CdiUtil cdiUtil = new CdiUtil();
+// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final CcmSessionContext sessionContext;
// sessionContext = cdiUtil.findBean(CcmSessionContext.class);
@@ -143,7 +143,7 @@ class UserBrowsePane extends SegmentedPanel
protected Object initialValue(final PageState state) {
final Long id = (Long) state.getValue(USER_ID_PARAM);
-// final CdiUtil cdiUtil = new CdiUtil();
+// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
@@ -346,7 +346,7 @@ class UserBrowsePane extends SegmentedPanel
final PageState state = event.getPageState();
// final BigDecimal id = (BigDecimal) state.getValue(USER_ID_PARAM);
//
-// final CdiUtil cdiUtil = new CdiUtil();
+// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final LoginManager loginManager;
// loginManager = cdiUtil.findBean(
@@ -421,7 +421,7 @@ class UserBrowsePane extends SegmentedPanel
final PageState state = event.getPageState();
final User user = getUser(state);
-// final CdiUtil cdiUtil = new CdiUtil();
+// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
@@ -461,7 +461,7 @@ class UserBrowsePane extends SegmentedPanel
// User user = getUser(state);
// user.setBanned(true);
//
-// final CdiUtil cdiUtil = new CdiUtil();
+// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
@@ -492,7 +492,7 @@ class UserBrowsePane extends SegmentedPanel
// User user = getUser(state);
// user.setBanned(false);
//
-// final CdiUtil cdiUtil = new CdiUtil();
+// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
@@ -672,7 +672,7 @@ class UserBrowsePane extends SegmentedPanel
PageState ps = event.getPageState();
String id = (String) m_groupList.getSelectedKey(ps);
if (id != null) {
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final GroupRepository groupRepository;
// groupRepository = cdiUtil
@@ -706,7 +706,7 @@ class UserTableModel implements TableModel {
private int index = 0;
public UserTableModel() {
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
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 c0cec2257..9b8dbfaca 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
@@ -237,7 +237,7 @@ class UserForm extends Form implements FormValidationListener, AdminConstants {
/**
* Verify that primary email and screen name are unique
*/
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/UserPasswordForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/UserPasswordForm.java
index 338318510..25d00273f 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/UserPasswordForm.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/UserPasswordForm.java
@@ -133,7 +133,7 @@ class UserPasswordForm extends Form
final PageState state = event.getPageState();
-// final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
@@ -157,7 +157,7 @@ class UserPasswordForm extends Form
FormData data = event.getFormData();
HttpServletRequest req = state.getRequest();
-// final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// userRepository = cdiUtil.findBean(UserRepository.class);
@@ -206,7 +206,7 @@ class UserPasswordForm extends Form
final PageState state = event.getPageState();
final FormData data = event.getFormData();
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final UserRepository userRepository;
// final UserManager userManager;
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java
index 414873079..fc395241d 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java
@@ -137,9 +137,8 @@ public class ApplicationInfoPropertySheetModel implements PropertySheetModel {
return applicationType.description();
case SINGLETON_PATH:
final String path;
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
- ApplicationRepository.class);
+ final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
+ .findBean(ApplicationRepository.class);
final List instances
= appRepo.findByType(
applicationType.name());
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java
index 31436f4f3..afb284025 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java
@@ -136,8 +136,8 @@ public class MultiInstanceApplicationPane
public ApplicationInstancesTableModel(final Table table,
final String appType) {
this.table = table;
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(ApplicationRepository.class);
+ final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
+ .findBean(ApplicationRepository.class);
final List applications = appRepo.
findByType(appType);
for (CcmApplication application : applications) {
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/ApplicationTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/ApplicationTreeModel.java
index 372a35b23..9f8e3bcfd 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/ApplicationTreeModel.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/ApplicationTreeModel.java
@@ -82,9 +82,8 @@ public class ApplicationTreeModel implements TreeModel {
@Override
public Iterator getChildren(final TreeNode node, final PageState state) {
if (node instanceof RootTreeNode) {
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationManager appManager = cdiUtil.findBean(
- ApplicationManager.class);
+ final ApplicationManager appManager = CdiUtil.createCdiUtil()
+ .findBean(ApplicationManager.class);
final Collection appTypes = appManager
.getApplicationTypes().values();
@@ -94,9 +93,8 @@ public class ApplicationTreeModel implements TreeModel {
final ApplicationTypeTreeNode typeTreeNode
= (ApplicationTypeTreeNode) node;
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
- ApplicationRepository.class);
+ final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
+ .findBean(ApplicationRepository.class);
final List applications = appRepo.findByType(
typeTreeNode.getObjecType());
@@ -113,8 +111,7 @@ public class ApplicationTreeModel implements TreeModel {
private List retrieveApplicationInstances(
final ApplicationType applicationType) {
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
+ final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean(
ApplicationRepository.class);
return appRepo.findByType(applicationType.name());
@@ -122,8 +119,7 @@ public class ApplicationTreeModel implements TreeModel {
private List retrieveApplicationInstances(
final String appObjectType) {
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
+ final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean(
ApplicationRepository.class);
return appRepo.findByType(appObjectType);
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 f8e071845..38be90fa0 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
@@ -202,7 +202,7 @@ public class ChangePasswordForm extends Form
String confirmPassword = (String) m_confirmPassword.getValue(state);
//check oldPassword
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final Shiro shiro = cdiUtil.findBean(Shiro.class);
final UserManager userManager = cdiUtil.findBean(UserManager.class);
@@ -250,7 +250,7 @@ public class ChangePasswordForm extends Form
return;
}
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final UserManager userManager = cdiUtil.findBean(UserManager.class);
final Shiro shiro = cdiUtil.findBean(Shiro.class);
final User user = shiro.getUser();
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/EmailInitListener.java b/ccm-core/src/main/java/com/arsdigita/ui/login/EmailInitListener.java
index c2b1d4de5..c95d75912 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/EmailInitListener.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/EmailInitListener.java
@@ -53,7 +53,7 @@ public class EmailInitListener implements FormInitListener {
s_log.debug("START");
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final Subject subject = cdiUtil.findBean(Subject.class);
final Shiro shiro = cdiUtil.findBean(Shiro.class);
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/LoginServlet.java b/ccm-core/src/main/java/com/arsdigita/ui/login/LoginServlet.java
index 493831c01..d62e4bcc7 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/LoginServlet.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/LoginServlet.java
@@ -36,6 +36,7 @@ import com.arsdigita.web.URL;
import org.apache.log4j.Logger;
import org.libreccm.configuration.ConfigurationManager;
+import org.libreccm.security.UserRepository;
import javax.inject.Inject;
import javax.servlet.ServletException;
@@ -129,6 +130,9 @@ public class LoginServlet extends BebopApplicationServlet {
@Inject
private ConfigurationManager confManager;
+
+ @Inject
+ private UserRepository userRepository;
/**
* User extension point used to create the pages to server and setup a
@@ -140,6 +144,10 @@ public class LoginServlet extends BebopApplicationServlet {
public void doInit() throws ServletException {
final SecurityConfig securityConfig = confManager.findConfiguration(
SecurityConfig.class);
+
+ if (userRepository == null) {
+ throw new IllegalStateException("User repository is not available.");
+ }
// Allow world caching for pages without authentication,
// ie, /register, /register/explain-persistent-cookies,
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/ScreenNameInitListener.java b/ccm-core/src/main/java/com/arsdigita/ui/login/ScreenNameInitListener.java
index 99e903d06..fd5b6c2d3 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/ScreenNameInitListener.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/ScreenNameInitListener.java
@@ -63,7 +63,7 @@ public class ScreenNameInitListener implements FormInitListener {
FormData data = event.getFormData();
s_log.debug("START");
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final Subject subject = cdiUtil.findBean(Subject.class);
final Shiro shiro = cdiUtil.findBean(Shiro.class);
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserAuthenticationListener.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserAuthenticationListener.java
index bfe08c620..75d79b47c 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserAuthenticationListener.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserAuthenticationListener.java
@@ -67,8 +67,7 @@ public class UserAuthenticationListener implements RequestListener {
throw new IllegalStateException("User is not logged in");
}
- final CdiUtil cdiUtil = new CdiUtil();
- final Subject subject = cdiUtil.findBean(Subject.class);
+ final Subject subject = CdiUtil.createCdiUtil().findBean(Subject.class);
return subject;
}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserEditForm.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserEditForm.java
index d36e0ee42..e4af46f44 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserEditForm.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserEditForm.java
@@ -65,8 +65,7 @@ public class UserEditForm extends UserForm
@Override
public Object initialValue(final PageState ps) {
- final CdiUtil cdiUtil = new CdiUtil();
- final Shiro shiro = cdiUtil.findBean(Shiro.class);
+ final Shiro shiro = CdiUtil.createCdiUtil().findBean(Shiro.class);
final User result = shiro.getUser();
return result;
@@ -103,8 +102,7 @@ public class UserEditForm extends UserForm
FormData data = event.getFormData();
PageState state = event.getPageState();
- final CdiUtil cdiUtil = new CdiUtil();
- final UserRepository userRepository = cdiUtil.findBean(
+ final UserRepository userRepository = CdiUtil.createCdiUtil().findBean(
UserRepository.class);
User user = getUser(state);
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..26c8209b5 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
@@ -51,10 +51,10 @@ import org.libreccm.security.UserRepository;
*
*/
public abstract class UserForm extends Form
- implements LoginConstants, FormInitListener, FormValidationListener {
+ implements LoginConstants, FormInitListener, FormValidationListener {
private static final Logger LOGGER = Logger.getLogger(UserForm.class
- .getName());
+ .getName());
private final boolean m_newUser;
@@ -69,15 +69,15 @@ public abstract class UserForm extends Form
protected TextField m_answer;
protected Label m_securitySectionHeader = new Label(LoginHelper
- .getMessage("login.userNewForm.securitySectionHeader"), false);
+ .getMessage("login.userNewForm.securitySectionHeader"), false);
protected Label m_securityBlurb = new Label(LoginHelper
- .getMessage("login.userNewForm.securityBlurb"));
+ .getMessage("login.userNewForm.securityBlurb"));
protected Label m_passwordBlurb = new Label(LoginHelper
- .getMessage("login.userNewForm.passwordBlurb"));
+ .getMessage("login.userNewForm.passwordBlurb"));
protected Label m_passwordLabel = new Label(PASSWORD);
protected Label m_confirmationLabel = new Label(PASSWORD_CONFIRMATION);
protected PasswordValidationListener m_passwordValidationListener
- = new PasswordValidationListener();
+ = new PasswordValidationListener();
protected NotEmptyValidationListener m_confirmationNotEmptyValidationListener
= new NotEmptyValidationListener();
protected Submit m_submit = new Submit(SUBMIT);
@@ -111,7 +111,7 @@ public abstract class UserForm extends Form
if (m_newUser) {
m_profilePart.add(new Label(LoginHelper
- .getMessage("login.userNewForm.aboutYouSectionHeader"),
+ .getMessage("login.userNewForm.aboutYouSectionHeader"),
false), ColumnPanel.FULL_WIDTH);
}
@@ -123,7 +123,7 @@ public abstract class UserForm extends Form
m_firstName.setSize(20);
m_firstName.addValidationListener(new NotEmptyValidationListener());
m_firstName.addValidationListener(new StringLengthValidationListener(
- MAX_NAME_LEN));
+ MAX_NAME_LEN));
m_profilePart.add(m_firstNameLabel);
m_profilePart.add(m_firstName);
@@ -133,7 +133,7 @@ public abstract class UserForm extends Form
m_lastName.setSize(25);
m_lastName.addValidationListener(new NotEmptyValidationListener());
m_lastName.addValidationListener(new StringLengthValidationListener(
- MAX_NAME_LEN));
+ MAX_NAME_LEN));
m_profilePart.add(m_lastNameLabel);
m_profilePart.add(m_lastName);
@@ -166,15 +166,15 @@ public abstract class UserForm extends Form
// add(new Label(""));
if (m_newUser) {
m_securityPart.add(new Label(LoginHelper
- .getMessage("login.userNewForm.securitySectionHeader"),
+ .getMessage("login.userNewForm.securitySectionHeader"),
false), ColumnPanel.FULL_WIDTH);
m_securityPart.add(new Label(LoginHelper
- .getMessage("login.userNewForm.securityBlurb")),
+ .getMessage("login.userNewForm.securityBlurb")),
ColumnPanel.FULL_WIDTH);
m_securityPart.add(new Label(LoginHelper
- .getMessage("login.userNewForm.passwordBlurb")),
+ .getMessage("login.userNewForm.passwordBlurb")),
ColumnPanel.FULL_WIDTH);
// Password
@@ -186,14 +186,14 @@ public abstract class UserForm extends Form
// Password confirmation
m_confirm = new Password(new StringParameter(
- FORM_PASSWORD_CONFIRMATION));
+ FORM_PASSWORD_CONFIRMATION));
m_confirm.addValidationListener(new NotEmptyValidationListener());
m_securityPart.add(m_confirmationLabel);
m_securityPart.add(m_confirm);
m_securityPart.add(new Label(LoginHelper
- .getMessage("login.userNewForm.questionBlurb")),
+ .getMessage("login.userNewForm.questionBlurb")),
ColumnPanel.FULL_WIDTH);
}
@@ -215,13 +215,13 @@ public abstract class UserForm extends Form
*/
@Override
public void init(final FormSectionEvent event)
- throws FormProcessException {
+ throws FormProcessException {
final PageState state = event.getPageState();
final User user = getUser(state);
if (user == null) {
throw new FormProcessException(LoginGlobalizationUtil.globalize(
- "login.userForm.couldnt_load_user"));
+ "login.userForm.couldnt_load_user"));
}
m_firstName.setValue(state, user.getGivenName());
m_lastName.setValue(state, user.getFamilyName());
@@ -234,8 +234,9 @@ public abstract class UserForm extends Form
* Gets the current user for initialising the form.
*
* @param state
+ *
* @return the current user, if the form should not be initialised with user
- * data.
+ * data.
*/
protected abstract User getUser(final PageState state);
@@ -246,18 +247,19 @@ public abstract class UserForm extends Form
* users.
*
* @param event
+ *
* @throws com.arsdigita.bebop.FormProcessException
*/
@Override
public void validate(final FormSectionEvent event)
- throws FormProcessException {
+ throws FormProcessException {
final PageState state = event.getPageState();
final FormData data = event.getFormData();
- final CdiUtil cdiUtil = new CdiUtil();
- final UserRepository userRepository = cdiUtil.findBean(UserRepository.class);
-
+ final UserRepository userRepository = CdiUtil.createCdiUtil().findBean(
+ UserRepository.class);
+
try {
if (m_newUser) {
// Verify that password and confirmation match
@@ -265,7 +267,7 @@ public abstract class UserForm extends Form
String confirm = (String) m_confirm.getValue(state);
if ((password != null) && (confirm != null)
- && !password.equals(confirm)) {
+ && !password.equals(confirm)) {
data.addError(FORM_PASSWORD_CONFIRMATION,
ERROR_MISMATCH_PASSWORD);
}
@@ -286,7 +288,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()
- && email != null && !email.equals(oldEmail)) {
+ && email != null && !email.equals(oldEmail)) {
final User result = userRepository.findByEmailAddress(email);
if (result != null) {
data.addError(FORM_EMAIL, ERROR_DUPLICATE_EMAIL);
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserInfo.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserInfo.java
index 583612086..c4873abe7 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserInfo.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserInfo.java
@@ -37,7 +37,6 @@ import org.libreccm.security.User;
import org.libreccm.web.ApplicationRepository;
import org.libreccm.web.CcmApplication;
-
/**
* A reusable Bebop component to display the primary attributes of the currently
* logged in user. Users can extend this class to provide information about
@@ -105,10 +104,9 @@ public class UserInfo extends SimpleContainer {
m_contentCenters = new ArrayList<>();
- final CdiUtil cdiUtil = new CdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
- ApplicationRepository.class);
-
+ final ApplicationRepository appRepo = CdiUtil
+ .createCdiUtil().findBean(ApplicationRepository.class);
+
m_contentCenters = appRepo.findByType(
"com.arsdigita.cms.ContentCenter");
}
@@ -185,6 +183,7 @@ public class UserInfo extends SimpleContainer {
/**
* @param state
+ *
* @return true if the user is logged in
*
*/
@@ -194,6 +193,7 @@ public class UserInfo extends SimpleContainer {
/**
* @param state
+ *
* @return the User object for which we are generating information
*
* @throws IllegalStateException if user is not logged in. Call
@@ -207,11 +207,10 @@ public class UserInfo extends SimpleContainer {
if (!isLoggedIn(state)) {
throw new IllegalStateException("user is not logged in");
}
-
- final CdiUtil cdiUtil = new CdiUtil();
- final Shiro shiro = cdiUtil.findBean(Shiro.class);
+
+ final Shiro shiro = CdiUtil.createCdiUtil().findBean(Shiro.class);
final User user = shiro.getUser();
-
+
return user;
}
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 2299bd253..f0d7afe45 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
@@ -141,27 +141,6 @@ public class UserLoginForm extends Form implements LoginConstants,
final boolean autoRegistrationOn) {
super(FORM_NAME, panel);
-// final ConfigurationManager confManager = CDI.current().select(
-// ConfigurationManager.class).get();
-// final BeanManager beanManager = CDI.current().getBeanManager();
-// final Set> beans = beanManager.getBeans(
-// ConfigurationManager.class);
-// final Iterator> iterator = beans.iterator();
-// final ConfigurationManager confManager;
-// if (iterator.hasNext()) {
-// @SuppressWarnings("unchecked")
-// final Bean bean
-// = (Bean) iterator
-// .next();
-// final CreationalContext ctx = beanManager.
-// createCreationalContext(bean);
-//
-// confManager = (ConfigurationManager) beanManager.getReference(
-// bean, ConfigurationManager.class, ctx);
-// } else {
-// throw new UncheckedWrapperException(
-// "Failed to lookup ConfigurationManager");
-// }
final ConfigurationManager confManager = CdiUtil.createCdiUtil()
.findBean(ConfigurationManager.class);
securityConfig = confManager.findConfiguration(SecurityConfig.class);
@@ -378,8 +357,7 @@ public class UserLoginForm extends Form implements LoginConstants,
throws FormProcessException {
PageState state = event.getPageState();
- final CdiUtil cdiUtil = new CdiUtil();
- final Subject subject = cdiUtil.findBean(Subject.class);
+ final Subject subject = CdiUtil.createCdiUtil().findBean(Subject.class);
final UsernamePasswordToken token = new UsernamePasswordToken(
m_loginName.getValue(state).toString(),
@@ -389,11 +367,12 @@ public class UserLoginForm extends Form implements LoginConstants,
try {
LOGGER.debug("Trying to login user {}...", subject.toString());
subject.login(token);
+ LOGGER.debug("User {} logged in successfully.", token.getUsername());
} catch (AuthenticationException ex) {
onLoginFail(event, ex);
+ LOGGER.debug("Login failed.", ex);
}
- LOGGER.debug("User {} logged in successfully.", token.getUsername());
LOGGER.debug("subject = {}", subject.toString());
LOGGER.debug("Current session is: {}",
state.getRequest().getSession().getId());
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/UserLogoutListener.java b/ccm-core/src/main/java/com/arsdigita/ui/login/UserLogoutListener.java
index ee020463e..7a03a0c04 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/login/UserLogoutListener.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/login/UserLogoutListener.java
@@ -34,7 +34,7 @@ import org.libreccm.cdi.utils.CdiUtil;
public class UserLogoutListener implements ActionListener {
private static final Logger s_log = Logger.getLogger(
- UserLogoutListener.class);
+ UserLogoutListener.class);
/**
* Logs out the user.
@@ -44,9 +44,7 @@ public class UserLogoutListener implements ActionListener {
*/
@Override
public void actionPerformed(final ActionEvent event) {
-
- final CdiUtil cdiUtil = new CdiUtil();
- final Subject subject = cdiUtil.findBean(Subject.class);
+ final Subject subject = CdiUtil.createCdiUtil().findBean(Subject.class);
subject.logout();
}
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..04acac9e8 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
@@ -151,7 +151,7 @@ public class UserNewForm extends UserForm implements FormInitListener,
final Exception[] formExceptions = new Exception[]{null};
- final CdiUtil cdiUtil = new CdiUtil();
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final Shiro shiro = cdiUtil.findBean(Shiro.class);
shiro.getSystemUser().execute(new Callable() {
@@ -159,9 +159,8 @@ public class UserNewForm extends UserForm implements FormInitListener,
@Override
public Void call() throws Exception {
- final CdiUtil cdiUtil = new CdiUtil();
- final UserManager userManager = cdiUtil.findBean(
- UserManager.class);
+ final UserManager userManager = CdiUtil.createCdiUtil()
+ .findBean(UserManager.class);
userManager.createUser(firstName,
lastName,
screenName,
diff --git a/ccm-core/src/main/java/com/arsdigita/web/WebConfig.java b/ccm-core/src/main/java/com/arsdigita/web/WebConfig.java
index 1a5052d7c..10f52b3bb 100644
--- a/ccm-core/src/main/java/com/arsdigita/web/WebConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/web/WebConfig.java
@@ -22,20 +22,16 @@ import com.arsdigita.util.UncheckedWrapperException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.message.ParameterizedMessage;
+import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.configuration.Configuration;
import org.libreccm.configuration.ConfigurationManager;
import org.libreccm.configuration.Setting;
import java.lang.reflect.Method;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
import java.util.StringJoiner;
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.CDI;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
@@ -84,36 +80,9 @@ public final class WebConfig {
private String dynamicHostProviderClass;
public static WebConfig getConfig() {
- final ConfigurationManager confManager = CDI.current().select(
- ConfigurationManager.class).get();
-// final BeanManager beanManager = CDI.current().getBeanManager();
-// final Set> beans = beanManager.getBeans(
-// ConfigurationManager.class);
-// final Iterator> iterator = beans.iterator();
-// final ConfigurationManager confManager;
-// if (iterator.hasNext()) {
-// @SuppressWarnings("unchecked")
-// final Bean bean
-// = (Bean) iterator
-// .next();
-// final CreationalContext ctx = beanManager
-// .createCreationalContext(bean);
-//
-// confManager = (ConfigurationManager) beanManager.getReference(
-// bean, ConfigurationManager.class, ctx);
-// } else {
-// LOGGER.error(new ParameterizedMessage(
-// "No CDI Bean for type {} found.",
-// ConfigurationManager.class.getName()));
-// throw new IllegalStateException(String.format(
-// "No CDI Bean for type \"%s\" found",
-// ConfigurationManager.class.getName()));
-// }
-
-// final CdiUtil cdiUtil = new CdiUtil();
-// final ConfigurationManager confManager = cdiUtil.findBean(
-// ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(WebConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/workflow/simple/WorkflowConfig.java b/ccm-core/src/main/java/com/arsdigita/workflow/simple/WorkflowConfig.java
index 3a40dbbfc..bf213043a 100755
--- a/ccm-core/src/main/java/com/arsdigita/workflow/simple/WorkflowConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/workflow/simple/WorkflowConfig.java
@@ -39,9 +39,8 @@ public final class WorkflowConfig {
private String alertsSender;
public static WorkflowConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(WorkflowConfig.class);
}
diff --git a/ccm-core/src/main/java/com/arsdigita/xml/XmlConfig.java b/ccm-core/src/main/java/com/arsdigita/xml/XmlConfig.java
index 631ee3532..dc85b10f1 100644
--- a/ccm-core/src/main/java/com/arsdigita/xml/XmlConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/xml/XmlConfig.java
@@ -72,9 +72,8 @@ public final class XmlConfig {
private Boolean fullTimeFormatterEnabled = false;
public static XmlConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(XmlConfig.class);
}
@@ -117,11 +116,11 @@ public final class XmlConfig {
return domBuilder;
}
- /**
+ /**
* Returns the Document Builder factory class name to use
*
* The method assures that the return value is a valid class name.
- *
+ *
* Not used at the moment.
*
* @return String Document Builder factory class name
@@ -134,20 +133,19 @@ public final class XmlConfig {
return getDefaultDomBuilderFactoryClassname();
}
}
-
+
/**
- * Returns the class name of the default {@link DocumentBuilderFactory}.
- * This method encapsulates the default value so that is easy to change. The method is only for
- * use by the classes in the {@code com.arsdigita.xml} package, therefore the method is
- * only accessible from the package.
- *
- * @return
+ * Returns the class name of the default {@link DocumentBuilderFactory}.
+ * This method encapsulates the default value so that is easy to change. The
+ * method is only for use by the classes in the {@code com.arsdigita.xml}
+ * package, therefore the method is only accessible from the package.
+ *
+ * @return
*/
String getDefaultDomBuilderFactoryClassname() {
return DOM_XERCES;
}
-
public void setDomBuilder(final String domBuilder) {
this.domBuilder = domBuilder;
}
@@ -156,11 +154,11 @@ public final class XmlConfig {
return saxParser;
}
- /**
+ /**
* Returns the Sax Parser factory class name to use.
*
* The method assures that the return value is a valid class name.
- *
+ *
* Not used at the moment.
*
* @return String Sax Parser factory class name
@@ -175,18 +173,17 @@ public final class XmlConfig {
}
/**
- * Returns the class name of the default {@link SAXParserFactory}.
- * This method encapsulates the default value so that is easy to change. The method is only for
- * use by the classes in the {@code com.arsdigita.xml} package, therefore the method is
- * only visible in the package.
- *
- * @return
+ * Returns the class name of the default {@link SAXParserFactory}. This
+ * method encapsulates the default value so that is easy to change. The
+ * method is only for use by the classes in the {@code com.arsdigita.xml}
+ * package, therefore the method is only visible in the package.
+ *
+ * @return
*/
String getDefaultSaxParserFactoryClassname() {
return SAX_XERCES;
}
-
public void setSaxParser(final String saxParser) {
this.saxParser = saxParser;
}
diff --git a/ccm-core/src/main/java/com/arsdigita/xml/formatters/DateFormatterConfig.java b/ccm-core/src/main/java/com/arsdigita/xml/formatters/DateFormatterConfig.java
index 56745b5a1..5663fe4df 100755
--- a/ccm-core/src/main/java/com/arsdigita/xml/formatters/DateFormatterConfig.java
+++ b/ccm-core/src/main/java/com/arsdigita/xml/formatters/DateFormatterConfig.java
@@ -36,9 +36,8 @@ public final class DateFormatterConfig {
private String locale = null;
public static DateFormatterConfig getConfig() {
- final CdiUtil cdiUtil = new CdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ final ConfigurationManager confManager = CdiUtil.createCdiUtil()
+ .findBean(ConfigurationManager.class);
return confManager.findConfiguration(DateFormatterConfig.class);
}
diff --git a/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java b/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java
index 640c2934f..a1a101c05 100644
--- a/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java
+++ b/ccm-core/src/main/java/org/libreccm/cdi/utils/CdiUtil.java
@@ -28,7 +28,6 @@ import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.CDI;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@@ -42,10 +41,6 @@ public class CdiUtil {
private final BeanManager beanManager;
- public CdiUtil() {
- beanManager = CDI.current().getBeanManager();
- }
-
private CdiUtil(final BeanManager beanManager) {
this.beanManager = beanManager;
}
diff --git a/ccm-core/src/main/java/org/libreccm/security/Group.java b/ccm-core/src/main/java/org/libreccm/security/Group.java
index 3ba918b05..286a8f6a1 100644
--- a/ccm-core/src/main/java/org/libreccm/security/Group.java
+++ b/ccm-core/src/main/java/org/libreccm/security/Group.java
@@ -21,10 +21,10 @@ package org.libreccm.security;
import static org.libreccm.core.CoreConstants.*;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
+import java.util.HashSet;
import java.util.Objects;
+import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
@@ -65,21 +65,21 @@ public class Group extends Party implements Serializable {
@OneToMany(mappedBy = "group")
@XmlElementWrapper(name = "group-memberships", namespace = CORE_XML_NS)
@XmlElement(name = "group-membership", namespace = CORE_XML_NS)
- private List memberships = new ArrayList<>();
+ private Set memberships = new HashSet<>();
protected Group() {
super();
}
- public List getMemberships() {
+ public Set getMemberships() {
if (memberships == null) {
return null;
} else {
- return Collections.unmodifiableList(memberships);
+ return Collections.unmodifiableSet(memberships);
}
}
- protected void setMemberships(final List memberships) {
+ protected void setMemberships(final Set memberships) {
this.memberships = memberships;
}
diff --git a/ccm-core/src/main/java/org/libreccm/security/Party.java b/ccm-core/src/main/java/org/libreccm/security/Party.java
index 32c544fb8..2e6b681d0 100644
--- a/ccm-core/src/main/java/org/libreccm/security/Party.java
+++ b/ccm-core/src/main/java/org/libreccm/security/Party.java
@@ -23,10 +23,10 @@ import static org.libreccm.core.CoreConstants.*;
import org.libreccm.core.DefaultEntityGraph;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
+import java.util.HashSet;
import java.util.Objects;
+import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -91,7 +91,7 @@ public class Party implements Serializable {
@OneToMany(mappedBy = "member")
@XmlElementWrapper(name = "role-memberships", namespace = CORE_XML_NS)
@XmlElement(name = "role-membership", namespace = CORE_XML_NS)
- private List roleMemberships = new ArrayList<>();
+ private Set roleMemberships = new HashSet<>();
protected Party() {
super();
@@ -113,15 +113,15 @@ public class Party implements Serializable {
this.name = name;
}
- public List getRoleMemberships() {
+ public Set getRoleMemberships() {
if (roleMemberships == null) {
return null;
} else {
- return Collections.unmodifiableList(roleMemberships);
+ return Collections.unmodifiableSet(roleMemberships);
}
}
- protected void setRoleMemberships(final List roleMemberships) {
+ protected void setRoleMemberships(final Set roleMemberships) {
this.roleMemberships = roleMemberships;
}
diff --git a/ccm-core/src/main/java/org/libreccm/security/Role.java b/ccm-core/src/main/java/org/libreccm/security/Role.java
index 97941088b..de0e36616 100644
--- a/ccm-core/src/main/java/org/libreccm/security/Role.java
+++ b/ccm-core/src/main/java/org/libreccm/security/Role.java
@@ -26,8 +26,10 @@ import org.libreccm.workflow.TaskAssignment;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -83,7 +85,7 @@ public class Role implements Serializable {
@OneToMany(mappedBy = "role")
@XmlElementWrapper(name = "role-memberships", namespace = CORE_XML_NS)
@XmlElement(name = "role-membership", namespace = CORE_XML_NS)
- private List memberships = new ArrayList<>();
+ private Set memberships = new HashSet<>();
/**
* Permissions granted to the role.
@@ -116,15 +118,15 @@ public class Role implements Serializable {
this.name = name;
}
- public List getMemberships() {
+ public Set getMemberships() {
if (memberships == null) {
return null;
} else {
- return Collections.unmodifiableList(memberships);
+ return Collections.unmodifiableSet(memberships);
}
}
- protected void setMemberships(final List memberships) {
+ protected void setMemberships(final Set memberships) {
this.memberships = memberships;
}
diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredCollection.java b/ccm-core/src/main/java/org/libreccm/security/SecuredCollection.java
index cccab8a9b..a99474597 100644
--- a/ccm-core/src/main/java/org/libreccm/security/SecuredCollection.java
+++ b/ccm-core/src/main/java/org/libreccm/security/SecuredCollection.java
@@ -111,9 +111,8 @@ public class SecuredCollection implements Collection {
@Override
@SuppressWarnings("unchecked")
public Object[] toArray() {
- final CdiUtil cdiUtil = new CdiUtil();
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
+ final PermissionChecker permissionChecker = CdiUtil.createCdiUtil()
+ .findBean(PermissionChecker.class);
final Object[] objects = collection.toArray();
for (int i = 0; i < objects.length; i++) {
@@ -129,9 +128,8 @@ public class SecuredCollection implements Collection {
@Override
@SuppressWarnings({"unchecked", "PMD.UseVarargs"})
public T[] toArray(final T[] array) {
- final CdiUtil cdiUtil = new CdiUtil();
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
+ final PermissionChecker permissionChecker = CdiUtil.createCdiUtil()
+ .findBean(PermissionChecker.class);
final T[] objects = collection.toArray(array);
for (int i = 0; i < objects.length; i++) {
diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredEntrySet.java b/ccm-core/src/main/java/org/libreccm/security/SecuredEntrySet.java
index fb3265f0b..f46709b45 100644
--- a/ccm-core/src/main/java/org/libreccm/security/SecuredEntrySet.java
+++ b/ccm-core/src/main/java/org/libreccm/security/SecuredEntrySet.java
@@ -90,10 +90,9 @@ class SecuredEntrySet, K, V extends CcmObject>
@Override
@SuppressWarnings("unchecked")
public Object[] toArray() {
- final CdiUtil cdiUtil = new CdiUtil();
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
-
+ final PermissionChecker permissionChecker = CdiUtil.createCdiUtil()
+ .findBean(PermissionChecker.class);
+
final Object[] entries = set.toArray();
for (int i = 0; i < entries.length; i++) {
final E entry = (E) entries[i];
@@ -109,10 +108,9 @@ class SecuredEntrySet, K, V extends CcmObject>
@Override
@SuppressWarnings({"unchecked", "PMD.UseVarargs"})
public T[] toArray(final T[] array) {
- final CdiUtil cdiUtil = new CdiUtil();
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
-
+ final PermissionChecker permissionChecker = CdiUtil.createCdiUtil()
+ .findBean(PermissionChecker.class);
+
final E[] entries = (E[]) set.toArray(array);
for (int i = 0; i < entries.length; i++) {
if (!permissionChecker.isPermitted(requiredPrivilege,
diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java b/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java
index 45bbbea99..839a7bc85 100644
--- a/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java
+++ b/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java
@@ -18,7 +18,6 @@
*/
package org.libreccm.security;
-
import static org.libreccm.core.CoreConstants.*;
import org.apache.logging.log4j.LogManager;
@@ -34,7 +33,7 @@ import org.libreccm.core.CcmObject;
class SecuredHelper {
private final static Logger LOGGER = LogManager.getLogger(
- SecuredHelper.class);
+ SecuredHelper.class);
/**
* Class of the objects in the collection.
@@ -56,20 +55,21 @@ class SecuredHelper {
* object with the provided privilege.
*
* @param object The object to check.
+ *
* @return The provided {@code object} if the current subject has the
- * permission to access it with the provided {@code privilege}. Otherwise a
- * placeholder object is returned. The {@link CcmObject#displayName}
- * property of these object is set to {@code Access denied}.
+ * permission to access it with the provided {@code privilege}.
+ * Otherwise a placeholder object is returned. The
+ * {@link CcmObject#displayName} property of these object is set to
+ * {@code Access denied}.
*/
protected E canAccess(final E object) {
if (object == null) {
return null;
}
-
- final CdiUtil cdiUtil = new CdiUtil();
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
-
+
+ final PermissionChecker permissionChecker = CdiUtil.createCdiUtil()
+ .findBean(PermissionChecker.class);
+
if (permissionChecker.isPermitted(requiredPrivilege, object)) {
return object;
} else {
@@ -81,17 +81,18 @@ class SecuredHelper {
* Helper method for creating an Access denied placeholder object.
*
* @return An object of the provided {@link #clazz} with it's
- * {@link CcmObject#displayName} property set to {@code Access denied}.
+ * {@link CcmObject#displayName} property set to
+ * {@code Access denied}.
*/
protected E generateAccessDeniedObject() {
try {
final E placeholder = clazz.newInstance();
placeholder.setDisplayName(ACCESS_DENIED);
-
+
return placeholder;
} catch (InstantiationException | IllegalAccessException ex) {
LOGGER.error(
- "Failed to create placeholder object. Returing null.", ex);
+ "Failed to create placeholder object. Returing null.", ex);
return null;
}
}
diff --git a/ccm-core/src/main/java/org/libreccm/security/User.java b/ccm-core/src/main/java/org/libreccm/security/User.java
index e92577363..7c9235325 100644
--- a/ccm-core/src/main/java/org/libreccm/security/User.java
+++ b/ccm-core/src/main/java/org/libreccm/security/User.java
@@ -26,8 +26,10 @@ import org.libreccm.core.EmailAddress;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
import javax.persistence.AssociationOverride;
import javax.persistence.CollectionTable;
@@ -43,8 +45,8 @@ import javax.persistence.NamedEntityGraph;
import javax.persistence.NamedEntityGraphs;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
+import javax.persistence.NamedSubgraph;
import javax.persistence.OneToMany;
-import javax.persistence.OrderColumn;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlElement;
@@ -68,12 +70,28 @@ import javax.xml.bind.annotation.XmlTransient;
+ "u.primaryEmailAddress.address = :emailAddress")
})
@NamedEntityGraphs({
- @NamedEntityGraph(name = "User.withGroupAndRoleMemberships",
- attributeNodes = {
- @NamedAttributeNode(
- value = "groupMemberships"),
- @NamedAttributeNode(
- value = "roleMemberships")})
+ @NamedEntityGraph(
+ name = "User.withGroupAndRoleMemberships",
+ attributeNodes = {
+ @NamedAttributeNode(
+ value = "groupMemberships"),
+ @NamedAttributeNode(
+ value = "roleMemberships",
+ subgraph = "role")},
+ subgraphs = {
+ @NamedSubgraph(
+ name = "role",
+ attributeNodes = {
+ @NamedAttributeNode(value = "role",
+ subgraph = "permissions")
+ }),
+ @NamedSubgraph(
+ name = "permissions",
+ attributeNodes = {
+ @NamedAttributeNode(value = "permissions")}
+ )
+ })
+
})
@DefaultEntityGraph("User.withGroupAndRoleMemberships")
@XmlRootElement(name = "user", namespace = CORE_XML_NS)
@@ -157,7 +175,7 @@ public class User extends Party implements Serializable {
@OneToMany(mappedBy = "member")
@XmlElementWrapper(name = "group-memberships", namespace = CORE_XML_NS)
@XmlElement(name = "group-membership", namespace = CORE_XML_NS)
- private List groupMemberships = new ArrayList<>();
+ private Set groupMemberships = new HashSet<>();
protected User() {
super();
@@ -232,12 +250,12 @@ public class User extends Party implements Serializable {
this.passwordResetRequired = passwordResetRequired;
}
- public List getGroupMemberships() {
- return Collections.unmodifiableList(groupMemberships);
+ public Set getGroupMemberships() {
+ return Collections.unmodifiableSet(groupMemberships);
}
protected void setGroupMemberships(
- final List groupMemberships) {
+ final Set groupMemberships) {
this.groupMemberships = groupMemberships;
}
diff --git a/ccm-core/src/main/java/org/libreccm/security/UserRepository.java b/ccm-core/src/main/java/org/libreccm/security/UserRepository.java
index 41c523895..dff354952 100644
--- a/ccm-core/src/main/java/org/libreccm/security/UserRepository.java
+++ b/ccm-core/src/main/java/org/libreccm/security/UserRepository.java
@@ -23,6 +23,7 @@ import org.libreccm.core.AbstractEntityRepository;
import java.util.List;
import java.util.Optional;
+import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.RequestScoped;
import javax.persistence.EntityGraph;
import javax.persistence.TypedQuery;