com.restbusters.rest.payload.PayloadManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of qreasp Show documentation
Show all versions of qreasp Show documentation
Automation and Release API and intergration support; supports REST APIs and external systems.
package com.restbusters.rest.payload;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.Filter;
import com.jayway.jsonpath.JsonPath;
import com.restbusters.resource.GlobalResourceManager;
import com.restbusters.rest.payload.model.PayloadTemplate;
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;
import org.jtwig.environment.EnvironmentConfiguration;
import org.jtwig.environment.EnvironmentConfigurationBuilder;
import org.jtwig.json.JsonExtension;
import org.jtwig.json.configuration.JsonMapperProviderConfigurationBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author Sasha Matsaylo on 10/15/18
* @project qreasp
*/
public class PayloadManager {
private static PayloadManager instance;
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private EnvironmentConfiguration configuration;
private String payloadsAsJson;
private List payloadTemplates;
private ObjectMapper objectMapper = GlobalResourceManager.getInstance().getObjectMapper();
private Map defaultMap;
private PayloadManager(String jsonPayloads) {
configuration = EnvironmentConfigurationBuilder
.configuration()
.extensions()
.add(new JsonExtension(JsonMapperProviderConfigurationBuilder
.jsonConfiguration()
.build())
)
.and()
.build();
initPayloads(jsonPayloads);
}
private void initPayloads(String jsonPayloads) {
try {
this.payloadsAsJson = jsonPayloads;
this.payloadTemplates = objectMapper.readValue(this.payloadsAsJson, new TypeReference>() {
});
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
public static synchronized PayloadManager getInstance(String jsonPayloads) throws IOException {
if (instance == null) {
instance = new PayloadManager(jsonPayloads);
}
return instance;
}
public String renderPayload(String payLoadTemplate, Map... templateReplacementMap) {
Map userSubstitutionPayloadParamsMap = null;
if (templateReplacementMap.length == 1) {
userSubstitutionPayloadParamsMap = templateReplacementMap[0];
} else {
setDefaultPayloadMap();
userSubstitutionPayloadParamsMap = this.defaultMap;
}
JtwigTemplate template = JtwigTemplate.inlineTemplate(payLoadTemplate, configuration);
JtwigModel model = JtwigModel.newModel(userSubstitutionPayloadParamsMap);
return template.render(model);
}
private void setDefaultPayloadMap() {
if (this.defaultMap == null) {
this.defaultMap = new HashMap<>();
}
}
public String renderPayload(Object model) {
JtwigTemplate jtwigTemplate = JtwigTemplate.inlineTemplate("{{ json_encode(variable) }}", configuration);
JtwigModel jtwigModel= JtwigModel.newModel().with("variable", model);
return jtwigTemplate.render(jtwigModel);
}
public Map getPayloadMetaData(Map filterMap) {
Map result = findPayloadMetaData(filterMap);
if (result != null) {
return result;
}
return null;
}
public String getPayloadMetaDataAsString(Map filterMap) {
Map result = findPayloadMetaData(filterMap);
if (result != null) {
try {
return objectMapper.writeValueAsString(result);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
return null;
}
private Map findPayloadMetaData(Map filterMap){
Filter filter = buildFilter(filterMap);
List