Fixed more lazy init exceptions

ccm-docs
Jens Pelzetter 2020-02-24 21:47:42 +01:00
parent efbd5a6705
commit 084cd44e31
4 changed files with 147 additions and 26 deletions

View File

@ -18,9 +18,12 @@
*/ */
package com.arsdigita.cms.ui.lifecycle; package com.arsdigita.cms.ui.lifecycle;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.KernelConfig; import com.arsdigita.kernel.KernelConfig;
import com.arsdigita.toolbox.ui.Property;
import org.libreccm.configuration.ConfigurationManager; import org.libreccm.configuration.ConfigurationManager;
import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager; import org.librecms.contentsection.ContentSectionManager;
import org.librecms.contentsection.ContentSectionRepository; import org.librecms.contentsection.ContentSectionRepository;
@ -102,6 +105,47 @@ class LifecycleAdminPaneController {
); );
return item; return item;
} }
@Transactional(Transactional.TxType.REQUIRED)
public List<Property> getLifecycleProperties(
final LifecycleDefinition ofLifecycleDefinition
) {
final LifecycleDefinition definition = lifecycleDefRepo
.findById(ofLifecycleDefinition.getDefinitionId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No LifecycleDefinition with ID %d found.",
ofLifecycleDefinition.getDefinitionId()
)
)
);
final KernelConfig kernelConfig = confManager
.findConfiguration(KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale();
final List<Property> properties = new ArrayList<>();
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.lifecycle.name",
CmsConstants.CMS_BUNDLE
),
definition.getLabel().getValue(defaultLocale)
)
);
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.lifecycle.description",
CmsConstants.CMS_BUNDLE
),
definition.getDescription().getValue(defaultLocale)
)
);
return properties;
}
/** /**
* Create a new lifecycle definition * Create a new lifecycle definition

View File

@ -61,9 +61,11 @@ import java.util.Locale;
class LifecycleItemPane extends BaseItemPane { class LifecycleItemPane extends BaseItemPane {
private final LifecycleDefinitionRequestLocal selectedLifecycle; private final LifecycleDefinitionRequestLocal selectedLifecycle;
private final PhaseRequestLocal selectedPhase; private final PhaseRequestLocal selectedPhase;
private final Container detailPane; private final Container detailPane;
private final Table phasesTable; private final Table phasesTable;
public LifecycleItemPane( public LifecycleItemPane(
@ -144,23 +146,27 @@ class LifecycleItemPane extends BaseItemPane {
final PageState state) { final PageState state) {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ConfigurationManager confManager = cdiUtil.findBean( // final ConfigurationManager confManager = cdiUtil.findBean(
ConfigurationManager.class); // ConfigurationManager.class);
final KernelConfig kernelConfig = confManager.findConfiguration( // final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class); // KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale(); // final Locale defaultLocale = kernelConfig.getDefaultLocale();
final LifecycleAdminPaneController controller = cdiUtil
.findBean(LifecycleAdminPaneController.class);
final java.util.List<Property> props = super.properties(state); final java.util.List<Property> props = super.properties(state);
final LifecycleDefinition cycle = selectedLifecycle final LifecycleDefinition cycle = selectedLifecycle
.getLifecycleDefinition(state); .getLifecycleDefinition(state);
props.add(new Property( props.addAll(controller.getLifecycleProperties(cycle));
gz("cms.ui.lifecycle.name"),
cycle.getLabel().getValue(defaultLocale)));
props.add(new Property(
gz("cms.ui.lifecycle.description"),
cycle.getDescription().getValue(defaultLocale)));
// props.add(new Property(
// gz("cms.ui.lifecycle.name"),
// cycle.getLabel().getValue(defaultLocale)));
// props.add(new Property(
// gz("cms.ui.lifecycle.description"),
// cycle.getDescription().getValue(defaultLocale)));
return props; return props;
} }

View File

@ -255,22 +255,28 @@ abstract class BaseWorkflowItemPane extends BaseItemPane {
= ((Optional<Workflow>) workflowRequestLocal = ((Optional<Workflow>) workflowRequestLocal
.get(state)).get(); .get(state)).get();
final KernelConfig kernelConfig = KernelConfig.getConfig(); // final KernelConfig kernelConfig = KernelConfig.getConfig();
final Locale defaultLocale = kernelConfig.getDefaultLocale(); // final Locale defaultLocale = kernelConfig.getDefaultLocale();
props.add(new Property(gz("cms.ui.workflow.name"), final WorkflowAdminPaneController controller = CdiUtil
workflow.getName() .createCdiUtil()
.getValue(defaultLocale))); .findBean(WorkflowAdminPaneController.class);
props.add(new Property(
gz("cms.ui.workflow.description"), props.addAll(controller.getWorkflowProperties(workflow));
workflow.getDescription().getValue(defaultLocale))); // props.add(new Property(gz("cms.ui.workflow.name"),
if (workflow.getState() == null) { // workflow.getName()
props.add(new Property(gz("cms.ui.workflow.current_state"), // .getValue(defaultLocale)));
gz("cms.ui.workflow.current_state.none"))); // props.add(new Property(
} else { // gz("cms.ui.workflow.description"),
props.add(new Property(gz("cms.ui.workflow.current_state"), // workflow.getDescription().getValue(defaultLocale)));
workflow.getState().toString())); // if (workflow.getState() == null) {
} // props.add(new Property(gz("cms.ui.workflow.current_state"),
// gz("cms.ui.workflow.current_state.none")));
// } else {
// props.add(new Property(gz("cms.ui.workflow.current_state"),
// workflow.getState().toString()));
// }
return props; return props;
} }

View File

@ -18,7 +18,9 @@
*/ */
package com.arsdigita.cms.ui.workflow; package com.arsdigita.cms.ui.workflow;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.KernelConfig; import com.arsdigita.kernel.KernelConfig;
import com.arsdigita.toolbox.ui.Property;
import com.arsdigita.util.GraphSet; import com.arsdigita.util.GraphSet;
import com.arsdigita.util.Graphs; import com.arsdigita.util.Graphs;
import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.util.UncheckedWrapperException;
@ -36,6 +38,7 @@ import org.libreccm.workflow.TaskManager;
import org.libreccm.workflow.TaskRepository; import org.libreccm.workflow.TaskRepository;
import org.libreccm.workflow.Workflow; import org.libreccm.workflow.Workflow;
import org.libreccm.workflow.WorkflowRepository; import org.libreccm.workflow.WorkflowRepository;
import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager; import org.librecms.contentsection.ContentSectionManager;
import org.librecms.contentsection.ContentSectionRepository; import org.librecms.contentsection.ContentSectionRepository;
@ -131,6 +134,68 @@ public class WorkflowAdminPaneController {
return item; return item;
} }
@Transactional(Transactional.TxType.REQUIRED)
public List<Property> getWorkflowProperties(final Workflow ofWorkflow) {
final Workflow workflow = workflowRepo
.findById(ofWorkflow.getWorkflowId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No Workflow with ID %d available.",
ofWorkflow.getWorkflowId()
)
)
);
final KernelConfig kernelConfig = confManager
.findConfiguration(KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale();
final List<Property> properties = new ArrayList<>();
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.name", CmsConstants.CMS_BUNDLE
),
workflow.getName().getValue(defaultLocale)
)
);
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.description",
CmsConstants.CMS_BUNDLE
),
workflow.getDescription().getValue(defaultLocale)
)
);
if (workflow.getState() == null) {
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.current_state",
CmsConstants.CMS_BUNDLE
),
new GlobalizedMessage(
"cms.ui.workflow.current_state.none",
CmsConstants.CMS_BUNDLE
)
)
);
} else {
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.current_state",
CmsConstants.CMS_BUNDLE
),
workflow.getState().toString()
)
);
}
return properties;
}
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public Workflow createWorkflow(final ContentSection section, public Workflow createWorkflow(final ContentSection section,
final String name, final String name,