...
To allow macro substitution of non-String properties, any properties configured with a macro will have a placeholder default value at configure time. For primitive types, this would be Java's default value. For objects, this would be null. This is ok because we are exposing a method to check whether a property is safe to validate at configure time through the pipelineConfigurer object.
BatchContext Changes
Given that a dataset could be created at configure time if no fields are provided macros, a check should be available for plugin developers to see whether the dataset already exists at runtime. We can do this by altering the runtime context object passed in to the prepareRun method. As the object extends BatchContext which extends DatasetContext, we can create a new method in BatchContext that checks for the existence of a dataset.
...