This is an automated email from the git hooks/post-receive script. New commit to branch feature/7463 in repository observe. See http://git.codelutin.com/observe.git commit 9e590f1e45481559c9bbb32cd902ff91d97dd6d0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Sep 6 23:01:03 2015 +0200 Ajout d'un service spécifique à l'API Rest pour tester si le serveur ping bien + une exception si une requète ne peut être jouée --- .../web/controller/v1/PingServiceController.java | 17 ++++++++++++++ .../ird/observe/services/service/PingService.java | 16 +++++++++++++ .../ObserveServiceRestNotAvailableException.java | 26 ++++++++++++++++++++++ .../services/http/ObserveResponseBuilder.java | 23 ++++++++++++++----- 4 files changed, 77 insertions(+), 5 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java new file mode 100644 index 0000000..5999db9 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java @@ -0,0 +1,17 @@ +package fr.ird.observe.application.web.controller.v1; + +import fr.ird.observe.application.web.controller.ObserveWebMotionController; +import org.debux.webmotion.server.render.Render; + +/** + * Created on 06/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class PingServiceController extends ObserveWebMotionController { + + public Render ping() { + return renderContent("ping", "text/plain"); + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java new file mode 100644 index 0000000..c6f294a --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java @@ -0,0 +1,16 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.spi.NoDataAccess; + +/** + * Created on 06/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface PingService extends ObserveService { + + @NoDataAccess + String ping(); + +} 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 new file mode 100644 index 0000000..72db5e2 --- /dev/null +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceRestNotAvailableException.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services; + +import java.net.URL; + +/** + * Exception à retourner quand le service n'est pas accessible. + * + * Created on 06/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveServiceRestNotAvailableException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + private final URL serverUrl; + + public ObserveServiceRestNotAvailableException(URL serverUrl) { + this.serverUrl = serverUrl; + } + + public URL getServerUrl() { + return serverUrl; + } + +} 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 821120a..a132f24 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 @@ -4,6 +4,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.ObserveServiceRestNotAvailableException; import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import org.apache.commons.io.Charsets; import org.apache.commons.io.IOUtils; @@ -42,6 +43,7 @@ import java.io.InputStream; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; +import java.net.ConnectException; import java.nio.charset.Charset; import java.util.List; import java.util.Map; @@ -177,7 +179,7 @@ public class ObserveResponseBuilder { addHeaders(getMethod, request.getHeaders()); - HttpResponse response = client.execute(getMethod); + HttpResponse response = executeRequest(getMethod); if (log.isDebugEnabled()) { log.debug("GET '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -224,7 +226,7 @@ public class ObserveResponseBuilder { postMethod.setEntity(entity); } - HttpResponse response = client.execute(postMethod); + HttpResponse response = executeRequest(postMethod); if (log.isDebugEnabled()) { log.debug("POST '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -245,7 +247,7 @@ public class ObserveResponseBuilder { addParameters(putMethod, contentType, request.getParameters()); addRequestBody(putMethod, contentType, request.getRequestBody()); - HttpResponse response = client.execute(putMethod); + HttpResponse response = executeRequest(putMethod); if (log.isDebugEnabled()) { log.debug("PUT '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -255,7 +257,6 @@ public class ObserveResponseBuilder { } - protected Pair<HttpDelete, HttpResponse> delete0(ObserveRequest request) throws IOException { String baseUrl = request.getBaseUrl(); @@ -264,7 +265,7 @@ public class ObserveResponseBuilder { addHeaders(deleteMethod, request.getHeaders()); - HttpResponse response = client.execute(deleteMethod); + HttpResponse response = executeRequest(deleteMethod); if (log.isDebugEnabled()) { log.debug("DELETE '" + baseUrl + "' return status code : " + response.getStatusLine().getStatusCode()); @@ -274,6 +275,18 @@ public class ObserveResponseBuilder { } + protected HttpResponse executeRequest(HttpRequestBase request) throws IOException, ObserveServiceRestNotAvailableException { + + try { + HttpResponse response = client.execute(request); + return response; + } catch (ConnectException e) { + // Le service n'est pas accessible + throw new ObserveServiceRestNotAvailableException(request.getURI().toURL()); + } + + } + protected String buildUrlWithParameters(String baseUrl, List<NameValuePair> parameters) { String result = baseUrl; if (!parameters.isEmpty()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.