From add19527cbec48e720144d327750e9e093f545fd Mon Sep 17 00:00:00 2001 From: Will Ezell Date: Tue, 8 Oct 2024 19:32:20 -0400 Subject: [PATCH] fix(osgi) force load OSGIActionletService when trying to register actionlets via plugin ref: #30291 --- .../workflows/business/WorkflowAPIImpl.java | 86 ++++++++++--------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/workflows/business/WorkflowAPIImpl.java b/dotCMS/src/main/java/com/dotmarketing/portlets/workflows/business/WorkflowAPIImpl.java index a6334ffe0c4f..b4147c4a7c01 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/workflows/business/WorkflowAPIImpl.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/workflows/business/WorkflowAPIImpl.java @@ -2375,49 +2375,55 @@ public WorkflowProcessor fireWorkflowPreCheckin(final Contentlet contentlet, fin return fireWorkflowPreCheckin(contentlet, user, null); } -private WorkflowProcessor fireWorkflowPreCheckin(final Contentlet contentlet, final User user, final ConcurrentMap context) throws DotDataException, DotWorkflowException, DotContentletValidationException { - WorkflowProcessor processor = new WorkflowProcessor(contentlet, user, context); - if (!processor.inProcess()) { - return processor; - } - - List actionClasses = processor.getActionClasses(); - boolean isPublish = actionClasses.stream() - .anyMatch(wac -> wac.getClazz().equals(PublishContentActionlet.class.getName())); - contentlet.setProperty(Contentlet.TO_BE_PUBLISH, isPublish); - - for (WorkflowActionClass actionClass : actionClasses) { - WorkFlowActionlet actionlet = actionClass.getActionlet(); - if (actionlet != null) { - Map params = findParamsForActionClass(actionClass); - actionlet.executePreAction(processor, params); - if (actionlet.stopProcessing()) { - break; - } - } else { - handleNullActionlet(actionClass); - } - } + private WorkflowProcessor fireWorkflowPreCheckin(final Contentlet contentlet, final User user, + final ConcurrentMap context) + throws DotDataException, DotWorkflowException, DotContentletValidationException { + WorkflowProcessor processor = new WorkflowProcessor(contentlet, user, context); + if (!processor.inProcess()) { + return processor; + } + + List actionClasses = processor.getActionClasses(); + boolean isPublish = actionClasses.stream() + .anyMatch(wac -> wac.getClazz().equals(PublishContentActionlet.class.getName())); + contentlet.setProperty(Contentlet.TO_BE_PUBLISH, isPublish); + + for (WorkflowActionClass actionClass : actionClasses) { + WorkFlowActionlet actionlet = actionClass.getActionlet(); + if (actionlet != null) { + Map params = findParamsForActionClass(actionClass); + actionlet.executePreAction(processor, params); + if (actionlet.stopProcessing()) { + break; + } + } else { + handleNullActionlet(actionClass); + } + } - return processor; -} + return processor; + } -private void handleNullActionlet(WorkflowActionClass actionClass) throws DotWorkflowException { - if (Config.getBooleanProperty("ALLOW_WORKFLOW_ACTIONLET_NULL", true)) { - logWarning(actionClass); - } else { - throw new DotWorkflowException("Actionlet '" + actionClass.getName() + "' is null. Check if the Plugin is installed and running."); - } -} + private void handleNullActionlet(WorkflowActionClass actionClass) throws DotWorkflowException { + if (Config.getBooleanProperty("ALLOW_WORKFLOW_ACTIONLET_NULL", true)) { + logWarning(actionClass); + } else { + throw new DotWorkflowException( + "Actionlet '" + actionClass.getName() + "' is null. Check if the Plugin is installed and running."); + } + } -private void logWarning(WorkflowActionClass actionClass) { - SystemMessageBuilder messageBuilder = new SystemMessageBuilder() - .setMessage("Workflow Actionlet class not found/loaded. Please check your workflow actions and/or providing plugin: " + actionClass) - .setSeverity(MessageSeverity.WARNING) - .setLife(10000); - Try.run(()->APILocator.getSystemEventsAPI().pushAsync(SystemEventType.MESSAGE, new Payload(messageBuilder.create()))); - Logger.warn(this, "Actionlet '" + actionClass + "' is null. Will be skipping this actionlet"); -} + private void logWarning(WorkflowActionClass actionClass) { + SystemMessageBuilder messageBuilder = new SystemMessageBuilder() + .setMessage( + "Workflow Actionlet class not found/loaded. Please check your workflow actions and/or providing plugin: " + + actionClass) + .setSeverity(MessageSeverity.WARNING) + .setLife(10000); + Try.run(() -> APILocator.getSystemEventsAPI() + .pushAsync(SystemEventType.MESSAGE, new Payload(messageBuilder.create()))); + Logger.warn(this, "Actionlet '" + actionClass + "' is null. Will be skipping this actionlet"); + } @WrapInTransaction