Rénovation d'erreur de manipulation

J'ai enveloppé mon Rénovation de code dans une classe comme ci-dessous. Si il n'est pas clair à partir du code que je vais l'afficher c'est de l'interaction avec un service restful avec OAuth.

Ce serait une bonne façon de le faire d'erreur de manipulation? Le RESTE du serveur renvoie un message d'erreur au format json. Je voudrais agir sur ce message en jetant quelques exceptions de ma classe. Je suis en train de faire quelque chose comme ci-dessous. Mais est-ce une bonne conception? Est un mélange de rappels et d'exception jeter une bonne idée? Est-il un meilleur moyen?

Avec l'approche ci-dessous que j'ai pu obtenir i18l des messages à partir de l'intérieur de mon custom exceptions et de pain grillé à l'utilisateur.

public class RestClient implements IRestClient {
private IRestAPI api;
/**
*
* @param accessToken
*/
public RestClient(final String accessToken)
{
RequestInterceptor requestInterceptor = new RequestInterceptor()
{
@Override
public void intercept(RequestFacade request) {
request.addHeader("Authorization", "Bearer " + accessToken);
}
};
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(Config.ENDPOINT)
.setRequestInterceptor(requestInterceptor)
.build();
api = restAdapter.create(IRestAPI.class);
}
@Override
public void requestSomething(final Callback callback) {
api.getSomething(new Callback<Something>() {
@Override
public void success(Something something, Response response) {
callback.success(something, response);
}
@Override
public void failure(RetrofitError error) {
if(error.getMessage().getId().euqals(ACCESS_TOKEN_EXPIRED))
{
throw new AccessTokenExpired();
}
else if(error.getMessage().getId().euqals(USER_NOT_FOUND))
{
throw new UsernamePasswordNotFound();
}
else //something else happened...
{
throw error;
}
}
});
}
@Override
public void deleteSomething(final Callback callback) {
api.deleteSomething(new Callback<Something>() {
@Override
public void success(Something something, Response response) {
callback.success(something, response);
}
@Override
public void failure(RetrofitError error) {
if(error.getMessage().getId().euqals(SOMETHING_NOT_FOUND))
{
...
...
Different exceptions
}
...
}
});
}
}

Naturellement je voudrais créer mon propre retour d'appel de l'interface avec seulement un succès de la méthode.

Vous pouvez toujours utiliser Rénovation du ErrorHandler dans le RestAdapter builder. square.github.io/retrofit/javadoc/retrofit/ErrorHandler.html

OriginalL'auteur user672009 | 2014-11-01