aboutsummaryrefslogtreecommitdiffstats
path: root/datafile-app-server/src/main
diff options
context:
space:
mode:
authorPatrikBuhr <patrik.buhr@est.tech>2019-05-08 07:18:24 +0000
committerPatrikBuhr <patrik.buhr@est.tech>2019-05-08 07:18:24 +0000
commitd3da8a4866fb3e53b2342b1cb05357af550fee5f (patch)
tree5e9c62ee24bcb217c7c744dfee5c737876a6407d /datafile-app-server/src/main
parentf43d5f564435fa79d13d6876f5cf438b51a95ff3 (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.java14
-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.java11
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);