Skip to content

Commit e4f27cb

Browse files
DX-3178, DX-3179, DX-3180
Added the Root, Verb, and Terminal Verb and classes
1 parent ba9efd9 commit e4f27cb

File tree

8 files changed

+414
-0
lines changed

8 files changed

+414
-0
lines changed

pom.xml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,18 @@
258258

259259
<dependencies>
260260

261+
<dependency>
262+
<groupId>com.fasterxml.jackson.dataformat</groupId>
263+
<artifactId>jackson-dataformat-xml</artifactId>
264+
<version>2.13.0</version>
265+
</dependency>
266+
<dependency>
267+
<groupId>org.projectlombok</groupId>
268+
<artifactId>lombok</artifactId>
269+
<version>1.18.24</version>
270+
<scope>provided</scope>
271+
</dependency>
272+
261273
<dependency>
262274
<groupId>org.hamcrest</groupId>
263275
<artifactId>hamcrest</artifactId>
@@ -360,4 +372,21 @@
360372
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
361373
<spotless.version>2.21.0</spotless.version>
362374
</properties>
375+
376+
377+
<dependencyManagement>
378+
<dependencies>
379+
<dependency>
380+
<groupId>com.fasterxml.jackson.core</groupId>
381+
<artifactId>jackson-databind</artifactId>
382+
<version>2.13.3</version>
383+
</dependency>
384+
<dependency>
385+
<groupId>org.projectlombok</groupId>
386+
<artifactId>lombok</artifactId>
387+
<version>1.18.24</version>
388+
<scope>provided</scope>
389+
</dependency>
390+
</dependencies>
391+
</dependencyManagement>
363392
</project>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.openapitools.client.model.bxml;
2+
3+
import java.util.List;
4+
5+
public class Bxml extends Root {
6+
7+
public Bxml() {
8+
super("Bxml");
9+
}
10+
11+
public Bxml(List<Verb> nestedVerbs) {
12+
super("Bxml", nestedVerbs);
13+
}
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.openapitools.client.model.bxml;
2+
3+
import java.util.List;
4+
5+
public class Response extends Root {
6+
7+
public Response() {
8+
super("Response");
9+
}
10+
11+
public Response(List<Verb> nestedVerbs) {
12+
super("Response", nestedVerbs);
13+
}
14+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package org.openapitools.client.model.bxml;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
6+
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
7+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
8+
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
9+
10+
import lombok.Data;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
@Data
16+
public class Root {
17+
private String tag;
18+
@JacksonXmlElementWrapper(useWrapping = false)
19+
private List<Verb> nestedVerbs;
20+
21+
public Root(String tag, List<Verb> nestedVerbs) {
22+
this.tag = tag;
23+
this.nestedVerbs = (nestedVerbs == null) ? new ArrayList<>() : nestedVerbs;
24+
}
25+
26+
public Root(String tag) {
27+
this.tag = tag;
28+
this.nestedVerbs = new ArrayList<>();
29+
}
30+
31+
public int length() {
32+
return nestedVerbs.size();
33+
}
34+
35+
public Verb getVerb(int position) {
36+
return nestedVerbs.get(position);
37+
}
38+
39+
public void addVerb(Verb verb) {
40+
nestedVerbs.add(verb);
41+
}
42+
43+
public List<Verb> getNestedVerbs() {
44+
return nestedVerbs;
45+
}
46+
47+
public void setNestedVerbs(List<Verb> nestedVerbs) {
48+
this.nestedVerbs = nestedVerbs;
49+
}
50+
51+
public String toBxml() throws JsonProcessingException {
52+
ObjectMapper mapper = new ObjectMapper();
53+
ObjectNode root = mapper.createObjectNode();
54+
XmlMapper xmlMapper = new XmlMapper();
55+
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
56+
xmlMapper.writerWithDefaultPrettyPrinter();
57+
addVerbsToBxml(root);
58+
return xmlMapper.writer().withRootName(tag).writeValueAsString(root);
59+
}
60+
61+
private void addVerbsToBxml(ObjectNode root) {
62+
if (this.nestedVerbs != null) {
63+
for (Verb verb : this.nestedVerbs) {
64+
if (verb.getNestedVerbs() != null && !verb.getNestedVerbs().isEmpty() && verb.getContent() != null) {
65+
ObjectNode child = root.putObject(verb.getTag());
66+
child.put(verb.getTag(), verb.getContent());
67+
verb.addVerbsToBxml(child);
68+
}
69+
else if (verb.getNestedVerbs() != null && !verb.getNestedVerbs().isEmpty()) {
70+
ObjectNode child = root.putObject(verb.getTag());
71+
verb.addVerbsToBxml(child);
72+
}
73+
else {
74+
root.put(verb.getTag(), verb.getContent());
75+
}
76+
}
77+
}
78+
}
79+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.openapitools.client.model.bxml;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
6+
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
7+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
8+
9+
import lombok.Data;
10+
11+
@Data
12+
public class TerminalVerb extends Verb {
13+
14+
public TerminalVerb() {
15+
super();
16+
}
17+
18+
public TerminalVerb(String tag, String content) {
19+
super(tag, content, null);
20+
21+
}
22+
23+
public TerminalVerb(String tag) {
24+
super();
25+
}
26+
27+
@Override
28+
public void addVerb(Verb verb) {
29+
throw new UnsupportedOperationException("Adding verbs is not supported by this verb");
30+
}
31+
32+
@Override
33+
public String toBxml() throws JsonProcessingException {
34+
ObjectMapper mapper = new ObjectMapper();
35+
XmlMapper xmlMapper = new XmlMapper();
36+
xmlMapper.writerWithDefaultPrettyPrinter();
37+
return xmlMapper.writer().withRootName(tag).writeValueAsString(this.content);
38+
}
39+
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package org.openapitools.client.model.bxml;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
6+
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
7+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
8+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
9+
10+
import lombok.Data;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
16+
@Data
17+
public class Verb {
18+
protected String tag;
19+
@JacksonXmlText
20+
protected String content;
21+
@JacksonXmlElementWrapper(useWrapping = false)
22+
protected List<Verb> nestedVerbs;
23+
24+
public Verb() {
25+
}
26+
27+
public Verb(String tag, String content, List<Verb> nestedVerbs) {
28+
this.tag = tag;
29+
this.content = content;
30+
this.nestedVerbs = (nestedVerbs == null) ? new ArrayList<>() : nestedVerbs;
31+
}
32+
33+
public Verb(String tag, String content) {
34+
this.tag = tag;
35+
this.content = content;
36+
this.nestedVerbs = new ArrayList<>();
37+
}
38+
39+
public Verb(String tag) {
40+
this.tag = tag;
41+
this.nestedVerbs = new ArrayList<>();
42+
}
43+
44+
public int length() {
45+
return nestedVerbs.size();
46+
}
47+
48+
public Verb getVerb(int position) {
49+
return nestedVerbs.get(position);
50+
}
51+
52+
public void addVerb(Verb verb) {
53+
nestedVerbs.add(verb);
54+
}
55+
56+
public String getTag() {
57+
return tag;
58+
}
59+
60+
public void setTag(String tag) {
61+
this.tag = tag;
62+
}
63+
64+
public String getContent() {
65+
return content;
66+
}
67+
68+
public void setContent(String content) {
69+
this.content = content;
70+
}
71+
72+
public List<Verb> getNestedVerbs() {
73+
return nestedVerbs;
74+
}
75+
76+
public void setNestedVerbs(List<Verb> nestedVerbs) {
77+
this.nestedVerbs = nestedVerbs;
78+
}
79+
80+
public String toBxml() throws JsonProcessingException {
81+
ObjectMapper mapper = new ObjectMapper();
82+
ObjectNode root = mapper.createObjectNode();
83+
XmlMapper xmlMapper = new XmlMapper();
84+
xmlMapper.writerWithDefaultPrettyPrinter();
85+
addVerbsToBxml(root);
86+
return xmlMapper.writer().withRootName(tag).writeValueAsString(root);
87+
}
88+
89+
public void addVerbsToBxml(ObjectNode root) {
90+
if (this.nestedVerbs != null) {
91+
for (Verb verb : this.nestedVerbs) {
92+
if (verb.nestedVerbs != null && !verb.nestedVerbs.isEmpty() && verb.content != null) {
93+
ObjectNode child = root.putObject(verb.tag);
94+
child.put(verb.tag, verb.content);
95+
verb.addVerbsToBxml(child);
96+
}
97+
else if (verb.nestedVerbs != null && !verb.nestedVerbs.isEmpty()) {
98+
ObjectNode child = root.putObject(verb.tag);
99+
verb.addVerbsToBxml(child);
100+
}
101+
else {
102+
root.put(verb.tag, verb.content);
103+
}
104+
}
105+
}
106+
}
107+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.openapitools.client.model.bxml.verbs;
2+
3+
import org.openapitools.client.model.bxml.TerminalVerb;
4+
import org.openapitools.client.model.bxml.Root;
5+
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
8+
9+
public class Tag extends TerminalVerb {
10+
11+
@JacksonXmlText()
12+
private String content;
13+
14+
public Tag() {
15+
super("Tag");
16+
}
17+
18+
public Tag(String content) {
19+
super("Tag");
20+
this.content = content;
21+
}
22+
23+
@Override
24+
public String getContent() {
25+
return content;
26+
}
27+
28+
@Override
29+
public void setContent(String content) {
30+
this.content = content;
31+
}
32+
}

0 commit comments

Comments
 (0)