diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleConfigNotifier.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleConfigNotifier.java
index 21c42c9a8a22..977c5bef1d23 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleConfigNotifier.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleConfigNotifier.java
@@ -5,6 +5,8 @@ import org.jetbrains.annotations.Nullable;
/**
* Defines callback for the gradle config structure change.
+ *
+ * Implementations of this interface are not obliged to be thread-safe.
*
* @author Denis Zhdanov
* @since 1/17/12 1:02 PM
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleLibraryImporter.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleLibraryImporter.java
index ff319ba48600..97a21711e88c 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleLibraryImporter.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleLibraryImporter.java
@@ -36,7 +36,14 @@ public class GradleLibraryImporter {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
- doImportLibrary(library, project);
+ final GradleProjectEntityImportListener publisher = project.getMessageBus().syncPublisher(GradleProjectEntityImportListener.TOPIC);
+ publisher.onImportStart(library);
+ try {
+ doImportLibrary(library, project);
+ }
+ finally {
+ publisher.onImportEnd(library);
+ }
}
});
}
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleDependencyImporter.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleDependencyImporter.java
index 84c6009f7ef2..fbdf278848fd 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleDependencyImporter.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleDependencyImporter.java
@@ -123,12 +123,15 @@ public class GradleModuleDependencyImporter {
// Register library dependencies.
ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module);
final ModifiableRootModel moduleRootModel = moduleRootManager.getModifiableModel();
+ final GradleProjectEntityImportListener publisher
+ = module.getProject().getMessageBus().syncPublisher(GradleProjectEntityImportListener.TOPIC);
try {
for (GradleLibraryDependency dependency : dependencies) {
final Library library = gradle2intellij.get(dependency.getTarget());
if (library == null) {
continue;
}
+ publisher.onImportStart(library);
LibraryOrderEntry orderEntry = moduleRootModel.addLibraryEntry(library);
orderEntry.setExported(dependency.isExported());
orderEntry.setScope(dependency.getScope());
@@ -136,6 +139,11 @@ public class GradleModuleDependencyImporter {
}
finally {
moduleRootModel.commit();
+ for (GradleLibraryDependency dependency : dependencies) {
+ if (dependency != null) {
+ publisher.onImportEnd(dependency);
+ }
+ }
}
}
});
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleImporter.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleImporter.java
index ef5ccd9b50e4..aadcd66faa85 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleImporter.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModuleImporter.java
@@ -64,36 +64,48 @@ public class GradleModuleImporter {
@Override
public void run() {
final ModuleManager moduleManager = ModuleManager.getInstance(project);
+ final GradleProjectEntityImportListener publisher
+ = project.getMessageBus().syncPublisher(GradleProjectEntityImportListener.TOPIC);
for (GradleModule module : modules) {
- final Module created = moduleManager.newModule(module.getModuleFilePath(), StdModuleTypes.JAVA);
-
- // Ensure that the dependencies are clear (used to be not clear when manually removing the module and importing it via gradle)
- ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(created);
- final ModifiableRootModel moduleRootModel = moduleRootManager.getModifiableModel();
- RootPolicy