Skip to content

Commit 13f445b

Browse files
committed
Update example1
Refactored the main method in example1 to split out parts into new static methods so they may be used outside of the class. Added a junit implementation of example1 which uses the above mentioned static methods.
1 parent 8d02b44 commit 13f445b

File tree

4 files changed

+118
-14
lines changed

4 files changed

+118
-14
lines changed

example/example1/pom.xml

+20
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,12 @@
4343
<maven.compiler.source>${jdk.version}</maven.compiler.source>
4444
<maven.compiler.target>${jdk.version}</maven.compiler.target>
4545
<maven.compiler.plugin>3.8.1</maven.compiler.plugin>
46+
<maven.surefire.plugin>2.22.2</maven.surefire.plugin>
4647
<maven.jar.plugin>3.2.0</maven.jar.plugin>
4748

4849
<javax.json.version>1.1.4</javax.json.version>
4950
<jsonurl.version>1.0.0-SNAPSHOT</jsonurl.version>
51+
<junit.version>[5.4,)</junit.version>
5052

5153
<jsonurl.scm.path>jsonurl/jsonurl-java</jsonurl.scm.path>
5254
<jsonurl.scm.base>scm:git:git@github.com:${jsonurl.scm.path}.git</jsonurl.scm.base>
@@ -95,12 +97,25 @@
9597
<artifactId>javax.json-api</artifactId>
9698
<version>${javax.json.version}</version>
9799
</dependency>
100+
98101
<dependency>
99102
<groupId>org.glassfish</groupId>
100103
<artifactId>javax.json</artifactId>
101104
<version>${javax.json.version}</version>
102105
<scope>test</scope>
103106
</dependency>
107+
<dependency>
108+
<groupId>org.junit.jupiter</groupId>
109+
<artifactId>junit-jupiter-engine</artifactId>
110+
<version>${junit.version}</version>
111+
<scope>test</scope>
112+
</dependency>
113+
<dependency>
114+
<groupId>org.junit.jupiter</groupId>
115+
<artifactId>junit-jupiter-params</artifactId>
116+
<version>${junit.version}</version>
117+
<scope>test</scope>
118+
</dependency>
104119
</dependencies>
105120

106121
<build>
@@ -110,6 +125,11 @@
110125
<artifactId>maven-compiler-plugin</artifactId>
111126
<version>${maven.compiler.plugin}</version>
112127
</plugin>
128+
<plugin>
129+
<groupId>org.apache.maven.plugins</groupId>
130+
<artifactId>maven-surefire-plugin</artifactId>
131+
<version>${maven.surefire.plugin}</version>
132+
</plugin>
113133
</plugins>
114134
</build>
115135
</project>

example/example1/src/main/java/org/jsonurl/example1/Main.java

+49-12
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,81 @@
66
import javax.json.JsonArray;
77
import javax.json.JsonBuilderFactory;
88
import javax.json.JsonException;
9+
import javax.json.JsonObject;
10+
import javax.json.JsonValue;
911
import javax.json.JsonWriter;
1012
import org.jsonurl.JsonUrlStringBuilder;
1113
import org.jsonurl.jsonp.JsonUrlParser;
1214
import org.jsonurl.jsonp.JsonUrlWriter;
1315

1416
public class Main {
15-
17+
1618
/**
17-
* OS entry point.
19+
* Return an example value.
1820
*/
19-
public static final void main(String[] args)
20-
throws JsonException, IOException {
21-
21+
public static final JsonArray getExampleValue() {
2222
JsonBuilderFactory jbf = Json.createBuilderFactory(
2323
Collections.emptyMap());
2424

25-
JsonArray jo = jbf.createArrayBuilder()
25+
return jbf.createArrayBuilder()
2626
.add(jbf.createObjectBuilder()
2727
.add("id", 1)
2828
.add("name", jbf.createObjectBuilder()
2929
.add("firstName", "Montgomery")
30-
.add("lastName", "Burns")))
30+
.add("lastName", "Burns")
31+
.add("evil", true)
32+
.add("age", JsonObject.NULL)))
3133
.add(jbf.createObjectBuilder()
3234
.add("id", 2)
3335
.add("name", jbf.createObjectBuilder()
3436
.add("firstName", "Homer")
35-
.add("lastName", "Simpson")))
37+
.add("lastName", "Simpson")
38+
.add("evil", false)
39+
.add("age", 36)
40+
.add("oddKeyName=", false)
41+
.add("oddKeyName&", true)
42+
.add("101.5", 101.5)
43+
.add("1e1", 1e1)
44+
.add("15e+1", 15e+1)
45+
.add("16e-1", 16e-1)
46+
.add("\"text\"", "funny+key")))
3647
.build();
48+
}
3749

50+
/**
51+
* Serialize the given JsonArray and return a String.
52+
*/
53+
public static final String getExampleValueText(JsonArray value) throws IOException {
3854
JsonUrlStringBuilder text = new JsonUrlStringBuilder();
55+
JsonUrlWriter.write(text, value);
56+
return text.build();
57+
}
3958

40-
JsonUrlWriter.write(text, jo);
41-
String jsonUrl = text.build();
59+
/**
60+
* OS entry point.
61+
*/
62+
public static final void main(String[] args)
63+
throws JsonException, IOException {
4264

43-
System.out.println(jsonUrl);
65+
//
66+
// get my example value as a POJO
67+
//
68+
JsonArray value = getExampleValue();
4469

70+
//
71+
// turn that into text
72+
//
73+
String jsonUrlText = getExampleValueText(value);
74+
75+
System.out.println(jsonUrlText);
76+
77+
//
78+
// parse the text and build a JsonArray
79+
//
4580
JsonUrlParser p = new JsonUrlParser();
81+
JsonValue parsedValue = p.parse(jsonUrlText);
82+
4683
JsonWriter jout = Json.createWriter(System.out);
47-
jout.write(p.parse(jsonUrl));
84+
jout.write(parsedValue);
4885
}
4986
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.jsonurl.example1;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.io.IOException;
6+
import javax.json.JsonArray;
7+
import javax.json.JsonException;
8+
import javax.json.JsonValue;
9+
import org.jsonurl.JsonUrlStringBuilder;
10+
import org.jsonurl.example1.Main;
11+
import org.jsonurl.jsonp.JsonUrlParser;
12+
import org.jsonurl.jsonp.JsonUrlWriter;
13+
import org.junit.jupiter.api.Test;
14+
15+
class Example1Test {
16+
17+
@Test
18+
void test() throws JsonException, IOException {
19+
//
20+
// get my example value as a POJO
21+
//
22+
JsonArray value = Main.getExampleValue();
23+
24+
//
25+
// turn that into JSON->URL text
26+
//
27+
JsonUrlStringBuilder text = new JsonUrlStringBuilder();
28+
JsonUrlWriter.write(text, value);
29+
String jsonUrlText = text.build();
30+
31+
//
32+
// parse the JSON->URL text and build a JsonArray
33+
//
34+
JsonUrlParser p = new JsonUrlParser();
35+
JsonValue parsedValue = p.parse(jsonUrlText);
36+
37+
//
38+
// it should be the same as the original
39+
//
40+
assertEquals(value, parsedValue);
41+
}
42+
}

module/jsonurl-jsr374/src/main/java/org/jsonurl/jsonp/JsonpValueFactory.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,13 @@ public abstract class JsonpValueFactory implements ValueFactory<
5757
@Override
5858
public JsonNumber getNumber(NumberText text) {
5959
Number m = NumberBuilder.build(text, true);
60-
return Json.createValue(
61-
m instanceof Long ? m.longValue() : m.doubleValue());
60+
61+
if (m instanceof Long) {
62+
return Json.createValue(m.longValue());
63+
64+
} else {
65+
return Json.createValue(m.doubleValue());
66+
}
6267
}
6368
};
6469

0 commit comments

Comments
 (0)