diff options
author | PatrikBuhr <patrik.buhr@est.tech> | 2019-05-08 07:18:24 +0000 |
---|---|---|
committer | PatrikBuhr <patrik.buhr@est.tech> | 2019-05-08 07:18:24 +0000 |
commit | d3da8a4866fb3e53b2342b1cb05357af550fee5f (patch) | |
tree | 5e9c62ee24bcb217c7c744dfee5c737876a6407d /datafile-app-server/src/main | |
parent | f43d5f564435fa79d13d6876f5cf438b51a95ff3 (diff) |
Code improvement, FilePublishInformation serializing
Updated serializer of FilePublishInformation so that only elements that
should be part of publishing is included.
Change-Id: If5632af8bf9fd26f8bc96b25d8bfbccf63dfec2f
Issue-ID: DCAEGEN2-1488
Signed-off-by: PatrikBuhr <patrik.buhr@est.tech>
Diffstat (limited to 'datafile-app-server/src/main')
-rw-r--r-- | datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/FilePublishInformation.java | 14 | ||||
-rw-r--r-- | datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java (renamed from datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/CommonFunctions.java) | 44 | ||||
-rw-r--r-- | datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java | 11 |
3 files changed, 32 insertions, 37 deletions
diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/FilePublishInformation.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/FilePublishInformation.java index 066402b2..63ed0daa 100644 --- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/FilePublishInformation.java +++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/FilePublishInformation.java @@ -23,7 +23,6 @@ import java.util.Map; import org.immutables.gson.Gson; import org.immutables.value.Value; -import org.onap.dcaegen2.services.sdk.rest.services.model.DmaapModel; /** * Information needed to publish a file to DataRouter. @@ -34,7 +33,7 @@ import org.onap.dcaegen2.services.sdk.rest.services.model.DmaapModel; @Value.Immutable @Gson.TypeAdapters -public interface FilePublishInformation extends DmaapModel { +public interface FilePublishInformation { @SerializedName("productName") String getProductName(); @@ -54,15 +53,9 @@ public interface FilePublishInformation extends DmaapModel { @SerializedName("timeZoneOffset") String getTimeZoneOffset(); - @SerializedName("name") - String getName(); - @SerializedName("location") String getLocation(); - @SerializedName("internalLocation") - Path getInternalLocation(); - @SerializedName("compression") String getCompression(); @@ -72,6 +65,9 @@ public interface FilePublishInformation extends DmaapModel { @SerializedName("fileFormatVersion") String getFileFormatVersion(); - @SerializedName("context") + Path getInternalLocation(); + + String getName(); + Map<String, String> getContext(); } diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/CommonFunctions.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java index c1b4c0dc..7081d1ac 100644 --- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/CommonFunctions.java +++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/model/JsonSerializer.java @@ -18,26 +18,25 @@ package org.onap.dcaegen2.collectors.datafile.model; +import com.google.common.collect.Sets; +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import java.lang.reflect.Type; -import java.nio.file.Path; +import java.util.Set; /** * Helper class to serialize object. */ -public class CommonFunctions { +public abstract class JsonSerializer { - private static Gson gson = - new GsonBuilder().registerTypeHierarchyAdapter(Path.class, new PathConverter()).serializeNulls().create(); - private CommonFunctions() { - } + private static Gson gson = + new GsonBuilder() // + .serializeNulls() // + .addSerializationExclusionStrategy(new FilePublishInformationExclusionStrategy()) // + .create(); // /** * Serializes a <code>filePublishInformation</code>. @@ -46,18 +45,25 @@ public class CommonFunctions { * * @return a string with the serialized info. */ - public static String createJsonBody(FilePublishInformation filePublishInformation) { + public static String createJsonBodyForDataRouter(FilePublishInformation filePublishInformation) { return gson.toJson(filePublishInformation); } - /** - * Json serializer that handles Path serializations, since <code>Path</code> does not implement the - * <code>Serializable</code> interface. - */ - public static class PathConverter implements JsonSerializer<Path> { + private static class FilePublishInformationExclusionStrategy implements ExclusionStrategy { + /** + * Elements in FilePublishInformation to include in the file publishing Json string. + */ + private final Set<String> inclusions = + Sets.newHashSet("productName", "vendorName", "lastEpochMicrosec", "sourceName", "startEpochMicrosec", + "timeZoneOffset", "location", "compression", "fileFormatType", "fileFormatVersion"); + @Override + public boolean shouldSkipField(FieldAttributes f) { + return !inclusions.contains(f.getName()); + } + @Override - public JsonElement serialize(Path path, Type type, JsonSerializationContext jsonSerializationContext) { - return new JsonPrimitive(path.toString()); + public boolean shouldSkipClass(Class<?> clazz) { + return false; } } } diff --git a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java index 4028ac3f..e5dd01e9 100644 --- a/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java +++ b/datafile-app-server/src/main/java/org/onap/dcaegen2/collectors/datafile/tasks/DataRouterPublisher.java @@ -34,8 +34,8 @@ import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.ByteArrayEntity; import org.onap.dcaegen2.collectors.datafile.configuration.AppConfig; -import org.onap.dcaegen2.collectors.datafile.model.CommonFunctions; import org.onap.dcaegen2.collectors.datafile.model.FilePublishInformation; +import org.onap.dcaegen2.collectors.datafile.model.JsonSerializer; import org.onap.dcaegen2.collectors.datafile.model.logging.MappedDiagnosticContext; import org.onap.dcaegen2.collectors.datafile.service.HttpUtils; import org.onap.dcaegen2.collectors.datafile.service.producer.DmaapProducerHttpClient; @@ -58,9 +58,6 @@ import reactor.core.publisher.Mono; public class DataRouterPublisher { private static final String X_DMAAP_DR_META = "X-DMAAP-DR-META"; private static final String CONTENT_TYPE = "application/octet-stream"; - private static final String NAME_JSON_TAG = "name"; - private static final String INTERNAL_LOCATION_JSON_TAG = "internalLocation"; - private static final String CONTEXT_JSON_TAG = "context"; private static final String PUBLISH_TOPIC = "publish"; private static final String DEFAULT_FEED_ID = "1"; @@ -112,11 +109,7 @@ public class DataRouterPublisher { private void prepareHead(FilePublishInformation publishInfo, HttpPut put) { put.addHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE); - JsonElement metaData = new JsonParser().parse(CommonFunctions.createJsonBody(publishInfo)); - metaData.getAsJsonObject().remove(NAME_JSON_TAG).getAsString(); - metaData.getAsJsonObject().remove(INTERNAL_LOCATION_JSON_TAG); - metaData.getAsJsonObject().remove(CONTEXT_JSON_TAG); - + JsonElement metaData = new JsonParser().parse(JsonSerializer.createJsonBodyForDataRouter(publishInfo)); put.addHeader(X_DMAAP_DR_META, metaData.toString()); put.setURI(getPublishUri(publishInfo.getName())); MappedDiagnosticContext.appendTraceInfo(put); |