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, waitcreateServiceFactory, createServiceFactory, createServiceFactory, getNamepublic 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)
ProjectionTransformerTransformContext.transform in interface ProjectionTransformercontext - Transformation context.public java.util.List<java.lang.String> getAdditionalProjections(TransformContext context)
ProjectionTransformergetAdditionalProjections in interface ProjectionTransformercontext - 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()