@Test(expected = IllegalStateException.class) public void testNoScriptSetWithoutInitBean() throws Exception { ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.process("blah"); }
@Test public void testScriptResource() throws Exception { Resource resource = new ClassPathResource("org/springframework/batch/item/support/processor-test-simple.js"); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessorBuilder<String, Object>() .scriptResource(resource) .build(); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "BB", scriptItemProcessor.process("bb")); }
@Test public void testJavascriptScriptSimple() throws Exception { assumeTrue(languageExists("javascript")); Resource resource = new ClassPathResource("org/springframework/batch/item/support/processor-test-simple.js"); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScript(resource); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testItemBinding() throws Exception { ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("foo.contains('World');", "javascript"); scriptItemProcessor.setItemBindingVariableName("foo"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", true, scriptItemProcessor.process("Hello World")); }
@Test public void testGroovyScriptSourceSimple() throws Exception { assumeTrue(languageExists("groovy")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("item.toUpperCase();", "groovy"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testJavascriptScriptSourceSimple() throws Exception { assumeTrue(languageExists("javascript")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("item.toUpperCase();", "javascript"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testScriptSource() throws Exception { ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessorBuilder<String, Object>() .scriptSource("item.toUpperCase();") .language("javascript") .build(); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "AA", scriptItemProcessor.process("aa")); }
@Test public void testJavascriptScriptSourceFunction() throws Exception { assumeTrue(languageExists("javascript")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("function process(item) { return item.toUpperCase(); } process(item);", "javascript"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testJRubyScriptSourceSimple() throws Exception { assumeTrue(languageExists("jruby")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("$item.upcase", "jruby"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testJRubyScriptSourceMethod() throws Exception { assumeTrue(languageExists("jruby")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("def process(item) $item.upcase end \n process($item)", "jruby"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testBeanShellScriptSourceSimple() throws Exception { assumeTrue(languageExists("bsh")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("item.toUpperCase();", "bsh"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testBeanShellScriptSourceFunction() throws Exception { assumeTrue(languageExists("bsh")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("String process(String item) { return item.toUpperCase(); } process(item);", "bsh"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testGroovyScriptSourceMethod() throws Exception { assumeTrue(languageExists("groovy")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("def process(item) { return item.toUpperCase() } \n process(item)", "groovy"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }
@Test public void testItemBinding() throws Exception { ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessorBuilder<String, Object>() .scriptSource("foo.contains('World');") .language("javascript") .itemBindingVariableName("foo") .build(); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", true, scriptItemProcessor.process("Hello World")); }
@Test public void testItemBindingNameChange() throws Exception { assumeTrue(languageExists("javascript")); ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setItemBindingVariableName("someOtherVarName"); scriptItemProcessor.setScriptSource("function process(param) { return param.toUpperCase(); } process(someOtherVarName);", "javascript"); scriptItemProcessor.afterPropertiesSet(); assertEquals("Incorrect transformed value", "SS", scriptItemProcessor.process("ss")); }