This is an automated email from the ASF dual-hosted git repository.

tmaret pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal-messages.git


The following commit(s) were added to refs/heads/master by this push:
     new 06e0eb0  SLING-12087: Add metadata to the PackageMessage (#16)
06e0eb0 is described below

commit 06e0eb0fe231015b75161c965b4cb8aa79d0e4db
Author: José Correia <[email protected]>
AuthorDate: Tue Nov 7 09:22:52 2023 +0100

    SLING-12087: Add metadata to the PackageMessage (#16)
    
    Co-authored-by: josec <[email protected]>
---
 .../journal/messages/PackageMessage.java           | 40 ++++++++++++++++------
 .../journal/messages/package-info.java             |  2 +-
 .../journal/messages/PackageMessageTest.java       | 34 +++++++++++++-----
 ...serialized.json => serialized-no-metadata.json} |  2 +-
 src/test/resources/serialized.json                 |  2 +-
 5 files changed, 57 insertions(+), 23 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/distribution/journal/messages/PackageMessage.java
 
b/src/main/java/org/apache/sling/distribution/journal/messages/PackageMessage.java
index a331f79..137ab8d 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/messages/PackageMessage.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/messages/PackageMessage.java
@@ -18,17 +18,12 @@
  */
 package org.apache.sling.distribution.journal.messages;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import lombok.*;
 
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import java.util.*;
 
 @Data
-@Builder
+@Builder(builderMethodName = "builderWithMetadata")
 @NoArgsConstructor
 @AllArgsConstructor
 public class PackageMessage {
@@ -41,13 +36,15 @@ public class PackageMessage {
     String pkgBinaryRef;
     String pubAgentName;
     String userId;
-    
+
     @Builder.Default
     List<String> paths = new ArrayList<>();
-    
+
     @Builder.Default
     List<String> deepPaths = new ArrayList<>();
-    
+
+    Map<String, String> metadata = new HashMap<>();
+
     public enum ReqType {
         ADD,
         DELETE,
@@ -55,6 +52,25 @@ public class PackageMessage {
         TEST;
     }
 
+    // Default constructor containing the minimum required fields
+    @Builder(builderMethodName = "builder")
+    public PackageMessage(String pubSlingId, ReqType reqType, String pkgId, 
String pkgType,
+                          long pkgLength, byte[] pkgBinary, String 
pkgBinaryRef,
+                          String pubAgentName, String userId, List<String> 
paths,
+                          List<String> deepPaths) {
+        this.pubSlingId = pubSlingId;
+        this.reqType = reqType;
+        this.pkgId = pkgId;
+        this.pkgType = pkgType;
+        this.pkgBinaryRef = pkgBinaryRef;
+        this.pubAgentName = pubAgentName;
+        this.userId = userId;
+        this.pkgLength = pkgLength;
+        this.pkgBinary = pkgBinary;
+        this.paths = paths;
+        this.deepPaths = deepPaths;
+    }
+
     public String toString() {
         StringBuilder out = new StringBuilder();
         out.append("PackageMessage(pubSlingId=");
@@ -79,6 +95,8 @@ public class PackageMessage {
         out.append(abbreviate(paths));
         out.append(", deepPaths=");
         out.append(abbreviate(deepPaths));
+        out.append(", metadata=");
+        out.append(metadata);
         out.append(")");
         return out.toString();
     }
diff --git 
a/src/main/java/org/apache/sling/distribution/journal/messages/package-info.java
 
b/src/main/java/org/apache/sling/distribution/journal/messages/package-info.java
index 4c4e05d..992be64 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/messages/package-info.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/messages/package-info.java
@@ -16,5 +16,5 @@
  * specific language governing permissions and limitations
  * under the License.
  */
[email protected]("1.3.0")
[email protected]("1.4.0")
 package org.apache.sling.distribution.journal.messages;
diff --git 
a/src/test/java/org/apache/sling/distribution/journal/messages/PackageMessageTest.java
 
b/src/test/java/org/apache/sling/distribution/journal/messages/PackageMessageTest.java
index b473adc..01cc228 100644
--- 
a/src/test/java/org/apache/sling/distribution/journal/messages/PackageMessageTest.java
+++ 
b/src/test/java/org/apache/sling/distribution/journal/messages/PackageMessageTest.java
@@ -21,7 +21,7 @@ package org.apache.sling.distribution.journal.messages;
 import static 
org.apache.sling.distribution.journal.messages.PackageMessage.abbreviate;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertNull;
 
 import java.io.IOException;
@@ -37,29 +37,45 @@ import java.util.stream.Collectors;
 
 import org.junit.Test;
 
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectWriter;
 
 public class PackageMessageTest {
 
+    private String serializePackageMessage(PackageMessage message) throws 
IOException {
+        ObjectWriter writer = new 
ObjectMapper().writerFor(PackageMessage.class);
+        StringWriter outWriter = new StringWriter();
+        writer.writeValue(outWriter, message);
+        return outWriter.getBuffer().toString();
+    }
+
     @Test
-    public void testSerialize() throws JsonGenerationException, 
JsonMappingException, IOException {
-        byte[] pkgBinary = new String("dummy").getBytes();
+    public void testSerialize() throws IOException {
+        byte[] pkgBinary = "dummy".getBytes();
         PackageMessage message = PackageMessage.builder()
             .paths(Collections.singletonList("/test"))
             .pkgBinary(pkgBinary)
+            .metadata(Collections.singletonMap("testMetadataField", "test"))
             .build();
-        ObjectWriter writer = new 
ObjectMapper().writerFor(PackageMessage.class);
-        StringWriter outWriter = new StringWriter();
-        writer.writeValue(outWriter, message);
-        String serialized = outWriter.getBuffer().toString();
+        String serialized = serializePackageMessage(message);
         Path path = Paths.get("src/test/resources/serialized.json");
         String expected = Files.lines(path, 
StandardCharsets.UTF_8).collect(Collectors.joining());
         assertThat(serialized, equalTo(expected));
     }
 
+    @Test
+    public void testSerializeWithoutMetadata() throws IOException {
+        byte[] pkgBinary = "dummy".getBytes();
+        PackageMessage message = PackageMessage.builder()
+                .paths(Collections.singletonList("/test"))
+                .pkgBinary(pkgBinary)
+                .build();
+        String serialized = serializePackageMessage(message);
+        Path path = 
Paths.get("src/test/resources/serialized-no-metadata.json");
+        String expected = Files.lines(path, 
StandardCharsets.UTF_8).collect(Collectors.joining());
+        assertThat(serialized, equalTo(expected));
+    }
+
     @Test
     public void testToStringWithDefault() {
         PackageMessage message = PackageMessage.builder().build();
diff --git a/src/test/resources/serialized.json 
b/src/test/resources/serialized-no-metadata.json
similarity index 63%
copy from src/test/resources/serialized.json
copy to src/test/resources/serialized-no-metadata.json
index a67341b..2ffae54 100644
--- a/src/test/resources/serialized.json
+++ b/src/test/resources/serialized-no-metadata.json
@@ -1 +1 @@
-{"pubSlingId":null,"reqType":null,"pkgId":null,"pkgType":null,"pkgLength":0,"pkgBinary":"ZHVtbXk=","pkgBinaryRef":null,"pubAgentName":null,"userId":null,"paths":["/test"],"deepPaths":[]}
\ No newline at end of file
+{"pubSlingId":null,"reqType":null,"pkgId":null,"pkgType":null,"pkgLength":0,"pkgBinary":"ZHVtbXk=","pkgBinaryRef":null,"pubAgentName":null,"userId":null,"paths":["/test"],"deepPaths":[],"metadata":null}
\ No newline at end of file
diff --git a/src/test/resources/serialized.json 
b/src/test/resources/serialized.json
index a67341b..e0692d1 100644
--- a/src/test/resources/serialized.json
+++ b/src/test/resources/serialized.json
@@ -1 +1 @@
-{"pubSlingId":null,"reqType":null,"pkgId":null,"pkgType":null,"pkgLength":0,"pkgBinary":"ZHVtbXk=","pkgBinaryRef":null,"pubAgentName":null,"userId":null,"paths":["/test"],"deepPaths":[]}
\ No newline at end of file
+{"pubSlingId":null,"reqType":null,"pkgId":null,"pkgType":null,"pkgLength":0,"pkgBinary":"ZHVtbXk=","pkgBinaryRef":null,"pubAgentName":null,"userId":null,"paths":["/test"],"deepPaths":[],"metadata":{"testMetadataField":"test"}}
\ No newline at end of file

Reply via email to