I have client and server applications, both written in spring using Java.
I am using RestTemplate to call server from client.
Server returns different response object, depending on result of operation.
Simplified code:
public ResponseEntity<?> saveSomething (Object something) {
boolean saved = save(something); //save logic
if(saved)
return new ResponseEntity<OKObject>(okObject,HttpStatus.OK);
else
return new ResponseEntity<ErrorObject>(errorObject,HttpStatus.FAILED);
}
I want to be able to read those responses on client by status code,
but RestTemplate offers only to read one type, e.g. <Object_type>.class;
and offers status code AFTER the .getForEntity(...) operation was executed -
when response type is already returned.
What I want in pseudo code on client side:
public void saveSomething(Object toSave) {
ResTemplate template = new RestTemplate();
ResponseEntity<Object> response = template.getForEntity(url,Object.class);
if(response.getStatusCode() == HttpStatus.OK) {
OKObject ok = (OKObject) response.getBody();
//some work with ok object
}
if(response.getStatusCode() == HttpStatus.FAILED) {
ErrorObject errorObject = (ErrorObject) response.getBody();
//some work with errorObject
}
}
Is this possible in some non-hacky, clean way ? I read about setting response type as String.class and parse it afterwards, or reading Object.class (returns LinkedHashMap) and parse it.
Thanks for any tips.