Polishing in HTTP interface argument resolvers

This commit is contained in:
rstoyanchev
2024-08-12 21:00:17 +03:00
parent 51de84e148
commit cef1b7ea6d
5 changed files with 18 additions and 14 deletions

View File

@@ -56,14 +56,13 @@ public class PayloadArgumentResolver implements RSocketServiceArgumentResolver {
}
if (argument == null) {
boolean required = (annot == null || annot.required()) && !parameter.isOptional();
Assert.isTrue(!required, () -> "Missing payload");
boolean isOptional = ((annot != null && !annot.required()) || parameter.isOptional());
Assert.isTrue(isOptional, () -> "Missing payload");
return true;
}
ReactiveAdapter reactiveAdapter = this.reactiveAdapterRegistry
.getAdapter(parameter.getParameterType());
if (reactiveAdapter == null) {
ReactiveAdapter adapter = this.reactiveAdapterRegistry.getAdapter(parameter.getParameterType());
if (adapter == null) {
requestValues.setPayloadValue(argument);
}
else {
@@ -71,12 +70,13 @@ public class PayloadArgumentResolver implements RSocketServiceArgumentResolver {
String message = "Async type for @Payload should produce value(s)";
Assert.isTrue(nestedParameter.getNestedParameterType() != Void.class, message);
Assert.isTrue(!reactiveAdapter.isNoValue(), message);
Assert.isTrue(!adapter.isNoValue(), message);
requestValues.setPayload(
reactiveAdapter.toPublisher(argument),
adapter.toPublisher(argument),
ParameterizedTypeReference.forType(nestedParameter.getNestedGenericParameterType()));
}
return true;
}
}