This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 162612
Collapse All | Expand All

(-)a/maven/src/org/netbeans/modules/maven/SubprojectProviderImpl.java (-2 / +10 lines)
Lines 43-48 Link Here
43
import java.io.File;
43
import java.io.File;
44
import java.io.IOException;
44
import java.io.IOException;
45
import java.util.ArrayList;
45
import java.util.ArrayList;
46
import java.util.Collections;
46
import java.util.HashSet;
47
import java.util.HashSet;
47
import java.util.Iterator;
48
import java.util.Iterator;
48
import java.util.List;
49
import java.util.List;
Lines 98-104 Link Here
98
    public Set<? extends Project> getSubprojects() {
99
    public Set<? extends Project> getSubprojects() {
99
        Set<Project> projects = new HashSet<Project>();
100
        Set<Project> projects = new HashSet<Project>();
100
        File basedir = FileUtil.toFile(project.getProjectDirectory());
101
        File basedir = FileUtil.toFile(project.getProjectDirectory());
101
        addProjectModules(basedir, projects, project.getOriginalMavenProject().getModules());
102
        try {
103
            addProjectModules(basedir, projects, project.getOriginalMavenProject().getModules());
104
        } catch (InterruptedException x) {
105
            return Collections.emptySet();
106
        }
102
        addOpenedCandidates(projects);
107
        addOpenedCandidates(projects);
103
        projects.remove(project);
108
        projects.remove(project);
104
        return projects;
109
        return projects;
Lines 131-142 Link Here
131
        return false;
136
        return false;
132
    }
137
    }
133
138
134
    private void addProjectModules(File basedir, Set<Project> resultset, List modules) {
139
    private void addProjectModules(File basedir, Set<Project> resultset, List modules) throws InterruptedException {
135
        if (modules == null || modules.size() == 0) {
140
        if (modules == null || modules.size() == 0) {
136
            return;
141
            return;
137
        }
142
        }
138
        Iterator it = modules.iterator();
143
        Iterator it = modules.iterator();
139
        while (it.hasNext()) {
144
        while (it.hasNext()) {
145
            if (Thread.interrupted()) {
146
                throw new InterruptedException();
147
            }
140
            String path = (String) it.next();
148
            String path = (String) it.next();
141
            File sub = new File(basedir, path);
149
            File sub = new File(basedir, path);
142
            File projectFile = FileUtil.normalizeFile(sub);
150
            File projectFile = FileUtil.normalizeFile(sub);
(-)a/projectui/src/org/netbeans/modules/project/ui/ProjectChooserAccessory.java (-11 / +27 lines)
Lines 55-61 Link Here
55
import java.util.ArrayList;
55
import java.util.ArrayList;
56
import java.util.Collections;
56
import java.util.Collections;
57
import java.util.HashMap;
57
import java.util.HashMap;
58
import java.util.Iterator;
59
import java.util.List;
58
import java.util.List;
60
import java.util.Map;
59
import java.util.Map;
61
import java.util.Set;
60
import java.util.Set;
Lines 100-106 Link Here
100
99
101
        modelUpdater = new ModelUpdater();
100
        modelUpdater = new ModelUpdater();
102
        //#98080
101
        //#98080
103
        RP = new RequestProcessor(ModelUpdater.class.getName(), 1);
102
        RP = new RequestProcessor(ModelUpdater.class.getName(), 1, true);
104
        updateSubprojectsTask = RP.create(modelUpdater);
103
        updateSubprojectsTask = RP.create(modelUpdater);
105
        updateSubprojectsTask.setPriority( Thread.MIN_PRIORITY );
104
        updateSubprojectsTask.setPriority( Thread.MIN_PRIORITY );
106
105
Lines 526-531 Link Here
526
        if (modelUpdater != null) { // #101286 - might be already null
525
        if (modelUpdater != null) { // #101286 - might be already null
527
            modelUpdater.cancel();
526
            modelUpdater.cancel();
528
        }
527
        }
528
        if (updateSubprojectsTask != null) {
529
            updateSubprojectsTask.cancel();
530
        }
529
        modelUpdater = null;
531
        modelUpdater = null;
530
        subprojectsCache = null;
532
        subprojectsCache = null;
531
        updateSubprojectsTask = null;
533
        updateSubprojectsTask = null;
Lines 672-683 Link Here
672
674
673
                List<Project> subprojects = new ArrayList<Project>(currentProjects.size() * 5);
675
                List<Project> subprojects = new ArrayList<Project>(currentProjects.size() * 5);
674
                for (Project p : currentProjects) {
676
                for (Project p : currentProjects) {
675
                    if (cancel) return;
677
                    if (cancel) {
678
                        return;
679
                    }
676
                    addSubprojects(p, subprojects, cache); // Find the projects recursively
680
                    addSubprojects(p, subprojects, cache); // Find the projects recursively
677
                }
681
                }
678
682
679
                if (cancel) return;
683
                if (cancel) {
680
		List<String> subprojectNames = new ArrayList<String>(subprojects.size());
684
                    return;
685
                }
686
                List<String> subprojectNames = new ArrayList<String>(subprojects.size());
681
                if ( !subprojects.isEmpty() ) {
687
                if ( !subprojects.isEmpty() ) {
682
                    String pattern = NbBundle.getMessage( ProjectChooserAccessory.class, "LBL_PrjChooser_SubprojectName_Format" ); // NOI18N
688
                    String pattern = NbBundle.getMessage( ProjectChooserAccessory.class, "LBL_PrjChooser_SubprojectName_Format" ); // NOI18N
683
                    File pDir = currentProjects.size() == 1 ?
689
                    File pDir = currentProjects.size() == 1 ?
Lines 686-692 Link Here
686
692
687
                    // Replace projects in the list with formated names
693
                    // Replace projects in the list with formated names
688
                    for (Project p : subprojects) {
694
                    for (Project p : subprojects) {
689
                        if (cancel) return;
695
                        if (cancel) {
696
                            return;
697
                        }
690
                        FileObject spDir = p.getProjectDirectory();
698
                        FileObject spDir = p.getProjectDirectory();
691
699
692
                        // Try to compute relative path
700
                        // Try to compute relative path
Lines 709-715 Link Here
709
                    // Sort the list
717
                    // Sort the list
710
                    Collections.sort( subprojectNames, Collator.getInstance() );
718
                    Collections.sort( subprojectNames, Collator.getInstance() );
711
                }
719
                }
712
                if ( currentProjects != projects ||cancel) {
720
                if (currentProjects != projects || cancel) {
713
                    return;
721
                    return;
714
                }
722
                }
715
                DefaultListModel listModel = new DefaultListModel();
723
                DefaultListModel listModel = new DefaultListModel();
Lines 718-724 Link Here
718
                    listModel.addElement(displayName);
726
                    listModel.addElement(displayName);
719
                }
727
                }
720
                subprojectsToSet = listModel;
728
                subprojectsToSet = listModel;
721
                if (cancel) return;
729
                if (cancel) {
730
                    return;
731
                }
722
                SwingUtilities.invokeLater( this );
732
                SwingUtilities.invokeLater( this );
723
                return;
733
                return;
724
            }
734
            }
Lines 745-756 Link Here
745
        /** Gets all subprojects recursively
755
        /** Gets all subprojects recursively
746
         */
756
         */
747
        void addSubprojects(Project p, List<Project> result, Map<Project,Set<? extends Project>> cache) {
757
        void addSubprojects(Project p, List<Project> result, Map<Project,Set<? extends Project>> cache) {
748
            if (cancel) return;
758
            if (cancel) {
759
                return;
760
            }
749
            Set<? extends Project> subprojects = cache.get(p);
761
            Set<? extends Project> subprojects = cache.get(p);
750
            if (subprojects == null) {
762
            if (subprojects == null) {
751
                SubprojectProvider spp = p.getLookup().lookup(SubprojectProvider.class);
763
                SubprojectProvider spp = p.getLookup().lookup(SubprojectProvider.class);
752
                if (spp != null) {
764
                if (spp != null) {
753
                    if (cancel) return;
765
                    if (cancel) {
766
                        return;
767
                    }
754
                    subprojects = spp.getSubprojects();
768
                    subprojects = spp.getSubprojects();
755
                } else {
769
                } else {
756
                    subprojects = Collections.emptySet();
770
                    subprojects = Collections.emptySet();
Lines 758-764 Link Here
758
                cache.put(p, subprojects);
772
                cache.put(p, subprojects);
759
            }
773
            }
760
            for (Project sp : subprojects) {
774
            for (Project sp : subprojects) {
761
                if (cancel) return;
775
                if (cancel) {
776
                    return;
777
                }
762
                if ( !result.contains( sp ) ) {
778
                if ( !result.contains( sp ) ) {
763
                    result.add( sp );
779
                    result.add( sp );
764
780

Return to bug 162612