This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit c95396f96f5dde1bd8ef00297418a0162d2862ff Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 11 10:08:23 2016 +0100 Impossible d'exporter des marées en mode serveur (Fixes #8862) --- .../dto/gson/ObserveBlobsContainerAdapter.java | 37 ++++++++++++++++++++++ .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 ++ .../services/dto}/ObserveBlobsContainer.java | 2 +- .../services/rest/http/ObserveResponseBuilder.java | 29 ++++++++--------- .../service/data/ImportTripScriptTopiaSqlWork.java | 2 +- .../service/data/TripManagementServiceTopia.java | 2 +- .../service/sql/SqlScriptProducerServiceTopia.java | 2 +- .../services/service/data/ExportTripResult.java | 2 +- .../services/service/data/ImportTripRequest.java | 2 +- .../service/sql/AddSqlScriptProducerResult.java | 1 + 10 files changed, 60 insertions(+), 21 deletions(-) diff --git a/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveBlobsContainerAdapter.java b/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveBlobsContainerAdapter.java new file mode 100644 index 0000000..72094a7 --- /dev/null +++ b/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveBlobsContainerAdapter.java @@ -0,0 +1,37 @@ +package fr.ird.observe.services.dto.gson; +import com.google.common.collect.ImmutableMap; +import com.google.common.reflect.TypeParameter; +import com.google.common.reflect.TypeToken; +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.dto.ObserveBlobsContainer; +import java.lang.reflect.Type; +import java.util.Map; +/** + * Created on 10/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class ObserveBlobsContainerAdapter implements JsonDeserializer<ObserveBlobsContainer> { + @Override + public ObserveBlobsContainer deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonObject = json.getAsJsonObject(); + String tableName = jsonObject.get("tableName").getAsString(); + String columnName = jsonObject.get("columnName").getAsString(); + Type mapType = mapOf(TypeToken.of(String.class), TypeToken.of(byte[].class)).getType(); + Map<String, byte[]> blobsById = context.deserialize(jsonObject.get("blobsById"), mapType); + return new ObserveBlobsContainer(tableName, columnName, ImmutableMap.copyOf(blobsById)); + } + static <K, V> TypeToken<Map<K, V>> mapOf(TypeToken<K> keyType, TypeToken<V> valueType) { + return new TypeToken<Map<K, V>>() { + } + .where(new TypeParameter<K>() { + }, keyType) + .where(new TypeParameter<V>() { + }, valueType); + } +} diff --git a/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index a2ba40b..9f653eb 100644 --- a/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/services-dto-gson/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java @@ -33,6 +33,7 @@ import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceList; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.Form; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.gson.reference.DataReferenceAdapter; import fr.ird.observe.services.dto.gson.reference.DataReferenceListAdapter; @@ -102,6 +103,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(ImmutableSet.class, new ImmutableSetAdapter()); gsonBuilder.registerTypeAdapter(ImmutableMap.class, new ImmutableMapAdapter()); gsonBuilder.registerTypeAdapter(ImmutableMultimap.class, new ImmutableMultimapAdapter()); + gsonBuilder.registerTypeAdapter(ObserveBlobsContainer.class, new ObserveBlobsContainerAdapter()); gsonBuilder.registerTypeAdapter(DataReference.class, new DataReferenceAdapter()); gsonBuilder.registerTypeAdapter(ReferentialReference.class, new ReferentialReferenceAdapter()); diff --git a/services/src/main/java/fr/ird/observe/services/service/sql/ObserveBlobsContainer.java b/services-dto/src/main/java/fr/ird/observe/services/dto/ObserveBlobsContainer.java similarity index 97% rename from services/src/main/java/fr/ird/observe/services/service/sql/ObserveBlobsContainer.java rename to services-dto/src/main/java/fr/ird/observe/services/dto/ObserveBlobsContainer.java index c846a47..69ed4de 100644 --- a/services/src/main/java/fr/ird/observe/services/service/sql/ObserveBlobsContainer.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/ObserveBlobsContainer.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service.sql; +package fr.ird.observe.services.dto; /*- * #%L diff --git a/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java b/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java index 9cf9581..f3e3838 100644 --- a/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java +++ b/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java @@ -251,9 +251,7 @@ public class ObserveResponseBuilder { if (timeout != null) { - RequestConfig requestConfig = RequestConfig.custom() - .setConnectTimeout(timeout) - .build(); + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeout).build(); // HttpParams httpParams = new BasicHttpParams(); // httpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, timeout); @@ -262,35 +260,36 @@ public class ObserveResponseBuilder { // postMethod.setParams(httpParams); } + MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); + if (request.withoutFiles()) { addHeaders(postMethod, request.getHeaders()); - addParameters(postMethod, contentType, request.getParameters()); addRequestBody(postMethod, contentType, requestBody); + + for (NameValuePair param : request.getParameters()) { + if (StringUtils.isBlank(contentType)) { + contentType = "text/plain"; + } + entityBuilder.addTextBody(param.getName(), param.getValue(), ContentType.create(contentType, StandardCharsets.UTF_8)); + } } else { addHeaders(postMethod, request.getHeaders()); - addParameters(postMethod, contentType, request.getParameters()); addRequestBody(postMethod, contentType, requestBody); - MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); - -// MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); for (Map.Entry<String, File> paramFile : request.getFiles().entrySet()) { - multipartEntityBuilder.addBinaryBody(paramFile.getKey(), paramFile.getValue()); -// entity.addPart(paramFile.getKey(), new FileBody(paramFile.getValue())); + entityBuilder.addBinaryBody(paramFile.getKey(), paramFile.getValue()); } for (NameValuePair param : request.getParameters()) { if (StringUtils.isBlank(contentType)) { contentType = "text/plain"; } - multipartEntityBuilder.addTextBody(param.getName(), param.getValue(), ContentType.create(contentType, StandardCharsets.UTF_8)); - -// entity.addPart(param.getName(), new StringBody(param.getValue(), contentType, -// Charset.forName("UTF-8"))); + entityBuilder.addTextBody(param.getName(), param.getValue(), ContentType.create(contentType, StandardCharsets.UTF_8)); } - postMethod.setEntity(multipartEntityBuilder.build()); } + postMethod.setEntity(entityBuilder.build()); + HttpResponse response = executeRequest(postMethod); if (log.isDebugEnabled()) { diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/ImportTripScriptTopiaSqlWork.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/ImportTripScriptTopiaSqlWork.java index 60b7fb2..f693cda 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/ImportTripScriptTopiaSqlWork.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/ImportTripScriptTopiaSqlWork.java @@ -24,7 +24,7 @@ package fr.ird.observe.services.topia.service.data; import com.google.common.collect.ImmutableSet; import fr.ird.observe.RunScriptTopiaSqlWork; -import fr.ird.observe.services.service.sql.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/TripManagementServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/TripManagementServiceTopia.java index cd7c876..2f2ee56 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/TripManagementServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/TripManagementServiceTopia.java @@ -35,7 +35,7 @@ import fr.ird.observe.services.service.data.TripManagementService; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.AddSqlScriptProducerResult; import fr.ird.observe.services.service.sql.DeleteSqlScriptProducerRequest; -import fr.ird.observe.services.service.sql.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.services.topia.ObserveServiceContextTopia; import fr.ird.observe.services.topia.ObserveServiceTopia; diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/sql/SqlScriptProducerServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/sql/SqlScriptProducerServiceTopia.java index 34cf494..90002a4 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/sql/SqlScriptProducerServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/sql/SqlScriptProducerServiceTopia.java @@ -31,7 +31,7 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.AddSqlScriptProducerResult; import fr.ird.observe.services.service.sql.DeleteSqlScriptProducerRequest; -import fr.ird.observe.services.service.sql.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.services.topia.ObserveServiceTopia; import org.apache.commons.collections4.CollectionUtils; diff --git a/services/src/main/java/fr/ird/observe/services/service/data/ExportTripResult.java b/services/src/main/java/fr/ird/observe/services/service/data/ExportTripResult.java index af32fb1..5d9e19e 100644 --- a/services/src/main/java/fr/ird/observe/services/service/data/ExportTripResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/ExportTripResult.java @@ -24,7 +24,7 @@ package fr.ird.observe.services.service.data; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.ObserveDto; -import fr.ird.observe.services.service.sql.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; /** * Created on 27/08/16. diff --git a/services/src/main/java/fr/ird/observe/services/service/data/ImportTripRequest.java b/services/src/main/java/fr/ird/observe/services/service/data/ImportTripRequest.java index fc14c0a..48a9ae6 100644 --- a/services/src/main/java/fr/ird/observe/services/service/data/ImportTripRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/ImportTripRequest.java @@ -24,7 +24,7 @@ package fr.ird.observe.services.service.data; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.ObserveDto; -import fr.ird.observe.services.service.sql.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; /** * Created on 27/08/16. diff --git a/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java b/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java index f46a184..49ccb01 100644 --- a/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.service.sql; */ import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.ObserveBlobsContainer; /** * Created on 24/08/16. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.