Class WebPayloadParameterResolver
java.lang.Object
io.fluxzero.sdk.web.WebPayloadParameterResolver
- All Implemented Interfaces:
ParameterResolver<HasMessage>, PreparedParameterResolver<HasMessage>
public class WebPayloadParameterResolver
extends Object
implements PreparedParameterResolver<HasMessage>
Resolves a method parameter from the payload of a
WebRequest.
This resolver is only applied to methods annotated with HandleWeb or any of its meta-annotations (e.g.
HandlePost). It converts the deserialized payload to the method parameter's declared type.
For raw request bodies such as multipart/form-data, this resolver can still provide the full body as
byte[] or String. Individual multipart fields and files are resolved via FormParam.
Optionally, the resolver can enforce validation and authorization:
- If
validatePayloadistrue, the resolved payload is validated usingassertValid(). - If
authoriseUseristrue, the currentUsermust be authorized to execute the payload’s type viaassertAuthorized().
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanmatches(Parameter parameter, Annotation methodAnnotation, HasMessage value) Determines whether this resolver should be used for the given method parameter.booleanmayApply(Executable method, Class<?> targetClass) Returnstrueif this resolver might apply to the given method.resolve(Parameter p, Annotation methodAnnotation) Resolves the value for the given method parameter by converting the message payload to the expected parameter type.resolveIfPossible(Parameter parameter, Annotation methodAnnotation, HasMessage message) Returns a prepared resolver for the given message, ornullwhen this resolver cannot handle the parameter.booleantest(HasMessage m, Parameter p) Determines whether a given message should be passed to a handler method based on this parameter's characteristics.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ParameterResolver
determinesSpecificity, mayApply, prepare, specificityPriority
-
Constructor Details
-
WebPayloadParameterResolver
public WebPayloadParameterResolver()
-
-
Method Details
-
resolve
Resolves the value for the given method parameter by converting the message payload to the expected parameter type. If configured, it also validates and authorizes the payload.- Specified by:
resolvein interfaceParameterResolver<HasMessage>- Parameters:
p- the method parameter to resolvemethodAnnotation- the annotation on the handler method (typically@HandleWeb)- Returns:
- a function that resolves the parameter from a
HasMessageinstance
-
resolveIfPossible
public Function<HasMessage, Object> resolveIfPossible(Parameter parameter, Annotation methodAnnotation, HasMessage message) Description copied from interface:PreparedParameterResolverReturns a prepared resolver for the given message, ornullwhen this resolver cannot handle the parameter.- Specified by:
resolveIfPossiblein interfacePreparedParameterResolver<HasMessage>
-
test
Description copied from interface:ParameterResolverDetermines whether a given message should be passed to a handler method based on this parameter's characteristics.This hook is used after
ParameterResolver.matches(Parameter, Annotation, M)is invoked but beforeParameterResolver.resolve(Parameter, Annotation)and can thus be used to prevent other parameter resolvers from supplying a candidate for parameter injection.- Specified by:
testin interfaceParameterResolver<HasMessage>- Parameters:
m- the message being evaluatedp- the method parameter to test- Returns:
trueif the message should be processed,falseif it should be filtered out
-
matches
Determines whether this resolver should be used for the given method parameter. This resolver is active for any method annotated withHandleWebor any annotation that is meta-annotated with it.- Specified by:
matchesin interfaceParameterResolver<HasMessage>- Parameters:
parameter- the method parametermethodAnnotation- the annotation on the methodvalue- the incoming message- Returns:
trueif the resolver is applicable to this parameter
-
mayApply
Description copied from interface:ParameterResolverReturnstrueif this resolver might apply to the given method. Implementations should perform only inexpensive checks and never throw.- Specified by:
mayApplyin interfaceParameterResolver<HasMessage>- Parameters:
method- the handler method or constructortargetClass- the declaring or target class- Returns:
trueif this resolver could apply,falseotherwise
-