Skip to content

Commit a54721f

Browse files
committed
PR ebean-orm#3146 - FIX: ScalarTypes can handle String values
1 parent a71ef12 commit a54721f

6 files changed

Lines changed: 27 additions & 12 deletions

File tree

ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeBoolean.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
import com.fasterxml.jackson.core.JsonGenerator;
44
import com.fasterxml.jackson.core.JsonParser;
5-
import com.fasterxml.jackson.core.JsonToken;
6-
import io.ebean.core.type.DataBinder;
7-
import io.ebean.core.type.DataReader;
8-
import io.ebean.core.type.DocPropertyType;
9-
import io.ebean.core.type.ScalarTypeBase;
10-
import io.ebean.core.type.BasicTypeConverter;
5+
import io.ebean.core.type.*;
116

127
import java.io.DataInput;
138
import java.io.DataOutput;
@@ -348,8 +343,8 @@ public void writeData(DataOutput dataOutput, Boolean val) throws IOException {
348343
}
349344

350345
@Override
351-
public Boolean jsonRead(JsonParser parser) {
352-
return JsonToken.VALUE_TRUE == parser.getCurrentToken() ? Boolean.TRUE : Boolean.FALSE;
346+
public Boolean jsonRead(JsonParser parser) throws IOException {
347+
return parser.getValueAsBoolean();
353348
}
354349

355350
@Override

ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeDouble.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void writeData(DataOutput dataOutput, Double value) throws IOException {
7878

7979
@Override
8080
public Double jsonRead(JsonParser parser) throws IOException {
81-
return parser.getDoubleValue();
81+
return parser.getValueAsDouble();
8282
}
8383

8484
@Override

ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeInteger.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.core.JsonGenerator;
44
import com.fasterxml.jackson.core.JsonParser;
5+
import com.fasterxml.jackson.core.JsonToken;
56
import io.ebean.core.type.DataBinder;
67
import io.ebean.core.type.DataReader;
78
import io.ebean.core.type.DocPropertyType;
@@ -88,7 +89,7 @@ public Integer parse(String value) {
8889

8990
@Override
9091
public Integer jsonRead(JsonParser parser) throws IOException {
91-
return parser.getIntValue();
92+
return parser.getValueAsInt();
9293
}
9394

9495
@Override

ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeLong.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public void writeData(DataOutput dataOutput, Long value) throws IOException {
8888

8989
@Override
9090
public Long jsonRead(JsonParser parser) throws IOException {
91-
return parser.getLongValue();
91+
return parser.getValueAsLong();
9292
}
9393

9494
@Override

ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeYear.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public Year parse(String value) {
8383

8484
@Override
8585
public Year jsonRead(JsonParser parser) throws IOException {
86-
return Year.of(parser.getIntValue());
86+
return Year.of(parser.getValueAsInt());
8787
}
8888

8989
@Override

ebean-core/src/test/java/io/ebeaninternal/server/type/ScalarTypeIntegerTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package io.ebeaninternal.server.type;
22

33

4+
import com.fasterxml.jackson.core.JsonParser;
5+
import io.ebean.DB;
46
import org.junit.jupiter.api.Test;
57

8+
import java.io.IOException;
9+
import java.io.StringReader;
10+
611
import static org.assertj.core.api.Assertions.assertThat;
712

813
public class ScalarTypeIntegerTest {
@@ -19,4 +24,18 @@ public void format_when_integer() {
1924
assertThat(type.format(1)).isEqualTo("1");
2025
}
2126

27+
@Test
28+
public void json() throws IOException {
29+
30+
JsonParser parser = DB.json().createParser(new StringReader("1"));
31+
parser.nextToken();
32+
Object parsed = type.jsonRead(parser);
33+
assertThat(parsed).isEqualTo(1);
34+
35+
parser = DB.json().createParser(new StringReader("\"1.0\""));
36+
parser.nextToken();
37+
parsed = type.jsonRead(parser);
38+
assertThat(parsed).isEqualTo(1);
39+
}
40+
2241
}

0 commit comments

Comments
 (0)