This is an automated email from the git hooks/post-receive script. New commit to branch develop-5.x in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 62159851ad43de078968b66e6ee8b8e05056a747 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Dec 10 12:49:51 2016 +0100 Impossible d'exporter des marées en mode serveur (Fixes #8862) --- .../services/dto}/ObserveBlobsContainer.java | 2 +- .../dto/gson/ObserveBlobsContainerAdapter.java | 48 ++++++++++++++++++++++ .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../services/rest/http/ObserveResponseBuilder.java | 30 +++++++------- .../service/ImportTripScriptTopiaSqlWork.java | 2 +- .../service/SqlScriptProducerServiceTopia.java | 2 +- .../topia/service/TripManagementServiceTopia.java | 2 +- .../service/AddSqlScriptProducerResult.java | 1 + .../services/service/trip/ExportTripResult.java | 2 +- .../services/service/trip/ImportTripRequest.java | 2 +- 10 files changed, 72 insertions(+), 21 deletions(-) diff --git a/services/src/main/java/fr/ird/observe/services/service/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/ObserveBlobsContainer.java rename to services-dto/src/main/java/fr/ird/observe/services/dto/ObserveBlobsContainer.java index 7368fc0..d1a4b31 100644 --- a/services/src/main/java/fr/ird/observe/services/service/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; +package fr.ird.observe.services.dto; /*- * #%L diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/gson/ObserveBlobsContainerAdapter.java b/services-dto/src/main/java/fr/ird/observe/services/dto/gson/ObserveBlobsContainerAdapter.java new file mode 100644 index 0000000..be5c055 --- /dev/null +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/gson/ObserveBlobsContainerAdapter.java @@ -0,0 +1,48 @@ +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/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/services-dto/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index 641a36d..9b9c443 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/services-dto/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-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 c5442c1..e3bb616 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 @@ -261,33 +261,33 @@ public class ObserveResponseBuilder { postMethod.setConfig(requestConfig); // postMethod.setParams(httpParams); } - + if (StringUtils.isBlank(contentType)) { + contentType = "text/plain"; + } + ContentType contentType1 = ContentType.create(contentType, StandardCharsets.UTF_8); if (request.withoutFiles()) { addHeaders(postMethod, request.getHeaders()); - addParameters(postMethod, contentType, request.getParameters()); +// addParameters(postMethod, contentType, request.getParameters()); addRequestBody(postMethod, contentType, requestBody); + + MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); + for (NameValuePair param : request.getParameters()) { + multipartEntityBuilder.addTextBody(param.getName(), param.getValue(), contentType1); + } + postMethod.setEntity(multipartEntityBuilder.build()); + } else { addHeaders(postMethod, request.getHeaders()); - addParameters(postMethod, contentType, request.getParameters()); +// addParameters(postMethod, contentType, request.getParameters()); addRequestBody(postMethod, contentType, requestBody); - MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); - -// MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); + MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); for (Map.Entry<String, File> paramFile : request.getFiles().entrySet()) { multipartEntityBuilder.addBinaryBody(paramFile.getKey(), paramFile.getValue()); -// entity.addPart(paramFile.getKey(), new FileBody(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"))); + multipartEntityBuilder.addTextBody(param.getName(), param.getValue(), contentType1); } - postMethod.setEntity(multipartEntityBuilder.build()); } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/ImportTripScriptTopiaSqlWork.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/ImportTripScriptTopiaSqlWork.java index 185dda2..80761ce 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/ImportTripScriptTopiaSqlWork.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/ImportTripScriptTopiaSqlWork.java @@ -24,7 +24,7 @@ package fr.ird.observe.services.topia.service; import com.google.common.collect.ImmutableSet; import fr.ird.observe.RunScriptTopiaSqlWork; -import fr.ird.observe.services.service.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import javax.sql.rowset.serial.SerialBlob; import java.sql.Connection; diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java index 6cdb2c0..8fc6be5 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/SqlScriptProducerServiceTopia.java @@ -28,7 +28,7 @@ import fr.ird.observe.entities.Entities; import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.AddSqlScriptProducerResult; import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; -import fr.ird.observe.services.service.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.topia.ObserveServiceTopia; import org.apache.commons.logging.Log; diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/TripManagementServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/TripManagementServiceTopia.java index 31eaf02..8b4ecfd 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/TripManagementServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/TripManagementServiceTopia.java @@ -37,7 +37,7 @@ import fr.ird.observe.services.dto.IdHelper; import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.AddSqlScriptProducerResult; import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; -import fr.ird.observe.services.service.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; import fr.ird.observe.services.service.SqlScriptProducerService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/services/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerResult.java b/services/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerResult.java index 70207d0..07d886a 100644 --- a/services/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerResult.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.service; */ import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.ObserveBlobsContainer; /** * Created on 24/08/16. diff --git a/services/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java b/services/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java index 2032a4f..a2465b0 100644 --- a/services/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/trip/ExportTripResult.java @@ -24,7 +24,7 @@ package fr.ird.observe.services.service.trip; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.ObserveDto; -import fr.ird.observe.services.service.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/trip/ImportTripRequest.java b/services/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java index a54f87a..0b6d91a 100644 --- a/services/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/trip/ImportTripRequest.java @@ -24,7 +24,7 @@ package fr.ird.observe.services.service.trip; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.ObserveDto; -import fr.ird.observe.services.service.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveBlobsContainer; /** * Created on 27/08/16. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.