Skip to content

Commit 243bb86

Browse files
committed
Added example for streaming json validation
1 parent 50ca82b commit 243bb86

20 files changed

+5097
-0
lines changed

README.MD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ A repository containing different java tutorials
4141

4242
## Serialization & Deserialization ☢️
4343
- [Two-way object serialization while using one model with Jackson and Spring Boot](two-way-object-serialization)
44+
- [Streaming JSON validation](streaming-json-validation)
4445

4546
## Miscellaneous 🎭
4647
- [JVM Rainbow - Mixing Java, Kotlin, Scala and Groovy](jvm-rainbow)

pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<module>bypassing-overruling-ssl-configuration</module>
2727
<module>trust-me</module>
2828
<module>jvm-rainbow</module>
29+
<module>streaming-json-validation</module>
2930
</modules>
3031

3132
<licenses>
@@ -92,6 +93,8 @@
9293
<version.quarkus>3.13.0</version.quarkus>
9394
<version.mysql-connector>8.3.0</version.mysql-connector>
9495
<version.lombok>1.18.34</version.lombok>
96+
<version.jakarta-annotation-api>3.0.0</version.jakarta-annotation-api>
97+
<version.hibernate-validator>9.0.1.Final</version.hibernate-validator>
9598
<version.jboss-logging>3.6.0.Final</version.jboss-logging>
9699
<version.assertj-core>3.23.1</version.assertj-core>
97100
<version.junit>5.10.3</version.junit>

streaming-json-validation/pom.xml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>io.github.hakky54</groupId>
9+
<artifactId>java-tutorials</artifactId>
10+
<version>1.0.0-SNAPSHOT</version>
11+
</parent>
12+
13+
<artifactId>streaming-json-validation</artifactId>
14+
15+
<dependencies>
16+
<dependency>
17+
<groupId>com.fasterxml.jackson.core</groupId>
18+
<artifactId>jackson-databind</artifactId>
19+
<version>${version.jackson}</version>
20+
</dependency>
21+
<dependency>
22+
<groupId>org.hibernate.validator</groupId>
23+
<artifactId>hibernate-validator</artifactId>
24+
<version>${version.hibernate-validator}</version>
25+
</dependency>
26+
<dependency>
27+
<groupId>jakarta.annotation</groupId>
28+
<artifactId>jakarta.annotation-api</artifactId>
29+
<version>${version.jakarta-annotation-api}</version>
30+
</dependency>
31+
32+
<dependency>
33+
<groupId>org.assertj</groupId>
34+
<artifactId>assertj-core</artifactId>
35+
<version>${version.assertj-core}</version>
36+
<scope>test</scope>
37+
</dependency>
38+
<dependency>
39+
<groupId>org.junit.jupiter</groupId>
40+
<artifactId>junit-jupiter-api</artifactId>
41+
<version>${version.junit}</version>
42+
<scope>test</scope>
43+
</dependency>
44+
<dependency>
45+
<groupId>org.junit.jupiter</groupId>
46+
<artifactId>junit-jupiter-engine</artifactId>
47+
<version>${version.junit}</version>
48+
<scope>test</scope>
49+
</dependency>
50+
</dependencies>
51+
52+
</project>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
2+
package nl.altindag.validation.model;
3+
4+
import java.util.HashMap;
5+
import java.util.LinkedHashMap;
6+
import java.util.Map;
7+
import jakarta.annotation.Generated;
8+
import com.fasterxml.jackson.annotation.JsonAnyGetter;
9+
import com.fasterxml.jackson.annotation.JsonAnySetter;
10+
import com.fasterxml.jackson.annotation.JsonCreator;
11+
import com.fasterxml.jackson.annotation.JsonIgnore;
12+
import com.fasterxml.jackson.annotation.JsonInclude;
13+
import com.fasterxml.jackson.annotation.JsonProperty;
14+
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
15+
import com.fasterxml.jackson.annotation.JsonValue;
16+
import jakarta.validation.Valid;
17+
18+
@JsonInclude(JsonInclude.Include.NON_NULL)
19+
@JsonPropertyOrder({
20+
"status"
21+
})
22+
@Generated("jsonschema2pojo")
23+
public class AdvancedSecurity {
24+
25+
@JsonProperty("status")
26+
private AdvancedSecurity.Status status;
27+
@JsonIgnore
28+
@Valid
29+
private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
30+
31+
/**
32+
* No args constructor for use in serialization
33+
*
34+
*/
35+
public AdvancedSecurity() {
36+
}
37+
38+
public AdvancedSecurity(Status status) {
39+
super();
40+
this.status = status;
41+
}
42+
43+
@JsonProperty("status")
44+
public AdvancedSecurity.Status getStatus() {
45+
return status;
46+
}
47+
48+
@JsonProperty("status")
49+
public void setStatus(Status status) {
50+
this.status = status;
51+
}
52+
53+
@JsonAnyGetter
54+
public Map<String, Object> getAdditionalProperties() {
55+
return this.additionalProperties;
56+
}
57+
58+
@JsonAnySetter
59+
public void setAdditionalProperty(String name, Object value) {
60+
this.additionalProperties.put(name, value);
61+
}
62+
63+
@Generated("jsonschema2pojo")
64+
public enum Status {
65+
66+
ENABLED("enabled"),
67+
DISABLED("disabled");
68+
private final String value;
69+
private final static Map<String, Status> CONSTANTS = new HashMap<String, Status>();
70+
71+
static {
72+
for (Status c: values()) {
73+
CONSTANTS.put(c.value, c);
74+
}
75+
}
76+
77+
Status(String value) {
78+
this.value = value;
79+
}
80+
81+
@Override
82+
public String toString() {
83+
return this.value;
84+
}
85+
86+
@JsonValue
87+
public String value() {
88+
return this.value;
89+
}
90+
91+
@JsonCreator
92+
public static AdvancedSecurity.Status fromValue(String value) {
93+
Status constant = CONSTANTS.get(value);
94+
if (constant == null) {
95+
throw new IllegalArgumentException(value);
96+
} else {
97+
return constant;
98+
}
99+
}
100+
101+
}
102+
103+
}
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
2+
package nl.altindag.validation.model;
3+
4+
import java.net.URI;
5+
import java.util.LinkedHashMap;
6+
import java.util.Map;
7+
import jakarta.annotation.Generated;
8+
import com.fasterxml.jackson.annotation.JsonAnyGetter;
9+
import com.fasterxml.jackson.annotation.JsonAnySetter;
10+
import com.fasterxml.jackson.annotation.JsonIgnore;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
14+
import jakarta.validation.Valid;
15+
import jakarta.validation.constraints.NotNull;
16+
17+
18+
/**
19+
* Code Of Conduct
20+
* <p>
21+
* Code Of Conduct
22+
*
23+
*/
24+
@JsonInclude(JsonInclude.Include.NON_NULL)
25+
@JsonPropertyOrder({
26+
"key",
27+
"name",
28+
"url",
29+
"body",
30+
"html_url"
31+
})
32+
@Generated("jsonschema2pojo")
33+
public class CodeOfConduct {
34+
35+
/**
36+
*
37+
* (Required)
38+
*
39+
*/
40+
@JsonProperty("key")
41+
@NotNull
42+
private String key;
43+
/**
44+
*
45+
* (Required)
46+
*
47+
*/
48+
@JsonProperty("name")
49+
@NotNull
50+
private String name;
51+
/**
52+
*
53+
* (Required)
54+
*
55+
*/
56+
@JsonProperty("url")
57+
@NotNull
58+
private URI url;
59+
@JsonProperty("body")
60+
private String body;
61+
/**
62+
*
63+
* (Required)
64+
*
65+
*/
66+
@JsonProperty("html_url")
67+
@NotNull
68+
private URI htmlUrl;
69+
@JsonIgnore
70+
@Valid
71+
private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
72+
73+
/**
74+
* No args constructor for use in serialization
75+
*
76+
*/
77+
public CodeOfConduct() {
78+
}
79+
80+
public CodeOfConduct(String key, String name, URI url, String body, URI htmlUrl) {
81+
super();
82+
this.key = key;
83+
this.name = name;
84+
this.url = url;
85+
this.body = body;
86+
this.htmlUrl = htmlUrl;
87+
}
88+
89+
/**
90+
*
91+
* (Required)
92+
*
93+
*/
94+
@JsonProperty("key")
95+
public String getKey() {
96+
return key;
97+
}
98+
99+
/**
100+
*
101+
* (Required)
102+
*
103+
*/
104+
@JsonProperty("key")
105+
public void setKey(String key) {
106+
this.key = key;
107+
}
108+
109+
/**
110+
*
111+
* (Required)
112+
*
113+
*/
114+
@JsonProperty("name")
115+
public String getName() {
116+
return name;
117+
}
118+
119+
/**
120+
*
121+
* (Required)
122+
*
123+
*/
124+
@JsonProperty("name")
125+
public void setName(String name) {
126+
this.name = name;
127+
}
128+
129+
/**
130+
*
131+
* (Required)
132+
*
133+
*/
134+
@JsonProperty("url")
135+
public URI getUrl() {
136+
return url;
137+
}
138+
139+
/**
140+
*
141+
* (Required)
142+
*
143+
*/
144+
@JsonProperty("url")
145+
public void setUrl(URI url) {
146+
this.url = url;
147+
}
148+
149+
@JsonProperty("body")
150+
public String getBody() {
151+
return body;
152+
}
153+
154+
@JsonProperty("body")
155+
public void setBody(String body) {
156+
this.body = body;
157+
}
158+
159+
/**
160+
*
161+
* (Required)
162+
*
163+
*/
164+
@JsonProperty("html_url")
165+
public URI getHtmlUrl() {
166+
return htmlUrl;
167+
}
168+
169+
/**
170+
*
171+
* (Required)
172+
*
173+
*/
174+
@JsonProperty("html_url")
175+
public void setHtmlUrl(URI htmlUrl) {
176+
this.htmlUrl = htmlUrl;
177+
}
178+
179+
@JsonAnyGetter
180+
public Map<String, Object> getAdditionalProperties() {
181+
return this.additionalProperties;
182+
}
183+
184+
@JsonAnySetter
185+
public void setAdditionalProperty(String name, Object value) {
186+
this.additionalProperties.put(name, value);
187+
}
188+
189+
}

0 commit comments

Comments
 (0)