I have the following HTTP inbound gateway:
@Bean
public IntegrationFlow httpInbound() {
return IntegrationFlows
.from(Http.inboundGateway("/").requestMapping(m -> m.methods(HttpMethod.POST)))
.channel(SOME_CHANNEL_NAME).get();
}
And this service for the reply:
@ServiceActivator(inputChannel = SOME_CHANNEL_NAME)
public String receive() {
//process string
return string;
}
But this is returning 200 even when the reply is empty (""). I would like a 204 status code when string is empty and 200 when string is not empty. Of course I can do this:
@ServiceActivator(inputChannel = SOME_CHANNEL_NAME)
public GenericMessage receive() {
//process string
return "".equals(string) ? new GenericMessage<>("", Map.of(HttpHeaders.STATUS_CODE, 204)) : new GenericMessage<>(string, Map.of(HttpHeaders.STATUS_CODE, 200));
}
But I'm asking this because maybe there is an easier and cleaner way (maybe configuring the inbound gateway or using an http outbound gateway).
Thanks!