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