Fixed more lazy init exceptions

Former-commit-id: f30dadf168
pull/2/head
Jens Pelzetter 2020-03-03 20:37:34 +01:00
parent 01b47b29d9
commit b146cd833c
5 changed files with 126 additions and 30 deletions

View File

@ -35,12 +35,12 @@ class FolderEditForm extends FolderBaseForm {
private static Logger LOGGER = LogManager.getLogger(FolderEditForm.class); private static Logger LOGGER = LogManager.getLogger(FolderEditForm.class);
private final FolderRequestLocal m_folder; private final FolderRequestLocal folderRequestLocal;
public FolderEditForm(final FolderRequestLocal folder) { public FolderEditForm(final FolderRequestLocal folder) {
super("folder-edit"); super("folder-edit");
m_folder = folder; folderRequestLocal = folder;
// XXX need to do name uniqueness valdation on m_fragment here // XXX need to do name uniqueness valdation on m_fragment here
// as well. // as well.
@ -68,7 +68,7 @@ class FolderEditForm extends FolderBaseForm {
public final void init(final FormSectionEvent e) { public final void init(final FormSectionEvent e) {
final PageState state = e.getPageState(); 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_title.setValue(state, folder.getDisplayName());
m_fragment.setValue(state, folder.getName()); m_fragment.setValue(state, folder.getName());
@ -80,7 +80,7 @@ class FolderEditForm extends FolderBaseForm {
throws FormProcessException { throws FormProcessException {
final PageState state = e.getPageState(); 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.setDisplayName((String) m_title.getValue(state));
folder.setName((String) m_fragment.getValue(state)); folder.setName((String) m_fragment.getValue(state));

View File

@ -63,12 +63,10 @@ public class FolderEditorForm extends FolderForm {
final Folder folder = getCurrentFolder(state); final Folder folder = getCurrentFolder(state);
data.put(NAME, folder.getName()); data.put(NAME, folder.getName());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ConfigurationManager confManager = cdiUtil.findBean( final FolderEditorFormController controller = cdiUtil.findBean(
ConfigurationManager.class); FolderEditorFormController.class
final KernelConfig kernelConfig = confManager.findConfiguration( );
KernelConfig.class); data.put(TITLE, controller.getFolderTitle(folder));
data.put(TITLE,
folder.getTitle().getValue(kernelConfig.getDefaultLocale()));
} }
/** /**

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@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());
}
}

View File

@ -100,51 +100,51 @@ class LifecycleAdminPaneController {
item.put( item.put(
LifecycleListModelBuilder.LIFECYCLE_DEF_LABEL, LifecycleListModelBuilder.LIFECYCLE_DEF_LABEL,
lifecycleDefinition lifecycleDefinition
.getLabel() .getLabel()
.getValue(KernelConfig.getConfig().getDefaultLocale()) .getValue(KernelConfig.getConfig().getDefaultLocale())
); );
return item; return item;
} }
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public List<Property> getLifecycleProperties( public List<Property> getLifecycleProperties(
final LifecycleDefinition ofLifecycleDefinition final LifecycleDefinition ofLifecycleDefinition
) { ) {
final LifecycleDefinition definition = lifecycleDefRepo final LifecycleDefinition definition = lifecycleDefRepo
.findById(ofLifecycleDefinition.getDefinitionId()) .findById(ofLifecycleDefinition.getDefinitionId())
.orElseThrow( .orElseThrow(
() -> new IllegalArgumentException( () -> new IllegalArgumentException(
String.format( String.format(
"No LifecycleDefinition with ID %d found.", "No LifecycleDefinition with ID %d found.",
ofLifecycleDefinition.getDefinitionId() ofLifecycleDefinition.getDefinitionId()
)
) )
) );
);
final KernelConfig kernelConfig = confManager final KernelConfig kernelConfig = confManager
.findConfiguration(KernelConfig.class); .findConfiguration(KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale(); final Locale defaultLocale = kernelConfig.getDefaultLocale();
final List<Property> properties = new ArrayList<>(); final List<Property> properties = new ArrayList<>();
properties.add( properties.add(
new Property( new Property(
new GlobalizedMessage( new GlobalizedMessage(
"cms.ui.lifecycle.name", "cms.ui.lifecycle.name",
CmsConstants.CMS_BUNDLE CmsConstants.CMS_BUNDLE
), ),
definition.getLabel().getValue(defaultLocale) definition.getLabel().getValue(defaultLocale)
) )
); );
properties.add( properties.add(
new Property( new Property(
new GlobalizedMessage( new GlobalizedMessage(
"cms.ui.lifecycle.description", "cms.ui.lifecycle.description",
CmsConstants.CMS_BUNDLE CmsConstants.CMS_BUNDLE
), ),
definition.getDescription().getValue(defaultLocale) definition.getDescription().getValue(defaultLocale)
) )
); );
return properties; return properties;
} }
/** /**
@ -362,7 +362,46 @@ class LifecycleAdminPaneController {
phaseDefinition.setDefaultDuration(duration); phaseDefinition.setDefaultDuration(duration);
phaseDefRepo.save(phaseDefinition); 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());
} }
} }

View File

@ -59,8 +59,17 @@ class LifecycleEditForm extends BaseLifecycleForm {
final LifecycleDefinition cycle = selectedDefinition final LifecycleDefinition cycle = selectedDefinition
.getLifecycleDefinition(state); .getLifecycleDefinition(state);
getLifecycleName().setValue(state, cycle.getLabel()); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
getLifecycleDescription().setValue(state, cycle.getDescription()); final LifecycleAdminPaneController controller = cdiUtil.findBean(
LifecycleAdminPaneController.class
);
getLifecycleName().setValue(
state, controller.getLifecycleDefinitionName(cycle)
);
getLifecycleDescription().setValue(
state, controller.getLifecycleDefinitionDescription(cycle)
);
} }
} }