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
This commit is contained in:
Mark Rogers
2009-10-15 14:03:12 +00:00
parent 330a50d85c
commit 1748e2b503
8 changed files with 79 additions and 18 deletions

View File

@@ -111,7 +111,7 @@
<!-- Custom MBeanServer --> <!-- Custom MBeanServer -->
<bean id="alfrescoMBeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"> <bean id="alfrescoMBeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="true" /> <property name="locateExistingServerIfPossible" value="${mbean.server.locateExistingServerIfPossible}" />
</bean> </bean>
<bean id="registry" <bean id="registry"

View File

@@ -32,7 +32,7 @@
</property> </property>
</bean> </bean>
<bean id="defaltOnLoadListsner" class="org.hibernate.event.def.DefaultLoadEventListener" /> <bean id="defaltOnLoadListener" class="org.hibernate.event.def.DefaultLoadEventListener" />
<bean id="clearCGLibThreadLocal" class="org.alfresco.repo.domain.hibernate.HibernateLoadListener" /> <bean id="clearCGLibThreadLocal" class="org.alfresco.repo.domain.hibernate.HibernateLoadListener" />
@@ -58,7 +58,7 @@
<map> <map>
<entry key="load"> <entry key="load">
<list> <list>
<ref bean="defaltOnLoadListsner" /> <ref bean="defaltOnLoadListener" />
<ref bean="clearCGLibThreadLocal" /> <ref bean="clearCGLibThreadLocal" />
</list> </list>
</entry> </entry>

View File

@@ -9,3 +9,4 @@ invitation.invite.already_member "The user , {0} is already a member of {1} and
invitation.cancel.not_site_manager "Current user, {0}, cannot cancel invitation: {1} because they are not a Site Manager for site: {2} 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.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}" 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"

View File

@@ -338,6 +338,10 @@ repo.rmi.service.port=50505
action.rmi.service.port=50506 action.rmi.service.port=50506
deployment.rmi.service.port=50507 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 # External executable locations
ooo.exe=soffice ooo.exe=soffice
ooo.user=${dir.root}/oouser ooo.user=${dir.root}/oouser

View File

@@ -6,8 +6,8 @@
wcmwf_submit.workflow.title=Web Site Submission wcmwf_submit.workflow.title=Web Site Submission
wcmwf_submit.workflow.description=Submit changes for approval wcmwf_submit.workflow.description=Submit changes for approval
wcmwf_submit.node.verifybrokenlinks.transition.abort.title=Abort Submisson wcmwf_submit.node.verifybrokenlinks.transition.abort.title=Abort Submission
wcmwf_submit.node.verifybrokenlinks.transition.abort.description=Abort Submisson wcmwf_submit.node.verifybrokenlinks.transition.abort.description=Abort Submission
wcmwf_submit.node.verifybrokenlinks.transition.continue.title=Continue Submission wcmwf_submit.node.verifybrokenlinks.transition.continue.title=Continue Submission
wcmwf_submit.node.verifybrokenlinks.transition.continue.description=Continue Submisson wcmwf_submit.node.verifybrokenlinks.transition.continue.description=Continue Submisson
wcmwf_submit.node.serialreview.transition.reject.title=Reject wcmwf_submit.node.serialreview.transition.reject.title=Reject

View File

@@ -332,12 +332,37 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli
* Nominated invitation complete the wf:invitePendingTask along the * Nominated invitation complete the wf:invitePendingTask along the
* 'accept' transition because the invitation has been accepted * 'accept' transition because the invitation has been accepted
*/ */
InviteHelper
.completeInviteTask( // create workflow task query
invitationId, WorkflowTaskQuery wfTaskQuery = new WorkflowTaskQuery();
WorkflowModelNominatedInvitation.WF_INVITE_TASK_INVITE_PENDING,
WorkflowModelNominatedInvitation.WF_TRANSITION_ACCEPT, // set the given invite ID as the workflow process ID in the workflow query
this.workflowService); 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<WorkflowTask> 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; return invitation;
} }
@@ -406,12 +431,36 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli
* Nominated invitation complete the wf:invitePendingTask along the * Nominated invitation complete the wf:invitePendingTask along the
* 'reject' transition because the invitation has been rejected * 'reject' transition because the invitation has been rejected
*/ */
InviteHelper // create workflow task query
.completeInviteTask( WorkflowTaskQuery wfTaskQuery = new WorkflowTaskQuery();
invitationId,
WorkflowModelNominatedInvitation.WF_INVITE_TASK_INVITE_PENDING, // set the given invite ID as the workflow process ID in the workflow query
WorkflowModelNominatedInvitation.WF_TRANSITION_REJECT, wfTaskQuery.setProcessId(invitationId);
this.workflowService);
// 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<WorkflowTask> 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; return invitation;
} }

View File

@@ -260,6 +260,7 @@ public class InviteHelper
List<WorkflowTask> wf_invite_tasks = workflowService List<WorkflowTask> wf_invite_tasks = workflowService
.queryTasks(wfTaskQuery); .queryTasks(wfTaskQuery);
// end all tasks found with this name // end all tasks found with this name
for (WorkflowTask workflowTask : wf_invite_tasks) for (WorkflowTask workflowTask : wf_invite_tasks)
{ {

View File

@@ -2313,6 +2313,12 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
{ {
Long childNodeId = oldChildNodePair.getFirst(); Long childNodeId = oldChildNodePair.getFirst();
NodeRef childNodeRef = oldChildNodePair.getSecond(); NodeRef childNodeRef = oldChildNodePair.getSecond();
if (nodeDaoService.getNodeRefStatus(childNodeRef).isDeleted())
{
//Node has been already deleted.
continue;
}
QName childNodeTypeQName = nodeDaoService.getNodeType(childNodeId); QName childNodeTypeQName = nodeDaoService.getNodeType(childNodeId);
Set<QName> childNodeAspectQNames = nodeDaoService.getNodeAspects(childNodeId); Set<QName> childNodeAspectQNames = nodeDaoService.getNodeAspects(childNodeId);
Pair<Long, ChildAssociationRef> oldParentAssocPair = nodeDaoService.getPrimaryParentAssoc(childNodeId); Pair<Long, ChildAssociationRef> oldParentAssocPair = nodeDaoService.getPrimaryParentAssoc(childNodeId);