INT-1727 renamed ScriptedVariableSource to ScriptVariableGenerator

This commit is contained in:
Oleg Zhurakousky
2011-01-31 13:43:25 -05:00
parent c3b99e4bcf
commit da227f07a9
9 changed files with 23 additions and 25 deletions

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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){

View File

@@ -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;

View File

@@ -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

View File

@@ -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);

View File

@@ -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");