You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2019/04/03 17:58:10 UTC

[incubator-netbeans] branch master updated: [NETBEANS-2318] Remove synchronized elements from SQLEditorSupport

This is an automated email from the ASF dual-hosted git repository.

matthiasblaesing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new bbb4fda  [NETBEANS-2318] Remove synchronized elements from SQLEditorSupport
     new 3e1f8ae  Merge pull request #1177 from matthiasblaesing/netbeans-2318
bbb4fda is described below

commit bbb4fdaa4f930a1acb69b39e77ca758d26f9fe64
Author: Matthias Bläsing <mb...@doppel-helix.eu>
AuthorDate: Wed Mar 27 22:11:53 2019 +0100

    [NETBEANS-2318] Remove synchronized elements from SQLEditorSupport
---
 .../modules/db/sql/loader/SQLCloneableEditor.java  |  4 +-
 .../modules/db/sql/loader/SQLEditorSupport.java    | 57 ++++++++++------------
 2 files changed, 28 insertions(+), 33 deletions(-)

diff --git a/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLCloneableEditor.java b/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLCloneableEditor.java
index 717ecbd..e81e054 100644
--- a/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLCloneableEditor.java
+++ b/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLCloneableEditor.java
@@ -698,7 +698,7 @@ public final class SQLCloneableEditor extends CloneableEditor implements MultiVi
 
         @Override
         public DatabaseConnection getDatabaseConnection() {
-            return sqlEditorSupport().getActiveDatabaseConnection();
+            return sqlEditorSupport().getDatabaseConnection();
         }
 
         @Override
@@ -763,7 +763,7 @@ public final class SQLCloneableEditor extends CloneableEditor implements MultiVi
         
         @Override
         public String toString() {
-            return "SQLExecution[support=" + sqlEditorSupport().messageName()  + ", dbconn=" + sqlEditorSupport().getActiveDatabaseConnection() + "]"; // NOI18N
+            return "SQLExecution[support=" + sqlEditorSupport().messageName()  + ", dbconn=" + sqlEditorSupport().getDatabaseConnection() + "]"; // NOI18N
         }
         
         private String getText(JEditorPane editorPane) {
diff --git a/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLEditorSupport.java b/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLEditorSupport.java
index 6380232..c7e245c 100644
--- a/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLEditorSupport.java
+++ b/ide/db.core/src/org/netbeans/modules/db/sql/loader/SQLEditorSupport.java
@@ -47,7 +47,6 @@ import org.netbeans.modules.db.dataview.api.DataViewPageContext;
 import org.netbeans.modules.db.sql.execute.SQLExecuteHelper;
 import org.netbeans.modules.db.sql.execute.SQLExecutionResult;
 import org.netbeans.modules.db.sql.execute.SQLExecutionResults;
-import org.netbeans.modules.db.sql.execute.StatementInfo;
 import org.openide.DialogDisplayer;
 import org.openide.NotifyDescriptor;
 import org.openide.awt.StatusDisplayer;
@@ -60,7 +59,6 @@ import org.openide.nodes.Node.Cookie;
 import org.openide.text.CloneableEditor;
 import org.openide.text.CloneableEditorSupport;
 import org.openide.text.DataEditorSupport;
-import org.openide.text.Line;
 import org.openide.util.*;
 import org.openide.util.lookup.Lookups;
 import org.openide.windows.CloneableOpenSupport;
@@ -91,16 +89,17 @@ public class SQLEditorSupport extends DataEditorSupport
     private final RequestProcessor rp = new RequestProcessor("SQLExecution", 1, true); // NOI18N
     
     // the database connection to execute against
-    private DatabaseConnection dbconn;
+    private volatile DatabaseConnection dbconn;
     
     // whether we are executing statements
-    private boolean executing;
+    private volatile boolean executing;
     
     // execution results. Not synchronized since accessed only from rp of throughput 1.
     private SQLExecutionResults executionResults;
     
     // execution logger
     private SQLExecutionLoggerImpl logger;
+    private final Object loggerLock = new Object();
     
     /** 
      * SaveCookie for this support instance. The cookie is adding/removing 
@@ -305,15 +304,12 @@ public class SQLEditorSupport extends DataEditorSupport
         sqlPropChangeSupport.removePropertyChangeListener(listener);
     }
     
-    synchronized DatabaseConnection getActiveDatabaseConnection() {
-        return dbconn;
-    }
-    
     @Override
-    public synchronized void setDatabaseConnection(DatabaseConnection dbconn) {
+    public void setDatabaseConnection(DatabaseConnection dbconn) {
+        DatabaseConnection oldCon = this.dbconn;
         this.dbconn = dbconn;
         sqlPropChangeSupport.firePropertyChange(
-                SQLExecution.PROP_DATABASE_CONNECTION, null, null);
+                SQLExecution.PROP_DATABASE_CONNECTION, oldCon, dbconn);
         updateTitles();
     }
     
@@ -372,10 +368,7 @@ public class SQLEditorSupport extends DataEditorSupport
      * have to be delimited by \n.
      */
     void execute(String sql, int startOffset, int endOffset, SQLCloneableEditor editor) {
-        DatabaseConnection conn;
-        synchronized (this) {
-            conn = this.dbconn;
-        }
+        DatabaseConnection conn = this.dbconn;
         if (conn == null) {
             return;
         }
@@ -394,13 +387,14 @@ public class SQLEditorSupport extends DataEditorSupport
         }
     }
     
-    synchronized boolean isExecuting() {
+    boolean isExecuting() {
         return executing;
     }
     
-    private synchronized void setExecuting(boolean executing) {
+    private void setExecuting(boolean executing) {
+        boolean oldExecuting = this.executing;
         this.executing = executing;
-        sqlPropChangeSupport.firePropertyChange(SQLExecution.PROP_EXECUTING, null, null);
+        sqlPropChangeSupport.firePropertyChange(SQLExecution.PROP_EXECUTING, oldExecuting, this.executing);
     }
     
     private void setResultsToEditors(final SQLExecutionResults results, final SQLCloneableEditor editor) {
@@ -472,24 +466,25 @@ public class SQLEditorSupport extends DataEditorSupport
     }
     
     private SQLExecutionLoggerImpl createLogger() {
-        closeLogger();
-        
-        String loggerDisplayName;
-        if (isConsole()) {
-            loggerDisplayName = getDataObject().getName();
-        } else {
-            loggerDisplayName = getDataObject().getNodeDelegate().getDisplayName();
-        }
-        
-        synchronized (this) {
-            logger = new SQLExecutionLoggerImpl(loggerDisplayName, this);
+        synchronized (loggerLock) {
+            closeLogger();
+
+            String loggerDisplayName;
+            if (isConsole()) {
+                loggerDisplayName = getDataObject().getName();
+            } else {
+                loggerDisplayName = getDataObject().getNodeDelegate().getDisplayName();
+            }
+
+            return new SQLExecutionLoggerImpl(loggerDisplayName, this);
         }
-        return logger;
     }
     
     private synchronized void closeLogger() {
-        if (logger != null) {
-            logger.close();
+        synchronized (loggerLock) {
+            if (logger != null) {
+                logger.close();
+            }
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists