package org.restler.spring.data; import org.restler.client.Call; import org.restler.client.CallEnhancer; import org.restler.client.CallExecutor; import org.restler.http.HttpExecutionException; import org.springframework.http.HttpStatus; public class SdrErrorMappingEnhancer implements CallEnhancer { @Override public Object apply(Call call, CallExecutor callExecutor) { try { return callExecutor.execute(call); } catch(HttpExecutionException e) { //if repository or resource wasn't found if(equalsStatus(e.getStatus(), HttpStatus.NOT_FOUND)) { return null; } //if one of standard methods was not exported or if was tried unbind the association that non-optional else if(equalsStatus(e.getStatus(), HttpStatus.METHOD_NOT_ALLOWED)) { return null; } throw e; } } private boolean equalsStatus(org.restler.http.HttpStatus restlerStatus, HttpStatus springStatus) { return restlerStatus.code == springStatus.value() && restlerStatus.line.equals(springStatus.getReasonPhrase()); } }