From 7862648b83307029ecf52e1ddb95d26307899170 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 19 Oct 2021 11:50:22 +1300 Subject: [PATCH] #2419 - Add explicit @Nullable on findOne() methods --- ebean-api/src/main/java/io/ebean/BeanFinder.java | 1 - .../main/java/io/ebeaninternal/api/SpiEbeanServer.java | 2 ++ .../java/io/ebeaninternal/server/core/DefaultServer.java | 8 +++++++- .../ebeaninternal/server/querydefn/DefaultDtoQuery.java | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ebean-api/src/main/java/io/ebean/BeanFinder.java b/ebean-api/src/main/java/io/ebean/BeanFinder.java index aab61b572..771736947 100644 --- a/ebean-api/src/main/java/io/ebean/BeanFinder.java +++ b/ebean-api/src/main/java/io/ebean/BeanFinder.java @@ -97,7 +97,6 @@ public abstract class BeanFinder { /** * Find an entity by ID returning an Optional. */ - @Nullable public Optional findByIdOrEmpty(I id) { return db().find(type).setId(id).findOneOrEmpty(); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java b/ebean-core/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java index 449a528f4..572f571d0 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java @@ -16,6 +16,7 @@ import io.ebeaninternal.server.deploy.BeanDescriptor; import io.ebeaninternal.server.query.CQuery; import io.ebeaninternal.server.transaction.RemoteTransactionEvent; +import javax.annotation.Nullable; import java.util.List; import java.util.function.Consumer; import java.util.function.Predicate; @@ -257,6 +258,7 @@ public interface SpiEbeanServer extends SpiServer, ExtendedServer, EbeanServer, /** * DTO findOne query. */ + @Nullable T findDtoOne(SpiDtoQuery query); /** diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index 33cfb36cb..9e22f99a8 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -102,6 +102,7 @@ import io.ebeanservice.docstore.api.DocStoreIntegration; import org.slf4j.Logger; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import javax.persistence.NonUniqueResultException; import javax.persistence.OptimisticLockException; import javax.persistence.PersistenceException; @@ -497,7 +498,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { return new DefaultBeanState((EntityBean) bean); } // Not an entity bean - return null; + return null; // throw new IllegalArgumentException("Bean is not an entity bean"); } /** @@ -1087,6 +1088,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { /** * Try to get the object out of the persistence context. */ + @Nullable @SuppressWarnings("unchecked") private T findIdCheckPersistenceContextAndCache(Transaction transaction, SpiQuery query, Object id) { SpiTransaction t = (SpiTransaction) transaction; @@ -1164,6 +1166,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { return Optional.ofNullable(findOne(query, transaction)); } + @Nullable @Override public T findOne(Query query, Transaction transaction) { SpiQuery spiQuery = (SpiQuery) query; @@ -1179,6 +1182,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { return extractUnique(list); } + @Nullable private T extractUnique(List list) { if (list.isEmpty()) { return null; @@ -1514,6 +1518,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { } } + @Nullable @Override public SqlRow findOne(SqlQuery query, Transaction t) { // no findId() method for SqlQuery... @@ -1657,6 +1662,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { } } + @Nullable @Override public T findDtoOne(SpiDtoQuery query) { DtoQueryRequest request = new DtoQueryRequest<>(this, dtoQueryEngine, query); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultDtoQuery.java b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultDtoQuery.java index 4a72c0057..c404308c5 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultDtoQuery.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultDtoQuery.java @@ -12,6 +12,7 @@ import io.ebeaninternal.server.dto.DtoBeanDescriptor; import io.ebeaninternal.server.dto.DtoMappingRequest; import io.ebeaninternal.server.dto.DtoQueryPlan; +import javax.annotation.Nullable; import java.util.List; import java.util.Optional; import java.util.function.Consumer; @@ -114,6 +115,7 @@ public final class DefaultDtoQuery extends AbstractQuery implements SpiDtoQue return server.findDtoList(this); } + @Nullable @Override public T findOne() { return server.findDtoOne(this);