From f30dadf1681a4f98c30095c4d96b505d3d218d90 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Tue, 3 Mar 2020 20:37:34 +0100 Subject: [PATCH] Fixed more lazy init exceptions --- .../cms/ui/folder/FolderEditForm.java | 8 +- .../cms/ui/folder/FolderEditorForm.java | 10 +-- .../ui/folder/FolderEditorFormController.java | 50 +++++++++++++ .../LifecycleAdminPaneController.java | 75 ++++++++++++++----- .../cms/ui/lifecycle/LifecycleEditForm.java | 13 +++- 5 files changed, 126 insertions(+), 30 deletions(-) create mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorFormController.java diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditForm.java index cb0e8abce..99cd04a80 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditForm.java @@ -35,12 +35,12 @@ class FolderEditForm extends FolderBaseForm { private static Logger LOGGER = LogManager.getLogger(FolderEditForm.class); - private final FolderRequestLocal m_folder; + private final FolderRequestLocal folderRequestLocal; public FolderEditForm(final FolderRequestLocal folder) { super("folder-edit"); - m_folder = folder; + folderRequestLocal = folder; // XXX need to do name uniqueness valdation on m_fragment here // as well. @@ -68,7 +68,7 @@ class FolderEditForm extends FolderBaseForm { public final void init(final FormSectionEvent e) { final PageState state = e.getPageState(); - final Category folder = m_folder.getFolder(state); + final Category folder = folderRequestLocal.getFolder(state); m_title.setValue(state, folder.getDisplayName()); m_fragment.setValue(state, folder.getName()); @@ -80,7 +80,7 @@ class FolderEditForm extends FolderBaseForm { throws FormProcessException { final PageState state = e.getPageState(); - final Category folder = m_folder.getFolder(state); + final Category folder = folderRequestLocal.getFolder(state); folder.setDisplayName((String) m_title.getValue(state)); folder.setName((String) m_fragment.getValue(state)); diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorForm.java index c66e77b7c..16de2c954 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorForm.java @@ -63,12 +63,10 @@ public class FolderEditorForm extends FolderForm { final Folder folder = getCurrentFolder(state); data.put(NAME, folder.getName()); final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final ConfigurationManager confManager = cdiUtil.findBean( - ConfigurationManager.class); - final KernelConfig kernelConfig = confManager.findConfiguration( - KernelConfig.class); - data.put(TITLE, - folder.getTitle().getValue(kernelConfig.getDefaultLocale())); + final FolderEditorFormController controller = cdiUtil.findBean( + FolderEditorFormController.class + ); + data.put(TITLE, controller.getFolderTitle(folder)); } /** diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorFormController.java new file mode 100644 index 000000000..9ad21a482 --- /dev/null +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderEditorFormController.java @@ -0,0 +1,50 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.ui.folder; + +import com.arsdigita.kernel.KernelConfig; + +import org.libreccm.configuration.ConfigurationManager; +import org.librecms.contentsection.Folder; +import org.librecms.contentsection.FolderRepository; + +import java.util.Objects; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.transaction.Transactional; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +public class FolderEditorFormController { + + @Inject + private ConfigurationManager confManager; + + @Inject + private FolderRepository folderRepository; + + @Transactional(Transactional.TxType.REQUIRED) + public String getFolderTitle(final Folder ofFolder) { + final Folder folder = folderRepository + .findById(Objects.requireNonNull(ofFolder).getObjectId()) + .orElseThrow( + () -> new IllegalArgumentException( + String.format("No folder with ID %d available.", + ofFolder.getObjectId()) + ) + ); + + final KernelConfig kernelConfig = confManager.findConfiguration( + KernelConfig.class + ); + return folder.getTitle().getValue(kernelConfig.getDefaultLocale()); + } + +} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleAdminPaneController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleAdminPaneController.java index 51a6980cf..b11197a58 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleAdminPaneController.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleAdminPaneController.java @@ -100,51 +100,51 @@ class LifecycleAdminPaneController { item.put( LifecycleListModelBuilder.LIFECYCLE_DEF_LABEL, lifecycleDefinition - .getLabel() - .getValue(KernelConfig.getConfig().getDefaultLocale()) + .getLabel() + .getValue(KernelConfig.getConfig().getDefaultLocale()) ); return item; } - + @Transactional(Transactional.TxType.REQUIRED) public List getLifecycleProperties( final LifecycleDefinition ofLifecycleDefinition ) { final LifecycleDefinition definition = lifecycleDefRepo - .findById(ofLifecycleDefinition.getDefinitionId()) - .orElseThrow( - () -> new IllegalArgumentException( - String.format( - "No LifecycleDefinition with ID %d found.", - ofLifecycleDefinition.getDefinitionId() + .findById(ofLifecycleDefinition.getDefinitionId()) + .orElseThrow( + () -> new IllegalArgumentException( + String.format( + "No LifecycleDefinition with ID %d found.", + ofLifecycleDefinition.getDefinitionId() + ) ) - ) - ); - + ); + final KernelConfig kernelConfig = confManager - .findConfiguration(KernelConfig.class); + .findConfiguration(KernelConfig.class); final Locale defaultLocale = kernelConfig.getDefaultLocale(); - + final List properties = new ArrayList<>(); properties.add( new Property( new GlobalizedMessage( - "cms.ui.lifecycle.name", + "cms.ui.lifecycle.name", CmsConstants.CMS_BUNDLE ), definition.getLabel().getValue(defaultLocale) ) ); - properties.add( + properties.add( new Property( new GlobalizedMessage( - "cms.ui.lifecycle.description", + "cms.ui.lifecycle.description", CmsConstants.CMS_BUNDLE ), definition.getDescription().getValue(defaultLocale) ) ); - return properties; + return properties; } /** @@ -362,7 +362,46 @@ class LifecycleAdminPaneController { phaseDefinition.setDefaultDuration(duration); phaseDefRepo.save(phaseDefinition); + } + @Transactional(Transactional.TxType.REQUIRED) + public String getLifecycleDefinitionName( + final LifecycleDefinition ofCycle + ) { + final LifecycleDefinition cycle = lifecycleDefRepo.findById( + Objects.requireNonNull(ofCycle).getDefinitionId() + ).orElseThrow( + () -> new IllegalArgumentException( + String.format( + "No LifecycleDefinition with ID %d available", + ofCycle.getDefinitionId() + ) + ) + ); + final KernelConfig kernelConfig = confManager.findConfiguration( + KernelConfig.class + ); + return cycle.getLabel().getValue(kernelConfig.getDefaultLocale()); + } + + @Transactional(Transactional.TxType.REQUIRED) + public String getLifecycleDefinitionDescription( + final LifecycleDefinition ofCycle + ) { + final LifecycleDefinition cycle = lifecycleDefRepo.findById( + Objects.requireNonNull(ofCycle).getDefinitionId() + ).orElseThrow( + () -> new IllegalArgumentException( + String.format( + "No LifecycleDefinition with ID %d available", + ofCycle.getDefinitionId() + ) + ) + ); + final KernelConfig kernelConfig = confManager.findConfiguration( + KernelConfig.class + ); + return cycle.getDescription().getValue(kernelConfig.getDefaultLocale()); } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleEditForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleEditForm.java index 325a56b11..7ddbfce34 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleEditForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/lifecycle/LifecycleEditForm.java @@ -59,8 +59,17 @@ class LifecycleEditForm extends BaseLifecycleForm { final LifecycleDefinition cycle = selectedDefinition .getLifecycleDefinition(state); - getLifecycleName().setValue(state, cycle.getLabel()); - getLifecycleDescription().setValue(state, cycle.getDescription()); + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final LifecycleAdminPaneController controller = cdiUtil.findBean( + LifecycleAdminPaneController.class + ); + + getLifecycleName().setValue( + state, controller.getLifecycleDefinitionName(cycle) + ); + getLifecycleDescription().setValue( + state, controller.getLifecycleDefinitionDescription(cycle) + ); } }