
com.github.chaosfirebolt.converter.api.initialization.BaseInitializationData Maven / Gradle / Ivy
package com.github.chaosfirebolt.converter.api.initialization;
import com.github.chaosfirebolt.converter.api.initialization.source.InputSource;
import com.github.chaosfirebolt.converter.api.initialization.transformation.Transformation;
/**
* Provides the skeleton for {@link InitializationData} implementations.
*
* @param input source type
* @param result type
*/
public non-sealed abstract class BaseInitializationData implements InitializationData {
/**
* The source of data.
*/
private final InputSource inputSource;
/**
* Transforms the input data into the type required for initialization purposes.
*/
private final Transformation transformation;
/**
* The input from {@link #inputSource}.
*/
private I input;
/**
* The result after applying the {@link #transformation}.
*/
private O output;
/**
* Constructs a new instance with provided {@link InputSource} and {@link Transformation}.
*
* @param inputSource a data source
* @param transformation transformation from input to type required for initialization
*/
protected BaseInitializationData(InputSource inputSource, Transformation transformation) {
this.inputSource = inputSource;
this.transformation = transformation;
}
@Override
public final O getData() {
this.input = this.inputSource.getInputData();
this.output = this.transformation.transform(this.input);
return this.output;
}
@Override
public final void cleanup() {
this.doCleanup(this.input, this.output);
}
/**
* Does the actual cleanup, if necessary.
*
* @param input the input to be cleaned up
* @param output the result to be cleaned up
*/
protected abstract void doCleanup(I input, O output);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy