Воспроизведение NPE в методе Stream.toList() [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Воспроизведение NPE в методе Stream.toList() [дубликат]

Сообщение Anonymous »

Я придумал, как воспроизвести исключение nullpointer, которое я увидел в журнале.
Стековая трассировка указывает на строку метода Stream.toList() в методе findAll(). ниже. EventorRepostory — это стандартный JpaRepository, а toDomainModel — это сборщик ломбоков для класса записи с точно такими же свойствами (не) допускающими значение NULL.
Что меня так понял, так это то, что jpaRepository.findall() может создавать только безопасный список NPE. Метод toDomainModel — это сборщик ломбоков, который также должен быть нулевым, если только он не получает нулевой объект. Первое защищает второе, так как же toList() может вызвать здесь NPE?

Код: Выделить всё

public List findAll() {
return eventorRepository
.findAll()
.parallelStream()
.map(Eventor::toDomainModel)
.toList();
}

@Entity
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Eventor {

@NotNull
private Integer id;

@Id
private UUID uuid;

private Instant creationDate;

private Location location; //class with @NotNull properties

@Embedded
private EventorState eventorState;
}
Выполнение тестов со свойствами null или объектами null просто выполняется, например

Код: Выделить всё

 @Test
public void test() {

when(jpaRepository.findAll()).thenReturn(List.of(getEventor()));

service.findAll().forEach(System.out::println);
}
{"timestamp":"2025-01-02T20:47:43.967Z","level":"ОШИБКА","thread":"планирование -1","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","message":"Произошло непредвиденное исключение вызов асинхронного метода: public void nu.eg.nu.business.services.EventorService.processEventor(java.util.Collection,java.time.Instant)","context":"default","Exception":"java.lang .NullPointerException: null\n\tat java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(Unknown Source)\n\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Неизвестный источник)\n\tat java.base/java.lang.reflect.Constructor.newInstance(Неизвестный источник)\n\tat java. base/java.util.concurrent.ForkJoinTask.getThrowableException (неизвестный источник)\n\tat java.base/java.util.concurrent.ForkJoinTask.reportException(Неизвестный источник)\n\tat java.base/java.util.concurrent.ForkJoinTask.invoke(Неизвестный источник)\n\tat java.base/java.util. stream.Nodes.collect(Неизвестный источник)\n\tat java.base/java.util.stream.ReferencePipeline.evaluateToNode(Неизвестно Источник)\n\tat java.base/java.util.stream.AbstractPipeline.evaluate(Неизвестный источник)\n\tat java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(Неизвестный источник)\n\tat java. base/java.util.stream.ReferencePipeline.toArray(неизвестный источник)\n\tat java.base/java.util.stream.ReferencePipeline.toArray(Неизвестный источник)\n\tat java.base/java.util.stream.ReferencePipeline.toList(Неизвестный источник)\n\tat nu.eg.numsi.persistence. EventorSqlRepository.findAll(EventorSqlRepository.java:26)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Неизвестный источник)\n\tat java.base/java.lang.reflect.Method.invoke(Неизвестный источник)\n\tat org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocate.invokeJoinpoint(ReflectiveMethodInvocate.java:196)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:768)\n\tat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocate.proceed(ReflectiveMethodInfection.java:184)\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvoction.proceed(CglibAopProxy.java:768)\n\tat org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720)\n\tat nu.eg.nu.persistence.EventorSqlRepository$$SpringCGLIB$$0.findAll()\n\tat nu.eg.nu.business.services.EventorService.getAllEventor(EventorService.java:22)\n\tat nu.eg.nu.business.services.EventorService.getEventorAsMap(EventorService.java:26)\n\tat nu.eg.nu.business.services.EventorService.getEventorAsMap(EventorService.java:59)\n\tat nu. например.nu.business.services.EventorService.processEventor(EventorService.java:34)\n\tat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Неизвестный источник)\n\tat java.base/java.lang.reflect.Method.invoke(Неизвестный источник)\n\tat org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocate.invokeJoinpoint(ReflectiveMethodInvocate.java:196)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:768)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocate.proceed(ReflectiveMethodInvocation.java:184)\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:768)\n\tat org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:113)\n\tat java.base/java.util.concurrent.FutureTask.run(Неизвестный источник)\n\tat java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Неизвестный источник)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Неизвестный источник)\n\tat java.base/java. util.concurrent.ThreadPoolExecutor$Worker.run(Неизвестный источник)\n\tat java.base/java.lang.Thread.run(Неизвестный источник)\nВызвано: java.lang.NullPointerException: null\n"

Мой Подозреваю, что это может быть parrellelStream или toList, но сначала я хочу его воспроизвести.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ist-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»