Skip to content

Commit cc4d535

Browse files
committed
fix raw types
1 parent 389cf69 commit cc4d535

2 files changed

Lines changed: 20 additions & 24 deletions

File tree

src/main/java/it/aboutbits/springboot/toolbox/persistence/transformer/QueryTransformer.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import jakarta.persistence.EntityNotFoundException;
55
import jakarta.persistence.Query;
66
import jakarta.persistence.TypedQuery;
7-
import lombok.SneakyThrows;
87
import org.hibernate.query.NativeQuery;
98
import org.hibernate.transform.ResultTransformer;
109
import org.springframework.data.domain.Page;
@@ -14,12 +13,11 @@
1413
import java.util.List;
1514
import java.util.Optional;
1615

17-
@SuppressWarnings("rawtypes")
1816
public final class QueryTransformer<T> {
1917

2018
private final EntityManager entityManager;
2119
private final TupleTransformer<T> tupleTransformer;
22-
private org.hibernate.query.Query unwrappedQuery;
20+
private org.hibernate.query.Query<?> unwrappedQuery;
2321
private boolean isNative = false;
2422

2523
private QueryTransformer(EntityManager entityManager, Class<T> outputClass) {
@@ -71,7 +69,7 @@ public T asSingleResultOrFail() {
7169
@SuppressWarnings({"deprecation", "unchecked"})
7270
private List<T> asList(Integer pageNumber, Integer pageSize) {
7371
unwrappedQuery.setResultTransformer(
74-
(ResultTransformer) (objects, aliases) -> tupleTransformer.transform(objects)
72+
(ResultTransformer<?>) (objects, aliases) -> tupleTransformer.transform(objects)
7573
);
7674

7775
if (pageSize != null && pageNumber != null) {
@@ -80,10 +78,9 @@ private List<T> asList(Integer pageNumber, Integer pageSize) {
8078
.setFirstResult(pageSize * pageNumber);
8179
}
8280

83-
return unwrappedQuery.getResultList();
81+
return (List<T>) unwrappedQuery.getResultList();
8482
}
8583

86-
@SneakyThrows
8784
private Page<T> asPageQuery(int pageNumber, int pageSize) {
8885
var selectPattern = "(?i)select.*?[ \\t]*from ";
8986
var queryString = unwrappedQuery.getQueryString().trim().replaceAll("\\R", " ");

src/main/java/it/aboutbits/springboot/toolbox/persistence/transformer/TupleTransformer.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@
1212
import java.time.ZoneId;
1313
import java.util.Arrays;
1414

15-
@SuppressWarnings("rawtypes")
1615
public class TupleTransformer<T> {
1716
private final Class<T> outputClass;
1817
private Constructor<T> outputClassConstructor = null;
19-
private Class[] outputClassFieldClasses = null;
18+
private Class<?>[] outputClassFieldClasses = null;
2019

2120
private final Mode mode;
2221

@@ -60,18 +59,6 @@ public TupleTransformer(Class<T> outputClass) {
6059
}
6160
}
6261

63-
private static <T> boolean isSimpleType(Class<T> outputClass) {
64-
return String.class.isAssignableFrom(outputClass)
65-
|| Float.class.isAssignableFrom(outputClass)
66-
|| Double.class.isAssignableFrom(outputClass)
67-
|| Short.class.isAssignableFrom(outputClass)
68-
|| Integer.class.isAssignableFrom(outputClass)
69-
|| Long.class.isAssignableFrom(outputClass)
70-
|| Character.class.isAssignableFrom(outputClass)
71-
|| Byte.class.isAssignableFrom(outputClass)
72-
|| Boolean.class.isAssignableFrom(outputClass);
73-
}
74-
7562
@SuppressWarnings("unchecked")
7663
public T transform(Object[] objects) {
7764
try {
@@ -134,17 +121,17 @@ public T transform(Object[] objects) {
134121
}
135122

136123
// Converter: Instant to OffsetDateTime
137-
if (objects[i] instanceof Instant && outputClassFieldClasses[i].isAssignableFrom(OffsetDateTime.class)) {
124+
if (objects[i] instanceof Instant instant && outputClassFieldClasses[i].isAssignableFrom(OffsetDateTime.class)) {
138125
objects[i] = OffsetDateTime.ofInstant(
139-
(Instant) objects[i],
126+
instant,
140127
ZoneId.systemDefault()
141128
);
142129
continue;
143130
}
144131

145132
// Converter: to Records that wrap exactly one value (CustomType)
146133
if (CustomType.class.isAssignableFrom(outputClassFieldClasses[i])) {
147-
objects[i] = toCustomType(objects[i], outputClassFieldClasses[i]);
134+
objects[i] = toCustomType(objects[i], (Class<? extends CustomType<?>>) outputClassFieldClasses[i]);
148135
continue;
149136
}
150137

@@ -177,7 +164,19 @@ public T transform(Object[] objects) {
177164
}
178165
}
179166

180-
private <X extends CustomType<?>> X toCustomType(
167+
private static <T> boolean isSimpleType(Class<T> outputClass) {
168+
return String.class.isAssignableFrom(outputClass)
169+
|| Float.class.isAssignableFrom(outputClass)
170+
|| Double.class.isAssignableFrom(outputClass)
171+
|| Short.class.isAssignableFrom(outputClass)
172+
|| Integer.class.isAssignableFrom(outputClass)
173+
|| Long.class.isAssignableFrom(outputClass)
174+
|| Character.class.isAssignableFrom(outputClass)
175+
|| Byte.class.isAssignableFrom(outputClass)
176+
|| Boolean.class.isAssignableFrom(outputClass);
177+
}
178+
179+
private static <X extends CustomType<?>> X toCustomType(
181180
Object actualValue,
182181
Class<X> targetType
183182
) throws InvocationTargetException, InstantiationException, IllegalAccessException {

0 commit comments

Comments
 (0)