Package de.gmorling.scriptabledataset
Class ScriptableDataSet
java.lang.Object
org.dbunit.dataset.AbstractDataSet
de.gmorling.scriptabledataset.ScriptableDataSet
- All Implemented Interfaces:
org.dbunit.dataset.IDataSet
public class ScriptableDataSet
extends org.dbunit.dataset.AbstractDataSet
An implementation of a DBUnit IDataSet, that allows the use of
script expressions in its fields. In order to use a certain scripting language in a scriptable data set, a
JSR 223 ("Scripting for the JavaTM Platform")
compatible script engine has to exist for that language.
Using the JRuby engine e.g., a scriptable data set file could look like this:
<dataset>
<location num="jruby:12/2" addr="jruby:'Webster Street'.reverse" date="jruby:DateTime::now() - 14"/>
</dataset>
A ScriptableDataSet can be created as follows:
IDataSet wrapped = ...;
List<ScriptInvocationHandler> handlers = new ArrayList<Class<? extends ScriptInvocationHandler>>();
handlers.add(new JRubyImportAddingInvocationHandler());
IDataSet scriptableDS = new ScriptableDataSet(
wrapped, new ScriptableDataSetConfig("jruby", "jruby:", handlers));
where
- jruby is the name of a scripting language as understood by
ScriptEngineManager - jruby: is a prefix, that shall precede fields in that scripting language
- handlers is an optional list of
ScriptInvocationHandlers, that can be used to pre-process scripts (e.g. to add common imports) and post-process scripts (e.g. to convert results into data types understood by DBUnit).
- Author:
- Gunnar Morling
-
Field Summary
Fields inherited from class org.dbunit.dataset.AbstractDataSet
_orderedTableNameMap -
Constructor Summary
ConstructorsConstructorDescriptionScriptableDataSet(org.dbunit.dataset.IDataSet wrapped, ScriptableDataSetConfig... configurations) Creates a new ScriptableDataSet. -
Method Summary
Modifier and TypeMethodDescriptionprotected org.dbunit.dataset.ITableIteratorcreateIterator(boolean reversed) Methods inherited from class org.dbunit.dataset.AbstractDataSet
createTableNameMap, getTable, getTableMetaData, getTableNames, getTables, initialize, isCaseSensitiveTableNames, iterator, reverseIterator
-
Constructor Details
-
ScriptableDataSet
public ScriptableDataSet(org.dbunit.dataset.IDataSet wrapped, ScriptableDataSetConfig... configurations) Creates a new ScriptableDataSet.- Parameters:
wrapped- Another data set to be wrapped by this scriptable data set. Must not be null.configurations- At least one scriptable data set configuration.
-
-
Method Details
-
createIterator
protected org.dbunit.dataset.ITableIterator createIterator(boolean reversed) throws org.dbunit.dataset.DataSetException - Specified by:
createIteratorin classorg.dbunit.dataset.AbstractDataSet- Throws:
org.dbunit.dataset.DataSetException
-