Request and Datasource may not be needed by all classes
public interface RequestProcessable {
public Response process(Request request, DataSource ds, Map<String, Object> args);
}
The above class can be deprecated and a new Executable class can be made
public class Consumer extends Executable{
@Inject
Request request;
@Inject
DataSource ds;
public Response execute(Map<String, Object> args){
//@TODO some business logic
}
}