From 1748e2b503c852bc81bae60aa46dc6def1f2ae8c Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Thu, 15 Oct 2009 14:03:12 +0000 Subject: [PATCH] Merged V3.2 to HEAD: 16713: ETHREEOH-2379 deployment missing crypto libraries. 16722: ETHREEOH-2798 - java.lang.NullPointerException while deleting a folder node with emptyTranslation 16752: ETHREEOH-2946 - Release a test server from inside an Approve/Reject task 16796: ETHREEOH-1841 - MBean error when running in a WebSphere cluster 16920: ETHREEOH-2796 - Word 97 To Text transformation fails 16955: Merge V3.1 to V3.2 14275: Invitation change for ETHREEOH-1456, Missed change from check in 14222. 14222: ETHREEOH-1456 - accepting a rejected invitation. 16963: ETHREEOH-3029 - Strange defaltOnLoadListsner in hibernate-context.xml git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16966 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/core-services-context.xml | 2 +- config/alfresco/hibernate-context.xml | 4 +- .../messages/invitation-service.properties | 3 +- config/alfresco/repository.properties | 4 + .../workflow/wcm-workflow-messages.properties | 4 +- .../invitation/InvitationServiceImpl.java | 73 ++++++++++++++++--- .../repo/invitation/site/InviteHelper.java | 1 + .../repo/node/db/DbNodeServiceImpl.java | 6 ++ 8 files changed, 79 insertions(+), 18 deletions(-) diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index 323ce9b7c9..79aa40b487 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -111,7 +111,7 @@ - + - + @@ -58,7 +58,7 @@ - + diff --git a/config/alfresco/messages/invitation-service.properties b/config/alfresco/messages/invitation-service.properties index 4aa88900f0..5c16d9dc91 100644 --- a/config/alfresco/messages/invitation-service.properties +++ b/config/alfresco/messages/invitation-service.properties @@ -8,4 +8,5 @@ invitation.error.invalid_inviteId_format "Invitation Id not valid format, valid invitation.invite.already_member "The user , {0} is already a member of {1} and cannot be invited again" invitation.cancel.not_site_manager "Current user, {0}, cannot cancel invitation: {1} because they are not a Site Manager for site: {2} invitation.invite.not_site_manager "Current user, {0}, is not a Site Manager for site: {1} -invitation.invite.unable_generate_id "Unable to generate a user name for invitee, which doesn't already belong to someone else firstName:{0} lastName:{1} email:{2}" \ No newline at end of file +invitation.invite.unable_generate_id "Unable to generate a user name for invitee, which doesn't already belong to someone else firstName:{0} lastName:{1} email:{2}" +invitation.invite.already_finished "Invitation, {0} has already been accepted, cancelled or rejected" \ No newline at end of file diff --git a/config/alfresco/repository.properties b/config/alfresco/repository.properties index 4e2f41a4bd..d1c130fb4a 100644 --- a/config/alfresco/repository.properties +++ b/config/alfresco/repository.properties @@ -338,6 +338,10 @@ repo.rmi.service.port=50505 action.rmi.service.port=50506 deployment.rmi.service.port=50507 +# Should the Mbean server bind to an existing server. Set to true for most application servers. +# false for WebSphere clusters. +mbean.server.locateExistingServerIfPossible=true + # External executable locations ooo.exe=soffice ooo.user=${dir.root}/oouser diff --git a/config/alfresco/workflow/wcm-workflow-messages.properties b/config/alfresco/workflow/wcm-workflow-messages.properties index b41bbdcea6..c8d9a9a292 100644 --- a/config/alfresco/workflow/wcm-workflow-messages.properties +++ b/config/alfresco/workflow/wcm-workflow-messages.properties @@ -6,8 +6,8 @@ wcmwf_submit.workflow.title=Web Site Submission wcmwf_submit.workflow.description=Submit changes for approval -wcmwf_submit.node.verifybrokenlinks.transition.abort.title=Abort Submisson -wcmwf_submit.node.verifybrokenlinks.transition.abort.description=Abort Submisson +wcmwf_submit.node.verifybrokenlinks.transition.abort.title=Abort Submission +wcmwf_submit.node.verifybrokenlinks.transition.abort.description=Abort Submission wcmwf_submit.node.verifybrokenlinks.transition.continue.title=Continue Submission wcmwf_submit.node.verifybrokenlinks.transition.continue.description=Continue Submisson wcmwf_submit.node.serialreview.transition.reject.title=Reject diff --git a/source/java/org/alfresco/repo/invitation/InvitationServiceImpl.java b/source/java/org/alfresco/repo/invitation/InvitationServiceImpl.java index 02e8e1cf18..c1ef5b128e 100644 --- a/source/java/org/alfresco/repo/invitation/InvitationServiceImpl.java +++ b/source/java/org/alfresco/repo/invitation/InvitationServiceImpl.java @@ -332,12 +332,37 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli * Nominated invitation complete the wf:invitePendingTask along the * 'accept' transition because the invitation has been accepted */ - InviteHelper - .completeInviteTask( - invitationId, - WorkflowModelNominatedInvitation.WF_INVITE_TASK_INVITE_PENDING, - WorkflowModelNominatedInvitation.WF_TRANSITION_ACCEPT, - this.workflowService); + + // create workflow task query + WorkflowTaskQuery wfTaskQuery = new WorkflowTaskQuery(); + + // set the given invite ID as the workflow process ID in the workflow query + wfTaskQuery.setProcessId(invitationId); + + // find incomplete invite workflow tasks with given task name + wfTaskQuery.setActive(Boolean.TRUE); + wfTaskQuery.setTaskState(WorkflowTaskState.IN_PROGRESS); + wfTaskQuery.setTaskName(WorkflowModelNominatedInvitation.WF_INVITE_TASK_INVITE_PENDING); + + // set process name to "wf:invite" so that only + // invite workflow instances are considered by this query + wfTaskQuery.setProcessName(WorkflowModelNominatedInvitation.WF_PROCESS_INVITE); + + // query for invite workflow tasks with the constructed query + List wf_invite_tasks = workflowService + .queryTasks(wfTaskQuery); + + if(wf_invite_tasks.size() == 0) + { + Object objs[] = { invitationId }; + throw new InvitationExceptionUserError("invitation.invite.already_finished", objs); + } + + // end all tasks found with this name + for (WorkflowTask workflowTask : wf_invite_tasks) + { + workflowService.endTask(workflowTask.id, WorkflowModelNominatedInvitation.WF_TRANSITION_ACCEPT); + } return invitation; } @@ -406,12 +431,36 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli * Nominated invitation complete the wf:invitePendingTask along the * 'reject' transition because the invitation has been rejected */ - InviteHelper - .completeInviteTask( - invitationId, - WorkflowModelNominatedInvitation.WF_INVITE_TASK_INVITE_PENDING, - WorkflowModelNominatedInvitation.WF_TRANSITION_REJECT, - this.workflowService); + // create workflow task query + WorkflowTaskQuery wfTaskQuery = new WorkflowTaskQuery(); + + // set the given invite ID as the workflow process ID in the workflow query + wfTaskQuery.setProcessId(invitationId); + + // find incomplete invite workflow tasks with given task name + wfTaskQuery.setActive(Boolean.TRUE); + wfTaskQuery.setTaskState(WorkflowTaskState.IN_PROGRESS); + wfTaskQuery.setTaskName(WorkflowModelNominatedInvitation.WF_INVITE_TASK_INVITE_PENDING); + + // set process name to "wf:invite" so that only + // invite workflow instances are considered by this query + wfTaskQuery.setProcessName(WorkflowModelNominatedInvitation.WF_PROCESS_INVITE); + + // query for invite workflow tasks with the constructed query + List wf_invite_tasks = workflowService + .queryTasks(wfTaskQuery); + + if(wf_invite_tasks.size() == 0) + { + Object objs[] = { invitationId }; + throw new InvitationExceptionUserError("invitation.invite.already_finished", objs); + } + + // end all tasks found with this name + for (WorkflowTask workflowTask : wf_invite_tasks) + { + workflowService.endTask(workflowTask.id, WorkflowModelNominatedInvitation.WF_TRANSITION_REJECT); + } return invitation; } diff --git a/source/java/org/alfresco/repo/invitation/site/InviteHelper.java b/source/java/org/alfresco/repo/invitation/site/InviteHelper.java index 227a78ab8c..06a3f82490 100644 --- a/source/java/org/alfresco/repo/invitation/site/InviteHelper.java +++ b/source/java/org/alfresco/repo/invitation/site/InviteHelper.java @@ -260,6 +260,7 @@ public class InviteHelper List wf_invite_tasks = workflowService .queryTasks(wfTaskQuery); + // end all tasks found with this name for (WorkflowTask workflowTask : wf_invite_tasks) { diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index 4eec436bde..d6d723b890 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -2313,6 +2313,12 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl { Long childNodeId = oldChildNodePair.getFirst(); NodeRef childNodeRef = oldChildNodePair.getSecond(); + if (nodeDaoService.getNodeRefStatus(childNodeRef).isDeleted()) + { + //Node has been already deleted. + continue; + } + QName childNodeTypeQName = nodeDaoService.getNodeType(childNodeId); Set childNodeAspectQNames = nodeDaoService.getNodeAspects(childNodeId); Pair oldParentAssocPair = nodeDaoService.getPrimaryParentAssoc(childNodeId);