Index: .classpath =================================================================== --- .classpath (revision 53248) +++ .classpath (working copy) @@ -1,6 +1,6 @@ - + Index: src/java/org/sakaiproject/tool/assessment/ui/listener/author/PublishAssessmentListener.java =================================================================== --- src/java/org/sakaiproject/tool/assessment/ui/listener/author/PublishAssessmentListener.java (revision 53248) +++ src/java/org/sakaiproject/tool/assessment/ui/listener/author/PublishAssessmentListener.java (working copy) @@ -25,6 +25,8 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; //import java.util.Map; import javax.faces.application.FacesMessage; @@ -73,14 +75,15 @@ IntegrationContextFactory.getInstance().getGradebookServiceHelper(); private static final boolean integrated = IntegrationContextFactory.getInstance().isIntegrated(); - private static Boolean repeatedPublish = Boolean.FALSE; + private static final Lock repeatedPublishLock = new ReentrantLock(); + private static boolean repeatedPublish = false; public PublishAssessmentListener() { } public void processAction(ActionEvent ae) throws AbortProcessingException { - synchronized(repeatedPublish) - { + repeatedPublishLock.lock(); + try { //FacesContext context = FacesContext.getCurrentInstance(); UIComponent eventSource = (UIComponent) ae.getSource(); @@ -88,11 +91,11 @@ String buttonValue = (String) vb.getExpressionString(); if(buttonValue.endsWith(".button_unique_save_and_publish}")) { - repeatedPublish = Boolean.FALSE; + repeatedPublish = false; return; } - if(!repeatedPublish.booleanValue()) + if(!repeatedPublish) { //Map reqMap = context.getExternalContext().getRequestMap(); //Map requestParams = context.getExternalContext().getRequestParameterMap(); @@ -120,8 +123,10 @@ authorActionListener.prepareAssessmentsList(author, assessmentService, gradingService, publishedAssessmentService); - repeatedPublish = Boolean.TRUE; + repeatedPublish = true; } + } finally { + repeatedPublishLock.unlock(); } }