Skip to content

Commit 9166467

Browse files
authored
Override AppServiceEnv Java path if Java_Home is valid (#3677)
1 parent 7cb40d6 commit 9166467

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

src/WebJobs.Script/Rpc/Configuration/WorkerConfigFactory.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,10 +224,21 @@ internal string GetExecutablePathForJava(string defaultExecutablePath)
224224
{
225225
return defaultExecutablePath;
226226
}
227+
else if (IsJavaHomeValid())
228+
{
229+
// TODO: pgopa default to using JAVA_HOME after ANT78 rolls out
230+
return Path.GetFullPath(Path.Combine(javaHome, "bin", "java"));
231+
}
227232
else
228233
{
229234
return Path.GetFullPath(Path.Combine(javaHome, "bin", defaultExecutablePath));
230235
}
231236
}
237+
238+
internal bool IsJavaHomeValid()
239+
{
240+
string javaHome = ScriptSettingsManager.Instance.GetSetting("JAVA_HOME");
241+
return string.IsNullOrEmpty(javaHome) ? false : javaHome.Contains("8.0");
242+
}
232243
}
233244
}

test/WebJobs.Script.Tests/Rpc/WorkerConfigFactoryTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,30 @@ public void JavaPath_AppServiceEnv()
7979
}
8080
}
8181

82+
[Fact]
83+
public void JavaPath_AppServiceEnv_JavaHomeOverrides()
84+
{
85+
var configBuilder = ScriptSettingsManager.CreateDefaultConfigurationBuilder()
86+
.AddInMemoryCollection(new Dictionary<string, string>
87+
{
88+
["languageWorker"] = "test"
89+
});
90+
var config = configBuilder.Build();
91+
var scriptSettingsManager = new ScriptSettingsManager(config);
92+
var testLogger = new TestLogger("test");
93+
var configFactory = new WorkerConfigFactory(config, testLogger);
94+
var testEnvVariables = new Dictionary<string, string>
95+
{
96+
{ EnvironmentSettingNames.AzureWebsiteInstanceId, "123" },
97+
{ "JAVA_HOME", @"D:\Program Files\Java\zulu8.31.0.2-jre8.0.181-win_x64" }
98+
};
99+
using (var variables = new TestScopedSettings(scriptSettingsManager, testEnvVariables))
100+
{
101+
var javaPath = configFactory.GetExecutablePathForJava("../../zulu8.23.0.3-jdk8.0.144-win_x64/bin/java");
102+
Assert.Equal(@"D:\Program Files\Java\zulu8.31.0.2-jre8.0.181-win_x64\bin\java", javaPath);
103+
}
104+
}
105+
82106
[Fact]
83107
public void JavaPath_JavaHome_Set()
84108
{

0 commit comments

Comments
 (0)