...
During configure time in the configurePipeline method, if a field is macro enabled, the property should not be validated as the macro has not been provided a substitutable value.
Good Place to put isResolved method
We don't want to force deferring macros to runtime in the case that a field is macroable but has no macro substituted.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.
The methods to check property safety is also helpful in allowing plugin developers to determine whether or not a dataset should be created at runtime (whether it was already created at configure time or not).
During runtime, PipelineInsantiator would get config fields and values to substitute and can use that information to substitute macro appropriately and return an instantiated plugin.
...