Skip to content

Commit 8a344f7

Browse files
committed
Refactor logic to exclude functions-java-library/function-java-core-library, fixes #7116
1 parent 72ec054 commit 8a344f7

File tree

1 file changed

+15
-6
lines changed
  • PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice-java/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/function/runner/core

1 file changed

+15
-6
lines changed

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

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package com.microsoft.azure.toolkit.intellij.legacy.function.runner.core;
77

8-
import com.google.gson.JsonObject;
98
import com.intellij.codeInsight.AnnotationUtil;
109
import com.intellij.codeInsight.MetaAnnotationUtil;
1110
import com.intellij.lang.jvm.JvmAnnotation;
@@ -52,6 +51,7 @@
5251
import org.jetbrains.idea.maven.project.MavenProject;
5352
import org.jetbrains.idea.maven.project.MavenProjectsManager;
5453

54+
import javax.annotation.Nonnull;
5555
import javax.annotation.Nullable;
5656
import java.io.File;
5757
import java.io.IOException;
@@ -69,6 +69,8 @@
6969
import java.util.List;
7070
import java.util.Map;
7171
import java.util.concurrent.Callable;
72+
import java.util.regex.Matcher;
73+
import java.util.regex.Pattern;
7274
import java.util.stream.Collectors;
7375

7476
import static com.microsoft.azure.toolkit.intellij.common.AzureBundle.message;
@@ -77,7 +79,6 @@
7779
public class FunctionUtils {
7880
private static final int MAX_PORT = 65535;
7981

80-
public static final String FUNCTION_JAVA_LIBRARY_ARTIFACT_ID = "azure-functions-java-library";
8182
private static final String AZURE_FUNCTION_ANNOTATION_CLASS =
8283
"com.microsoft.azure.functions.annotation.FunctionName";
8384
private static final String FUNCTION_JSON = "function.json";
@@ -94,6 +95,7 @@ public class FunctionUtils {
9495
private static final String AZURE_FUNCTIONS_APP_SETTINGS = "Azure Functions App Settings";
9596
private static final String AZURE_FUNCTIONS_JAVA_LIBRARY = "azure-functions-java-library";
9697
private static final String AZURE_FUNCTIONS_JAVA_CORE_LIBRARY = "azure-functions-java-core-library";
98+
private static final Pattern ARTIFACT_NAME_PATTERN = Pattern.compile("(.*)-(\\d+\\.)?(\\d+\\.)?(\\*|\\d+).*");
9799

98100
static {
99101
//initialize required attributes, which will be saved to function.json even if it equals to its default value
@@ -179,7 +181,7 @@ public static boolean isFunctionProject(Project project) {
179181
}
180182
final List<Library> libraries = new ArrayList<>();
181183
OrderEnumerator.orderEntries(project).productionOnly().forEachLibrary(library -> {
182-
if (StringUtils.contains(library.getName(), FUNCTION_JAVA_LIBRARY_ARTIFACT_ID)) {
184+
if (StringUtils.containsAnyIgnoreCase(library.getName(), AZURE_FUNCTIONS_JAVA_LIBRARY, AZURE_FUNCTIONS_JAVA_CORE_LIBRARY)) {
183185
libraries.add(library);
184186
}
185187
return true;
@@ -295,18 +297,25 @@ public static Map<String, FunctionConfiguration> prepareStagingFolder(Path stagi
295297
});
296298
}
297299
final String libraryToExclude = dependencies.stream()
298-
.filter(artifact -> StringUtils.equalsAnyIgnoreCase(artifact.getName(), AZURE_FUNCTIONS_JAVA_CORE_LIBRARY))
299-
.map(File::getName).findFirst().orElse(AZURE_FUNCTIONS_JAVA_LIBRARY);
300+
.map(FunctionUtils::getArtifactIdFromFile)
301+
.filter(name -> StringUtils.equalsAnyIgnoreCase(name, AZURE_FUNCTIONS_JAVA_CORE_LIBRARY))
302+
.findFirst().orElse(AZURE_FUNCTIONS_JAVA_LIBRARY);
300303

301304
final File libFolder = new File(stagingFolder.toFile(), "lib");
302305
for (final File file : dependencies) {
303-
if (!StringUtils.containsIgnoreCase(file.getName(), libraryToExclude)) {
306+
if (!StringUtils.equalsIgnoreCase(getArtifactIdFromFile(file), libraryToExclude)) {
304307
FileUtils.copyFileToDirectory(file, libFolder);
305308
}
306309
}
307310
return configMap;
308311
}
309312

313+
private static String getArtifactIdFromFile(@Nonnull final File file) {
314+
final Matcher matcher = ARTIFACT_NAME_PATTERN.matcher(file.getName());
315+
return matcher.matches() ? StringUtils.substringBeforeLast(file.getName(), "-") :
316+
StringUtils.substringBeforeLast(file.getName(), ".jar");
317+
}
318+
310319
public static String getTargetFolder(Module module) {
311320
if (module == null) {
312321
return StringUtils.EMPTY;

0 commit comments

Comments
 (0)