Skip to content

Commit d061c4e

Browse files
committed
Added builders to model objects
1 parent a866908 commit d061c4e

32 files changed

+389
-13
lines changed

pom.xml

+14
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@
4747
<version>3.0.2</version>
4848
</dependency>
4949

50+
<dependency>
51+
<groupId>org.projectlombok</groupId>
52+
<artifactId>lombok</artifactId>
53+
<version>1.18.36</version>
54+
<scope>provided</scope>
55+
</dependency>
56+
5057
<dependency>
5158
<groupId>org.junit.jupiter</groupId>
5259
<artifactId>junit-jupiter</artifactId>
@@ -69,6 +76,13 @@
6976
<version>3.13.0</version>
7077
<configuration>
7178
<release>17</release>
79+
<annotationProcessorPaths>
80+
<path>
81+
<groupId>org.projectlombok</groupId>
82+
<artifactId>lombok</artifactId>
83+
<version>1.18.36</version>
84+
</path>
85+
</annotationProcessorPaths>
7286
</configuration>
7387
</plugin>
7488
<plugin>

src/main/java/de/sstoehr/harreader/model/Har.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22

33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
44
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import lombok.Builder;
56

67
import javax.annotation.Nonnull;
78
import javax.annotation.Nullable;
89

910
/**
1011
* Main HTTP Archive Class.
11-
* @see <a href="http://www.softwareishard.com/blog/har-12-spec/">speicification</a>
12+
* @see <a href="http://www.softwareishard.com/blog/har-12-spec/">specification</a>
1213
*/
1314
@JsonInclude(JsonInclude.Include.NON_NULL)
1415
@JsonIgnoreProperties(ignoreUnknown = true)
16+
@Builder(toBuilder = true)
1517
public record Har(@Nonnull HarLog log) {
1618

1719
public Har(@Nullable HarLog log) {

src/main/java/de/sstoehr/harreader/model/HarCache.java

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.annotation.JsonFormat;
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
8+
import lombok.Builder;
89

910
import javax.annotation.Nonnull;
1011
import javax.annotation.Nullable;
@@ -18,6 +19,7 @@
1819
*/
1920
@JsonInclude(JsonInclude.Include.NON_NULL)
2021
@JsonIgnoreProperties(ignoreUnknown = true)
22+
@Builder(toBuilder = true)
2123
public record HarCache(
2224
@Nullable HarCacheInfo beforeRequest,
2325
@Nullable HarCacheInfo afterRequest,
@@ -55,6 +57,7 @@ public void setAdditionalField(String key, Object value) {
5557
*/
5658
@JsonInclude(JsonInclude.Include.NON_NULL)
5759
@JsonIgnoreProperties(ignoreUnknown = true)
60+
@Builder(toBuilder = true)
5861
public record HarCacheInfo(@Nullable @JsonFormat(shape = JsonFormat.Shape.STRING) ZonedDateTime expires,
5962
@Nullable @JsonFormat(shape = JsonFormat.Shape.STRING) ZonedDateTime lastAccess,
6063
@Nullable String eTag,

src/main/java/de/sstoehr/harreader/model/HarContent.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -16,6 +17,7 @@
1617
*/
1718
@JsonInclude(JsonInclude.Include.NON_NULL)
1819
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1921
public record HarContent(
2022
@Nullable Long size,
2123
@Nullable Long compression,

src/main/java/de/sstoehr/harreader/model/HarCookie.java

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.annotation.JsonFormat;
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
8+
import lombok.Builder;
89

910
import javax.annotation.Nonnull;
1011
import javax.annotation.Nullable;
@@ -18,6 +19,7 @@
1819
*/
1920
@JsonInclude(JsonInclude.Include.NON_NULL)
2021
@JsonIgnoreProperties(ignoreUnknown = true)
22+
@Builder(toBuilder = true)
2123
public record HarCookie(
2224
@Nullable String name,
2325
@Nullable String value,

src/main/java/de/sstoehr/harreader/model/HarCreatorBrowser.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -16,6 +17,7 @@
1617
*/
1718
@JsonInclude(JsonInclude.Include.NON_NULL)
1819
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1921
public record HarCreatorBrowser(
2022
@Nullable String name,
2123
@Nullable String version,

src/main/java/de/sstoehr/harreader/model/HarEntry.java

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.annotation.JsonFormat;
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
8+
import lombok.Builder;
89

910
import javax.annotation.Nonnull;
1011
import javax.annotation.Nullable;
@@ -18,6 +19,7 @@
1819
*/
1920
@JsonInclude(JsonInclude.Include.NON_NULL)
2021
@JsonIgnoreProperties(ignoreUnknown = true)
22+
@Builder(toBuilder = true)
2123
public record HarEntry(
2224
@Nullable String pageref,
2325
@Nullable @JsonFormat(shape = JsonFormat.Shape.STRING) ZonedDateTime startedDateTime,

src/main/java/de/sstoehr/harreader/model/HarHeader.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -16,6 +17,7 @@
1617
*/
1718
@JsonInclude(JsonInclude.Include.NON_NULL)
1819
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1921
public record HarHeader(
2022
@Nullable String name,
2123
@Nullable String value,

src/main/java/de/sstoehr/harreader/model/HarLog.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
8+
import lombok.Singular;
79

810
import javax.annotation.Nonnull;
911
import javax.annotation.Nullable;
@@ -18,12 +20,13 @@
1820
*/
1921
@JsonInclude(JsonInclude.Include.NON_NULL)
2022
@JsonIgnoreProperties(ignoreUnknown = true)
23+
@Builder(toBuilder = true)
2124
public record HarLog(
2225
@Nonnull String version,
2326
@Nonnull HarCreatorBrowser creator,
2427
@Nullable HarCreatorBrowser browser,
25-
@Nonnull List<HarPage> pages,
26-
@Nonnull List<HarEntry> entries,
28+
@Nonnull @Singular("page") List<HarPage> pages,
29+
@Nonnull @Singular("entry") List<HarEntry> entries,
2730
@Nullable String comment,
2831
@Nonnull Map<String, Object> additional) {
2932

src/main/java/de/sstoehr/harreader/model/HarPage.java

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.annotation.JsonFormat;
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
8+
import lombok.Builder;
89

910
import javax.annotation.Nonnull;
1011
import javax.annotation.Nullable;
@@ -18,6 +19,7 @@
1819
*/
1920
@JsonInclude(JsonInclude.Include.NON_NULL)
2021
@JsonIgnoreProperties(ignoreUnknown = true)
22+
@Builder(toBuilder = true)
2123
public record HarPage(
2224
@Nullable @JsonFormat(shape = JsonFormat.Shape.STRING) ZonedDateTime startedDateTime,
2325
@Nullable String id,

src/main/java/de/sstoehr/harreader/model/HarPageTiming.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -16,6 +17,7 @@
1617
*/
1718
@JsonInclude(JsonInclude.Include.NON_NULL)
1819
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1921
public record HarPageTiming(
2022
@Nonnull Integer onContentLoad,
2123
@Nonnull Integer onLoad,

src/main/java/de/sstoehr/harreader/model/HarPostData.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -18,6 +19,7 @@
1819
*/
1920
@JsonInclude(JsonInclude.Include.NON_NULL)
2021
@JsonIgnoreProperties(ignoreUnknown = true)
22+
@Builder(toBuilder = true)
2123
public record HarPostData(
2224
@Nullable String mimeType,
2325
@Nonnull List<HarPostDataParam> params,

src/main/java/de/sstoehr/harreader/model/HarPostDataParam.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -16,12 +17,13 @@
1617
*/
1718
@JsonInclude(JsonInclude.Include.NON_NULL)
1819
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1921
public record HarPostDataParam(@Nullable String name,
20-
@Nullable String value,
21-
@Nullable String fileName,
22-
@Nullable String contentType,
23-
@Nullable String comment,
24-
@Nonnull Map<String, Object> additional) {
22+
@Nullable String value,
23+
@Nullable String fileName,
24+
@Nullable String contentType,
25+
@Nullable String comment,
26+
@Nonnull Map<String, Object> additional) {
2527

2628
public HarPostDataParam() {
2729
this(null, null, null, null, null, new HashMap<>());

src/main/java/de/sstoehr/harreader/model/HarQueryParam.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonAnySetter;
55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import lombok.Builder;
78

89
import javax.annotation.Nonnull;
910
import javax.annotation.Nullable;
@@ -16,6 +17,7 @@
1617
*/
1718
@JsonInclude(JsonInclude.Include.NON_NULL)
1819
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1921
public record HarQueryParam(
2022
@Nullable String name,
2123
@Nullable String value,

src/main/java/de/sstoehr/harreader/model/HarRequest.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.sstoehr.harreader.model;
22

33
import com.fasterxml.jackson.annotation.*;
4+
import lombok.Builder;
5+
import lombok.Singular;
46

57
import javax.annotation.Nonnull;
68
import javax.annotation.Nullable;
@@ -15,13 +17,14 @@
1517
*/
1618
@JsonInclude(JsonInclude.Include.NON_NULL)
1719
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1821
public record HarRequest(
1922
@Nullable String method,
2023
@Nullable String url,
2124
@Nullable String httpVersion,
22-
@Nonnull List<HarCookie> cookies,
23-
@Nonnull List<HarHeader> headers,
24-
@Nonnull List<HarQueryParam> queryString,
25+
@Nonnull @Singular("cookie") List<HarCookie> cookies,
26+
@Nonnull @Singular("header") List<HarHeader> headers,
27+
@Nonnull @Singular("queryString") List<HarQueryParam> queryString,
2528
@Nonnull HarPostData postData,
2629
@Nonnull Long headersSize,
2730
@Nonnull Long bodySize,

src/main/java/de/sstoehr/harreader/model/HarResponse.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.sstoehr.harreader.model;
22

33
import com.fasterxml.jackson.annotation.*;
4+
import lombok.Builder;
5+
import lombok.Singular;
46

57
import javax.annotation.Nonnull;
68
import javax.annotation.Nullable;
@@ -15,12 +17,13 @@
1517
*/
1618
@JsonInclude(JsonInclude.Include.NON_NULL)
1719
@JsonIgnoreProperties(ignoreUnknown = true)
20+
@Builder(toBuilder = true)
1821
public record HarResponse(
1922
int status,
2023
@Nullable String statusText,
2124
@Nullable String httpVersion,
22-
@Nonnull List<HarCookie> cookies,
23-
@Nonnull List<HarHeader> headers,
25+
@Nonnull @Singular("cookie") List<HarCookie> cookies,
26+
@Nonnull @Singular("header") List<HarHeader> headers,
2427
@Nonnull HarContent content,
2528
@Nullable String redirectURL,
2629
@Nonnull Long headersSize,

src/main/java/de/sstoehr/harreader/model/HarTiming.java

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
88
import com.fasterxml.jackson.annotation.JsonProperty;
9+
import lombok.Builder;
910

1011
import javax.annotation.Nonnull;
1112
import javax.annotation.Nullable;
@@ -14,6 +15,7 @@
1415

1516
@JsonInclude(JsonInclude.Include.NON_NULL)
1617
@JsonIgnoreProperties(ignoreUnknown = true)
18+
@Builder(toBuilder = true)
1719
public record HarTiming(
1820
@Nonnull Integer blocked,
1921
@Nonnull Integer dns,

src/test/java/de/sstoehr/harreader/model/HarCacheTest.java

+16
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@ void testNullability() {
4545
testNullability(new HarCache());
4646
}
4747

48+
@Test
49+
void testBuilder() {
50+
HarCache cache = HarCache.builder().build();
51+
testNullability(cache);
52+
53+
cache = HarCache.builder()
54+
.beforeRequest(HarCache.HarCacheInfo.builder().build())
55+
.afterRequest(HarCache.HarCacheInfo.builder().build())
56+
.comment("comment")
57+
.build();
58+
59+
assertNotNull(cache.beforeRequest());
60+
assertNotNull(cache.afterRequest());
61+
assertEquals("comment", cache.comment());
62+
}
63+
4864
@Test
4965
void equalsContract() {
5066
EqualsVerifier.simple().forClass(HarCache.class).verify();

src/test/java/de/sstoehr/harreader/model/HarContentTest.java

+22
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,28 @@ void testNullability() {
3535
testNullability(new HarContent());
3636
}
3737

38+
@Test
39+
void testBuilder() {
40+
HarContent content = HarContent.builder().build();
41+
testNullability(content);
42+
43+
content = HarContent.builder()
44+
.size(123L)
45+
.compression(45L)
46+
.mimeType("mime/type")
47+
.text("my content")
48+
.encoding("base64")
49+
.comment("my comment")
50+
.build();
51+
52+
assertEquals(123L, (long) content.size());
53+
assertEquals(45L, (long) content.compression());
54+
assertEquals("mime/type", content.mimeType());
55+
assertEquals("my content", content.text());
56+
assertEquals("base64", content.encoding());
57+
assertEquals("my comment", content.comment());
58+
}
59+
3860
@Test
3961
void equalsContract() {
4062
EqualsVerifier.simple().forClass(HarContent.class).verify();

0 commit comments

Comments
 (0)