nz.ac.auckland.morc.resource.GroovyTemplateTestResource Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of morc Show documentation
Show all versions of morc Show documentation
Orchestrated Testing of SOA Artifacts Using Apache Camel
package nz.ac.auckland.morc.resource;
import groovy.text.GStringTemplateEngine;
import groovy.text.Template;
import groovy.text.TemplateEngine;
import org.apache.camel.Exchange;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
/**
* A test resource that has delayed evaluation of a groovy script with appropriate variables
*
* @author David MacDonald - [email protected]
*/
public class GroovyTemplateTestResource implements Predicate, Processor, TestResource {
private static final Logger logger = LoggerFactory.getLogger(GroovyTemplateTestResource.class);
private TemplateEngine templateEngine;
private Map variables;
private TestResource template;
public GroovyTemplateTestResource(TemplateEngine templateEngine, TestResource template, Map variables) {
this.templateEngine = templateEngine;
this.variables = variables;
this.template = template;
}
public GroovyTemplateTestResource(TestResource template, Map variables) {
this(new GStringTemplateEngine(), template, variables);
}
@Override
public boolean matches(Exchange exchange) {
PlainTextTestResource textResource;
try {
textResource = new PlainTextTestResource(getValue());
} catch (Exception e) {
throw new RuntimeException(e);
}
return textResource.matches(exchange);
}
public String getValue() throws Exception {
Template groovyTemplate = templateEngine.createTemplate(template.getValue());
return groovyTemplate.make(variables).toString();
}
@Override
public String toString() {
try {
String value = "GroovyTemplateTestResource:" + template.getValue();
if (value.length() < 100) return value;
else return value.substring(0, 97) + "...";
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void process(Exchange exchange) throws Exception {
new PlainTextTestResource(getValue()).process(exchange);
}
}