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