Fix IDEA Maven Importer to properly create facet on maven update project

This commit is contained in:
Simon Ogorodnik 2016-11-15 04:41:18 +03:00
parent e93a0f1a6e
commit cf69cf2243

View File

@ -17,6 +17,7 @@ package org.teavm.idea.maven;
import com.intellij.facet.FacetManager; import com.intellij.facet.FacetManager;
import com.intellij.facet.FacetType; import com.intellij.facet.FacetType;
import com.intellij.facet.ModifiableFacetModel;
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider; import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import java.util.HashSet; import java.util.HashSet;
@ -54,32 +55,32 @@ public class TeaVMMavenImporter extends MavenImporter {
MavenProjectChanges changes, Map<MavenProject, String> mavenProjectToModuleName, MavenProjectChanges changes, Map<MavenProject, String> mavenProjectToModuleName,
List<MavenProjectsProcessorTask> postTasks) { List<MavenProjectsProcessorTask> postTasks) {
FacetManager facetManager = FacetManager.getInstance(module); FacetManager facetManager = FacetManager.getInstance(module);
ModifiableFacetModel facetModel = modifiableModelsProvider.getModifiableFacetModel(module);
Set<String> targetTypes = new HashSet<>(); Set<String> targetTypes = new HashSet<>();
for (MavenPlugin mavenPlugin : mavenProject.getPlugins()) { for (MavenPlugin mavenPlugin : mavenProject.getPlugins()) {
if (mavenPlugin.getGroupId().equals(myPluginGroupID) if (mavenPlugin.getGroupId().equals(myPluginGroupID)
&& mavenPlugin.getArtifactId().equals(myPluginArtifactID)) { && mavenPlugin.getArtifactId().equals(myPluginArtifactID)) {
updateConfiguration(mavenPlugin, facetManager, module, targetTypes); updateConfiguration(mavenPlugin, facetModel, facetManager, targetTypes);
} }
} }
} }
private void updateConfiguration(MavenPlugin plugin, FacetManager facetManager, Module module, private void updateConfiguration(MavenPlugin plugin, ModifiableFacetModel facetModel, FacetManager facetManager,
Set<String> targetTypes) { Set<String> targetTypes) {
if (plugin.getConfigurationElement() != null) { if (plugin.getConfigurationElement() != null) {
updateConfiguration(plugin.getConfigurationElement(), facetManager, module, targetTypes); updateConfiguration(plugin.getConfigurationElement(), facetModel, facetManager, targetTypes);
} }
for (MavenPlugin.Execution execution : plugin.getExecutions()) { for (MavenPlugin.Execution execution : plugin.getExecutions()) {
if (execution.getGoals().contains("compile")) { if (execution.getGoals().contains("compile")) {
if (execution.getConfigurationElement() != null) { if (execution.getConfigurationElement() != null) {
updateConfiguration(execution.getConfigurationElement(), facetManager, module, targetTypes); updateConfiguration(execution.getConfigurationElement(), facetModel, facetManager, targetTypes);
} }
} }
} }
} }
private void updateConfiguration(Element source, FacetManager facetManager, Module module, private void updateConfiguration(Element source, ModifiableFacetModel facetModel, FacetManager facetManager,
Set<String> targetTypes) { Set<String> targetTypes) {
FacetType<TeaVMFacet, TeaVMFacetConfiguration> facetType; FacetType<TeaVMFacet, TeaVMFacetConfiguration> facetType;
switch (getTargetType(source)) { switch (getTargetType(source)) {
@ -98,10 +99,10 @@ public class TeaVMMavenImporter extends MavenImporter {
} }
TeaVMFacet facet = facetManager.getFacetByType(facetType.getId()); TeaVMFacet facet = facetManager.getFacetByType(facetType.getId());
if (facet == null) { if (facet == null) {
facet = new TeaVMFacet(facetType, module, facetType.getDefaultFacetName(), facet = facetManager.createFacet(facetType, facetType.getDefaultFacetName(), null);
facetType.createDefaultConfiguration(), null); facetModel.addFacet(facet);
facetManager.addFacet(facetType, facet.getName(), facet);
} }
TeaVMJpsConfiguration configuration = facet.getConfiguration().getState(); TeaVMJpsConfiguration configuration = facet.getConfiguration().getState();