package com.xti.jenkins.plugin.awslambda.service; import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPathException; import com.xti.jenkins.plugin.awslambda.invoke.JsonParameter; import com.xti.jenkins.plugin.awslambda.util.LogUtils; import org.apache.commons.lang.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; public class JsonPathParser { private List<JsonParameter> jsonParameters; private JenkinsLogger logger; public JsonPathParser(List<JsonParameter> jsonParameters, JenkinsLogger logger) { this.jsonParameters = jsonParameters; this.logger = logger; } public Map<String, String> parse(String payload){ Map<String, String> result = new HashMap<String, String>(); if(StringUtils.isNotEmpty(payload)) { DocumentContext documentContext = JsonPath.parse(payload); for (JsonParameter jsonParameter : jsonParameters) { if (StringUtils.isEmpty(jsonParameter.getJsonPath())) { result.put(jsonParameter.getEnvVarName(), payload); } else { try { result.put(jsonParameter.getEnvVarName(), documentContext.read(jsonParameter.getJsonPath()).toString()); } catch (JsonPathException jpe) { logger.log("Error while parsing path %s for environment variable %s.%nStacktrace:%n%s%n", jsonParameter.getJsonPath(), jsonParameter.getEnvVarName(), LogUtils.getStackTrace(jpe)); } } } } return result; } }