Service A
использует реализацию com.ning.http.client.AsyncHandler
для загрузки медиафайлов.
class DownloadHandler implements AsyncHandler<CompletionStage<Metadata>>
При успешной загрузке медиа-файла вызывается метод CompletionStage<Metadata> onCompleted()
, в котором Service A
асинхронно обращается к Service B
для обновления записей в БД.
Я получил NPE
java.lang.RuntimeException: java.lang.NullPointerException
at java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:884)
at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:866)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990)
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990)
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1975)
at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1347)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:398)
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1027)
at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:868)
at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:691)
at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:48)
Может ли AsyncHandler вернуть CompletionStage? Что может быть не так?