Skip to content

Commit 81f95a7

Browse files
committed
Fix possible NPE based on telemetry
1 parent 18c053e commit 81f95a7

File tree

5 files changed

+19
-11
lines changed
  • PluginsAndFeatures/azure-toolkit-for-intellij
  • Utils/azure-toolkit-ide-libs/azure-toolkit-ide-common-lib/src/main/java/com/microsoft/azure/toolkit/ide/common/component

5 files changed

+19
-11
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/function/runner/core/FunctionUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ public static boolean isFunctionProject(Project project) {
193193
type = AzureOperation.Type.TASK
194194
)
195195
public static PsiMethod[] findFunctionsByAnnotation(Module module) {
196+
if (module == null) {
197+
return new PsiMethod[0];
198+
}
196199
final PsiClass functionNameClass = JavaPsiFacade.getInstance(module.getProject())
197200
.findClass(AZURE_FUNCTION_ANNOTATION_CLASS,
198201
GlobalSearchScope.moduleWithLibrariesScope(module));

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/webapp/runner/webappconfig/WebAppRunState.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.microsoft.intellij.RunProcessHandler;
4242
import org.apache.commons.collections4.MapUtils;
4343
import org.apache.commons.compress.utils.FileNameUtils;
44+
import org.apache.commons.lang3.ObjectUtils;
4445
import org.apache.commons.lang3.StringUtils;
4546
import org.jetbrains.annotations.NotNull;
4647
import org.jetbrains.annotations.Nullable;
@@ -138,7 +139,8 @@ private void updateAppServiceVMOptions(AppServiceAppBase<?, ?, ?> deployTarget,
138139
final Map<String, String> applicationSettings = webAppConfiguration.getApplicationSettings();
139140
final WebContainer webContainer = Objects.requireNonNull(deployTarget.getRuntime()).getWebContainer();
140141
final String javaOptsParameter = (webContainer == WebContainer.JAVA_SE || webContainer == WebContainer.JBOSS_7) ? JAVA_OPTS : CATALINA_OPTS;
141-
final String javaOpts = applicationSettings.get(javaOptsParameter);
142+
final String javaOpts = Optional.ofNullable(webAppConfiguration.getApplicationSettings())
143+
.map(settings -> settings.get(javaOptsParameter)).orElse(StringUtils.EMPTY);
142144
final String javaAgentValue = String.format("-javaagent:%s", targetPath);
143145
if (StringUtils.contains(javaOpts, javaAgentValue)) {
144146
return;
@@ -148,7 +150,7 @@ private void updateAppServiceVMOptions(AppServiceAppBase<?, ?, ?> deployTarget,
148150
}
149151

150152
private void updateApplicationSettings(AppServiceAppBase<?, ?, ?> deployTarget, RunProcessHandler processHandler) {
151-
final Map<String, String> applicationSettings = new HashMap<>(webAppConfiguration.getApplicationSettings());
153+
final Map<String, String> applicationSettings = new HashMap<>(ObjectUtils.firstNonNull(webAppConfiguration.getApplicationSettings(), Collections.emptyMap()));
152154
final Set<String> appSettingsToRemove = webAppConfiguration.isCreatingNew() ? Collections.emptySet() : getAppSettingsToRemove(deployTarget, applicationSettings);
153155
applicationSettings.putAll(appSettingsForResourceConnection);
154156
if (MapUtils.isEmpty(applicationSettings)) {

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/lib/legacy/function/FunctionAppService.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@
1717
import com.microsoft.azure.toolkit.lib.appservice.task.CreateOrUpdateFunctionAppTask;
1818
import com.microsoft.azure.toolkit.lib.appservice.task.DeployFunctionAppTask;
1919
import com.microsoft.azure.toolkit.lib.resource.ResourceGroupConfig;
20-
import org.apache.commons.lang3.ObjectUtils;
2120
import org.apache.commons.lang3.StringUtils;
22-
import org.gradle.internal.impldep.com.google.api.client.repackaged.com.google.common.base.Objects;
2321

2422
import javax.annotation.Nonnull;
2523
import java.io.File;
2624
import java.util.Collections;
2725
import java.util.Map;
26+
import java.util.Objects;
2827
import java.util.Optional;
2928
import java.util.Set;
3029
import java.util.stream.Collectors;
@@ -88,7 +87,7 @@ private Set<String> getAppSettingsToRemove(FunctionAppConfig config) {
8887
}
8988
final Map<String, String> applicationSettings = config.getAppSettings();
9089
final FunctionAppBase<?, ?, ?> target = config.getDeploymentSlot() == null ? Azure.az(AzureFunctions.class).functionApp(config.getResourceId())
91-
: Azure.az(AzureFunctions.class).functionApp(config.getResourceId()).slots().get(config.getDeploymentSlot().getName(), null);
90+
: Objects.requireNonNull(Azure.az(AzureFunctions.class).functionApp(config.getResourceId())).slots().get(config.getDeploymentSlot().getName(), null);
9291
return target == null || !target.exists() ? Collections.emptySet() : Optional.ofNullable(target.getAppSettings())
9392
.map(settings -> settings.keySet().stream().filter(key -> !applicationSettings.containsKey(key)).collect(Collectors.toSet()))
9493
.orElseGet(Collections::emptySet);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-guidance/src/main/java/com/microsoft/azure/toolkit/ide/guidance/view/components/PhasePanel.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,14 @@ private void initOutputPanel() {
144144
class ConsoleTextMessager implements IAzureMessager {
145145
@Override
146146
public boolean show(IAzureMessage message) {
147-
final String content = message.getContent();
148-
PhasePanel.this.isOutputBlank = StringUtils.isBlank(content);
149-
PhasePanel.this.outputPanel.setText(content);
150-
PhasePanel.this.updateView(PhasePanel.this.phase.getStatus(), PhasePanel.this.detailsPanel.isVisible());
147+
try {
148+
final String content = message.getContent();
149+
PhasePanel.this.isOutputBlank = StringUtils.isBlank(content);
150+
PhasePanel.this.outputPanel.setText(content);
151+
PhasePanel.this.updateView(PhasePanel.this.phase.getStatus(), PhasePanel.this.detailsPanel.isVisible());
152+
} catch (RuntimeException e) {
153+
// swallow exception when update output panel
154+
}
151155
return true;
152156
}
153157
}

Utils/azure-toolkit-ide-libs/azure-toolkit-ide-common-lib/src/main/java/com/microsoft/azure/toolkit/ide/common/component/AzureResourceLabelView.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ public void onEvent(AzureEvent event) {
7272
final String type = event.getType();
7373
final Object source = event.getSource();
7474
if (source instanceof AzResource &&
75-
((AzResource<?, ?, ?>) source).getId().equals(this.resource.getId()) &&
76-
((AzResource<?, ?, ?>) source).getName().equals(this.resource.getName())) {
75+
StringUtils.equals(((AzResource<?, ?, ?>) source).getId(), this.resource.getId()) &&
76+
StringUtils.equals(((AzResource<?, ?, ?>) source).getName(), this.resource.getName())) {
7777
final AzureTaskManager tm = AzureTaskManager.getInstance();
7878
if (StringUtils.equals(type, "resource.refreshed.resource")) {
7979
this.refreshViewInner.debounce();

0 commit comments

Comments
 (0)