Skip to content

Commit 2d032a1

Browse files
authored
Support for byte number retrieval (#1596)
See #1594 Tuple and Row types updates to let users retrieve a byte. Also, added tests for SQL Client templates. Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
1 parent a547b55 commit 2d032a1

File tree

11 files changed

+255
-96
lines changed

11 files changed

+255
-96
lines changed

vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2Row.java

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,17 @@
1515
*/
1616
package io.vertx.db2client.impl;
1717

18-
import java.sql.RowId;
19-
import java.time.Duration;
20-
import java.time.LocalDate;
21-
import java.time.LocalDateTime;
22-
import java.time.LocalTime;
23-
import java.time.OffsetDateTime;
24-
import java.time.OffsetTime;
25-
import java.time.temporal.Temporal;
26-
import java.util.UUID;
27-
2818
import io.vertx.core.buffer.Buffer;
2919
import io.vertx.db2client.impl.drda.DB2RowId;
3020
import io.vertx.sqlclient.data.Numeric;
3121
import io.vertx.sqlclient.impl.RowBase;
3222
import io.vertx.sqlclient.internal.RowDescriptorBase;
3323

24+
import java.sql.RowId;
25+
import java.time.*;
26+
import java.time.temporal.Temporal;
27+
import java.util.UUID;
28+
3429
public class DB2Row extends RowBase {
3530

3631
public DB2Row(RowDescriptorBase rowDescriptor) {
@@ -148,16 +143,6 @@ public UUID[] getArrayOfUUIDs(String column) {
148143
throw new UnsupportedOperationException();
149144
}
150145

151-
private Byte getByte(int pos) {
152-
Object val = getValue(pos);
153-
if (val instanceof Byte) {
154-
return (Byte) val;
155-
} else if (val instanceof Number) {
156-
return ((Number) val).byteValue();
157-
}
158-
return null;
159-
}
160-
161146
private Duration getDuration(int pos) {
162147
Object val = getValue(pos);
163148
if (val instanceof Duration) {

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLRow.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,16 +100,6 @@ public UUID[] getArrayOfUUIDs(String column) {
100100
throw new UnsupportedOperationException();
101101
}
102102

103-
private Byte getByte(int pos) {
104-
Object val = getValue(pos);
105-
if (val instanceof Byte) {
106-
return (Byte) val;
107-
} else if (val instanceof Number) {
108-
return ((Number) val).byteValue();
109-
}
110-
return null;
111-
}
112-
113103
private Object getEnum(Class enumType, int position) {
114104
Object val = getValue(position);
115105
if (val instanceof String) {

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLRow.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,6 @@ public Boolean getBoolean(int pos) {
139139
return null;
140140
}
141141

142-
private Byte getByte(int pos) {
143-
Object val = getValue(pos);
144-
if (val instanceof Byte) {
145-
return (Byte) val;
146-
} else if (val instanceof Number) {
147-
return ((Number) val).byteValue();
148-
}
149-
return null;
150-
}
151-
152142
private Duration getDuration(int pos) {
153143
Object val = getValue(pos);
154144
if (val instanceof Duration) {

vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgRow.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public <T> T get(Class<T> type, int position) {
4646
Class<?> componentType = type.getComponentType();
4747
if (componentType == Boolean.class) {
4848
return type.cast(getArrayOfBooleans(position));
49+
} else if (componentType == Byte.class) {
50+
return type.cast(getArrayOfBytes(position));
4951
} else if (componentType == Short.class) {
5052
return type.cast(getArrayOfShorts(position));
5153
} else if (componentType == Integer.class) {
@@ -102,6 +104,8 @@ public <T> T get(Class<T> type, int position) {
102104
} else {
103105
if (type == Boolean.class) {
104106
return type.cast(getBoolean(position));
107+
} else if (type == Byte.class) {
108+
return type.cast(getByte(position));
105109
} else if (type == Short.class) {
106110
return type.cast(getShort(position));
107111
} else if (type == Integer.class) {

vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/DataObjectMapper.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
import io.vertx.core.json.JsonArray;
44
import io.vertx.core.json.JsonObject;
5-
import io.vertx.tests.sqlclient.templates.wrappers.BooleanWrapper;
6-
import io.vertx.tests.sqlclient.templates.wrappers.DoubleWrapper;
7-
import io.vertx.tests.sqlclient.templates.wrappers.FloatWrapper;
8-
import io.vertx.tests.sqlclient.templates.wrappers.IntegerWrapper;
9-
import io.vertx.tests.sqlclient.templates.wrappers.JsonArrayWrapper;
10-
import io.vertx.tests.sqlclient.templates.wrappers.JsonObjectWrapper;
11-
import io.vertx.tests.sqlclient.templates.wrappers.LongWrapper;
12-
import io.vertx.tests.sqlclient.templates.wrappers.ShortWrapper;
13-
import io.vertx.tests.sqlclient.templates.wrappers.StringWrapper;
5+
import io.vertx.tests.sqlclient.templates.wrappers.*;
146

157
public class DataObjectMapper {
168

@@ -22,6 +14,14 @@ public static Boolean fromBoolean(BooleanWrapper v) {
2214
return v.get();
2315
}
2416

17+
public static ByteWrapper toByte(Byte v) {
18+
return new ByteWrapper(v);
19+
}
20+
21+
public static Byte fromByte(ByteWrapper v) {
22+
return v.get();
23+
}
24+
2525
public static ShortWrapper toShort(Short v) {
2626
return new ShortWrapper(v);
2727
}

vertx-sql-client-templates/src/test/java/io/vertx/tests/sqlclient/templates/DataObjectTypesTest.java

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,11 @@
2525
import io.vertx.sqlclient.RowSet;
2626
import io.vertx.sqlclient.templates.SqlTemplate;
2727
import io.vertx.sqlclient.templates.TupleMapper;
28-
import io.vertx.tests.sqlclient.templates.wrappers.BooleanWrapper;
29-
import io.vertx.tests.sqlclient.templates.wrappers.DoubleWrapper;
30-
import io.vertx.tests.sqlclient.templates.wrappers.FloatWrapper;
31-
import io.vertx.tests.sqlclient.templates.wrappers.IntegerWrapper;
32-
import io.vertx.tests.sqlclient.templates.wrappers.JsonArrayWrapper;
33-
import io.vertx.tests.sqlclient.templates.wrappers.JsonObjectWrapper;
34-
import io.vertx.tests.sqlclient.templates.wrappers.LongWrapper;
35-
import io.vertx.tests.sqlclient.templates.wrappers.ShortWrapper;
36-
import io.vertx.tests.sqlclient.templates.wrappers.StringWrapper;
28+
import io.vertx.tests.sqlclient.templates.wrappers.*;
3729
import org.junit.Test;
3830

39-
import java.time.LocalDate;
40-
import java.time.LocalDateTime;
41-
import java.time.LocalTime;
42-
import java.time.OffsetDateTime;
43-
import java.time.OffsetTime;
44-
import java.time.ZoneOffset;
45-
import java.util.Arrays;
46-
import java.util.Collections;
47-
import java.util.HashSet;
48-
import java.util.Map;
49-
import java.util.UUID;
31+
import java.time.*;
32+
import java.util.*;
5033
import java.util.concurrent.TimeUnit;
5134
import java.util.function.Function;
5235

@@ -76,10 +59,16 @@ public void testBoolean(TestContext ctx) {
7659
testGet(ctx, "BOOLEAN[]", new Boolean[]{false, true}, Arrays.asList(false, true), "addedBooleans", TestDataObject::getAddedBooleans);
7760
}
7861

62+
@Test
63+
public void testByte(TestContext ctx) {
64+
testNumber(ctx, "INT2", (byte) 4);
65+
testNumberArray(ctx, "INT2[]", new Byte[]{1, 2, 3});
66+
}
67+
7968
@Test
8069
public void testShort(TestContext ctx) {
81-
testNumber(ctx, "INT2", (short)4);
82-
testNumberArray(ctx, "INT2[]", new Short[]{1,2,3});
70+
testNumber(ctx, "INT2", (short) 4);
71+
testNumberArray(ctx, "INT2[]", new Short[]{1, 2, 3});
8372
}
8473

8574
@Test
@@ -107,11 +96,13 @@ public void testDouble(TestContext ctx) {
10796
}
10897

10998
private void testNumber(TestContext ctx, String sqlType, Object value) {
99+
testNumber(ctx, sqlType, value, (byte) 4, "primitiveByte", TestDataObject::getPrimitiveByte);
110100
testNumber(ctx, sqlType, value, (short)4, "primitiveShort", TestDataObject::getPrimitiveShort);
111101
testNumber(ctx, sqlType,value, 4, "primitiveInt", TestDataObject::getPrimitiveInt);
112102
testNumber(ctx, sqlType,value, 4L, "primitiveLong", TestDataObject::getPrimitiveLong);
113103
testNumber(ctx, sqlType,value, 4F, "primitiveFloat", TestDataObject::getPrimitiveFloat);
114104
testNumber(ctx, sqlType,value, 4D, "primitiveDouble", TestDataObject::getPrimitiveDouble);
105+
testNumber(ctx, sqlType, value, (byte) 4, "boxedByte", TestDataObject::getBoxedByte);
115106
testNumber(ctx, sqlType, value, (short)4, "boxedShort", TestDataObject::getBoxedShort);
116107
testNumber(ctx, sqlType,value, 4, "boxedInteger", TestDataObject::getBoxedInteger);
117108
testNumber(ctx, sqlType,value, 4L, "boxedLong", TestDataObject::getBoxedLong);
@@ -120,16 +111,19 @@ private void testNumber(TestContext ctx, String sqlType, Object value) {
120111
}
121112

122113
private void testNumberArray(TestContext ctx, String sqlType, Object value) {
114+
testNumber(ctx, sqlType, value, Arrays.asList((byte) 1, (byte) 2, (byte) 3), "byteList", TestDataObject::getByteList);
123115
testNumber(ctx, sqlType, value, Arrays.asList((short)1,(short)2,(short)3), "shortList", TestDataObject::getShortList);
124116
testNumber(ctx, sqlType, value, Arrays.asList(1,2,3), "integerList", TestDataObject::getIntegerList);
125117
testNumber(ctx, sqlType, value, Arrays.asList(1L,2L,3L), "longList", TestDataObject::getLongList);
126118
testNumber(ctx, sqlType, value, Arrays.asList(1F,2F,3F), "floatList", TestDataObject::getFloatList);
127119
testNumber(ctx, sqlType, value, Arrays.asList(1D,2D,3D), "doubleList", TestDataObject::getDoubleList);
120+
testNumber(ctx, sqlType, value, new HashSet<>(Arrays.asList((byte) 1, (byte) 2, (byte) 3)), "byteSet", TestDataObject::getByteSet);
128121
testNumber(ctx, sqlType, value, new HashSet<>(Arrays.asList((short)1,(short)2,(short)3)), "shortSet", TestDataObject::getShortSet);
129122
testNumber(ctx, sqlType, value, new HashSet<>(Arrays.asList(1,2,3)), "integerSet", TestDataObject::getIntegerSet);
130123
testNumber(ctx, sqlType, value, new HashSet<>(Arrays.asList(1L,2L,3L)), "longSet", TestDataObject::getLongSet);
131124
testNumber(ctx, sqlType, value, new HashSet<>(Arrays.asList(1F,2F,3F)), "floatSet", TestDataObject::getFloatSet);
132125
testNumber(ctx, sqlType, value, new HashSet<>(Arrays.asList(1D,2D,3D)), "doubleSet", TestDataObject::getDoubleSet);
126+
testNumber(ctx, sqlType, value, Arrays.asList((byte) 1, (byte) 2, (byte) 3), "addedBytes", TestDataObject::getAddedBytes);
133127
testNumber(ctx, sqlType, value, Arrays.asList((short)1,(short)2,(short)3), "addedShorts", TestDataObject::getAddedShorts);
134128
testNumber(ctx, sqlType, value, Arrays.asList(1,2,3), "addedIntegers", TestDataObject::getAddedIntegers);
135129
testNumber(ctx, sqlType, value, Arrays.asList(1L,2L,3L), "addedLongs", TestDataObject::getAddedLongs);
@@ -268,6 +262,18 @@ public void testBooleanMethodMappedDataObject(TestContext ctx) {
268262
testGet(ctx, "JSON[]", new Object[] {true}, Collections.singletonList(new BooleanWrapper(true)), "addedBooleanMethodMappedDataObjects", TestDataObject::getAddedBooleanMethodMappedDataObjects);
269263
}
270264

265+
@Test
266+
public void testByteMethodMappedDataObject(TestContext ctx) {
267+
testGet(ctx, "INT2", 4, new ByteWrapper((byte) 4), "byteMethodMappedDataObject", TestDataObject::getByteMethodMappedDataObject);
268+
testGet(ctx, "INT2[]", new Byte[]{4}, Collections.singletonList(new ByteWrapper((byte) 4)), "byteMethodMappedDataObjectList", TestDataObject::getByteMethodMappedDataObjectList);
269+
testGet(ctx, "INT2[]", new Byte[]{4}, Collections.singleton(new ByteWrapper((byte) 4)), "byteMethodMappedDataObjectSet", TestDataObject::getByteMethodMappedDataObjectSet);
270+
testGet(ctx, "INT2[]", new Byte[]{4}, Collections.singletonList(new ByteWrapper((byte) 4)), "addedByteMethodMappedDataObjects", TestDataObject::getAddedByteMethodMappedDataObjects);
271+
testGet(ctx, "JSON", 4, new ByteWrapper((byte) 4), "byteMethodMappedDataObject", TestDataObject::getByteMethodMappedDataObject);
272+
testGet(ctx, "JSON[]", new Object[]{4}, Collections.singletonList(new ByteWrapper((byte) 4)), "byteMethodMappedDataObjectList", TestDataObject::getByteMethodMappedDataObjectList);
273+
testGet(ctx, "JSON[]", new Object[]{4}, Collections.singleton(new ByteWrapper((byte) 4)), "byteMethodMappedDataObjectSet", TestDataObject::getByteMethodMappedDataObjectSet);
274+
testGet(ctx, "JSON[]", new Object[]{4}, Collections.singletonList(new ByteWrapper((byte) 4)), "addedByteMethodMappedDataObjects", TestDataObject::getAddedByteMethodMappedDataObjects);
275+
}
276+
271277
@Test
272278
public void testShortMethodMappedDataObject(TestContext ctx) {
273279
testGet(ctx, "INT2", 4, new ShortWrapper((short)4), "shortMethodMappedDataObject", TestDataObject::getShortMethodMappedDataObject);

0 commit comments

Comments
 (0)