mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
forget inspection scope caches on scopes change, restart daemon, etc (IDEA-101489)
This commit is contained in:
@@ -63,4 +63,6 @@ public interface InspectionProfile extends Profile {
|
||||
|
||||
@NotNull
|
||||
String getDisplayName();
|
||||
|
||||
void scopesChanged();
|
||||
}
|
||||
|
||||
@@ -149,4 +149,8 @@ public class ScopeToolState {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void scopesChanged() {
|
||||
myScope = null;
|
||||
}
|
||||
}
|
||||
@@ -58,7 +58,7 @@ public abstract class DefaultProjectProfileManager extends ProjectProfileManager
|
||||
private final ApplicationProfileManager myApplicationProfileManager;
|
||||
|
||||
private final Map<String, Profile> myProfiles = new HashMap<String, Profile>();
|
||||
private final DependencyValidationManager myHolder;
|
||||
protected final DependencyValidationManager myHolder;
|
||||
private final List<ProfileChangeAdapter> myProfilesListener = new ArrayList<ProfileChangeAdapter>();
|
||||
@NonNls private static final String PROJECT_DEFAULT_PROFILE_NAME = "Project Default";
|
||||
|
||||
|
||||
@@ -371,6 +371,14 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel,
|
||||
return isEditable() ? getName() : myEnabledTool;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scopesChanged() {
|
||||
for (ScopeToolState toolState : getAllTools()) {
|
||||
toolState.scopesChanged();
|
||||
}
|
||||
InspectionProfileManager.getInstance().fireProfileChanged(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEditable(final String displayName) {
|
||||
myEnabledTool = displayName;
|
||||
|
||||
+18
-1
@@ -36,6 +36,8 @@ import com.intellij.packageDependencies.DependencyValidationManager;
|
||||
import com.intellij.profile.DefaultProjectProfileManager;
|
||||
import com.intellij.profile.Profile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.search.scope.packageSet.NamedScopeManager;
|
||||
import com.intellij.psi.search.scope.packageSet.NamedScopesHolder;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -62,10 +64,13 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
public class InspectionProjectProfileManager extends DefaultProjectProfileManager implements SeverityProvider, ProjectComponent, PersistentStateComponent<Element> {
|
||||
private final Map<String, InspectionProfileWrapper> myName2Profile = new ConcurrentHashMap<String, InspectionProfileWrapper>();
|
||||
private final SeverityRegistrar mySeverityRegistrar;
|
||||
private final NamedScopeManager myLocalScopesHolder;
|
||||
private TogglePopupHintsPanel myTogglePopupHintsPanel;
|
||||
private NamedScopesHolder.ScopeListener myScopeListener;
|
||||
|
||||
public InspectionProjectProfileManager(final Project project, InspectionProfileManager inspectionProfileManager, DependencyValidationManager holder) {
|
||||
public InspectionProjectProfileManager(final Project project, InspectionProfileManager inspectionProfileManager, DependencyValidationManager holder, NamedScopeManager localScopesHolder) {
|
||||
super(project, inspectionProfileManager, holder);
|
||||
myLocalScopesHolder = localScopesHolder;
|
||||
mySeverityRegistrar = new SeverityRegistrar();
|
||||
}
|
||||
|
||||
@@ -194,6 +199,16 @@ public class InspectionProjectProfileManager extends DefaultProjectProfileManage
|
||||
} else {
|
||||
app.executeOnPooledThread(initInspectionProfilesRunnable);
|
||||
}
|
||||
myScopeListener = new NamedScopesHolder.ScopeListener() {
|
||||
@Override
|
||||
public void scopesChanged() {
|
||||
for (Profile profile : getProfiles()) {
|
||||
((InspectionProfile)profile).scopesChanged();
|
||||
}
|
||||
}
|
||||
};
|
||||
myHolder.addScopeListener(myScopeListener);
|
||||
myLocalScopesHolder.addScopeListener(myScopeListener);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -223,6 +238,8 @@ public class InspectionProjectProfileManager extends DefaultProjectProfileManage
|
||||
app.executeOnPooledThread(cleanupInspectionProfilesRunnable);
|
||||
}
|
||||
HighlightingSettingsPerFile.getInstance(myProject).cleanProfileSettings();
|
||||
myHolder.removeScopeListener(myScopeListener);
|
||||
myLocalScopesHolder.removeScopeListener(myScopeListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user