From 1856b4eeae20654a7c5f9f7552853778b8d73fc1 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Fri, 22 Oct 2010 23:42:59 +0000 Subject: [PATCH] Fail earlier and more explicitly if 'Scheduled Actions' is not available - Avoid null NodeRef being passed around - Looking at http://forums.alfresco.com/en/viewtopic.php?p=102856 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@23242 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../ScheduledPersistedActionServiceImpl.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionServiceImpl.java b/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionServiceImpl.java index 1ef204ee0f..3032cc39bf 100644 --- a/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionServiceImpl.java +++ b/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionServiceImpl.java @@ -25,8 +25,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import javax.transaction.UserTransaction; - +import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.ActionModel; import org.alfresco.repo.action.RuntimeActionService; @@ -35,8 +34,8 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; import org.alfresco.repo.transaction.RetryingTransactionHelper; -import org.alfresco.repo.transaction.TransactionListenerAdapter; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; +import org.alfresco.repo.transaction.TransactionListenerAdapter; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.action.ActionService; import org.alfresco.service.cmr.action.scheduled.SchedulableAction.IntervalPeriod; @@ -128,18 +127,20 @@ public class ScheduledPersistedActionServiceImpl implements ScheduledPersistedAc repositoryHelper.getCompanyHome(), ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.APP_MODEL_1_0_URI, "dictionary")); - if (dictionaryAssocs.size() > 0) + if (dictionaryAssocs.size() == 0) { - NodeRef dataDictionary = dictionaryAssocs.get(0).getChildRef(); - List scheduledAssocs = startupNodeService.getChildAssocs( - dataDictionary, - ContentModel.ASSOC_CONTAINS, - QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "Scheduled Actions")); - if (scheduledAssocs.size() > 0) - { - SCHEDULED_ACTION_ROOT_NODE_REF = scheduledAssocs.get(0).getChildRef(); - } + throw new AlfrescoRuntimeException("Failed to find 'app:dictionary' node"); } + NodeRef dataDictionary = dictionaryAssocs.get(0).getChildRef(); + List scheduledAssocs = startupNodeService.getChildAssocs( + dataDictionary, + ContentModel.ASSOC_CONTAINS, + QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "Scheduled Actions")); + if (scheduledAssocs.size() == 0) + { + throw new AlfrescoRuntimeException("Failed to find 'cm:Scheduled Actions' location."); + } + SCHEDULED_ACTION_ROOT_NODE_REF = scheduledAssocs.get(0).getChildRef(); } /**