beanType) {
-
return getDefault().find(beanType);
}
@@ -1027,77 +1024,6 @@ public final class DB {
return getDefault().filter(beanType);
}
-// /**
-// * Execute a Sql Update Delete or Insert statement. This returns the number of
-// * rows that where updated, deleted or inserted. If is executed in batch then
-// * this returns -1. You can get the actual rowCount after commit() from
-// * updateSql.getRowCount().
-// *
-// * If you wish to execute a Sql Select natively then you should use the
-// * FindByNativeSql object.
-// *
-// *
-// * Note that the table modification information is automatically deduced and
-// * you do not need to call the DB.externalModification() method when you
-// * use this method.
-// *
-// *
-// * Example:
-// *
-// * {@code
-// *
-// * // example that uses 'named' parameters
-// * String s = "UPDATE f_topic set post_count = :count where id = :id"
-// *
-// * SqlUpdate update = DB.createSqlUpdate(s);
-// *
-// * update.setParameter("id", 1);
-// * update.setParameter("count", 50);
-// *
-// * int modifiedCount = DB.execute(update);
-// *
-// * String msg = "There where " + modifiedCount + "rows updated";
-// *
-// * }
-// *
-// * @param sqlUpdate the update sql potentially with bind values
-// * @return the number of rows updated or deleted. -1 if executed in batch.
-// * @see SqlUpdate
-// * @see CallableSql
-// * @see DB#execute(CallableSql)
-// */
-// public static int execute(SqlUpdate sqlUpdate) {
-// return defaultDatabase().execute(sqlUpdate);
-// }
-//
-// /**
-// * For making calls to stored procedures.
-// *
-// * Example:
-// *
-// * {@code
-// *
-// * String sql = "{call sp_order_modify(?,?,?)}";
-// *
-// * CallableSql cs = DB.createCallableSql(sql);
-// * cs.setParameter(1, 27);
-// * cs.setParameter(2, "SHIPPED");
-// * cs.registerOut(3, Types.INTEGER);
-// *
-// * DB.execute(cs);
-// *
-// * // read the out parameter
-// * Integer returnValue = (Integer) cs.getObject(3);
-// *
-// * }
-// *
-// * @see CallableSql
-// * @see Ebean#execute(SqlUpdate)
-// */
-// public static int execute(CallableSql callableSql) {
-// return defaultDatabase().execute(callableSql);
-// }
-
/**
* Execute a TxRunnable in a Transaction with an explicit scope.
*
diff --git a/ebean-api/src/main/java/io/ebean/Database.java b/ebean-api/src/main/java/io/ebean/Database.java
index b0c862f56..c7cad0cf7 100644
--- a/ebean-api/src/main/java/io/ebean/Database.java
+++ b/ebean-api/src/main/java/io/ebean/Database.java
@@ -1,5 +1,7 @@
package io.ebean;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.annotation.Platform;
import io.ebean.annotation.TxIsolation;
import io.ebean.cache.ServerCacheManager;
@@ -10,7 +12,6 @@ import io.ebean.plugin.SpiServer;
import io.ebean.text.csv.CsvReader;
import io.ebean.text.json.JsonContext;
-import javax.annotation.Nullable;
import javax.persistence.OptimisticLockException;
import javax.persistence.PersistenceException;
import javax.sql.DataSource;
@@ -91,6 +92,7 @@ import java.util.concurrent.Callable;
* @see DatabaseFactory
* @see DatabaseConfig
*/
+@NonNullApi
public interface Database {
/**
diff --git a/ebean-api/src/main/java/io/ebean/DocumentStore.java b/ebean-api/src/main/java/io/ebean/DocumentStore.java
index 0a2353ff0..7b5a6c481 100644
--- a/ebean-api/src/main/java/io/ebean/DocumentStore.java
+++ b/ebean-api/src/main/java/io/ebean/DocumentStore.java
@@ -1,9 +1,10 @@
package io.ebean;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.docstore.DocQueryContext;
import io.ebean.docstore.RawDoc;
-import javax.annotation.Nullable;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -13,6 +14,7 @@ import java.util.function.Predicate;
/**
* Document storage operations.
*/
+@NonNullApi
public interface DocumentStore {
/**
diff --git a/ebean-api/src/main/java/io/ebean/DtoQuery.java b/ebean-api/src/main/java/io/ebean/DtoQuery.java
index e46ee7105..853cfccb6 100644
--- a/ebean-api/src/main/java/io/ebean/DtoQuery.java
+++ b/ebean-api/src/main/java/io/ebean/DtoQuery.java
@@ -1,6 +1,7 @@
package io.ebean;
-import javax.annotation.Nullable;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
@@ -37,6 +38,7 @@ import java.util.stream.Stream;
*
* }
*/
+@NonNullApi
public interface DtoQuery extends CancelableQuery {
/**
diff --git a/ebean-api/src/main/java/io/ebean/Ebean.java b/ebean-api/src/main/java/io/ebean/Ebean.java
index f1ce4aac3..f58c9dac0 100644
--- a/ebean-api/src/main/java/io/ebean/Ebean.java
+++ b/ebean-api/src/main/java/io/ebean/Ebean.java
@@ -1,12 +1,12 @@
package io.ebean;
+import io.avaje.lang.Nullable;
import io.ebean.annotation.TxIsolation;
import io.ebean.cache.ServerCacheManager;
import io.ebean.plugin.Property;
import io.ebean.text.csv.CsvReader;
import io.ebean.text.json.JsonContext;
-import javax.annotation.Nullable;
import javax.persistence.OptimisticLockException;
import javax.persistence.PersistenceException;
import java.util.Collection;
diff --git a/ebean-api/src/main/java/io/ebean/ExpressionList.java b/ebean-api/src/main/java/io/ebean/ExpressionList.java
index 80587ebf2..8f2ebe0d0 100644
--- a/ebean-api/src/main/java/io/ebean/ExpressionList.java
+++ b/ebean-api/src/main/java/io/ebean/ExpressionList.java
@@ -1,20 +1,13 @@
package io.ebean;
-import io.ebean.search.Match;
-import io.ebean.search.MultiMatch;
-import io.ebean.search.TextCommonTerms;
-import io.ebean.search.TextQueryString;
-import io.ebean.search.TextSimple;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
+import io.ebean.search.*;
-import javax.annotation.Nullable;
import javax.persistence.NonUniqueResultException;
import java.sql.Connection;
import java.sql.Timestamp;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -38,6 +31,7 @@ import java.util.function.Predicate;
*
* @see Query#where()
*/
+@NonNullApi
public interface ExpressionList {
/**
diff --git a/ebean-api/src/main/java/io/ebean/ExtendedServer.java b/ebean-api/src/main/java/io/ebean/ExtendedServer.java
index 9decb9b27..1bb21a721 100644
--- a/ebean-api/src/main/java/io/ebean/ExtendedServer.java
+++ b/ebean-api/src/main/java/io/ebean/ExtendedServer.java
@@ -1,6 +1,7 @@
package io.ebean;
-import javax.annotation.Nullable;
+import io.avaje.lang.Nullable;
+
import javax.persistence.NonUniqueResultException;
import java.time.Clock;
import java.util.List;
diff --git a/ebean-api/src/main/java/io/ebean/FetchGroup.java b/ebean-api/src/main/java/io/ebean/FetchGroup.java
index 5eb749048..26e3d84c2 100644
--- a/ebean-api/src/main/java/io/ebean/FetchGroup.java
+++ b/ebean-api/src/main/java/io/ebean/FetchGroup.java
@@ -1,5 +1,6 @@
package io.ebean;
+import io.avaje.lang.NonNullApi;
import io.ebean.service.SpiFetchGroupQuery;
/**
@@ -60,6 +61,7 @@ import io.ebean.service.SpiFetchGroupQuery;
*
* @param The bean type the Fetch group can be applied to
*/
+@NonNullApi
public interface FetchGroup {
/**
diff --git a/ebean-api/src/main/java/io/ebean/FetchGroupBuilder.java b/ebean-api/src/main/java/io/ebean/FetchGroupBuilder.java
index aeda3e7e5..2b282fb05 100644
--- a/ebean-api/src/main/java/io/ebean/FetchGroupBuilder.java
+++ b/ebean-api/src/main/java/io/ebean/FetchGroupBuilder.java
@@ -1,5 +1,7 @@
package io.ebean;
+import io.avaje.lang.NonNullApi;
+
/**
* Builds a FetchGroup by adding fetch clauses.
*
@@ -21,6 +23,7 @@ package io.ebean;
*
* }
*/
+@NonNullApi
public interface FetchGroupBuilder {
/**
diff --git a/ebean-api/src/main/java/io/ebean/Filter.java b/ebean-api/src/main/java/io/ebean/Filter.java
index 758f88b57..5181b0e99 100644
--- a/ebean-api/src/main/java/io/ebean/Filter.java
+++ b/ebean-api/src/main/java/io/ebean/Filter.java
@@ -1,5 +1,7 @@
package io.ebean;
+import io.avaje.lang.NonNullApi;
+
import java.util.List;
import java.util.Set;
@@ -77,6 +79,7 @@ import java.util.Set;
*
* @param the entity bean type
*/
+@NonNullApi
public interface Filter {
/**
diff --git a/ebean-api/src/main/java/io/ebean/Finder.java b/ebean-api/src/main/java/io/ebean/Finder.java
index 68b0fe203..2bb927640 100644
--- a/ebean-api/src/main/java/io/ebean/Finder.java
+++ b/ebean-api/src/main/java/io/ebean/Finder.java
@@ -1,6 +1,7 @@
package io.ebean;
-import javax.annotation.Nullable;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import java.util.List;
/**
@@ -54,6 +55,7 @@ import java.util.List;
* }
*
*/
+@NonNullApi
public class Finder {
/**
diff --git a/ebean-api/src/main/java/io/ebean/Junction.java b/ebean-api/src/main/java/io/ebean/Junction.java
index 0ab001b37..b1bec8d76 100644
--- a/ebean-api/src/main/java/io/ebean/Junction.java
+++ b/ebean-api/src/main/java/io/ebean/Junction.java
@@ -113,9 +113,9 @@ public interface Junction extends Expression, ExpressionList {
*/
SHOULD("should", "", true);
- private String prefix;
- private String literal;
- private boolean text;
+ private final String prefix;
+ private final String literal;
+ private final boolean text;
Type(String literal, String prefix, boolean text) {
this.literal = literal;
diff --git a/ebean-api/src/main/java/io/ebean/Query.java b/ebean-api/src/main/java/io/ebean/Query.java
index eee7bf8ff..4ddfc9af5 100644
--- a/ebean-api/src/main/java/io/ebean/Query.java
+++ b/ebean-api/src/main/java/io/ebean/Query.java
@@ -1,6 +1,7 @@
package io.ebean;
-import javax.annotation.Nullable;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import javax.persistence.NonUniqueResultException;
import java.sql.Connection;
import java.sql.Timestamp;
@@ -176,6 +177,7 @@ import java.util.stream.Stream;
*
* @param the type of Entity bean this query will fetch.
*/
+@NonNullApi
public interface Query extends CancelableQuery {
/**
diff --git a/ebean-api/src/main/java/io/ebean/SqlQuery.java b/ebean-api/src/main/java/io/ebean/SqlQuery.java
index d7e184257..240d42aad 100644
--- a/ebean-api/src/main/java/io/ebean/SqlQuery.java
+++ b/ebean-api/src/main/java/io/ebean/SqlQuery.java
@@ -1,6 +1,7 @@
package io.ebean;
-import javax.annotation.Nullable;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +37,7 @@ import java.util.function.Predicate;
*
* }
*/
+@NonNullApi
public interface SqlQuery extends Serializable, CancelableQuery {
/**
@@ -351,6 +353,7 @@ public interface SqlQuery extends Serializable, CancelableQuery {
/**
* Return the single value.
*/
+ @Nullable
T findOne();
/**
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 e197ecc41..239e58214 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
@@ -1,5 +1,7 @@
package io.ebeaninternal.server.core;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.AutoTune;
import io.ebean.BackgroundExecutor;
import io.ebean.BeanState;
@@ -101,7 +103,6 @@ import io.ebeaninternal.util.ParamTypeHelper.TypeInfo;
import io.ebeanservice.docstore.api.DocStoreIntegration;
import org.slf4j.Logger;
-import javax.annotation.Nullable;
import javax.persistence.NonUniqueResultException;
import javax.persistence.OptimisticLockException;
import javax.persistence.PersistenceException;
@@ -125,6 +126,7 @@ import static java.util.stream.StreamSupport.stream;
/**
* The default server side implementation of EbeanServer.
*/
+@NonNullApi
public final class DefaultServer implements SpiServer, SpiEbeanServer {
private static final Logger log = CoreLog.internal;
@@ -271,6 +273,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
return lazyLoadBatchSize;
}
+ @Nullable
@Override
public Object currentTenantId() {
return currentTenantProvider == null ? null : currentTenantProvider.currentId();
@@ -563,7 +566,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public Map diff(Object a, Object b) {
+ public Map diff(@Nullable Object a, Object b) {
if (a == null) {
return Collections.emptyMap();
}
@@ -617,7 +620,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
}
- private void executeSql(Connection connection, String sql) throws SQLException {
+ private void executeSql(Connection connection, @Nullable String sql) throws SQLException {
if (sql != null) {
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
transactionManager.log().sql().debug(sql);
@@ -723,7 +726,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public T executeCall(TxScope scope, Callable c) {
+ public T executeCall(@Nullable TxScope scope, Callable c) {
ScopedTransaction scopeTrans = transactionManager.beginScopedTransaction(scope);
try {
return c.call();
@@ -742,7 +745,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public void execute(TxScope scope, Runnable r) {
+ public void execute(@Nullable TxScope scope, Runnable r) {
ScopedTransaction t = transactionManager.beginScopedTransaction(scope);
try {
r.run();
@@ -765,6 +768,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
transactionManager.exitScopedTransaction(returnOrThrowable, opCode);
}
+ @Nullable
@Override
public SpiTransaction currentServerTransaction() {
return transactionManager.active();
@@ -894,7 +898,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public void merge(Object bean, MergeOptions options, Transaction transaction) {
+ public void merge(Object bean, MergeOptions options, @Nullable Transaction transaction) {
BeanDescriptor> desc = descriptor(bean.getClass());
if (desc == null) {
throw new PersistenceException(bean.getClass().getName() + " is NOT an Entity Bean registered with this server?");
@@ -1040,7 +1044,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Find a bean using its unique id.
*/
@Override
- public T find(Class beanType, Object id, Transaction t) {
+ public T find(Class beanType, Object id, @Nullable Transaction t) {
if (id == null) {
throw new NullPointerException("The id is null");
}
@@ -1048,20 +1052,20 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
return findId(query, t);
}
- SpiOrmQueryRequest createQueryRequest(Type type, Query query, Transaction t) {
+ SpiOrmQueryRequest createQueryRequest(Type type, Query query, @Nullable Transaction t) {
SpiOrmQueryRequest request = buildQueryRequest(type, query, t);
request.prepareQuery();
return request;
}
- SpiOrmQueryRequest buildQueryRequest(Type type, Query query, Transaction t) {
+ SpiOrmQueryRequest buildQueryRequest(Type type, Query query, @Nullable Transaction t) {
SpiQuery spiQuery = (SpiQuery) query;
spiQuery.setType(type);
spiQuery.checkNamedParameters();
return buildQueryRequest(spiQuery, t);
}
- private SpiOrmQueryRequest buildQueryRequest(SpiQuery query, Transaction t) {
+ private SpiOrmQueryRequest buildQueryRequest(SpiQuery query, @Nullable Transaction t) {
if (t == null) {
t = currentServerTransaction();
}
@@ -1088,7 +1092,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
*/
@Nullable
@SuppressWarnings("unchecked")
- private T findIdCheckPersistenceContextAndCache(Transaction transaction, SpiQuery query, Object id) {
+ private T findIdCheckPersistenceContextAndCache(@Nullable Transaction transaction, SpiQuery query, Object id) {
SpiTransaction t = (SpiTransaction) transaction;
if (t == null) {
t = currentServerTransaction();
@@ -1133,8 +1137,9 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
return (scope != null) ? scope : defaultPersistenceContextScope;
}
+ @Nullable
@SuppressWarnings("unchecked")
- private T findId(Query query, Transaction t) {
+ private T findId(Query query, @Nullable Transaction t) {
SpiQuery spiQuery = (SpiQuery) query;
spiQuery.setType(Type.BEAN);
if (SpiQuery.Mode.NORMAL == spiQuery.getMode() && !spiQuery.isForceHitDatabase()) {
@@ -1165,7 +1170,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
@Nullable
@Override
- public T findOne(Query query, Transaction transaction) {
+ public T findOne(Query query, @Nullable Transaction transaction) {
SpiQuery spiQuery = (SpiQuery) query;
if (spiQuery.isFindById()) {
// actually a find by Id query
@@ -1208,7 +1213,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
@Override
@SuppressWarnings({"unchecked", "rawtypes"})
- public Map findMap(Query query, Transaction t) {
+ public Map findMap(Query query, @Nullable Transaction t) {
SpiOrmQueryRequest request = createQueryRequest(Type.MAP, query, t);
request.resetBeanCacheAutoMode(false);
if ((t == null || !t.isSkipCache()) && request.getFromBeanCache()) {
@@ -1244,7 +1249,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int findCount(Query query, Transaction t) {
+ public int findCount(Query query, @Nullable Transaction t) {
SpiQuery spiQuery = ((SpiQuery) query);
if (!spiQuery.isDistinct()) {
spiQuery = spiQuery.copy();
@@ -1253,7 +1258,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int findCountWithCopy(Query query, Transaction t) {
+ public int findCountWithCopy(Query query, @Nullable Transaction t) {
SpiOrmQueryRequest request = createQueryRequest(Type.COUNT, query, t);
Integer result = request.getFromQueryCache();
if (result != null) {
@@ -1463,7 +1468,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public List> findVersions(Query query, Transaction transaction) {
+ public List> findVersions(Query query, @Nullable Transaction transaction) {
SpiOrmQueryRequest request = createQueryRequest(Type.LIST, query, transaction);
try {
request.initTransIfRequired();
@@ -1479,7 +1484,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@SuppressWarnings("unchecked")
- private List findList(Query query, Transaction t, boolean findOne) {
+ private List findList(Query query, @Nullable Transaction t, boolean findOne) {
SpiOrmQueryRequest request = buildQueryRequest(Type.LIST, query, t);
request.resetBeanCacheAutoMode(findOne);
if ((t == null || !t.isSkipCache()) && request.getFromBeanCache()) {
@@ -1669,7 +1674,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Save the bean with an explicit transaction.
*/
@Override
- public void save(Object bean, Transaction t) {
+ public void save(Object bean, @Nullable Transaction t) {
persister.save(checkEntityBean(bean), t);
}
@@ -1688,7 +1693,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public void update(Object bean, Transaction t) {
+ public void update(Object bean, @Nullable Transaction t) {
persister.update(checkEntityBean(bean), t);
}
@@ -1701,7 +1706,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Update all beans in the collection with an explicit transaction.
*/
@Override
- public void updateAll(Collection> beans, Transaction transaction) {
+ public void updateAll(@Nullable Collection> beans, @Nullable Transaction transaction) {
if (beans == null || beans.isEmpty()) {
return;
}
@@ -1725,7 +1730,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Insert the bean with a transaction.
*/
@Override
- public void insert(Object bean, Transaction t) {
+ public void insert(Object bean, @Nullable Transaction t) {
persister.insert(checkEntityBean(bean), t);
}
@@ -1741,7 +1746,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Insert all beans in the collection with a transaction.
*/
@Override
- public void insertAll(Collection> beans, Transaction transaction) {
+ public void insertAll(@Nullable Collection> beans, @Nullable Transaction transaction) {
if (beans == null || beans.isEmpty()) {
return;
}
@@ -1754,7 +1759,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public List publish(Query query, Transaction transaction) {
+ public List publish(Query query, @Nullable Transaction transaction) {
return executeInTrans((txn) -> persister.publish(query, txn), transaction);
}
@@ -1776,7 +1781,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public List draftRestore(Query query, Transaction transaction) {
+ public List draftRestore(Query query, @Nullable Transaction transaction) {
return executeInTrans((txn) -> persister.draftRestore(query, txn), transaction);
}
@@ -1825,7 +1830,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
/**
* Save all beans in the iterator with an explicit transaction.
*/
- private int saveAllInternal(Collection> beans, Transaction transaction) {
+ private int saveAllInternal(@Nullable Collection> beans, @Nullable Transaction transaction) {
if (beans == null || beans.isEmpty()) {
return 0;
}
@@ -1847,7 +1852,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int delete(Class> beanType, Object id, Transaction transaction) {
+ public int delete(Class> beanType, Object id, @Nullable Transaction transaction) {
return delete(beanType, id, transaction, false);
}
@@ -1857,11 +1862,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int deletePermanent(Class> beanType, Object id, Transaction transaction) {
+ public int deletePermanent(Class> beanType, Object id, @Nullable Transaction transaction) {
return delete(beanType, id, transaction, true);
}
- private int delete(Class> beanType, Object id, Transaction transaction, boolean permanent) {
+ private int delete(Class> beanType, Object id, @Nullable Transaction transaction, boolean permanent) {
return executeInTrans((txn) -> persister.delete(beanType, id, txn, permanent), transaction);
}
@@ -1871,7 +1876,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int deleteAll(Class> beanType, Collection> ids, Transaction t) {
+ public int deleteAll(Class> beanType, Collection> ids, @Nullable Transaction t) {
return deleteAll(beanType, ids, t, false);
}
@@ -1881,11 +1886,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int deleteAllPermanent(Class> beanType, Collection> ids, Transaction t) {
+ public int deleteAllPermanent(Class> beanType, Collection> ids, @Nullable Transaction t) {
return deleteAll(beanType, ids, t, true);
}
- private int deleteAll(Class> beanType, Collection> ids, Transaction transaction, boolean permanent) {
+ private int deleteAll(Class> beanType, Collection> ids, @Nullable Transaction transaction, boolean permanent) {
return executeInTrans((txn) -> persister.deleteMany(beanType, ids, txn, permanent), transaction);
}
@@ -1901,7 +1906,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Delete the bean with the explicit transaction.
*/
@Override
- public boolean delete(Object bean, Transaction t) throws OptimisticLockException {
+ public boolean delete(Object bean, @Nullable Transaction t) throws OptimisticLockException {
// this should really return an int where -1 means jdbc batch/unknown
return persister.delete(checkEntityBean(bean), t, false) != 0;
}
@@ -1912,7 +1917,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public boolean deletePermanent(Object bean, Transaction t) throws OptimisticLockException {
+ public boolean deletePermanent(Object bean, @Nullable Transaction t) throws OptimisticLockException {
// this should really return an int where -1 means jdbc batch/unknown
return persister.delete(checkEntityBean(bean), t, true) != 0;
}
@@ -1923,7 +1928,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public int deleteAllPermanent(Collection> beans, Transaction t) {
+ public int deleteAllPermanent(Collection> beans, @Nullable Transaction t) {
return deleteAllInternal(beans, t, true);
}
@@ -1939,14 +1944,14 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Delete all the beans in the collection.
*/
@Override
- public int deleteAll(Collection> beans, Transaction t) {
+ public int deleteAll(Collection> beans, @Nullable Transaction t) {
return deleteAllInternal(beans, t, false);
}
/**
* Delete all the beans in the iterator with an explicit transaction.
*/
- private int deleteAllInternal(Collection> beans, Transaction transaction, boolean permanent) {
+ private int deleteAllInternal(@Nullable Collection> beans, @Nullable Transaction transaction, boolean permanent) {
if (beans == null || beans.isEmpty()) {
return 0;
}
@@ -1966,7 +1971,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Execute the CallableSql with an explicit transaction.
*/
@Override
- public int execute(CallableSql callSql, Transaction t) {
+ public int execute(CallableSql callSql, @Nullable Transaction t) {
return persister.executeCallable(callSql, t);
}
@@ -1982,7 +1987,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Execute the updateSql with an explicit transaction.
*/
@Override
- public int execute(SqlUpdate updSql, Transaction t) {
+ public int execute(SqlUpdate updSql, @Nullable Transaction t) {
return persister.executeSqlUpdate(updSql, t);
}
@@ -1992,12 +1997,12 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public void addBatch(SpiSqlUpdate sqlUpdate, SpiTransaction transaction) {
+ public void addBatch(SpiSqlUpdate sqlUpdate, @Nullable SpiTransaction transaction) {
persister.addBatch(sqlUpdate, transaction);
}
@Override
- public int[] executeBatch(SpiSqlUpdate sqlUpdate, SpiTransaction transaction) {
+ public int[] executeBatch(SpiSqlUpdate sqlUpdate, @Nullable SpiTransaction transaction) {
return persister.executeBatch(sqlUpdate, transaction);
}
@@ -2013,7 +2018,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Execute the updateSql with an explicit transaction.
*/
@Override
- public int execute(Update> update, Transaction t) {
+ public int execute(Update> update, @Nullable Transaction t) {
return persister.executeOrmUpdate(update, t);
}
@@ -2171,7 +2176,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
}
- private P executeInTrans(Function fun, Transaction t) {
+ private P executeInTrans(Function fun, @Nullable Transaction t) {
ObtainedTransaction wrap = initTransIfRequired(t);
try {
P result = fun.apply(wrap.transaction());
@@ -2188,7 +2193,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
/**
* Create a transaction if one is not currently active.
*/
- ObtainedTransaction initTransIfRequired(Transaction t) {
+ ObtainedTransaction initTransIfRequired(@Nullable Transaction t) {
if (t != null) {
return new ObtainedTransaction((SpiTransaction) t);
}
@@ -2256,7 +2261,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
@Override
- public Set checkUniqueness(Object bean, Transaction transaction) {
+ public Set checkUniqueness(Object bean, @Nullable Transaction transaction) {
EntityBean entityBean = checkEntityBean(bean);
BeanDescriptor> beanDesc = descriptor(entityBean.getClass());
BeanProperty idProperty = beanDesc.idProperty();
@@ -2286,7 +2291,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
* Returns a set of properties if saving the bean will violate the unique constraints (defined by given properties).
*/
@Nullable
- private Set checkUniqueness(EntityBean entityBean, BeanDescriptor> beanDesc, BeanProperty[] props, Transaction transaction) {
+ private Set checkUniqueness(EntityBean entityBean, BeanDescriptor> beanDesc, BeanProperty[] props, @Nullable Transaction transaction) {
BeanProperty idProperty = beanDesc.idProperty();
Query> query = new DefaultOrmQuery<>(beanDesc, this, expressionFactory);
ExpressionList> exprList = query.where();
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/el/ElFilter.java b/ebean-core/src/main/java/io/ebeaninternal/server/el/ElFilter.java
index 6f8aec3aa..bd28af35c 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/el/ElFilter.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/el/ElFilter.java
@@ -1,5 +1,6 @@
package io.ebeaninternal.server.el;
+import io.avaje.lang.NonNullApi;
import io.ebean.Filter;
import io.ebeaninternal.server.deploy.BeanDescriptor;
@@ -11,6 +12,7 @@ import java.util.regex.Pattern;
/**
* Default implementation of the Filter interface.
*/
+@NonNullApi
public final class ElFilter implements Filter {
private final BeanDescriptor beanDescriptor;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java b/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java
index 305da21ca..7090a63e4 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java
@@ -1,5 +1,6 @@
package io.ebeaninternal.server.executor;
+import io.avaje.lang.NonNullApi;
import io.ebeaninternal.api.SpiBackgroundExecutor;
import org.slf4j.MDC;
@@ -13,6 +14,7 @@ import java.util.concurrent.TimeUnit;
/**
* The default implementation of the BackgroundExecutor.
*/
+@NonNullApi
public final class DefaultBackgroundExecutor implements SpiBackgroundExecutor {
private final ScheduledExecutorService executor;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java b/ebean-core/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java
index b9693df6d..7141b708b 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/expression/DefaultExpressionList.java
@@ -1,5 +1,7 @@
package io.ebeaninternal.server.expression;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.CacheMode;
import io.ebean.CountDistinctOrder;
import io.ebean.DtoQuery;
@@ -51,6 +53,7 @@ import java.util.function.Predicate;
/**
* Default implementation of ExpressionList.
*/
+@NonNullApi
public class DefaultExpressionList implements SpiExpressionList {
private static final String AND = " and ";
@@ -469,6 +472,7 @@ public class DefaultExpressionList implements SpiExpressionList {
return query.exists();
}
+ @Nullable
@Override
public T findOne() {
return query.findOne();
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/expression/FilterExpressionList.java b/ebean-core/src/main/java/io/ebeaninternal/server/expression/FilterExpressionList.java
index 0e8d4ba0b..45d308eec 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/expression/FilterExpressionList.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/expression/FilterExpressionList.java
@@ -1,23 +1,15 @@
package io.ebeaninternal.server.expression;
-import io.ebean.ExpressionFactory;
-import io.ebean.ExpressionList;
-import io.ebean.FutureIds;
-import io.ebean.FutureList;
-import io.ebean.FutureRowCount;
-import io.ebean.Junction;
-import io.ebean.OrderBy;
-import io.ebean.Query;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
+import io.ebean.*;
import io.ebeaninternal.api.SpiExpressionList;
import io.ebeaninternal.api.SpiQuery;
import javax.persistence.PersistenceException;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
+@NonNullApi
public final class FilterExpressionList extends DefaultExpressionList {
private static final String notAllowedMessage = "This method is not allowed on a filter";
@@ -92,6 +84,7 @@ public final class FilterExpressionList extends DefaultExpressionList {
return rootQuery.findSet();
}
+ @Nullable
@Override
public T findOne() {
return rootQuery.findOne();
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java b/ebean-core/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java
index a408b5e74..d83db0cde 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/expression/JunctionExpression.java
@@ -1,5 +1,7 @@
package io.ebeaninternal.server.expression;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.CacheMode;
import io.ebean.CountDistinctOrder;
import io.ebean.DtoQuery;
@@ -48,6 +50,7 @@ import java.util.function.Predicate;
/**
* Junction implementation.
*/
+@NonNullApi
final class JunctionExpression implements SpiJunction, SpiExpression, ExpressionList {
DefaultExpressionList exprList;
@@ -476,6 +479,7 @@ final class JunctionExpression implements SpiJunction, SpiExpression, Expr
return exprList.findSet();
}
+ @Nullable
@Override
public T findOne() {
return exprList.findOne();
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/DFetchGroupBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/DFetchGroupBuilder.java
index 50966a45f..712e27153 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/query/DFetchGroupBuilder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/DFetchGroupBuilder.java
@@ -1,5 +1,6 @@
package io.ebeaninternal.server.query;
+import io.avaje.lang.NonNullApi;
import io.ebean.FetchConfig;
import io.ebean.FetchGroup;
import io.ebean.FetchGroupBuilder;
@@ -9,14 +10,12 @@ import io.ebeaninternal.server.querydefn.SpiFetchGroup;
/**
* Default implementation of the FetchGroupBuilder.
*/
+@NonNullApi
final class DFetchGroupBuilder implements FetchGroupBuilder {
private static final FetchConfig DEFAULT_FETCH = FetchConfig.ofDefault();
-
private static final FetchConfig FETCH_CACHE = FetchConfig.ofCache();
-
private static final FetchConfig FETCH_QUERY = FetchConfig.ofQuery();
-
private static final FetchConfig FETCH_LAZY = FetchConfig.ofLazy();
private final OrmQueryDetail detail;
@@ -38,22 +37,22 @@ final class DFetchGroupBuilder implements FetchGroupBuilder {
}
@Override
- public FetchGroupBuilder fetch(String path, FetchGroup nestedGroup) {
+ public FetchGroupBuilder fetch(String path, FetchGroup> nestedGroup) {
return fetchNested(path, nestedGroup, DEFAULT_FETCH);
}
@Override
- public FetchGroupBuilder fetchQuery(String path, FetchGroup nestedGroup) {
+ public FetchGroupBuilder fetchQuery(String path, FetchGroup> nestedGroup) {
return fetchNested(path, nestedGroup, FETCH_QUERY);
}
@Override
- public FetchGroupBuilder fetchLazy(String path, FetchGroup nestedGroup) {
+ public FetchGroupBuilder fetchLazy(String path, FetchGroup> nestedGroup) {
return fetchNested(path, nestedGroup, FETCH_LAZY);
}
- private FetchGroupBuilder fetchNested(String path, FetchGroup nestedGroup, FetchConfig fetchConfig) {
- OrmQueryDetail nestedDetail = ((SpiFetchGroup) nestedGroup).underlying();
+ private FetchGroupBuilder fetchNested(String path, FetchGroup> nestedGroup, FetchConfig fetchConfig) {
+ OrmQueryDetail nestedDetail = ((SpiFetchGroup>) nestedGroup).underlying();
detail.addNested(path, nestedDetail, fetchConfig);
return this;
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultFetchGroupQuery.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultFetchGroupQuery.java
index 5e5d2b834..8011cc1b5 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultFetchGroupQuery.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultFetchGroupQuery.java
@@ -1,5 +1,7 @@
package io.ebeaninternal.server.query;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.CacheMode;
import io.ebean.CountDistinctOrder;
import io.ebean.Database;
@@ -29,7 +31,6 @@ import io.ebeaninternal.api.SpiQueryFetch;
import io.ebeaninternal.server.querydefn.OrmQueryDetail;
import io.ebeaninternal.server.querydefn.SpiFetchGroup;
-import javax.annotation.Nullable;
import java.sql.Connection;
import java.sql.Timestamp;
import java.util.List;
@@ -43,6 +44,7 @@ import java.util.stream.Stream;
/**
* Implementation of FetchGroup query for use to create FetchGroup via query beans.
*/
+@NonNullApi
final class DefaultFetchGroupQuery implements SpiFetchGroupQuery, SpiQueryFetch {
private static final FetchConfig FETCH_CACHE = FetchConfig.ofCache();
@@ -64,6 +66,7 @@ final class DefaultFetchGroupQuery implements SpiFetchGroupQuery, SpiQuery
return this;
}
+ @SuppressWarnings("rawtypes")
@Override
public Query select(FetchGroup fetchGroup) {
this.detail = ((SpiFetchGroup) fetchGroup).detail();
@@ -116,7 +119,7 @@ final class DefaultFetchGroupQuery implements SpiFetchGroupQuery, SpiQuery
}
@Override
- public Query fetch(String property, String columns, FetchConfig config) {
+ public Query fetch(String property, @Nullable String columns, @Nullable FetchConfig config) {
detail.fetch(property, columns, config);
return this;
}
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 c404308c5..5b3c49aac 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
@@ -1,5 +1,6 @@
package io.ebeaninternal.server.querydefn;
+import io.avaje.lang.NonNullApi;
import io.ebean.DtoQuery;
import io.ebean.ProfileLocation;
import io.ebean.QueryIterator;
@@ -22,6 +23,7 @@ import java.util.stream.Stream;
/**
* Default implementation of DtoQuery.
*/
+@NonNullApi
public final class DefaultDtoQuery extends AbstractQuery implements SpiDtoQuery {
private final SpiEbeanServer server;
@@ -208,6 +210,7 @@ public final class DefaultDtoQuery extends AbstractQuery implements SpiDtoQue
return label;
}
+ @Nullable
@Override
public String getPlanLabel() {
if (label != null) {
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java
index 792a9192d..908490080 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java
@@ -1,5 +1,6 @@
package io.ebeaninternal.server.querydefn;
+import io.avaje.lang.NonNullApi;
import io.ebean.*;
import io.ebean.OrderBy.Property;
import io.ebean.bean.CallOrigin;
@@ -30,6 +31,7 @@ import java.util.stream.Stream;
/**
* Default implementation of an Object Relational query.
*/
+@NonNullApi
public final class DefaultOrmQuery extends AbstractQuery implements SpiQuery {
private static final String DEFAULT_QUERY_NAME = "default";
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultRelationalQuery.java b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultRelationalQuery.java
index 879d1bdaf..69c8dbb7a 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultRelationalQuery.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultRelationalQuery.java
@@ -1,5 +1,7 @@
package io.ebeaninternal.server.querydefn;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
import io.ebean.RowConsumer;
import io.ebean.RowMapper;
import io.ebean.SqlQuery;
@@ -17,6 +19,7 @@ import java.util.function.Predicate;
/**
* Default implementation of SQuery - SQL Query.
*/
+@NonNullApi
public final class DefaultRelationalQuery extends AbstractQuery implements SpiSqlQuery {
private static final long serialVersionUID = -1098305779779591068L;
@@ -263,6 +266,7 @@ public final class DefaultRelationalQuery extends AbstractQuery implements SpiSq
this.mapper = mapper;
}
+ @Nullable
@Override
public T findOne() {
return mapperFindOne(mapper);
diff --git a/ebean-core/src/main/java/io/ebeanservice/docstore/none/NoneDocStore.java b/ebean-core/src/main/java/io/ebeanservice/docstore/none/NoneDocStore.java
index d4932791e..a93f202bf 100644
--- a/ebean-core/src/main/java/io/ebeanservice/docstore/none/NoneDocStore.java
+++ b/ebean-core/src/main/java/io/ebeanservice/docstore/none/NoneDocStore.java
@@ -1,5 +1,6 @@
package io.ebeanservice.docstore.none;
+import io.avaje.lang.NonNullApi;
import io.ebean.DocStoreQueueEntry;
import io.ebean.DocumentStore;
import io.ebean.PagedList;
@@ -16,6 +17,7 @@ import java.util.function.Predicate;
/**
* DocumentStore that barfs it is used.
*/
+@NonNullApi
public final class NoneDocStore implements DocumentStore {
public static IllegalStateException implementationNotInClassPath() {
diff --git a/ebean-querybean/pom.xml b/ebean-querybean/pom.xml
index fc56e3c81..2ed6fac26 100644
--- a/ebean-querybean/pom.xml
+++ b/ebean-querybean/pom.xml
@@ -27,9 +27,8 @@
-->
io.avaje
- avaje-jsr305
- 1.1
- provided
+ avaje-lang
+ 1.0
diff --git a/ebean-querybean/src/main/java/io/ebean/typequery/TQRootBean.java b/ebean-querybean/src/main/java/io/ebean/typequery/TQRootBean.java
index 1e3c8570b..ed3c35350 100644
--- a/ebean-querybean/src/main/java/io/ebean/typequery/TQRootBean.java
+++ b/ebean-querybean/src/main/java/io/ebean/typequery/TQRootBean.java
@@ -1,24 +1,8 @@
package io.ebean.typequery;
-import io.ebean.CacheMode;
-import io.ebean.DB;
-import io.ebean.Database;
-import io.ebean.DtoQuery;
-import io.ebean.ExpressionList;
-import io.ebean.FetchConfig;
-import io.ebean.FetchGroup;
-import io.ebean.FutureIds;
-import io.ebean.FutureList;
-import io.ebean.FutureRowCount;
-import io.ebean.PagedList;
-import io.ebean.PersistenceContextScope;
-import io.ebean.ProfileLocation;
-import io.ebean.Query;
-import io.ebean.QueryIterator;
-import io.ebean.RawSql;
-import io.ebean.Transaction;
-import io.ebean.UpdateQuery;
-import io.ebean.Version;
+import io.avaje.lang.NonNullApi;
+import io.avaje.lang.Nullable;
+import io.ebean.*;
import io.ebean.search.MultiMatch;
import io.ebean.search.TextCommonTerms;
import io.ebean.search.TextQueryString;
@@ -28,15 +12,9 @@ import io.ebean.text.PathProperties;
import io.ebeaninternal.api.SpiQueryFetch;
import io.ebeaninternal.server.util.ArrayStack;
-import javax.annotation.Nullable;
import java.sql.Connection;
import java.sql.Timestamp;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Stream;
@@ -80,6 +58,7 @@ import java.util.stream.Stream;
* @param the entity bean type (normal entity bean type e.g. Customer)
* @param the specific root query bean type (e.g. QCustomer)
*/
+@NonNullApi
public abstract class TQRootBean {
/**
diff --git a/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java b/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java
index 865499458..00922b438 100644
--- a/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java
+++ b/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java
@@ -1,19 +1,9 @@
package org.querytest;
-import io.ebean.DB;
-import io.ebean.Database;
-import io.ebean.PagedList;
-import io.ebean.Query;
-import io.ebean.QueryIterator;
-import io.ebean.Transaction;
+import io.ebean.*;
import io.ebean.annotation.Transactional;
import io.ebean.types.Inet;
-import org.example.domain.ACat;
-import org.example.domain.ADog;
-import org.example.domain.Address;
-import org.example.domain.Animal;
-import org.example.domain.Country;
-import org.example.domain.Customer;
+import org.example.domain.*;
import org.example.domain.otherpackage.PhoneNumber;
import org.example.domain.otherpackage.ValidEmail;
import org.example.domain.query.QAnimal;
@@ -26,15 +16,7 @@ import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.StringJoiner;
+import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
@@ -155,23 +137,21 @@ public class QCustomerTest {
assertThat(ids).isNotEmpty();
- Map map = new QCustomer()
+ Map map = new QCustomer()
.status.equalTo(Customer.Status.GOOD)
.findMap();
assertThat(map.size()).isEqualTo(ids.size());
- QueryIterator iterate = new QCustomer()
- .status.equalTo(Customer.Status.GOOD)
- .findIterate();
+ try (QueryIterator iterate =
+ new QCustomer()
+ .status.equalTo(Customer.Status.GOOD)
+ .findIterate()) {
- try {
while (iterate.hasNext()) {
Customer customer = iterate.next();
assertThat(customer.getName()).isNotNull();
}
- } finally {
- iterate.close();
}
}
diff --git a/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java b/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java
index 17bd8f19b..d4b0e4b20 100644
--- a/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java
+++ b/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java
@@ -1,5 +1,6 @@
package io.ebeaninternal.api;
+import io.avaje.lang.NonNullApi;
import io.ebean.*;
import io.ebean.annotation.Platform;
import io.ebean.annotation.TxIsolation;
@@ -37,6 +38,7 @@ import java.util.stream.Stream;
/**
* Test double for SpiEbeanServer.
*/
+@NonNullApi
public class TDSpiEbeanServer extends TDSpiServer implements SpiEbeanServer {
String name;
diff --git a/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiServer.java b/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiServer.java
index 10bfcd87a..2cf23625b 100644
--- a/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiServer.java
+++ b/ebean-test/src/test/java/io/ebeaninternal/api/TDSpiServer.java
@@ -1,5 +1,6 @@
package io.ebeaninternal.api;
+import io.avaje.lang.NonNullApi;
import io.ebean.*;
import io.ebean.annotation.Platform;
import io.ebean.annotation.TxIsolation;
@@ -25,6 +26,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
+@NonNullApi
public class TDSpiServer implements SpiServer {
@Override
public void shutdown() {
diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/cluster/binarymessage/BinaryTransactionEventReadWriteTest.java b/ebean-test/src/test/java/io/ebeaninternal/server/cluster/binarymessage/BinaryTransactionEventReadWriteTest.java
index c77b855e0..61956ace5 100644
--- a/ebean-test/src/test/java/io/ebeaninternal/server/cluster/binarymessage/BinaryTransactionEventReadWriteTest.java
+++ b/ebean-test/src/test/java/io/ebeaninternal/server/cluster/binarymessage/BinaryTransactionEventReadWriteTest.java
@@ -15,6 +15,7 @@ import io.ebeaninternal.server.transaction.RemoteTransactionEvent;
import org.junit.jupiter.api.Test;
import org.tests.model.basic.Customer;
+import javax.annotation.Nonnull;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
@@ -99,8 +100,9 @@ public class BinaryTransactionEventReadWriteTest extends BaseTestCase {
}
class TDEbeanServer extends TDSpiEbeanServer {
+ @Nonnull
@Override
- public BeanDescriptor> descriptorById(String descriptorId) {
+ public BeanDescriptor> descriptorById(@Nonnull String descriptorId) {
return customerBeanDescriptor;
}
}
diff --git a/pom.xml b/pom.xml
index adc7b78f4..e00014bc5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,7 +90,7 @@
ebean-querybean
ebean-postgis
ebean-redis
-
+ tests
diff --git a/tests/test-kotlin/pom.xml b/tests/test-kotlin/pom.xml
index ba2034ca3..b99a3bc8b 100644
--- a/tests/test-kotlin/pom.xml
+++ b/tests/test-kotlin/pom.xml
@@ -95,7 +95,7 @@
test
process-test-classes
- debug=5
+ debug=1
testEnhance
diff --git a/tests/test-kotlin/src/test/kotlin/io/ebean/test/kotlin/BasicInsertQueryTest.kt b/tests/test-kotlin/src/test/kotlin/io/ebean/test/kotlin/BasicInsertQueryTest.kt
new file mode 100644
index 000000000..550e4973c
--- /dev/null
+++ b/tests/test-kotlin/src/test/kotlin/io/ebean/test/kotlin/BasicInsertQueryTest.kt
@@ -0,0 +1,32 @@
+package io.ebean.test.kotlin
+
+import io.ebean.DB
+import org.assertj.core.api.Assertions.assertThat
+import org.example.order.Customer
+import org.junit.jupiter.api.Test
+
+class BasicInsertQueryTest {
+
+ @Test
+ fun `insert find`() {
+
+ val customer = Customer("HelloThere")
+ DB.save(customer)
+
+ val found = DB.find(Customer::class.java)
+ .setId(customer.id)
+ .findOne()
+
+ val name = found?.name
+ assertThat(name).isEqualTo("HelloThere")
+ assertThat(found).isNotNull
+
+ val list = DB.find(Customer::class.java)
+ .findList()
+
+ list.size
+ assertThat(list).isNotEmpty
+
+ DB.delete(customer)
+ }
+}