You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2015/05/30 00:22:56 UTC

svn commit: r1682562 - in /directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs: StudioProgressMonitor.java StudioProgressMonitorWatcherJob.java

Author: seelmann
Date: Fri May 29 22:22:56 2015
New Revision: 1682562

URL: http://svn.apache.org/r1682562
Log:
DIRSTUDIO-1014: Fix reporting of messages in job, only report them in the job's thread, not from the watcher thread

Modified:
    directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitor.java
    directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitorWatcherJob.java

Modified: directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitor.java?rev=1682562&r1=1682561&r2=1682562&view=diff
==============================================================================
--- directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitor.java (original)
+++ directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitor.java Fri May 29 22:22:56 2015
@@ -25,6 +25,7 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -54,8 +55,10 @@ public class StudioProgressMonitor exten
     /** The list of cancel listeners */
     protected List<CancelListener> cancelListenerList;
 
-    /** The progress message to report */
-    protected String reportProgressMessage = null;
+    /** Flag to indicate if message reporting is allowed. Whenever reporting a mesasage
+     * this flag is set to false. The {@link StudioProgressMonitorWatcherJob} is resetting
+     * it to true once a second. This way too many updates are prevented. */
+    protected AtomicBoolean allowMessageReporting;
 
 
     /**
@@ -65,10 +68,7 @@ public class StudioProgressMonitor exten
      */
     public StudioProgressMonitor( IProgressMonitor monitor )
     {
-        super( monitor );
-        this.pluginId = CommonCoreConstants.PLUGIN_ID;
-        done = false;
-        CommonCorePlugin.getDefault().getStudioProgressMonitorWatcherJob().addMonitor(this);
+        this( CommonCoreConstants.PLUGIN_ID, monitor );
     }
 
 
@@ -83,6 +83,7 @@ public class StudioProgressMonitor exten
         this.pluginId = pluginId;
         done = false;
         CommonCorePlugin.getDefault().getStudioProgressMonitorWatcherJob().addMonitor(this);
+        allowMessageReporting = new AtomicBoolean( true );
     }
 
 
@@ -165,7 +166,11 @@ public class StudioProgressMonitor exten
      */
     public void reportProgress( String message )
     {
-        reportProgressMessage = message;
+        boolean doReport = allowMessageReporting.getAndSet( false );
+        if ( doReport )
+        {
+            subTask( message );
+        }
     }
 
 

Modified: directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitorWatcherJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitorWatcherJob.java?rev=1682562&r1=1682561&r2=1682562&view=diff
==============================================================================
--- directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitorWatcherJob.java (original)
+++ directory/studio/trunk/plugins/common.core/src/main/java/org/apache/directory/studio/common/core/jobs/StudioProgressMonitorWatcherJob.java Fri May 29 22:22:56 2015
@@ -77,11 +77,10 @@ public class StudioProgressMonitorWatche
 
                 do
                 {
-                    // check report progress message
-                    if ( !spm.isCanceled() && !spm.done && spm.reportProgressMessage != null )
+                    // reset allow message reporting
+                    if ( !spm.isCanceled() && !spm.done )
                     {
-                        spm.subTask( spm.reportProgressMessage );
-                        spm.reportProgressMessage = null;
+                        spm.allowMessageReporting.set( true );
                     }
 
                     // check if canceled