in src/main/java/com/epam/gmp/service/ScriptContextBuilder.java [73:125]
public ScriptContext buildContextFor(String scriptPath, Map<String, Object> params) throws ScriptInitializationException {
Matcher pathMatcher = SCRIPT_PATTERN.matcher(scriptPath);
if (!pathMatcher.matches()) {
throw new ScriptContextException("Unable to build context for: " + scriptPath);
}
org.springframework.core.io.Resource scriptGroupPath = GmpResourceUtils.getRelativeResource(gmpHome, "/" + SCRIPTS_FOLDER + "/" + pathMatcher.group(3) + "/");
String scriptName = pathMatcher.group(4);
String environment = pathMatcher.group(1);
if (!scriptGroupPath.exists()) {
throw new ScriptContextException("Script group folder doesn't exist: " + scriptGroupPath);
}
try {
ConfigStackBuilder confBuilder = new ConfigStackBuilder();
//Global config
confBuilder.addLayer(new ConfigLayer(scriptGroupPath, GLOBAL_CONFIG));
//Common config
confBuilder.addLayer(new ConfigLayer(scriptGroupPath, COMMON_CONFIG));
//Script config
confBuilder.addLayer(new ConfigLayer(scriptGroupPath, scriptName));
Map<String, Object> scriptConfigParameters = new HashMap<>();
scriptConfigParameters.put(G_ENV, environment);
ConfigObject scriptConfig = buildConfig(confBuilder.build(), environment, scriptConfigParameters);
scriptName = ((Map) scriptConfig.get(EXECUTOR_FIELD)).get(SCRIPT_TO_RUN).toString();
scriptConfig.remove(EXECUTOR_FIELD);
//ADD logger
HashMap<String, Object> paramMap = new HashMap<>();
Logger scriptLogger = LoggerFactory.getLogger(scriptName.replaceAll("[.]", "_"));
if (params != null) {
paramMap.putAll(params);
}
paramMap.computeIfAbsent("cmdLine", (key -> Collections.emptyList()));
paramMap.put("logger", scriptLogger);
paramMap.put("gConfig", scriptConfig);
paramMap.put(G_ENV, environment);
if (logger.isInfoEnabled()) {
logger.info("Groovy based script configuration:\n" + scriptName + ":" + configToString(scriptConfig));
}
return new ScriptContext(scriptPath, paramMap, scriptGroupPath, scriptName);
} catch (ScriptInitializationException e) {
throw new ScriptContextException("Unable to build context for: " + scriptPath, e);
}
}