Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit19b0c4d

Browse files
committed
new: propagate plugin specific environment variables to plugins
1 parentc5f6d5d commit19b0c4d

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/plugin/LowcoderPluginManager.java‎

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
packageorg.lowcoder.api.framework.plugin;
22

33
importjava.util.ArrayList;
4+
importjava.util.Arrays;
45
importjava.util.Comparator;
6+
importjava.util.HashMap;
57
importjava.util.LinkedHashMap;
68
importjava.util.List;
79
importjava.util.Map;
10+
importjava.util.stream.Collectors;
11+
importjava.util.stream.StreamSupport;
812

913
importorg.apache.commons.collections4.CollectionUtils;
14+
importorg.apache.commons.lang3.StringUtils;
1015
importorg.lowcoder.plugin.api.LowcoderPlugin;
1116
importorg.lowcoder.plugin.api.LowcoderServices;
17+
importorg.springframework.core.env.AbstractEnvironment;
18+
importorg.springframework.core.env.EnumerablePropertySource;
19+
importorg.springframework.core.env.Environment;
20+
importorg.springframework.core.env.MutablePropertySources;
1221
importorg.springframework.stereotype.Component;
1322

1423
importjakarta.annotation.PostConstruct;
@@ -22,7 +31,8 @@
2231
publicclassLowcoderPluginManager
2332
{
2433
privatefinalLowcoderServiceslowcoderServices;
25-
privatefinalPluginLoaderpluginLoader;
34+
privatefinalPluginLoaderpluginLoader;
35+
privatefinalEnvironmentenvironment;
2636

2737
privateMap<String,LowcoderPlugin>plugins =newLinkedHashMap<>();
2838

@@ -35,7 +45,7 @@ private void loadPlugins()
3545

3646
for (LowcoderPluginplugin :sorted)
3747
{
38-
PluginExecutorexecutor =newPluginExecutor(plugin,lowcoderServices);
48+
PluginExecutorexecutor =newPluginExecutor(plugin,getPluginEnvironmentVariables(plugin),lowcoderServices);
3949
executor.start();
4050
}
4151
}
@@ -66,6 +76,29 @@ public List<PluginInfo> getLoadedPluginsInfo()
6676
returninfos;
6777
}
6878

79+
privateMap<String,Object>getPluginEnvironmentVariables(LowcoderPluginplugin)
80+
{
81+
Map<String,Object>env =newHashMap<>();
82+
83+
StringvarPrefix ="PLUGIN_" +plugin.pluginId().toUpperCase().replaceAll("-","_") +"_";
84+
MutablePropertySourcespropertySources = ((AbstractEnvironment)environment).getPropertySources();
85+
List<String>properties =StreamSupport.stream(propertySources.spliterator(),false)
86+
.filter(propertySource ->propertySourceinstanceofEnumerablePropertySource)
87+
.map(propertySource -> ((EnumerablePropertySource<?>)propertySource).getPropertyNames())
88+
.flatMap(Arrays::<String>stream)
89+
.distinct()
90+
.sorted()
91+
.filter(prop ->prop.startsWith(varPrefix))
92+
.collect(Collectors.toList());
93+
94+
for (Stringprop :properties)
95+
{
96+
env.put(StringUtils.removeStart(prop,varPrefix),environment.getProperty(prop));
97+
}
98+
99+
returnenv;
100+
}
101+
69102
privatevoidregisterPlugins()
70103
{
71104
List<LowcoderPlugin>loaded =pluginLoader.loadPlugins();

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/plugin/PluginExecutor.java‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
packageorg.lowcoder.api.framework.plugin;
22

3+
importjava.util.Map;
4+
35
importorg.lowcoder.plugin.api.LowcoderPlugin;
46
importorg.lowcoder.plugin.api.LowcoderServices;
57

@@ -8,11 +10,13 @@
810
@Slf4j
911
publicclassPluginExecutorextendsThread
1012
{
13+
privateMap<String,Object>env;
1114
privateLowcoderPluginplugin;
1215
privateLowcoderServicesservices;
1316

14-
publicPluginExecutor(LowcoderPluginplugin,LowcoderServicesservices)
17+
publicPluginExecutor(LowcoderPluginplugin,Map<String,Object>env,LowcoderServicesservices)
1518
{
19+
this.env =env;
1620
this.plugin =plugin;
1721
this.services =services;
1822
this.setContextClassLoader(plugin.getClass().getClassLoader());
@@ -22,7 +26,7 @@ public PluginExecutor(LowcoderPlugin plugin, LowcoderServices services)
2226
@Override
2327
publicvoidrun()
2428
{
25-
if (plugin.load(services))
29+
if (plugin.load(env,services))
2630
{
2731
log.info("Plugin [{}] loaded and running.",plugin.pluginId());
2832
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp