diff options
Diffstat (limited to 'plugins/gradle/tooling-extension-api')
3 files changed, 43 insertions, 23 deletions
diff --git a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ModuleExtendedModel.java b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ModuleExtendedModel.java index 97dfd2547b73..91889d85fa9f 100644 --- a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ModuleExtendedModel.java +++ b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ModuleExtendedModel.java @@ -22,9 +22,12 @@ import java.io.Serializable; import java.util.List; /** + * @deprecated Use {@link com.intellij.openapi.externalSystem.model.ExternalProject} model instead. + * * @author Vladislav.Soroka * @since 11/5/13 */ +@Deprecated() public interface ModuleExtendedModel extends Serializable { /** * The group of the module. diff --git a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ProjectImportAction.java b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ProjectImportAction.java index af6f4fed60f4..5b20894b318d 100644 --- a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ProjectImportAction.java +++ b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/ProjectImportAction.java @@ -48,8 +48,8 @@ public class ProjectImportAction implements BuildAction<ProjectImportAction.AllM @Nullable @Override public AllModels execute(final BuildController controller) { - Class<? extends IdeaProject> aClass1 = myIsPreviewMode ? BasicIdeaProject.class : IdeaProject.class; - final IdeaProject ideaProject = controller.getModel(aClass1); + //outer conditional is needed to be compatible with 1.8 + final IdeaProject ideaProject = myIsPreviewMode ? controller.getModel(BasicIdeaProject.class) : controller.getModel(IdeaProject.class); if (ideaProject == null || ideaProject.getModules().isEmpty()) { return null; } @@ -59,25 +59,30 @@ public class ProjectImportAction implements BuildAction<ProjectImportAction.AllM // TODO ask gradle guys why there is always null got for BuildEnvironment model //allModels.setBuildEnvironment(controller.findModel(BuildEnvironment.class)); + addExtraProject(controller, allModels, null); for (IdeaModule module : ideaProject.getModules()) { - for (Class aClass : myExtraProjectModelClasses) { - try { - Object extraProject = controller.findModel(module, aClass); - if (extraProject == null) continue; - allModels.addExtraProject(extraProject, aClass, module); - } - catch (Exception e) { - // do not fail project import in a preview mode - if (!myIsPreviewMode) { - throw new ExternalSystemException(e); - } - } - } + addExtraProject(controller, allModels, module); } return allModels; } + private void addExtraProject(@NotNull BuildController controller, @NotNull AllModels allModels, @Nullable IdeaModule model) { + for (Class aClass : myExtraProjectModelClasses) { + try { + Object extraProject = controller.findModel(model, aClass); + if (extraProject == null) continue; + allModels.addExtraProject(extraProject, aClass, model); + } + catch (Exception e) { + // do not fail project import in a preview mode + if (!myIsPreviewMode) { + throw new ExternalSystemException(e); + } + } + } + } + public static class AllModels implements Serializable { @NotNull private final Map<String, Object> projectsByPath = new HashMap<String, Object>(); @NotNull private final IdeaProject myIdeaProject; @@ -101,9 +106,13 @@ public class ProjectImportAction implements BuildAction<ProjectImportAction.AllM myBuildEnvironment = buildEnvironment; } + @Nullable + public <T> T getExtraProject(Class<T> modelClazz) { + return getExtraProject(null, modelClazz); + } @Nullable - public <T> T getExtraProject(@NotNull IdeaModule module, Class<T> modelClazz) { + public <T> T getExtraProject(@Nullable IdeaModule module, Class<T> modelClazz) { Object extraProject = projectsByPath.get(extractMapKey(modelClazz, module)); if (modelClazz.isInstance(extraProject)) { //noinspection unchecked @@ -129,13 +138,17 @@ public class ProjectImportAction implements BuildAction<ProjectImportAction.AllM return modules; } - public void addExtraProject(@NotNull Object project, @NotNull Class modelClazz, @NotNull IdeaModule module) { + public void addExtraProject(@NotNull Object project, @NotNull Class modelClazz) { + projectsByPath.put(extractMapKey(modelClazz, null), project); + } + + public void addExtraProject(@NotNull Object project, @NotNull Class modelClazz, @Nullable IdeaModule module) { projectsByPath.put(extractMapKey(modelClazz, module), project); } @NotNull - private static String extractMapKey(Class modelClazz, @NotNull IdeaModule module) { - return modelClazz.getName() + '@' + module.getGradleProject().getPath(); + private String extractMapKey(Class modelClazz, @Nullable IdeaModule module) { + return modelClazz.getName() + '@' + (module != null ? module.getGradleProject().getPath() : "root" + myIdeaProject.getName().hashCode()); } @NotNull diff --git a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/ErrorMessageBuilder.java b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/ErrorMessageBuilder.java index 97e449992235..da938dccdf0d 100644 --- a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/ErrorMessageBuilder.java +++ b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/ErrorMessageBuilder.java @@ -31,17 +31,21 @@ public class ErrorMessageBuilder { public static final String EOL_TAG = "<eol>"; @NotNull private final Project myProject; - @NotNull private final Exception myException; + @Nullable private final Exception myException; @NotNull private final String myGroup; @Nullable private String myDescription; - private ErrorMessageBuilder(@NotNull Project project, @NotNull Exception exception, @NotNull String group) { + private ErrorMessageBuilder(@NotNull Project project, @Nullable Exception exception, @NotNull String group) { myProject = project; myException = exception; myGroup = group; } - public static ErrorMessageBuilder create(@NotNull Project project, @NotNull Exception exception, @NotNull String group) { + public static ErrorMessageBuilder create(@NotNull Project project, @NotNull String group) { + return new ErrorMessageBuilder(project, null, group); + } + + public static ErrorMessageBuilder create(@NotNull Project project, @Nullable Exception exception, @NotNull String group) { return new ErrorMessageBuilder(project, exception, group); } @@ -59,7 +63,7 @@ public class ErrorMessageBuilder { ( "<i>" + "<b>" + myProject + ((myDescription != null) ? ": " + myDescription : "") + "</b>" + - "\nDetails: " + getErrorMessage(myException) + + (myException != null ? "\nDetails: " + getErrorMessage(myException) : "") + "</i>" ).replaceAll("\r\n|\n\r|\n|\r", EOL_TAG) ); |