package org.restler.spring.data.calls; import org.restler.client.Call; import org.restler.client.CallEnhancer; import org.restler.client.CallExecutor; public abstract class CustomCallEnhancer<T extends Call> implements CallEnhancer { private final Class<T> callClass; public CustomCallEnhancer(Class<T> callClass) { this.callClass = callClass; } public Object apply(Call call, CallExecutor callExecutor) { if (callClass.equals(call.getClass())) { return enhance((T) call, callExecutor); } else { return callExecutor.execute(call); } } protected abstract Object enhance(T call, CallExecutor callExecutor); }