/** * 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 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 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")); }
/** * 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; } }