From ba5c67f936f3add4b3b9069a45866e24caca8dff Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Mon, 20 Jul 2015 20:06:19 +1200 Subject: [PATCH] #346 - ENH: Add @Nullable annotation on find by id and findUnique() methods --- pom.xml | 6 ++++++ src/main/java/com/avaje/ebean/Ebean.java | 3 ++- src/main/java/com/avaje/ebean/EbeanServer.java | 4 +++- src/main/java/com/avaje/ebean/ExpressionList.java | 2 ++ src/main/java/com/avaje/ebean/Model.java | 12 ++++++------ src/main/java/com/avaje/ebean/Query.java | 2 ++ .../server/deploy/TestNotEnhancedMappedSuper.java | 2 +- 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 4dcaaa237..da4be256e 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,12 @@ + + org.jetbrains + annotations + 13.0 + + javax.persistence persistence-api diff --git a/src/main/java/com/avaje/ebean/Ebean.java b/src/main/java/com/avaje/ebean/Ebean.java index ef2117d06..aedb01259 100644 --- a/src/main/java/com/avaje/ebean/Ebean.java +++ b/src/main/java/com/avaje/ebean/Ebean.java @@ -2,7 +2,6 @@ package com.avaje.ebean; import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -10,6 +9,7 @@ import java.util.concurrent.ConcurrentHashMap; import javax.persistence.OptimisticLockException; import javax.persistence.PersistenceException; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -878,6 +878,7 @@ public final class Ebean { * @param id * the id value */ + @Nullable public static T find(Class beanType, Object id) { return serverMgr.getDefaultServer().find(beanType, id); } diff --git a/src/main/java/com/avaje/ebean/EbeanServer.java b/src/main/java/com/avaje/ebean/EbeanServer.java index cdfc5a2bf..f6daf95e7 100644 --- a/src/main/java/com/avaje/ebean/EbeanServer.java +++ b/src/main/java/com/avaje/ebean/EbeanServer.java @@ -1,7 +1,6 @@ package com.avaje.ebean; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -15,6 +14,7 @@ import com.avaje.ebean.config.ServerConfig; import com.avaje.ebean.meta.MetaInfoManager; import com.avaje.ebean.text.csv.CsvReader; import com.avaje.ebean.text.json.JsonContext; +import org.jetbrains.annotations.Nullable; /** * Provides the API for fetching and saving beans to a particular DataSource. @@ -1096,6 +1096,7 @@ public interface EbeanServer { * * @see Query#findUnique() */ + @Nullable T findUnique(Query query, Transaction transaction); /** @@ -1172,6 +1173,7 @@ public interface EbeanServer { * * @see SqlQuery#findUnique() */ + @Nullable SqlRow findUnique(SqlQuery query, Transaction transaction); /** diff --git a/src/main/java/com/avaje/ebean/ExpressionList.java b/src/main/java/com/avaje/ebean/ExpressionList.java index 6e11d7ac9..68bd217ad 100644 --- a/src/main/java/com/avaje/ebean/ExpressionList.java +++ b/src/main/java/com/avaje/ebean/ExpressionList.java @@ -1,6 +1,7 @@ package com.avaje.ebean; import com.avaje.ebean.text.PathProperties; +import org.jetbrains.annotations.Nullable; import java.io.Serializable; import java.util.Collection; @@ -162,6 +163,7 @@ public interface ExpressionList extends Serializable { * * @see Query#findUnique() */ + @Nullable T findUnique(); /** diff --git a/src/main/java/com/avaje/ebean/Model.java b/src/main/java/com/avaje/ebean/Model.java index bdee368eb..0af575e80 100644 --- a/src/main/java/com/avaje/ebean/Model.java +++ b/src/main/java/com/avaje/ebean/Model.java @@ -2,14 +2,13 @@ package com.avaje.ebean; import com.avaje.ebean.text.PathProperties; import com.avaje.ebean.util.ClassUtil; - -import java.lang.reflect.Array; -import java.lang.reflect.GenericArrayType; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.*; +import org.jetbrains.annotations.Nullable; import javax.persistence.MappedSuperclass; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; /** * A MappedSuperclass base class that provides convenience methods for inserting, updating and @@ -514,6 +513,7 @@ public abstract class Model { *

* Equivalent to {@link EbeanServer#find(Class, Object)} */ + @Nullable public T byId(I id) { return db().find(type, id); } diff --git a/src/main/java/com/avaje/ebean/Query.java b/src/main/java/com/avaje/ebean/Query.java index 4fc61bffa..c7b96bdd7 100644 --- a/src/main/java/com/avaje/ebean/Query.java +++ b/src/main/java/com/avaje/ebean/Query.java @@ -1,6 +1,7 @@ package com.avaje.ebean; import com.avaje.ebean.text.PathProperties; +import org.jetbrains.annotations.Nullable; import java.io.Serializable; import java.util.List; @@ -704,6 +705,7 @@ public interface Query extends Serializable { * ... * } */ + @Nullable T findUnique(); /** diff --git a/src/test/java/com/avaje/ebeaninternal/server/deploy/TestNotEnhancedMappedSuper.java b/src/test/java/com/avaje/ebeaninternal/server/deploy/TestNotEnhancedMappedSuper.java index c80d40dfa..e0f7d5d06 100644 --- a/src/test/java/com/avaje/ebeaninternal/server/deploy/TestNotEnhancedMappedSuper.java +++ b/src/test/java/com/avaje/ebeaninternal/server/deploy/TestNotEnhancedMappedSuper.java @@ -16,7 +16,7 @@ public class TestNotEnhancedMappedSuper extends BaseTestCase { ASimpleBean bean = new ASimpleBean(); bean.setName("junk"); - + Ebean.save(bean); Assert.assertNotNull(bean.getId());