Skip to content

Commit 2d61161

Browse files
author
Alexandre Dutra
committed
JAVA-542: Handle void return types in accessors.
1 parent 2824e2c commit 2d61161

3 files changed

Lines changed: 18 additions & 1 deletion

File tree

changelog/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
- [improvement] Make NativeColumnType a top-level class (JAVA-715)
66
- [improvement] Unify "Target" enum for schema elements (JAVA-782)
7+
- [bug] Handle void return types in accessors (JAVA-542)
78

89

910
### 2.1.6

driver-mapping/src/main/java/com/datastax/driver/mapping/MethodMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void prepare(MappingManager manager, PreparedStatement ps) {
6767
// TODO: we should also validate the types of the parameters...
6868

6969
Class<?> returnType = method.getReturnType();
70-
if (Void.class.isAssignableFrom(returnType) || ResultSet.class.isAssignableFrom(returnType))
70+
if (Void.TYPE.isAssignableFrom(returnType) || ResultSet.class.isAssignableFrom(returnType))
7171
return;
7272

7373
if (Statement.class.isAssignableFrom(returnType)) {

driver-mapping/src/test/java/com/datastax/driver/mapping/MapperAccessorTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,15 @@ public void should_allow_null_argument_in_accessor_when_set_by_index() {
7979
assertThat(row.getString("v")).isNull();
8080
}
8181

82+
@Test(groups = "short")
83+
public void should_allow_void_return_type_in_accessor() {
84+
VoidAccessor accessor = new MappingManager(session).createAccessor(VoidAccessor.class);
85+
accessor.insert(1, "bar");
86+
Row row = session.execute("select * from foo where k = 1").one();
87+
assertThat(row.getInt("k")).isEqualTo(1);
88+
assertThat(row.getString("v")).isEqualTo("bar");
89+
}
90+
8291
@Accessor
8392
public interface SystemAccessor {
8493
@Query("select release_version from system.local")
@@ -96,4 +105,11 @@ public interface FooBindMarkerAccessor {
96105
@Query("insert into foo (k, v) values (?, ?)")
97106
ResultSet insert(int k, String v);
98107
}
108+
109+
@Accessor
110+
public interface VoidAccessor {
111+
@Query("insert into foo (k, v) values (:k, :v)")
112+
void insert(@Param("k") int k, @Param("v") String v);
113+
}
114+
99115
}

0 commit comments

Comments
 (0)