Don't re-register FileChangeListener on setup.py
authorJulien Enselme <jenselme@netbeans.org>
Sun, 25 Sep 2016 20:46:54 +0200
changeset 183849339958c5c47
parent 18383 7e51032433e1
child 18385 fabc032831d3
Don't re-register FileChangeListener on setup.py

This avoids the update time to grow longer and longer each time setup.py is updated.
python.project2/src/org/netbeans/modules/python/project2/PythonProject2.java
     1.1 --- a/python.project2/src/org/netbeans/modules/python/project2/PythonProject2.java	Sun Sep 25 19:46:32 2016 +0200
     1.2 +++ b/python.project2/src/org/netbeans/modules/python/project2/PythonProject2.java	Sun Sep 25 20:46:54 2016 +0200
     1.3 @@ -9,9 +9,11 @@
     1.4  import java.nio.file.Path;
     1.5  import java.nio.file.Paths;
     1.6  import java.nio.file.StandardOpenOption;
     1.7 +import java.util.HashSet;
     1.8  import java.util.List;
     1.9  import java.util.Properties;
    1.10  import java.util.Scanner;
    1.11 +import java.util.Set;
    1.12  import java.util.concurrent.ExecutionException;
    1.13  import java.util.concurrent.Future;
    1.14  import javax.swing.Icon;
    1.15 @@ -84,6 +86,7 @@
    1.16      private final Info info;
    1.17      private final PropertyChangeSupport support;
    1.18      private final PythonSources sources;
    1.19 +    private static final Set<String> REGISTRED_SETUPPY = new HashSet<>();
    1.20  
    1.21      public PythonProject2(FileObject projectDirectory, ProjectState state) throws PythonException {
    1.22          support = new PropertyChangeSupport(this);
    1.23 @@ -223,7 +226,8 @@
    1.24          PythonExecution pye;
    1.25          try {
    1.26              FileObject setuppy = projectDirectory.getFileObject(SETUPPY);
    1.27 -            if(listener != null) {
    1.28 +            if (listener != null && !REGISTRED_SETUPPY.contains(setuppy.getPath())) {
    1.29 +                REGISTRED_SETUPPY.add(setuppy.getPath());
    1.30                  setuppy.addFileChangeListener(listener);
    1.31              }
    1.32              pye = createProjectPropertiesReader(projectDirectory, setuppy);