Skip to content

Commit c6e9f65

Browse files
authored
Merge pull request #5077 from microsoft/fixes/artifact
Compare azure artifact with artifact type and identifier
2 parents f32b50d + ecf60d6 commit c6e9f65

File tree

3 files changed

+20
-21
lines changed

3 files changed

+20
-21
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/common/AzureArtifactComboBox.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ private void addOrSelectExistingVirtualFile(VirtualFile virtualFile) {
126126
final List<AzureArtifact> artifacts = this.getItems();
127127
final AzureArtifactManager manager = AzureArtifactManager.getInstance(project);
128128
final AzureArtifact existingArtifact =
129-
artifacts.stream().filter(artifact -> manager.equalsAzureArtifactIdentifier(artifact, selectArtifact)).findFirst().orElse(null);
129+
artifacts.stream().filter(artifact -> manager.equalsAzureArtifact(artifact, selectArtifact)).findFirst().orElse(null);
130130
if (existingArtifact == null) {
131131
this.addItem(selectArtifact);
132132
this.setSelectedItem(selectArtifact);
@@ -141,7 +141,7 @@ private void resetDefaultValue(final AzureArtifact defaultArtifact) {
141141
}
142142
final List<AzureArtifact> artifacts = this.getItems();
143143
final AzureArtifactManager manager = AzureArtifactManager.getInstance(project);
144-
final Predicate<AzureArtifact> predicate = artifact -> manager.equalsAzureArtifactIdentifier(defaultArtifact, artifact);
144+
final Predicate<AzureArtifact> predicate = artifact -> manager.equalsAzureArtifact(defaultArtifact, artifact);
145145
final AzureArtifact toSelect = artifacts.stream().filter(predicate).findFirst().orElse(null);
146146
if (toSelect != null) {
147147
this.setSelectedItem(toSelect);

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/common/AzureArtifactManager.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import static com.microsoft.azure.toolkit.intellij.common.AzureArtifactType.File;
3434

3535
public class AzureArtifactManager {
36-
private static Map<Project, AzureArtifactManager> projectAzureArtifactManagerMap = new HashMap<>();
36+
private static final Map<Project, AzureArtifactManager> projectAzureArtifactManagerMap = new HashMap<>();
3737
private final Project project;
3838

3939
private AzureArtifactManager(Project project) {
@@ -116,10 +116,15 @@ public String getPackaging(AzureArtifact artifact) {
116116
}
117117
}
118118

119-
public boolean equalsAzureArtifactIdentifier(AzureArtifact artifact1, AzureArtifact artifact2) {
119+
public boolean equalsAzureArtifact(AzureArtifact artifact1, AzureArtifact artifact2) {
120120
if (Objects.isNull(artifact1) || Objects.isNull(artifact2)) {
121121
return artifact1 == artifact2;
122122
}
123+
if (artifact1.getType() != artifact2.getType()) {
124+
// Artifact with different type may have same identifier, for instance, File and Artifact, both of them use file path as identifier
125+
// todo: re-design identifier, make it include the artifact type info
126+
return false;
127+
}
123128
return StringUtils.equals(getArtifactIdentifier(artifact1), getArtifactIdentifier(artifact2));
124129
}
125130

@@ -146,34 +151,28 @@ public Module getModuleFromAzureArtifact(AzureArtifact azureArtifact) {
146151
}
147152

148153
private String getGradleProjectId(ExternalProjectPojo gradleProjectPojo) {
149-
ExternalProject externalProject = getRelatedExternalProject(gradleProjectPojo);
154+
final ExternalProject externalProject = getRelatedExternalProject(gradleProjectPojo);
150155
return Objects.nonNull(externalProject) ? externalProject.getQName() : null;
151156
}
152157

153158
private ExternalProject getRelatedExternalProject(ExternalProjectPojo gradleProjectPojo) {
154-
ExternalProject externalProject =
155-
ExternalProjectDataCache.getInstance(project).getRootExternalProject(gradleProjectPojo.getPath());
156-
return externalProject;
159+
return ExternalProjectDataCache.getInstance(project).getRootExternalProject(gradleProjectPojo.getPath());
157160
}
158161

159162
private List<AzureArtifact> prepareAzureArtifacts(Predicate<String> packagingFilter) {
160-
List<AzureArtifact> azureArtifacts = new ArrayList<>();
161-
List<ExternalProjectPojo> gradleProjects = GradleUtils.listGradleProjects(project);
163+
final List<AzureArtifact> azureArtifacts = new ArrayList<>();
164+
final List<ExternalProjectPojo> gradleProjects = GradleUtils.listGradleProjects(project);
162165
if (Objects.nonNull(gradleProjects)) {
163166
azureArtifacts.addAll(gradleProjects.stream()
164167
.map(AzureArtifact::createFromGradleProject)
165168
.collect(Collectors.toList()));
166169
}
167-
List<MavenProject> mavenProjects = MavenProjectsManager.getInstance(project).getProjects();
168-
if (Objects.nonNull(mavenProjects)) {
169-
azureArtifacts.addAll(
170-
mavenProjects.stream().map(AzureArtifact::createFromMavenProject).collect(Collectors.toList()));
171-
}
172-
List<Artifact> artifactList = MavenRunTaskUtil.collectProjectArtifact(project);
173-
if (Objects.nonNull(artifactList)) {
174-
azureArtifacts.addAll(
175-
artifactList.stream().map(AzureArtifact::createFromArtifact).collect(Collectors.toList()));
176-
}
170+
final List<MavenProject> mavenProjects = MavenProjectsManager.getInstance(project).getProjects();
171+
azureArtifacts.addAll(mavenProjects.stream().map(AzureArtifact::createFromMavenProject).collect(Collectors.toList()));
172+
173+
final List<Artifact> artifactList = MavenRunTaskUtil.collectProjectArtifact(project);
174+
azureArtifacts.addAll(artifactList.stream().map(AzureArtifact::createFromArtifact).collect(Collectors.toList()));
175+
177176
if (packagingFilter == null) {
178177
return azureArtifacts;
179178
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/common/AzureSettingPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ protected void artifactActionPerformed(Artifact selectArtifact) {
160160
}
161161

162162
protected void syncBeforeRunTasks(AzureArtifact azureArtifact, @NotNull final RunConfiguration configuration) {
163-
if (!AzureArtifactManager.getInstance(configuration.getProject()).equalsAzureArtifactIdentifier(lastSelectedAzureArtifact, azureArtifact)) {
163+
if (!AzureArtifactManager.getInstance(configuration.getProject()).equalsAzureArtifact(lastSelectedAzureArtifact, azureArtifact)) {
164164
final JPanel pnlRoot = getMainPanel();
165165
final DataContext context = DataManager.getInstance().getDataContext(pnlRoot);
166166
final ConfigurationSettingsEditorWrapper editor = ConfigurationSettingsEditorWrapper.CONFIGURATION_EDITOR_KEY.getData(context);

0 commit comments

Comments
 (0)