INT-1727 renamed ScriptedVariableSource to ScriptVariableGenerator
This commit is contained in:
@@ -29,7 +29,7 @@ import org.springframework.util.CollectionUtils;
|
||||
* @author Oleg Zhurakousky
|
||||
* @since 2.0.2
|
||||
*/
|
||||
public class DefaultScriptVariableSource implements BeanFactoryAware, ScriptVariableSource {
|
||||
class DefaultScriptVariableSource implements BeanFactoryAware, ScriptVariablesGenerator {
|
||||
|
||||
protected volatile ListableBeanFactory beanFactory;
|
||||
|
||||
@@ -47,7 +47,7 @@ public class DefaultScriptVariableSource implements BeanFactoryAware, ScriptVari
|
||||
this.beanFactory = (beanFactory instanceof ListableBeanFactory) ? (ListableBeanFactory) beanFactory : null;
|
||||
}
|
||||
|
||||
public Map<String, Object> resolveScriptVariables(Message<?> message){
|
||||
public Map<String, Object> generateScriptVariables(Message<?> message){
|
||||
Map<String, Object> scriptVariables = new HashMap<String, Object>();
|
||||
// Ad Message attributes
|
||||
if (message != null) {
|
||||
|
||||
@@ -30,9 +30,9 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public class GroovyCommandMessageProcessor extends AbstractScriptExecutingMessageProcessor<Object> {
|
||||
|
||||
private final ScriptVariableSource scriptVariableSource;
|
||||
private final ScriptVariablesGenerator scriptVariableSource;
|
||||
|
||||
public GroovyCommandMessageProcessor(ScriptVariableSource scriptVariableSource) {
|
||||
public GroovyCommandMessageProcessor(ScriptVariablesGenerator scriptVariableSource) {
|
||||
this.scriptVariableSource = scriptVariableSource;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class GroovyCommandMessageProcessor extends AbstractScriptExecutingMessag
|
||||
MapResolvingBindingCustomizer bindingCustomizer = new MapResolvingBindingCustomizer();
|
||||
GroovyScriptFactory factory = new GroovyScriptFactory(this.getClass().getSimpleName(), bindingCustomizer);
|
||||
if (this.scriptVariableSource != null){
|
||||
bindingCustomizer.setResolvedScriptVariables(this.scriptVariableSource.resolveScriptVariables(message));
|
||||
bindingCustomizer.setResolvedScriptVariables(this.scriptVariableSource.generateScriptVariables(message));
|
||||
}
|
||||
Object result = factory.getScriptedObject(scriptSource, null);
|
||||
return (result instanceof GString) ? result.toString() : result;
|
||||
|
||||
@@ -38,7 +38,7 @@ public class GroovyScriptExecutingMessageProcessor extends AbstractScriptExecuti
|
||||
|
||||
private volatile ScriptSource scriptSource;
|
||||
|
||||
protected final ScriptVariableSource scriptVariableSource;
|
||||
protected final ScriptVariablesGenerator scriptVariableSource;
|
||||
|
||||
/**
|
||||
* Create a processor for the given {@link ScriptSource}.
|
||||
@@ -47,7 +47,7 @@ public class GroovyScriptExecutingMessageProcessor extends AbstractScriptExecuti
|
||||
this(scriptSource, new DefaultScriptVariableSource());
|
||||
}
|
||||
|
||||
public GroovyScriptExecutingMessageProcessor(ScriptSource scriptSource, ScriptVariableSource scriptVariableSource) {
|
||||
public GroovyScriptExecutingMessageProcessor(ScriptSource scriptSource, ScriptVariablesGenerator scriptVariableSource) {
|
||||
this.scriptSource = scriptSource;
|
||||
this.scriptVariableSource = scriptVariableSource;
|
||||
this.scriptFactory = new GroovyScriptFactory(this.getClass().getSimpleName(), this.customizer);
|
||||
@@ -63,7 +63,7 @@ public class GroovyScriptExecutingMessageProcessor extends AbstractScriptExecuti
|
||||
Assert.notNull(scriptSource, "scriptSource must not be null");
|
||||
synchronized (this) {
|
||||
if (this.scriptVariableSource != null){
|
||||
this.customizer.setResolvedScriptVariables(this.scriptVariableSource.resolveScriptVariables(message));
|
||||
this.customizer.setResolvedScriptVariables(this.scriptVariableSource.generateScriptVariables(message));
|
||||
}
|
||||
Object result = this.scriptFactory.getScriptedObject(scriptSource, null);
|
||||
return (result instanceof GString) ? result.toString() : result;
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.integration.Message;
|
||||
* @author Oleg Zhurakousky
|
||||
*
|
||||
*/
|
||||
public interface ScriptVariableSource {
|
||||
public interface ScriptVariablesGenerator {
|
||||
|
||||
Map<String, Object> resolveScriptVariables(Message<?> message);
|
||||
Map<String, Object> generateScriptVariables(Message<?> message);
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import org.springframework.integration.Message;
|
||||
import org.springframework.integration.config.AbstractSimpleMessageHandlerFactoryBean;
|
||||
import org.springframework.integration.core.MessageHandler;
|
||||
import org.springframework.integration.groovy.GroovyCommandMessageProcessor;
|
||||
import org.springframework.integration.groovy.ScriptVariableSource;
|
||||
import org.springframework.integration.groovy.ScriptVariablesGenerator;
|
||||
import org.springframework.integration.handler.ServiceActivatingHandler;
|
||||
import org.springframework.jmx.export.annotation.ManagedResource;
|
||||
import org.springframework.util.CustomizableThreadCreator;
|
||||
@@ -58,14 +58,14 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac
|
||||
return handler;
|
||||
}
|
||||
|
||||
private class ManagedBeansScriptVariableSource implements ScriptVariableSource {
|
||||
private class ManagedBeansScriptVariableSource implements ScriptVariablesGenerator {
|
||||
private final ListableBeanFactory beanFactory;
|
||||
|
||||
public ManagedBeansScriptVariableSource(BeanFactory beanFactory){
|
||||
this.beanFactory = (beanFactory instanceof ListableBeanFactory) ? (ListableBeanFactory) beanFactory : null;
|
||||
}
|
||||
|
||||
public Map<String, Object> resolveScriptVariables(Message<?> message) {
|
||||
public Map<String, Object> generateScriptVariables(Message<?> message) {
|
||||
Map<String, Object> variables = new HashMap<String, Object>();
|
||||
variables.put("headers", message.getHeaders());
|
||||
if (this.beanFactory != null){
|
||||
|
||||
@@ -59,15 +59,14 @@ public class GroovyScriptParser extends AbstractSingleBeanDefinitionParser {
|
||||
}
|
||||
|
||||
List<Element> variableElements = DomUtils.getChildElementsByTagName(element, "variable");
|
||||
String scriptVariableSourceName = element.getAttribute("script-variable-source");
|
||||
|
||||
if (StringUtils.hasText(scriptText) && variableElements.size() > 0){
|
||||
parserContext.getReaderContext().error("Variable bindings are not allowed when using inline groovy script. " +
|
||||
if (StringUtils.hasText(scriptText) && (variableElements.size() > 0 || StringUtils.hasText(scriptVariableSourceName))){
|
||||
parserContext.getReaderContext().error("Variable bindings or custom ScriptVariabelSource are not allowed when using inline groovy script. " +
|
||||
"Specify location of the script via 'location' attribute instead", element);
|
||||
return;
|
||||
}
|
||||
|
||||
String scriptVariableSourceName = element.getAttribute("script-variable-source");
|
||||
|
||||
if (StringUtils.hasText(scriptVariableSourceName) && variableElements.size() > 0){
|
||||
parserContext.getReaderContext().error("'script-variable-source' and 'variable' sub-element are mutualy exclusive. Must use one or the other.", element);
|
||||
return;
|
||||
|
||||
@@ -72,8 +72,8 @@ public class GroovyScriptExecutingMessageProcessorTests {
|
||||
TestResource resource = new TestResource(script, "simpleTest");
|
||||
ScriptSource scriptSource = new ResourceScriptSource(resource);
|
||||
Object result = null;
|
||||
class CustomScriptVariableSource implements ScriptVariableSource {
|
||||
public Map<String, Object> resolveScriptVariables(Message<?> message) {
|
||||
class CustomScriptVariableSource implements ScriptVariablesGenerator {
|
||||
public Map<String, Object> generateScriptVariables(Message<?> message) {
|
||||
Map<String, Object> variables = new HashMap<String, Object>();
|
||||
variables.put("date", System.nanoTime());
|
||||
variables.put("payload", message.getPayload());
|
||||
@@ -82,7 +82,7 @@ public class GroovyScriptExecutingMessageProcessorTests {
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 5; i++) {
|
||||
ScriptVariableSource scriptVariableSource = new CustomScriptVariableSource();
|
||||
ScriptVariablesGenerator scriptVariableSource = new CustomScriptVariableSource();
|
||||
MessageProcessor<Object> processor = new GroovyScriptExecutingMessageProcessor(scriptSource, scriptVariableSource);
|
||||
Object newResult = processor.processMessage(message);
|
||||
assertFalse(newResult.equals(result)); // make sure that we get different nanotime verifying that resolveScriptVariables() is invoked
|
||||
|
||||
@@ -64,7 +64,7 @@ public class GroovyScriptPayloadMessageProcessorTests {
|
||||
public void testSimpleExecutionWithContext() throws Exception {
|
||||
Message<?> message = MessageBuilder.withPayload("\"spam is $spam foo is $headers.foo\"")
|
||||
.setHeader("foo", "bar").build();
|
||||
ScriptVariableSource scriptVariableSource =
|
||||
ScriptVariablesGenerator scriptVariableSource =
|
||||
new DefaultScriptVariableSource(Collections.singletonMap("spam",(Object)"bucket"));
|
||||
MessageProcessor<Object> processor = new GroovyCommandMessageProcessor(scriptVariableSource);
|
||||
Object result = processor.processMessage(message);
|
||||
|
||||
@@ -34,8 +34,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.MessageChannel;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.integration.groovy.DefaultScriptVariableSource;
|
||||
import org.springframework.integration.groovy.ScriptVariableSource;
|
||||
import org.springframework.integration.groovy.ScriptVariablesGenerator;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@@ -129,8 +128,8 @@ public class GroovyServiceActivatorTests {
|
||||
new ClassPathXmlApplicationContext("GroovyServiceActivatorTests-fail-withsource-context.xml", this.getClass());
|
||||
}
|
||||
|
||||
public static class SampleScriptVariSource implements ScriptVariableSource{
|
||||
public Map<String, Object> resolveScriptVariables(Message<?> message) {
|
||||
public static class SampleScriptVariSource implements ScriptVariablesGenerator{
|
||||
public Map<String, Object> generateScriptVariables(Message<?> message) {
|
||||
Map<String, Object> variables = new HashMap<String, Object>();
|
||||
variables.put("foo", "foo");
|
||||
variables.put("bar", "bar");
|
||||
|
||||
Reference in New Issue
Block a user