/** * Returns a fully constructed {@link ScriptItemProcessor}. * * @return a new {@link ScriptItemProcessor} */ public ScriptItemProcessor<I, O> build() { if (this.scriptResource == null && !StringUtils.hasText(this.scriptSource)) { throw new IllegalArgumentException("scriptResource or scriptSource is required."); } if (StringUtils.hasText(this.scriptSource)) { Assert.hasText(this.language, "language is required when using scriptSource."); } ScriptItemProcessor<I, O> processor = new ScriptItemProcessor<>(); if (StringUtils.hasText(this.itemBindingVariableName)) { processor.setItemBindingVariableName(this.itemBindingVariableName); } if (this.scriptResource != null) { processor.setScript(this.scriptResource); } if (this.scriptSource != null) { processor.setScriptSource(this.scriptSource, this.language); } return processor; } }
@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(expected = IllegalStateException.class) public void testScriptSourceAndScriptResourceSet() throws Exception { ScriptItemProcessor<String, Object> scriptItemProcessor = new ScriptItemProcessor<>(); scriptItemProcessor.setScriptSource("blah", "blah"); scriptItemProcessor.setScript(new ClassPathResource("blah")); scriptItemProcessor.afterPropertiesSet(); }
/** * Returns a fully constructed {@link ScriptItemProcessor}. * * @return a new {@link ScriptItemProcessor} */ public ScriptItemProcessor<I, O> build() { if (this.scriptResource == null && !StringUtils.hasText(this.scriptSource)) { throw new IllegalArgumentException("scriptResource or scriptSource is required."); } if (StringUtils.hasText(this.scriptSource)) { Assert.hasText(this.language, "language is required when using scriptSource."); } ScriptItemProcessor<I, O> processor = new ScriptItemProcessor<>(); if (StringUtils.hasText(this.itemBindingVariableName)) { processor.setItemBindingVariableName(this.itemBindingVariableName); } if (this.scriptResource != null) { processor.setScript(this.scriptResource); } if (this.scriptSource != null) { processor.setScriptSource(this.scriptSource, this.language); } return processor; } }