branch feature/7708 updated (3db4b22 -> 13aed77)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7708 in repository observe. See http://git.codelutin.com/observe.git from 3db4b22 Ajout de traductions (refs 7708) new 13aed77 gestion des erreurs dans l'ecran de test de connexion au serveur distant (refs #7708) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 13aed776574edce1b6739ad7917cab2389623b4c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Nov 10 17:14:36 2015 +0100 gestion des erreurs dans l'ecran de test de connexion au serveur distant (refs #7708) Summary of changes: .../fr/ird/observe/ui/storage/StorageUIModel.java | 3 +- .../observe/services/ObserveHttpErrorAdapter.java | 37 +++++++++++++++++ .../services/ObserveServiceFactoryRest.java | 9 +---- .../services/ObserveServiceRestErrorException.java | 16 ++++++++ .../ObserveServiceRestNotAvailableException.java | 1 + .../observe/services/http/ObserveHttpError.java | 47 ++++++++++++++++++++++ .../services/http/ObserveResponseBuilder.java | 28 +++++++++++-- 7 files changed, 130 insertions(+), 11 deletions(-) create mode 100644 observe-services-rest/src/main/java/fr/ird/observe/services/ObserveHttpErrorAdapter.java create mode 100644 observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestErrorException.java create mode 100644 observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveHttpError.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7708 in repository observe. See http://git.codelutin.com/observe.git commit 13aed776574edce1b6739ad7917cab2389623b4c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Nov 10 17:14:36 2015 +0100 gestion des erreurs dans l'ecran de test de connexion au serveur distant (refs #7708) --- .../fr/ird/observe/ui/storage/StorageUIModel.java | 3 +- .../observe/services/ObserveHttpErrorAdapter.java | 37 +++++++++++++++++ .../services/ObserveServiceFactoryRest.java | 9 +---- .../services/ObserveServiceRestErrorException.java | 16 ++++++++ .../ObserveServiceRestNotAvailableException.java | 1 + .../observe/services/http/ObserveHttpError.java | 47 ++++++++++++++++++++++ .../services/http/ObserveResponseBuilder.java | 28 +++++++++++-- 7 files changed, 130 insertions(+), 11 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 3b6657e..ab8b3c8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -1695,7 +1695,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { try { - if (DbMode.USE_SERVER.equals(getDbMode())) { + if (DbMode.USE_SERVER.equals(getDbMode()) + || DbMode.CREATE_LOCAL.equals(getDbMode()) && CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode)) { PingService pingService = dataSource.newService(PingService.class); diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveHttpErrorAdapter.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveHttpErrorAdapter.java new file mode 100644 index 0000000..79ffbc0 --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveHttpErrorAdapter.java @@ -0,0 +1,37 @@ +package fr.ird.observe.services; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import fr.ird.observe.services.http.ObserveHttpError; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveHttpErrorAdapter implements JsonDeserializer<ObserveHttpError> { + @Override + public ObserveHttpError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + + JsonObject jsonObject = json.getAsJsonObject(); + + Integer httpCode = context.deserialize(jsonObject.get(ObserveHttpError.PROPERTY_HTTP_CODE), Integer.class); + + String message = context.deserialize(jsonObject.get(ObserveHttpError.PROPERTY_MESSAGE), String.class); + + Class exceptionType = context.deserialize(jsonObject.get(ObserveHttpError.PROPERTY_EXECPTION_TYPE), Class.class); + + Throwable exception = null; + + if (exceptionType != null) { + + exception = context.deserialize(jsonObject.get(ObserveHttpError.PROPERTY_EXCEPTION), exceptionType); + + } + + return new ObserveHttpError(httpCode, exceptionType, message, exception); + } +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java index b3034ed..a695ff0 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java @@ -23,12 +23,9 @@ package fr.ird.observe.services; */ import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.base.Strings; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import com.google.common.reflect.Reflection; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -40,6 +37,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestC import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.configuration.ObserveDataSourceConnectionRest; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; +import fr.ird.observe.services.http.ObserveHttpError; import fr.ird.observe.services.http.ObserveRequest; import fr.ird.observe.services.http.ObserveRequestBuilder; import fr.ird.observe.services.http.ObserveRequestMethod; @@ -54,11 +52,7 @@ import org.apache.commons.logging.LogFactory; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.lang.reflect.TypeVariable; import java.util.Collection; -import java.util.List; /** * Created on 16/08/15. @@ -81,6 +75,7 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl // Les ObserveDataSourceConnection sont obligatoirement de type ObserveDataSourceConnectionRest builder.registerTypeAdapter(ObserveDataSourceConnection.class, new ObserveDataSourceConnectionAdapter()); + builder.registerTypeAdapter(ObserveHttpError.class, new ObserveHttpErrorAdapter()); return builder; } diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestErrorException.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestErrorException.java new file mode 100644 index 0000000..e6c3033 --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestErrorException.java @@ -0,0 +1,16 @@ +package fr.ird.observe.services; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveServiceRestErrorException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public ObserveServiceRestErrorException() { + } + + public ObserveServiceRestErrorException(String message) { + super(message); + } +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java index f4e0112..1145be6 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java @@ -38,6 +38,7 @@ public class ObserveServiceRestNotAvailableException extends RuntimeException { private final URL serverUrl; public ObserveServiceRestNotAvailableException(URL serverUrl) { + super("Server " + serverUrl + " not available"); this.serverUrl = serverUrl; } diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveHttpError.java b/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveHttpError.java new file mode 100644 index 0000000..224eb1e --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveHttpError.java @@ -0,0 +1,47 @@ +package fr.ird.observe.services.http; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +// TODO doublon avec fr.ird.observe.application.web.controller.v1.ObserveWebErrorController.Error +public class ObserveHttpError { + + public static final String PROPERTY_HTTP_CODE = "httpCode"; + + public static final String PROPERTY_EXECPTION_TYPE = "exceptionType"; + + public static final String PROPERTY_MESSAGE = "message"; + + public static final String PROPERTY_EXCEPTION = "exception"; + + protected final Integer httpCode; + + protected final Class<?> exceptionType; + + protected final String message; + + protected final Throwable exception; + + public ObserveHttpError(Integer httpCode, Class<?> exceptionType, String message, Throwable exception) { + this.httpCode = httpCode; + this.exceptionType = exceptionType; + this.message = message; + this.exception = exception; + } + + public Integer getHttpCode() { + return httpCode; + } + + public Class<?> getExceptionType() { + return exceptionType; + } + + public String getMessage() { + return message; + } + + public Throwable getException() { + return exception; + } +} diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java b/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java index 563674a..4851de8 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/http/ObserveResponseBuilder.java @@ -26,6 +26,7 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.gson.Gson; +import fr.ird.observe.services.ObserveServiceRestErrorException; import fr.ird.observe.services.ObserveServiceRestNotAvailableException; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import org.apache.commons.io.Charsets; @@ -107,7 +108,7 @@ public class ObserveResponseBuilder { } - public <T> ObserveResponse<T> build(ObserveRequest request, Type resultType) throws IOException { + public <T> ObserveResponse<T> build(ObserveRequest request, Type resultType) throws Throwable { String baseUrl = request.getBaseUrl(); Preconditions.checkNotNull(baseUrl, "'baseUrl' can't be null"); @@ -117,8 +118,29 @@ public class ObserveResponseBuilder { ResponseContext responseContext = executeRequest(request); - if (responseContext.statusCode != 200 && log.isWarnEnabled()) { - log.warn(String.format("Unexpected status code for url: %s\n%s", baseUrl, responseContext.responseAsString)); + if (responseContext.statusCode != 200) { + if (log.isWarnEnabled()) { + log.warn(String.format("Unexpected status code for url: %s\n%s", baseUrl, responseContext.responseAsString)); + } + + ObserveHttpError error = convertJson(responseContext.responseAsString, ObserveHttpError.class); + + if (error != null) { + + throw new ObserveServiceRestErrorException("" + responseContext.statusCode); + + } else { + + if (error.getException() != null) { + + throw error.getException(); + + } else { + + throw new ObserveServiceRestErrorException(error.getHttpCode() + " : " + error.getMessage()); + + } + } } T resultObject = convertJson(responseContext.responseAsString, resultType); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm