T
- The configuration setting type (e.g., a POJO).public abstract class ConfigurableProjectionTransformer<T> extends java.lang.Object implements ProjectionTransformer
T
.
This class will automatically deserialize the given Node
value in the T
and invoke transformWithConfig(TransformContext, Object)
with the deserialized configuration of type T
.
If your build transformer requires configuration, then you typically should just extend this class.
Note: if you overridegetAdditionalProjectionsFunction()
and
do not override transform(TransformContext)
, the configuration for
your transformer will be deserialized twice during execution.Constructor and Description |
---|
ConfigurableProjectionTransformer() |
Modifier and Type | Method and Description |
---|---|
java.util.List<java.lang.String> |
getAdditionalProjections(TransformContext context)
Allows the composition of projections by returning additional
projections to run after the current one.
|
protected java.util.Optional<java.util.function.BiFunction<TransformContext,T,java.util.List<java.lang.String>>> |
getAdditionalProjectionsFunction() |
abstract java.lang.Class<T> |
getConfigType()
Gets the configuration class type.
|
Model |
transform(TransformContext context)
Transforms the given model using the provided
TransformContext . |
protected abstract Model |
transformWithConfig(TransformContext context,
T config)
Executes the transform using the deserialized configuration object.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
createServiceFactory, createServiceFactory, createServiceFactory, getName
public abstract java.lang.Class<T> getConfigType()
The referenced configType
class must be a public POJO with a
public, zero-arg constructor, getters, and setters. If the POJO has a
public static fromNode
method, it will be invoked and is
expected to deserialize the Node. If the POJO has a public static
builder
method, it will be invoked, setters will be called
on the builder POJO, and finally the result of calling the
build
method is used as the configuration type. Finally,
the deserializer will attempt to create the type and call setters on
the instantiated object that correspond to property names (either named
"set" + property name, or just property name).
public Model transform(TransformContext context)
ProjectionTransformer
TransformContext
.transform
in interface ProjectionTransformer
context
- Transformation context.public java.util.List<java.lang.String> getAdditionalProjections(TransformContext context)
ProjectionTransformer
getAdditionalProjections
in interface ProjectionTransformer
context
- Transformation context.protected abstract Model transformWithConfig(TransformContext context, T config)
context
- Transform context.config
- Deserialized configuration object.protected java.util.Optional<java.util.function.BiFunction<TransformContext,T,java.util.List<java.lang.String>>> getAdditionalProjectionsFunction()