View | Details | Raw Unified | Return to bug 342903 | Differences between
and this patch

Collapse All | Expand All

(-)a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/ProjectRegistry.java (-15 / +24 lines)
 Lines 60-65   public class ProjectRegistry extends BasicProjectRegistry implements Serializabl Link Here 
60
    ArrayList<MavenProjectChangedEvent> events = new ArrayList<MavenProjectChangedEvent>();
60
    ArrayList<MavenProjectChangedEvent> events = new ArrayList<MavenProjectChangedEvent>();
61
61
62
    // removed projects
62
    // removed projects
63
    boolean hasRemoved = false;
63
    for(MavenProjectFacade facade : workspacePoms.values()) {
64
    for(MavenProjectFacade facade : workspacePoms.values()) {
64
      if(!newState.workspacePoms.containsKey(facade.getPom())) {
65
      if(!newState.workspacePoms.containsKey(facade.getPom())) {
65
        MavenProjectChangedEvent event = new MavenProjectChangedEvent( //
66
        MavenProjectChangedEvent event = new MavenProjectChangedEvent( //
 Lines 69-102   public class ProjectRegistry extends BasicProjectRegistry implements Serializabl Link Here 
69
            facade /*old*/, //
70
            facade /*old*/, //
70
            null /*new*/);
71
            null /*new*/);
71
        events.add(event);
72
        events.add(event);
73
        hasRemoved = true;
72
      }
74
      }
73
    }
75
    }
74
76
75
    // changed and new projects
77
    // new projects
78
    boolean hasNew = false;
76
    for(MavenProjectFacade facade : newState.workspacePoms.values()) {
79
    for(MavenProjectFacade facade : newState.workspacePoms.values()) {
77
      MavenProjectFacade old = workspacePoms.get(facade.getPom());
80
      MavenProjectFacade old = workspacePoms.get(facade.getPom());
78
      if(facade != old) { // not the same instance!
81
        if(old == null) {
79
        MavenProjectChangedEvent event;
82
          MavenProjectChangedEvent event = new MavenProjectChangedEvent(facade.getPom(), //
80
        if(old != null) {
83
              MavenProjectChangedEvent.KIND_ADDED, //
84
              MavenProjectChangedEvent.FLAG_NONE, //
85
              null /*old*/, //
86
              facade /*new*/);
87
          events.add(event);
88
          hasNew = true;
89
        }
90
    }
91
92
    // changed projects
93
    for(MavenProjectFacade facade : newState.workspacePoms.values()) {
94
      MavenProjectFacade old = workspacePoms.get(facade.getPom());
95
      if(old != null && facade != old) { // not the same instance!
81
          int flags = hasDependencyChange(old.getPom(), newState) ? MavenProjectChangedEvent.FLAG_DEPENDENCIES
96
          int flags = hasDependencyChange(old.getPom(), newState) ? MavenProjectChangedEvent.FLAG_DEPENDENCIES
82
              : MavenProjectChangedEvent.FLAG_NONE;
97
              : MavenProjectChangedEvent.FLAG_NONE;
83
          event = new MavenProjectChangedEvent(facade.getPom(), //
98
          if (hasRemoved || hasNew) {
99
            flags = MavenProjectChangedEvent.FLAG_DEPENDENCIES;
100
          }
101
          MavenProjectChangedEvent event = new MavenProjectChangedEvent(facade.getPom(), //
84
              MavenProjectChangedEvent.KIND_CHANGED, //
102
              MavenProjectChangedEvent.KIND_CHANGED, //
85
              flags, //
103
              flags, //
86
              old /*old*/, //
104
              old /*old*/, //
87
              facade /*new*/);
105
              facade /*new*/);
88
106
          events.add(event);
89
        } else {
90
          event = new MavenProjectChangedEvent(facade.getPom(), //
91
              MavenProjectChangedEvent.KIND_ADDED, //
92
              MavenProjectChangedEvent.FLAG_NONE, //
93
              null /*old*/, //
94
              facade /*new*/);
95
        }
96
        events.add(event);
97
      }
107
      }
98
    }
108
    }
99
100
    replaceWith(newState);
109
    replaceWith(newState);
101
110
102
    version++ ;
111
    version++ ;
(-)a/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/internal/BuildPathManager.java (-5 / +8 lines)
 Lines 212-221   public class BuildPathManager implements IMavenProjectChangedListener, IResource Link Here 
212
    monitor.setTaskName(Messages.BuildPathManager_monitor_setting_cp);
212
    monitor.setTaskName(Messages.BuildPathManager_monitor_setting_cp);
213
    for(int i = 0; i < events.length; i++ ) {
213
    for(int i = 0; i < events.length; i++ ) {
214
      MavenProjectChangedEvent event = events[i];
214
      MavenProjectChangedEvent event = events[i];
215
      IFile pom = event.getSource();
215
      if(event.getKind() == MavenProjectChangedEvent.KIND_ADDED ||
216
      IProject project = pom.getProject();
216
          event.getKind() == MavenProjectChangedEvent.KIND_REMOVED ||
217
      if(project.isAccessible() && projects.add(project)) {
217
          (event.getFlags() & MavenProjectChangedEvent.FLAG_DEPENDENCIES) != 0) {
218
        updateClasspath(project, monitor);
218
        IFile pom = event.getSource();
219
        IProject project = pom.getProject();
220
        if(project.isAccessible() && projects.add(project)) {
221
          updateClasspath(project, monitor);
222
        }
219
      }
223
      }
220
    }
224
    }
221
  }
225
  }
222
- 

Return to bug 342903