diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractScriptExecutingMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/scripting/AbstractScriptExecutingMessageProcessor.java similarity index 60% rename from spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractScriptExecutingMessageProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/scripting/AbstractScriptExecutingMessageProcessor.java index 4319d9d6c1..110081869a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractScriptExecutingMessageProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scripting/AbstractScriptExecutingMessageProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at @@ -11,10 +11,13 @@ * specific language governing permissions and limitations under the License. */ -package org.springframework.integration.handler; +package org.springframework.integration.scripting; + +import java.util.Map; import org.springframework.integration.Message; import org.springframework.integration.MessageHandlingException; +import org.springframework.integration.handler.MessageProcessor; import org.springframework.scripting.ScriptSource; /** @@ -25,12 +28,27 @@ import org.springframework.scripting.ScriptSource; */ public abstract class AbstractScriptExecutingMessageProcessor implements MessageProcessor { + private final ScriptVariableGenerator scriptVariableGenerator; + + + protected AbstractScriptExecutingMessageProcessor() { + this.scriptVariableGenerator = new DefaultScriptVariableGenerator(); + } + + protected AbstractScriptExecutingMessageProcessor(ScriptVariableGenerator scriptVariableGenerator) { + this.scriptVariableGenerator = (scriptVariableGenerator != null) ? scriptVariableGenerator + : new DefaultScriptVariableGenerator(); + } + + /** * Executes the script and returns the result. */ public final T processMessage(Message message) { try { - return this.executeScript(getScriptSource(message), message); + ScriptSource source = this.getScriptSource(message); + Map variables = this.scriptVariableGenerator.generateScriptVariables(message); + return this.executeScript(source, variables); } catch (Exception e) { throw new MessageHandlingException(message, "failed to execute script", e); @@ -39,8 +57,8 @@ public abstract class AbstractScriptExecutingMessageProcessor implements Mess /** - * Subclasses must implement this method to create a script source, optionally using the message to locate or - * create the script. + * Subclasses must implement this method to create a script source, + * optionally using the message to locate or create the script. * * @param message the message being processed * @return a ScriptSource to use to create a script @@ -48,9 +66,9 @@ public abstract class AbstractScriptExecutingMessageProcessor implements Mess protected abstract ScriptSource getScriptSource(Message message); /** - * Subclasses must implement this method. In doing so, the execution context for the script should be populated with - * the Message's 'payload' and 'headers' as variables. + * Subclasses must implement this method. In doing so, the execution context + * for the script should be populated with the provided script variables. */ - protected abstract T executeScript(ScriptSource scriptSource, Message message) throws Exception; + protected abstract T executeScript(ScriptSource scriptSource, Map variables) throws Exception; } diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/DefaultScriptVariableGenerator.java b/spring-integration-core/src/main/java/org/springframework/integration/scripting/DefaultScriptVariableGenerator.java similarity index 85% rename from spring-integration-groovy/src/main/java/org/springframework/integration/groovy/DefaultScriptVariableGenerator.java rename to spring-integration-core/src/main/java/org/springframework/integration/scripting/DefaultScriptVariableGenerator.java index 5f73764419..744cefdec4 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/DefaultScriptVariableGenerator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scripting/DefaultScriptVariableGenerator.java @@ -14,8 +14,9 @@ * limitations under the License. */ -package org.springframework.integration.groovy; +package org.springframework.integration.scripting; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -27,13 +28,13 @@ import org.springframework.util.CollectionUtils; * @author Mark Fisher * @since 2.0.2 */ -class DefaultScriptVariableGenerator implements ScriptVariableGenerator { +public class DefaultScriptVariableGenerator implements ScriptVariableGenerator { private final Map variableMap; - public DefaultScriptVariableGenerator(){ - this(null); + public DefaultScriptVariableGenerator() { + this.variableMap = Collections.emptyMap(); } public DefaultScriptVariableGenerator(Map variableMap) { diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/ScriptVariableGenerator.java b/spring-integration-core/src/main/java/org/springframework/integration/scripting/ScriptVariableGenerator.java similarity index 94% rename from spring-integration-groovy/src/main/java/org/springframework/integration/groovy/ScriptVariableGenerator.java rename to spring-integration-core/src/main/java/org/springframework/integration/scripting/ScriptVariableGenerator.java index d56268957e..7cb5b4e113 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/ScriptVariableGenerator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scripting/ScriptVariableGenerator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.groovy; +package org.springframework.integration.scripting; import java.util.Map; diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyCommandMessageProcessor.java b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyCommandMessageProcessor.java index 39faaa5989..5a24725989 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyCommandMessageProcessor.java +++ b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyCommandMessageProcessor.java @@ -15,12 +15,16 @@ package org.springframework.integration.groovy; import groovy.lang.GString; +import java.util.Map; + import org.springframework.integration.Message; -import org.springframework.integration.handler.AbstractScriptExecutingMessageProcessor; +import org.springframework.integration.scripting.AbstractScriptExecutingMessageProcessor; +import org.springframework.integration.scripting.ScriptVariableGenerator; import org.springframework.scripting.ScriptSource; import org.springframework.scripting.groovy.GroovyScriptFactory; import org.springframework.scripting.support.StaticScriptSource; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; /** * @author Dave Syer @@ -30,11 +34,18 @@ import org.springframework.util.Assert; */ public class GroovyCommandMessageProcessor extends AbstractScriptExecutingMessageProcessor { - private final ScriptVariableGenerator scriptVariableGenerator; - + /** + * Creates a GroovyCommandMessageProcessor that will use the DefaultScriptVariableGenerator. + */ + public GroovyCommandMessageProcessor() { + super(); + } + /** + * Creates a GroovyCommandMessageProcessor that will use the provided ScriptVariableGenerator. + */ public GroovyCommandMessageProcessor(ScriptVariableGenerator scriptVariableGenerator) { - this.scriptVariableGenerator = scriptVariableGenerator; + super(scriptVariableGenerator); } @@ -47,12 +58,12 @@ public class GroovyCommandMessageProcessor extends AbstractScriptExecutingMessag } @Override - protected Object executeScript(ScriptSource scriptSource, Message message) throws Exception { + protected Object executeScript(ScriptSource scriptSource, Map variables) throws Exception { Assert.notNull(scriptSource, "scriptSource must not be null"); VariableBindingGroovyObjectCustomizer customizer = new VariableBindingGroovyObjectCustomizer(); GroovyScriptFactory factory = new GroovyScriptFactory(this.getClass().getSimpleName(), customizer); - if (this.scriptVariableGenerator != null) { - customizer.setVariables(this.scriptVariableGenerator.generateScriptVariables(message)); + if (!CollectionUtils.isEmpty(variables)) { + customizer.setVariables(variables); } Object result = factory.getScriptedObject(scriptSource, null); return (result instanceof GString) ? result.toString() : result; diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java index e1c53fcf9a..539c5643ea 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java +++ b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java @@ -21,7 +21,8 @@ import groovy.lang.GString; import java.util.Map; import org.springframework.integration.Message; -import org.springframework.integration.handler.AbstractScriptExecutingMessageProcessor; +import org.springframework.integration.scripting.AbstractScriptExecutingMessageProcessor; +import org.springframework.integration.scripting.ScriptVariableGenerator; import org.springframework.scripting.ScriptSource; import org.springframework.scripting.groovy.GroovyScriptFactory; import org.springframework.util.Assert; @@ -41,20 +42,17 @@ public class GroovyScriptExecutingMessageProcessor extends AbstractScriptExecuti private volatile ScriptSource scriptSource; - private final ScriptVariableGenerator scriptVariableGenerator; - /** * Create a processor for the given {@link ScriptSource}. */ public GroovyScriptExecutingMessageProcessor(ScriptSource scriptSource) { - this(scriptSource, new DefaultScriptVariableGenerator()); + this(scriptSource, null); } public GroovyScriptExecutingMessageProcessor(ScriptSource scriptSource, ScriptVariableGenerator scriptVariableGenerator) { + super(scriptVariableGenerator); this.scriptSource = scriptSource; - this.scriptVariableGenerator = (scriptVariableGenerator != null) ? scriptVariableGenerator - : new DefaultScriptVariableGenerator(); this.scriptFactory = new GroovyScriptFactory(this.getClass().getSimpleName(), this.customizer); } @@ -65,12 +63,11 @@ public class GroovyScriptExecutingMessageProcessor extends AbstractScriptExecuti } @Override - protected Object executeScript(ScriptSource scriptSource, Message message) throws Exception { + protected Object executeScript(ScriptSource scriptSource, Map variables) throws Exception { Assert.notNull(scriptSource, "scriptSource must not be null"); - Map scriptVariables = this.scriptVariableGenerator.generateScriptVariables(message); synchronized (this) { - if (!CollectionUtils.isEmpty(scriptVariables)) { - this.customizer.setVariables(scriptVariables); + if (!CollectionUtils.isEmpty(variables)) { + this.customizer.setVariables(variables); } Object result = this.scriptFactory.getScriptedObject(scriptSource, null); return (result instanceof GString) ? result.toString() : result; diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java index 819d039cef..08ee2d386e 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java +++ b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyControlBusFactoryBean.java @@ -24,8 +24,8 @@ 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.ScriptVariableGenerator; import org.springframework.integration.handler.ServiceActivatingHandler; +import org.springframework.integration.scripting.ScriptVariableGenerator; import org.springframework.jmx.export.annotation.ManagedResource; import org.springframework.util.CustomizableThreadCreator; @@ -46,8 +46,8 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac @Override protected MessageHandler createHandler() { - ManagedBeansScriptVariableSource scriptVariableSource = new ManagedBeansScriptVariableSource(this.getBeanFactory()); - GroovyCommandMessageProcessor processor = new GroovyCommandMessageProcessor(scriptVariableSource); + ManagedBeansScriptVariableGenerator scriptVariableGenerator = new ManagedBeansScriptVariableGenerator(this.getBeanFactory()); + GroovyCommandMessageProcessor processor = new GroovyCommandMessageProcessor(scriptVariableGenerator); return this.configureHandler(new ServiceActivatingHandler(processor)); } @@ -59,11 +59,11 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac } - private static class ManagedBeansScriptVariableSource implements ScriptVariableGenerator { + private static class ManagedBeansScriptVariableGenerator implements ScriptVariableGenerator { private final ListableBeanFactory beanFactory; - public ManagedBeansScriptVariableSource(BeanFactory beanFactory) { + public ManagedBeansScriptVariableGenerator(BeanFactory beanFactory) { this.beanFactory = (beanFactory instanceof ListableBeanFactory) ? (ListableBeanFactory) beanFactory : null; } @@ -73,10 +73,10 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac if (this.beanFactory != null) { for (String name : this.beanFactory.getBeanDefinitionNames()) { Object bean = this.beanFactory.getBean(name); - if (bean instanceof Lifecycle || - bean instanceof CustomizableThreadCreator || - (AnnotationUtils.findAnnotation(bean.getClass(), ManagedResource.class) != null)) { - variables.put(name, bean); + if (bean instanceof Lifecycle || + bean instanceof CustomizableThreadCreator || + (AnnotationUtils.findAnnotation(bean.getClass(), ManagedResource.class) != null)) { + variables.put(name, bean); } } } diff --git a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyScriptParser.java b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyScriptParser.java index 1447ee5f83..c9d31077dd 100644 --- a/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyScriptParser.java +++ b/spring-integration-groovy/src/main/java/org/springframework/integration/groovy/config/GroovyScriptParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,6 +44,7 @@ public class GroovyScriptParser extends AbstractSingleBeanDefinitionParser { private static final String REFRESH_CHECK_DELAY_ATTRIBUTE = "refresh-check-delay"; + @Override protected String getBeanClassName(Element element) { return "org.springframework.integration.groovy.GroovyScriptExecutingMessageProcessor"; @@ -57,32 +58,30 @@ public class GroovyScriptParser extends AbstractSingleBeanDefinitionParser { parserContext.getReaderContext().error("Either the 'location' attribute or inline script text must be provided, but not both.", element); return; } - + List variableElements = DomUtils.getChildElementsByTagName(element, "variable"); - String scriptVariableSourceName = element.getAttribute("script-variable-generator"); - - 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. " + + String scriptVariableGeneratorName = element.getAttribute("script-variable-generator"); + + if (StringUtils.hasText(scriptText) && (variableElements.size() > 0 || StringUtils.hasText(scriptVariableGeneratorName))) { + parserContext.getReaderContext().error("Variable bindings or custom ScriptVariableGenerator are not allowed when using an inline groovy script. " + "Specify location of the script via 'location' attribute instead", element); return; } - if (StringUtils.hasText(scriptVariableSourceName) && variableElements.size() > 0){ - parserContext.getReaderContext().error("'script-variable-generator' and 'variable' sub-element are mutualy exclusive. Must use one or the other.", element); + if (StringUtils.hasText(scriptVariableGeneratorName) && variableElements.size() > 0){ + parserContext.getReaderContext().error("'script-variable-generator' and 'variable' sub-elements are mutualy exclusive.", element); return; } - if (StringUtils.hasText(scriptLocation)){ + if (StringUtils.hasText(scriptLocation)) { builder.addConstructorArgValue(this.resolveScriptLocation(element, parserContext.getReaderContext(), scriptLocation)); } else { builder.addConstructorArgValue(new StaticScriptSource(scriptText, "groovy.lang.Script")); } - - if (!StringUtils.hasText(scriptVariableSourceName)){ - BeanDefinitionBuilder scriptVariableSourceBuilder = - BeanDefinitionBuilder.genericBeanDefinition("org.springframework.integration.groovy.DefaultScriptVariableGenerator"); - + if (!StringUtils.hasText(scriptVariableGeneratorName)) { + BeanDefinitionBuilder scriptVariableGeneratorBuilder = + BeanDefinitionBuilder.genericBeanDefinition("org.springframework.integration.scripting.DefaultScriptVariableGenerator"); ManagedMap variableMap = new ManagedMap(); for (Element childElement : variableElements) { String variableName = childElement.getAttribute("name"); @@ -93,20 +92,20 @@ public class GroovyScriptParser extends AbstractSingleBeanDefinitionParser { " is required for element " + IntegrationNamespaceUtils.createElementDescription(element) + ".", element); } - if (StringUtils.hasText(variableValue)){ + if (StringUtils.hasText(variableValue)) { variableMap.put(variableName, variableValue); } else { variableMap.put(variableName, new RuntimeBeanReference(variableRef)); } } - if (!CollectionUtils.isEmpty(variableMap)){ - scriptVariableSourceBuilder.addConstructorArgValue(variableMap); + if (!CollectionUtils.isEmpty(variableMap)) { + scriptVariableGeneratorBuilder.addConstructorArgValue(variableMap); } - scriptVariableSourceName = - BeanDefinitionReaderUtils.registerWithGeneratedName(scriptVariableSourceBuilder.getBeanDefinition(), parserContext.getRegistry()); + scriptVariableGeneratorName = BeanDefinitionReaderUtils.registerWithGeneratedName( + scriptVariableGeneratorBuilder.getBeanDefinition(), parserContext.getRegistry()); } - builder.addConstructorArgReference(scriptVariableSourceName); + builder.addConstructorArgReference(scriptVariableGeneratorName); } private Object resolveScriptLocation(Element element, XmlReaderContext readerContext, String scriptLocation) { diff --git a/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessorTests.java b/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessorTests.java index 3af24a373f..069f3e8133 100644 --- a/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessorTests.java +++ b/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,11 +28,11 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.Rule; import org.junit.Test; - import org.springframework.core.io.AbstractResource; import org.springframework.integration.Message; import org.springframework.integration.groovy.config.RefreshableResourceScriptSource; import org.springframework.integration.handler.MessageProcessor; +import org.springframework.integration.scripting.ScriptVariableGenerator; import org.springframework.integration.support.MessageBuilder; import org.springframework.scripting.ScriptSource; import org.springframework.scripting.support.ResourceScriptSource; @@ -59,20 +59,20 @@ public class GroovyScriptExecutingMessageProcessorTests { Message message = MessageBuilder.withPayload("foo").setHeader("testHeader", "bar"+count).build(); TestResource resource = new TestResource(script, "simpleTest"); ScriptSource scriptSource = new ResourceScriptSource(resource); - MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, new DefaultScriptVariableGenerator()); + MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource); Object result = processor.processMessage(message); assertEquals("payload is foo, header is bar"+count, result.toString()); } @Test - public void testSimpleExecutionWithScriptVariableSource() throws Exception { + public void testSimpleExecutionWithScriptVariableGenerator() throws Exception { int count = countHolder.getAndIncrement(); String script = "return \"payload is $payload, header is $headers.testHeader and date is $date\""; Message message = MessageBuilder.withPayload("foo").setHeader("testHeader", "bar"+count).build(); TestResource resource = new TestResource(script, "simpleTest"); ScriptSource scriptSource = new ResourceScriptSource(resource); Object result = null; - class CustomScriptVariableSource implements ScriptVariableGenerator { + class CustomScriptVariableGenerator implements ScriptVariableGenerator { public Map generateScriptVariables(Message message) { Map variables = new HashMap(); variables.put("date", System.nanoTime()); @@ -82,10 +82,10 @@ public class GroovyScriptExecutingMessageProcessorTests { } } for (int i = 0; i < 5; i++) { - ScriptVariableGenerator scriptVariableSource = new CustomScriptVariableSource(); - MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, scriptVariableSource); + ScriptVariableGenerator scriptVariableGenerator = new CustomScriptVariableGenerator(); + MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, scriptVariableGenerator); Object newResult = processor.processMessage(message); - assertFalse(newResult.equals(result)); // make sure that we get different nanotime verifying that resolveScriptVariables() is invoked + assertFalse(newResult.equals(result)); // make sure that we get different nanotime verifying that generateScriptVariables() is invoked result = newResult; } } @@ -106,7 +106,7 @@ public class GroovyScriptExecutingMessageProcessorTests { Message message = MessageBuilder.withPayload("foo").setHeader("testHeader", "bar").build(); TestResource resource = new TestResource(script, "simpleTest"); ScriptSource scriptSource = new ResourceScriptSource(resource); - MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, new DefaultScriptVariableGenerator()); + MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource); Thread.sleep(20L); resource.setScript("return \"payload is $payload\""); Object result = processor.processMessage(message); @@ -119,7 +119,7 @@ public class GroovyScriptExecutingMessageProcessorTests { Message message = MessageBuilder.withPayload("foo").setHeader("testHeader", "bar").build(); TestResource resource = new TestResource(script, "simpleTest"); ScriptSource scriptSource = new RefreshableResourceScriptSource(resource, 1000L); - MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, new DefaultScriptVariableGenerator()); + MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource); // should be the original script Object result = processor.processMessage(message); assertEquals("payload is foo, header is bar", result.toString()); @@ -143,7 +143,7 @@ public class GroovyScriptExecutingMessageProcessorTests { Message message = MessageBuilder.withPayload("foo").setHeader("testHeader", "bar").build(); TestResource resource = new TestResource(script, "simpleTest"); ScriptSource scriptSource = new RefreshableResourceScriptSource(resource, -1L); - MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, new DefaultScriptVariableGenerator()); + MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource); // process with the first script Object result = processor.processMessage(message); assertEquals("payload is foo, header is bar", result.toString()); @@ -160,7 +160,7 @@ public class GroovyScriptExecutingMessageProcessorTests { Message message = MessageBuilder.withPayload("foo").setHeader("testHeader", "bar").build(); TestResource resource = new TestResource(script, "simpleTest"); ScriptSource scriptSource = new RefreshableResourceScriptSource(resource, 0); - MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource, new DefaultScriptVariableGenerator()); + MessageProcessor processor = new GroovyScriptExecutingMessageProcessor(scriptSource); // process with the first script Object result = processor.processMessage(message); assertEquals("payload is foo, header is bar", result.toString()); diff --git a/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptPayloadMessageProcessorTests.java b/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptPayloadMessageProcessorTests.java index 66611f250f..9727913557 100644 --- a/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptPayloadMessageProcessorTests.java +++ b/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/GroovyScriptPayloadMessageProcessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at @@ -20,9 +20,10 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.Rule; import org.junit.Test; - import org.springframework.integration.Message; import org.springframework.integration.handler.MessageProcessor; +import org.springframework.integration.scripting.DefaultScriptVariableGenerator; +import org.springframework.integration.scripting.ScriptVariableGenerator; import org.springframework.integration.support.MessageBuilder; import org.springframework.test.annotation.Repeat; @@ -44,14 +45,14 @@ public class GroovyScriptPayloadMessageProcessorTests { public void testSimpleExecution() throws Exception { int count = countHolder.getAndIncrement(); Message message = MessageBuilder.withPayload("headers.foo" + count).setHeader("foo" + count, "bar").build(); - processor = new GroovyCommandMessageProcessor(new DefaultScriptVariableGenerator()); + processor = new GroovyCommandMessageProcessor(); Object result = processor.processMessage(message); assertEquals("bar", result.toString()); } @Test public void testDoubleExecutionWithNewScript() throws Exception { - processor = new GroovyCommandMessageProcessor(new DefaultScriptVariableGenerator()); + processor = new GroovyCommandMessageProcessor(); Message message = MessageBuilder.withPayload("headers.foo").setHeader("foo", "bar").build(); Object result = processor.processMessage(message); assertEquals("bar", result.toString()); @@ -64,9 +65,9 @@ public class GroovyScriptPayloadMessageProcessorTests { public void testSimpleExecutionWithContext() throws Exception { Message message = MessageBuilder.withPayload("\"spam is $spam foo is $headers.foo\"") .setHeader("foo", "bar").build(); - ScriptVariableGenerator scriptVariableSource = - new DefaultScriptVariableGenerator(Collections.singletonMap("spam",(Object)"bucket")); - MessageProcessor processor = new GroovyCommandMessageProcessor(scriptVariableSource); + ScriptVariableGenerator scriptVariableGenerator = + new DefaultScriptVariableGenerator(Collections.singletonMap("spam",(Object)"bucket")); + MessageProcessor processor = new GroovyCommandMessageProcessor(scriptVariableGenerator); Object result = processor.processMessage(message); assertEquals("spam is bucket foo is bar", result.toString()); } diff --git a/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/config/GroovyServiceActivatorTests.java b/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/config/GroovyServiceActivatorTests.java index 4400df2075..eee9db8aa3 100644 --- a/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/config/GroovyServiceActivatorTests.java +++ b/spring-integration-groovy/src/test/java/org/springframework/integration/groovy/config/GroovyServiceActivatorTests.java @@ -34,7 +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.ScriptVariableGenerator; +import org.springframework.integration.scripting.ScriptVariableGenerator; import org.springframework.integration.support.MessageBuilder; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;