databuilderframework icon indicating copy to clipboard operation
databuilderframework copied to clipboard

DataFlowExecutor's databuilderFactory is not used

Open onkarshedge opened this issue 3 years ago • 0 comments

I am creating a SimpleDataFlowExecutor with a custom DataBuilderFactory. DataFlowExecutor executor = new SimpleDataFlowExecutor(myDataBuilderFactory); However, when I run a dataflow with this executor the factory set in the constructor of DataFlowExecutor is not used. The databuilderFactory of dataFlow takes precedence over the executor's builderFactory. https://github.com/flipkart-incubator/databuilderframework/blob/master/src/main/java/com/flipkart/databuilderframework/engine/DataFlowExecutor.java#L57

    public DataExecutionResponse run(DataFlow dataFlow, DataDelta dataDelta) throws DataBuilderFrameworkException, DataValidationException {
        Preconditions.checkNotNull(dataFlow);
        Preconditions.checkArgument(null != dataFlow.getDataBuilderFactory() || null != this.dataBuilderFactory);
        return this.run(new DataBuilderContext(), new DataFlowInstance(), dataDelta, dataFlow, dataFlow.getDataBuilderFactory());
    }

Suggestion: If dataflow's builderFactory is null, exectuor's factory can be used. So whenever i have to run the dataflow, i have to explicitly set the databuilderFactory and then call run.

            dataFlow.setDataBuilderFactory(myDatabuilderFactory);
            result = executor.run(dataFlow, data);

Also the default factory set in DataFlowBuilder is MixedDataBuilderFactory. So can't really use this DataFlowBuilder to create a DataFlow.

onkarshedge avatar May 04 '21 19:05 onkarshedge