Skip to content

Commit a96b4f8

Browse files
committed
Add charset config
1 parent 8049eae commit a96b4f8

File tree

8 files changed

+38
-31
lines changed

8 files changed

+38
-31
lines changed

jsurfer-all/src/test/java/org/jsfr/json/JacksonParserTest.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ public void testNonBlockingParser() throws Exception {
7676
verify(mockListener).onValue(eq(provider.primitive("abcd")), any(ParsingContext.class));
7777
}
7878

79-
@Ignore
8079
@Test
80+
@Ignore
8181
public void testProtobufParser() throws Exception {
8282
JsonPathListener mockListener = mock(JsonPathListener.class);
8383

@@ -90,21 +90,14 @@ public void testProtobufParser() throws Exception {
9090
+ "}\n";
9191
final ProtobufSchema schema = ProtobufSchemaLoader.std.parse(protobuf_str);
9292

93-
// Employee boss = new Employee();
94-
// boss.age = 30;
95-
// boss.emails = new String[]{"bar@gmail.com"};
96-
// boss.name = "bar";
97-
9893
Employee empl = new Employee();
9994
empl.age = 30;
10095
empl.emails = new String[]{"foo@gmail.com"};
10196
empl.name = "foo";
102-
// empl.boss = boss;
10397

10498
byte[] protobufData = mapper.writer(schema)
10599
.writeValueAsBytes(empl);
106-
107-
// TODO Jackson's bug
100+
// TODO Jackson's bug to be fixed in 2.9.6
108101
JsonSurfer protobufSurfer = new JsonSurfer(new JacksonParser(new ProtobufFactory(), schema), provider);
109102
SurfingConfiguration config = protobufSurfer.configBuilder().bind("$.name", mockListener).build();
110103
protobufSurfer.surf(new ByteArrayInputStream(protobufData), config);

jsurfer-benchmark/src/main/java/org/jsfr/json/BenchmarkCollectObject.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import org.openjdk.jmh.runner.options.Options;
4040
import org.openjdk.jmh.runner.options.OptionsBuilder;
4141

42-
import java.nio.charset.Charset;
42+
import java.nio.charset.StandardCharsets;
4343
import java.util.Map;
4444
import java.util.concurrent.TimeUnit;
4545

@@ -72,8 +72,8 @@ public void onTypedValue(Object value, ParsingContext context) {
7272
blackhole.consume(value);
7373
}
7474
};
75-
surfingConfiguration = SurfingConfiguration.builder().bind("$.store.book[*]", Map.class, collectOneListener).build();
76-
json = Resources.toString(Resources.getResource("sample.json"), Charset.forName("UTF-8"));
75+
surfingConfiguration = SurfingConfiguration.builder().bind("$.store.book[*]", Map.class, collectOneListener).withCharset(StandardCharsets.UTF_8).build();
76+
json = Resources.toString(Resources.getResource("sample.json"), StandardCharsets.UTF_8);
7777
}
7878

7979

jsurfer-benchmark/src/main/java/org/jsfr/json/BenchmarkCollectSingleValue.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,9 @@
4646
import org.openjdk.jmh.runner.options.OptionsBuilder;
4747
import org.slf4j.Logger;
4848
import org.slf4j.LoggerFactory;
49-
import profilers.FlightRecordingProfiler;
5049

5150
import java.io.IOException;
52-
import java.io.StringReader;
53-
import java.nio.charset.Charset;
51+
import java.nio.charset.StandardCharsets;
5452
import java.util.Iterator;
5553
import java.util.concurrent.TimeUnit;
5654

@@ -82,8 +80,8 @@ public void setup() throws Exception {
8280
simpleSurfer = JsonSurferJsonSimple.INSTANCE;
8381
fastjsonSurfer = JsonSurferFastJson.INSTANCE;
8482
collectOneListener = new CollectOneListener(true);
85-
surfingConfiguration = SurfingConfiguration.builder().bind("$.store.book[0].author", collectOneListener).build();
86-
json = Resources.toString(Resources.getResource("sample.json"), Charset.forName("UTF-8"));
83+
surfingConfiguration = SurfingConfiguration.builder().bind("$.store.book[0].author", collectOneListener).withCharset(StandardCharsets.UTF_8).build();
84+
json = Resources.toString(Resources.getResource("sample.json"), StandardCharsets.UTF_8);
8785
}
8886

8987
@Benchmark

jsurfer-benchmark/src/main/java/org/jsfr/json/BenchmarkParseLargeJson.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,9 @@
4141
import org.openjdk.jmh.runner.options.OptionsBuilder;
4242
import org.slf4j.Logger;
4343
import org.slf4j.LoggerFactory;
44-
import profilers.FlightRecordingProfiler;
4544

4645
import java.io.IOException;
47-
import java.nio.charset.Charset;
46+
import java.nio.charset.StandardCharsets;
4847
import java.util.concurrent.TimeUnit;
4948

5049
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
@@ -79,8 +78,8 @@ public void onValue(Object value, ParsingContext context) {
7978
blackhole.consume(value);
8079
}
8180
};
82-
surfingConfiguration = SurfingConfiguration.builder().bind(jsonPath, blackHoleListener).skipOverlappedPath().build();
83-
json = Resources.toString(Resources.getResource("allthethings.json"), Charset.forName("UTF-8"));
81+
surfingConfiguration = SurfingConfiguration.builder().bind(jsonPath, blackHoleListener).skipOverlappedPath().withCharset(StandardCharsets.UTF_8).build();
82+
json = Resources.toString(Resources.getResource("allthethings.json"), StandardCharsets.UTF_8);
8483
}
8584

8685
@Benchmark

jsurfer-benchmark/src/main/java/org/jsfr/json/BenchmarkParseLargeJsonWithoutStreaming.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
import org.slf4j.LoggerFactory;
4949

5050
import java.io.IOException;
51-
import java.nio.charset.Charset;
51+
import java.nio.charset.StandardCharsets;
5252
import java.util.Iterator;
5353
import java.util.Map;
5454
import java.util.concurrent.TimeUnit;
@@ -70,7 +70,7 @@ public class BenchmarkParseLargeJsonWithoutStreaming {
7070
public void setup() throws IOException {
7171
gson = new GsonBuilder().create();
7272
om = new ObjectMapper();
73-
json = Resources.toString(Resources.getResource("allthethings.json"), Charset.forName("UTF-8"));
73+
json = Resources.toString(Resources.getResource("allthethings.json"), StandardCharsets.UTF_8);
7474
}
7575

7676
@Benchmark

jsurfer-benchmark/src/main/java/org/jsfr/json/BenchmarkParseLongText.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import org.slf4j.LoggerFactory;
4545

4646
import java.io.IOException;
47-
import java.nio.charset.Charset;
47+
import java.nio.charset.StandardCharsets;
4848
import java.util.Map;
4949
import java.util.concurrent.TimeUnit;
5050

@@ -74,10 +74,10 @@ public void setup() throws Exception {
7474
simpleSurfer = JsonSurferJsonSimple.INSTANCE;
7575
fastjsonSurfer = JsonSurferFastJson.INSTANCE;
7676
collectOneListener = new CollectOneListener(true);
77-
surfingConfiguration = SurfingConfiguration.builder().bind("$.findMe", collectOneListener).build();
77+
surfingConfiguration = SurfingConfiguration.builder().bind("$.findMe", collectOneListener).withCharset(StandardCharsets.UTF_8).build();
7878
gson = new GsonBuilder().create();
7979
om = new ObjectMapper();
80-
json = Resources.toString(Resources.getResource("longText.json"), Charset.forName("UTF-8"));
80+
json = Resources.toString(Resources.getResource("longText.json"), StandardCharsets.UTF_8);
8181
}
8282

8383
@Benchmark

jsurfer-core/src/main/java/org/jsfr/json/JsonSurfer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,9 @@ private void ensureSetting(SurfingConfiguration configuration) {
517517
if (configuration.getErrorHandlingStrategy() == null) {
518518
configuration.setErrorHandlingStrategy(errorHandlingStrategy);
519519
}
520+
if (configuration.getParserCharset() == null) {
521+
configuration.setParserCharset(parserCharset);
522+
}
520523
}
521524

522525
public Charset getParserCharset() {

jsurfer-core/src/main/java/org/jsfr/json/SurfingConfiguration.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@
4343
*/
4444
public class SurfingConfiguration {
4545

46-
static Builder builder() {
46+
public static Builder builder() {
4747
Builder builder = new Builder();
4848
builder.configuration = new SurfingConfiguration();
4949
return builder;
5050
}
5151

5252
public static class Binding {
5353

54-
public Binding(JsonPath jsonPath, JsonPathListener[] listeners) {
54+
Binding(JsonPath jsonPath, JsonPathListener[] listeners) {
5555
this.jsonPath = jsonPath;
5656
this.listeners = listeners;
5757
}
@@ -65,7 +65,7 @@ public static class IndefinitePathBinding extends Binding {
6565

6666
int minimumPathDepth;
6767

68-
public IndefinitePathBinding(JsonPath jsonPath, JsonPathListener[] listeners, int minimumPathDepth) {
68+
IndefinitePathBinding(JsonPath jsonPath, JsonPathListener[] listeners, int minimumPathDepth) {
6969
super(jsonPath, listeners);
7070
this.minimumPathDepth = minimumPathDepth;
7171
}
@@ -90,10 +90,20 @@ public SurfingConfiguration build() {
9090
configuration.definitePathLookup[entry.getKey() - configuration.minDepth] = entry.getValue().toArray(new Binding[entry.getValue().size()]);
9191
}
9292
}
93-
configuration.parserCharset = jsonSurfer.getParserCharset();
9493
return configuration;
9594
}
9695

96+
/**
97+
* Associated with a Charset
98+
*
99+
* @param charset charset
100+
* @return builder
101+
*/
102+
public Builder withCharset(Charset charset) {
103+
configuration.parserCharset = charset;
104+
return this;
105+
}
106+
97107
/**
98108
* Associated with a JsonSurfer
99109
*
@@ -257,7 +267,7 @@ void setErrorHandlingStrategy(ErrorHandlingStrategy errorHandlingStrategy) {
257267
this.errorHandlingStrategy = errorHandlingStrategy;
258268
}
259269

260-
public boolean withinRange(int currentDepth) {
270+
private boolean withinRange(int currentDepth) {
261271
return minDepth <= currentDepth && currentDepth <= maxDepth;
262272
}
263273

@@ -273,4 +283,8 @@ public Charset getParserCharset() {
273283
return parserCharset;
274284
}
275285

286+
public void setParserCharset(Charset parserCharset) {
287+
this.parserCharset = parserCharset;
288+
}
289+
276290
}

0 commit comments

Comments
 (0)