mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-100625 Gradle: Throwable at GradleJarManager$2.run()
This commit is contained in:
+8
-2
@@ -69,12 +69,18 @@ public class GradleMovedJarsPostProcessor implements GradleProjectStructureChang
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processChanges(@NotNull final Collection<GradleProjectStructureChange> changes, @NotNull final Project project) {
|
||||
public void processChanges(@NotNull final Collection<GradleProjectStructureChange> changes,
|
||||
@NotNull final Project project,
|
||||
boolean onIdeProjectStructureChange) {
|
||||
if (onIdeProjectStructureChange) {
|
||||
// Do nothing as project models modification implied by project model change event are prohibited (see IDEA-100625).
|
||||
return;
|
||||
}
|
||||
final Collection<MergeInfo> toMerge = buildMergeData(changes, ServiceManager.getService(project, GradleProjectStructureContext.class));
|
||||
if (toMerge == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Runnable mergeTask = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
+4
-1
@@ -59,7 +59,10 @@ public class GradleOutdatedLibraryVersionPostProcessor implements GradleProjectS
|
||||
private static final boolean SKIP = SystemProperties.getBooleanProperty("gradle.skip.outdated.processing", false);
|
||||
|
||||
@Override
|
||||
public void processChanges(@NotNull Collection<GradleProjectStructureChange> changes, @NotNull Project project) {
|
||||
public void processChanges(@NotNull Collection<GradleProjectStructureChange> changes,
|
||||
@NotNull Project project,
|
||||
boolean onIdeProjectStructureChange)
|
||||
{
|
||||
if (SKIP) {
|
||||
return;
|
||||
}
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ public class GradleProjectStructureChangesDetector implements GradleProjectStruc
|
||||
GradleProject project = myChangesModel.getGradleProject();
|
||||
if (project != null) {
|
||||
myNewChangesDetected.set(false);
|
||||
myChangesModel.update(project);
|
||||
myChangesModel.update(project, true);
|
||||
if (!myNewChangesDetected.get()) {
|
||||
return;
|
||||
}
|
||||
|
||||
+13
-5
@@ -56,6 +56,10 @@ public class GradleProjectStructureChangesModel {
|
||||
myPostProcessors.add(changedLibraryVersionPostProcessor);
|
||||
}
|
||||
|
||||
public void update(@NotNull GradleProject gradleProject) {
|
||||
update(gradleProject, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asks the model to update its state according to the given state of the target gradle project.
|
||||
* <p/>
|
||||
@@ -72,11 +76,13 @@ public class GradleProjectStructureChangesModel {
|
||||
* <b>Note:</b> it's very important that the listeners are notified <b>after</b> the actual state change, i.e. {@link #getChanges()}
|
||||
* during the update returns up-to-date data.
|
||||
*
|
||||
* @param gradleProject gradle project to sync with
|
||||
* @param gradleProject gradle project to sync with
|
||||
* @param onIdeProjectStructureChange a flag which identifies if current update is triggered by ide project structure
|
||||
* change (an alternative is a manual project structure changes refresh implied by a user)
|
||||
*/
|
||||
public void update(@NotNull GradleProject gradleProject) {
|
||||
public void update(@NotNull GradleProject gradleProject, boolean onIdeProjectStructureChange) {
|
||||
myGradleProject.set(gradleProject);
|
||||
final GradleChangesCalculationContext context = getCurrentChangesContext(gradleProject);
|
||||
final GradleChangesCalculationContext context = getCurrentChangesContext(gradleProject, onIdeProjectStructureChange);
|
||||
if (!context.hasNewChanges()) {
|
||||
return;
|
||||
}
|
||||
@@ -112,12 +118,14 @@ public class GradleProjectStructureChangesModel {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public GradleChangesCalculationContext getCurrentChangesContext(@NotNull GradleProject gradleProject) {
|
||||
public GradleChangesCalculationContext getCurrentChangesContext(@NotNull GradleProject gradleProject,
|
||||
boolean onIdeProjectStructureChange)
|
||||
{
|
||||
GradleChangesCalculationContext context
|
||||
= new GradleChangesCalculationContext(myChanges.get(), myPlatformFacade, myLibraryPathTypeMapper);
|
||||
myChangesCalculator.calculate(gradleProject, myProject, context);
|
||||
for (GradleProjectStructureChangesPostProcessor processor : myPostProcessors) {
|
||||
processor.processChanges(context.getCurrentChanges(), myProject);
|
||||
processor.processChanges(context.getCurrentChanges(), myProject, onIdeProjectStructureChange);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
+7
-3
@@ -39,8 +39,12 @@ public interface GradleProjectStructureChangesPostProcessor {
|
||||
* <b>Note:</b> this callback is assumed to be called from EDT, in order to allow synchronous processing such as
|
||||
* given changes collection's modification is immediately visible to the calling code.
|
||||
*
|
||||
* @param changes current changes which might be adjusted
|
||||
* @param project current intellij project
|
||||
* @param changes current changes which might be adjusted
|
||||
* @param project current intellij project
|
||||
* @param onIdeProjectStructureChange a flag which identifies if current update is triggered by ide project structure
|
||||
* change (an alternative is a manual project structure changes refresh implied by a user)
|
||||
*/
|
||||
void processChanges(@NotNull Collection<GradleProjectStructureChange> changes, @NotNull Project project);
|
||||
void processChanges(@NotNull Collection<GradleProjectStructureChange> changes,
|
||||
@NotNull Project project,
|
||||
boolean onIdeProjectStructureChange);
|
||||
}
|
||||
|
||||
+1
-1
@@ -224,7 +224,7 @@ public class GradleProjectStructureTreeModel extends DefaultTreeModel {
|
||||
|
||||
GradleProject project = myChangesModel.getGradleProject();
|
||||
if (project != null) {
|
||||
GradleChangesCalculationContext context = myChangesModel.getCurrentChangesContext(project);
|
||||
GradleChangesCalculationContext context = myChangesModel.getCurrentChangesContext(project, false);
|
||||
processChanges(Collections.<GradleProjectStructureChange>emptyList(), context.getCurrentChanges());
|
||||
filterNodes(root);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user