Skip to content

Commit e172387

Browse files
authored
Handle default field values properly (#106)
* handle default field values properly * rename test
1 parent b653c5e commit e172387

File tree

9 files changed

+89
-23
lines changed

9 files changed

+89
-23
lines changed

src/main/java/com/aerospike/mapper/tools/mappers/BooleanMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ public class BooleanMapper extends TypeMapper {
77
@Override
88
public Object toAerospikeFormat(Object value) {
99
if (value == null) {
10-
return 0;
10+
return null;
1111
}
1212
return ((Boolean) value) ? 1 : 0;
1313
}
1414

1515
@Override
1616
public Object fromAerospikeFormat(Object value) {
1717
if (value == null) {
18-
return false;
18+
return null;
1919
}
2020
return !Long.valueOf(0).equals(value);
2121
}

src/main/java/com/aerospike/mapper/tools/mappers/ByteMapper.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ public class ByteMapper extends TypeMapper {
66

77
@Override
88
public Object toAerospikeFormat(Object value) {
9-
return Long.valueOf(((Number) value).longValue());
9+
if (value == null) {
10+
return null;
11+
}
12+
return ((Number) value).longValue();
1013
}
1114

1215
@Override
1316
public Object fromAerospikeFormat(Object value) {
1417
if (value == null) {
15-
return Byte.valueOf((byte) 0);
18+
return null;
1619
}
17-
return Byte.valueOf(((Number) value).byteValue());
20+
return ((Number) value).byteValue();
1821
}
1922
}

src/main/java/com/aerospike/mapper/tools/mappers/CharacterMapper.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ public class CharacterMapper extends TypeMapper {
77
@Override
88
public Object toAerospikeFormat(Object value) {
99
if (value == null) {
10-
return Long.valueOf(0);
10+
return null;
1111
} else {
12-
char c = ((Character) value).charValue();
13-
return Long.valueOf(c);
12+
char c = (Character) value;
13+
return (long) c;
1414
}
1515
}
1616

1717
@Override
1818
public Object fromAerospikeFormat(Object value) {
1919
if (value == null) {
20-
return Character.valueOf((char) 0);
20+
return null;
2121
}
2222
long longVal = ((Number) value).longValue();
23-
return Character.valueOf((char) longVal);
23+
return (char) longVal;
2424
}
2525
}

src/main/java/com/aerospike/mapper/tools/mappers/DoubleMapper.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ public Object toAerospikeFormat(Object value) {
1111

1212
@Override
1313
public Object fromAerospikeFormat(Object value) {
14-
if (value == null) {
15-
return Double.valueOf(0);
16-
}
1714
return value;
1815
}
1916
}

src/main/java/com/aerospike/mapper/tools/mappers/FloatMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public Object toAerospikeFormat(Object value) {
1212
@Override
1313
public Object fromAerospikeFormat(Object value) {
1414
if (value == null) {
15-
return Float.valueOf(0f);
15+
return null;
1616
}
17-
return Float.valueOf(((Number) value).floatValue());
17+
return ((Number) value).floatValue();
1818
}
1919
}

src/main/java/com/aerospike/mapper/tools/mappers/IntMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public Object toAerospikeFormat(Object value) {
1212
@Override
1313
public Object fromAerospikeFormat(Object value) {
1414
if (value == null) {
15-
return Integer.valueOf(0);
15+
return null;
1616
}
17-
return Integer.valueOf(((Number) value).intValue());
17+
return ((Number) value).intValue();
1818
}
1919
}

src/main/java/com/aerospike/mapper/tools/mappers/LongMapper.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ public Object toAerospikeFormat(Object value) {
1111

1212
@Override
1313
public Object fromAerospikeFormat(Object value) {
14-
if (value == null) {
15-
return Long.valueOf(0);
16-
}
1714
return value;
1815
}
1916
}

src/main/java/com/aerospike/mapper/tools/mappers/ShortMapper.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ public class ShortMapper extends TypeMapper {
66

77
@Override
88
public Object toAerospikeFormat(Object value) {
9-
return Long.valueOf(((Number) value).longValue());
9+
if (value == null) {
10+
return null;
11+
}
12+
return ((Number) value).longValue();
1013
}
1114

1215
@Override
1316
public Object fromAerospikeFormat(Object value) {
1417
if (value == null) {
15-
return Short.valueOf((short) 0);
18+
return null;
1619
}
17-
return Short.valueOf(((Number) value).shortValue());
20+
return ((Number) value).shortValue();
1821
}
1922
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.aerospike.mapper;
2+
3+
import com.aerospike.client.policy.WritePolicy;
4+
import com.aerospike.mapper.annotations.AerospikeKey;
5+
import com.aerospike.mapper.annotations.AerospikeRecord;
6+
import com.aerospike.mapper.tools.AeroMapper;
7+
import org.junit.jupiter.api.Test;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
11+
public class DefaultFieldValuesTest extends AeroMapperBaseTest {
12+
13+
@AerospikeRecord(namespace = "test", set = "testSet")
14+
public static class DefaultFieldsClass {
15+
@AerospikeKey
16+
String key;
17+
Integer i;
18+
int i2;
19+
Long l;
20+
long l2;
21+
Short s;
22+
short s2;
23+
Float f;
24+
float f2;
25+
Double d;
26+
double d2;
27+
Character c;
28+
char c2;
29+
Byte b;
30+
byte b2;
31+
Boolean bool;
32+
boolean bool2;
33+
}
34+
35+
@Test
36+
public void testDefaultValues() {
37+
WritePolicy writePolicy = new WritePolicy(client.getWritePolicyDefault());
38+
writePolicy.totalTimeout = 2000;
39+
writePolicy.socketTimeout = 100;
40+
AeroMapper mapper = new AeroMapper.Builder(client)
41+
.withWritePolicy(writePolicy).forClasses(PartialRecordsTest.DataClass.class)
42+
.build();
43+
44+
DefaultFieldsClass obj = new DefaultFieldsClass();
45+
obj.key = "dfc";
46+
mapper.save(obj);
47+
48+
DefaultFieldsClass dfc = mapper.read(DefaultFieldsClass.class, "dfc");
49+
assertNull(dfc.i);
50+
assertEquals(0, dfc.i2);
51+
assertNull(dfc.l);
52+
assertEquals(0, dfc.l2);
53+
assertNull(dfc.s);
54+
assertEquals(0, dfc.s2);
55+
assertNull(dfc.f);
56+
assertEquals(0, dfc.f2);
57+
assertNull(dfc.d);
58+
assertEquals(0, dfc.d2);
59+
assertNull(dfc.c);
60+
assertEquals(0, dfc.c2);
61+
assertNull(dfc.b);
62+
assertEquals(0, dfc.b2);
63+
assertNull(dfc.bool);
64+
assertFalse(dfc.bool2);
65+
}
66+
}

0 commit comments

Comments
 (0)