This is an automated email from the ASF dual-hosted git repository.
anovikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-extensions.git
The following commit(s) were added to refs/heads/master by this push:
new 7b6ad63a IGNITE-27531 Possible NPE in IgniteRepositoryQuery#convert.
(#332)
7b6ad63a is described below
commit 7b6ad63a3a9020112734b315579d771ee6704c0a
Author: Andrey Novikov <[email protected]>
AuthorDate: Tue Jan 13 19:44:48 2026 +0700
IGNITE-27531 Possible NPE in IgniteRepositoryQuery#convert. (#332)
---
.../repository/query/IgniteRepositoryQuery.java | 3 ++-
.../springdata/IgniteSpringDataConversionsTest.java | 18 ++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git
a/modules/spring-data-ext/spring-data/src/main/java/org/apache/ignite/springdata/repository/query/IgniteRepositoryQuery.java
b/modules/spring-data-ext/spring-data/src/main/java/org/apache/ignite/springdata/repository/query/IgniteRepositoryQuery.java
index d1243126..ff2aaf6e 100644
---
a/modules/spring-data-ext/spring-data/src/main/java/org/apache/ignite/springdata/repository/query/IgniteRepositoryQuery.java
+++
b/modules/spring-data-ext/spring-data/src/main/java/org/apache/ignite/springdata/repository/query/IgniteRepositoryQuery.java
@@ -57,6 +57,7 @@ import
org.apache.ignite.springdata.repository.query.StringQuery.ParameterBindin
import
org.apache.ignite.springdata.repository.query.StringQuery.ParameterBindingParser;
import org.jetbrains.annotations.Nullable;
import org.springframework.core.convert.ConversionService;
+import org.springframework.core.convert.TypeDescriptor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
@@ -902,7 +903,7 @@ public class IgniteRepositoryQuery implements
RepositoryQuery {
* @return Converted object.
*/
private <T> T convert(Object source, Class<?> targetType) {
- if (conversionService.canConvert(source.getClass(), targetType))
+ if (conversionService.canConvert(TypeDescriptor.forObject(source),
TypeDescriptor.valueOf(targetType)))
return (T)conversionService.convert(source, targetType);
return (T)source;
diff --git
a/modules/spring-data-ext/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataConversionsTest.java
b/modules/spring-data-ext/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataConversionsTest.java
index 045e704d..b4097759 100644
---
a/modules/spring-data-ext/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataConversionsTest.java
+++
b/modules/spring-data-ext/spring-data/src/test/java/org/apache/ignite/springdata/IgniteSpringDataConversionsTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.springdata;
import java.time.LocalDateTime;
+import java.util.List;
import org.apache.ignite.springdata.misc.ApplicationConfiguration;
import
org.apache.ignite.springdata.misc.CustomConvertersApplicationConfiguration;
import org.apache.ignite.springdata.misc.Person;
@@ -61,6 +62,23 @@ public class IgniteSpringDataConversionsTest extends
GridCommonAbstractTest {
assertNull(savePerson(person).getCreatedAt());
}
+ /** */
+ @Test
+ public void testConvertionForNullable() {
+ init(ApplicationConfiguration.class);
+
+ Person person = new Person("some_name", null, LocalDateTime.now());
+ int id = 1;
+
+ assertEquals(person, repo.save(id, person));
+ assertTrue(repo.existsById(id));
+
+ List<Person> rows = repo.queryWithRowToEntityConversion();
+
+ assertEquals(1, rows.size());
+ assertEquals(person, rows.get(0));
+ }
+
/**
* @param componentClasses Component classes.
*/