DATACMNS-1601 - Polishing.

Document throws on save(…). Align documentation for reactive repositories.

Original pull request: #412.
This commit is contained in:
Mark Paluch
2019-10-30 09:55:18 +01:00
parent 345df4e393
commit 5542474ed2
3 changed files with 91 additions and 60 deletions

View File

@@ -32,16 +32,17 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> {
*
* @param entity must not be {@literal null}.
* @return the saved entity; will never be {@literal null}.
* @throws IllegalArgumentException in case the given {@literal entity} is {@literal null}.
*/
<S extends T> S save(S entity);
/**
* Saves all given entities.
*
* @param entities must not be {@literal null} nor must it contain {@literal null}
* @param entities must not be {@literal null} nor must it contain {@literal null}.
* @return the saved entities; will never be {@literal null}. The returned {@literal Iterable} will have the same size
* as the {@literal Iterable} passed as an argument.
* @throws IllegalArgumentException in case the given {@literal Iterable} or one of its contained entities is
* @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is
* {@literal null}.
*/
<S extends T> Iterable<S> saveAll(Iterable<S> entities);
@@ -50,8 +51,8 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> {
* Retrieves an entity by its id.
*
* @param id must not be {@literal null}.
* @return the entity with the given id or {@literal Optional#empty()} if none found
* @throws IllegalArgumentException if {@code id} is {@literal null}.
* @return the entity with the given id or {@literal Optional#empty()} if none found.
* @throws IllegalArgumentException if {@literal id} is {@literal null}.
*/
Optional<T> findById(ID id);
@@ -60,7 +61,7 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> {
*
* @param id must not be {@literal null}.
* @return {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException if {@code id} is {@literal null}.
* @throws IllegalArgumentException if {@literal id} is {@literal null}.
*/
boolean existsById(ID id);
@@ -72,23 +73,23 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> {
Iterable<T> findAll();
/**
* Returns all instances of the type with the given IDs.
* Returns all instances of the type {@code T} with the given IDs.
* <p>
* If some or all ids are not found no entities are returned for these IDs.
* If some or all ids are not found, no entities are returned for these IDs.
* <p>
* Note that the order of elements in the result is not guaranteed.
*
* @param ids must not be {@literal null} nor contain any {@literal null} values.
* @return guaranteed to be not {@literal null}. The size will be equal or smaller than that of the argument.
* @throws IllegalArgumentException in case the given {@literal Iterable} or one of its contained entities is
* {@literal null}.
* @return guaranteed to be not {@literal null}. The size can be equal or less than the number of given
* {@literal ids}.
* @throws IllegalArgumentException in case the given {@link Iterable ids} or one of its items is {@literal null}.
*/
Iterable<T> findAllById(Iterable<ID> ids);
/**
* Returns the number of entities available.
*
* @return the number of entities
* @return the number of entities.
*/
long count();
@@ -96,7 +97,7 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> {
* Deletes the entity with the given id.
*
* @param id must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}
*/
void deleteById(ID id);
@@ -111,9 +112,8 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> {
/**
* Deletes the given entities.
*
* @param entities must not be {@literal null}. Must not contain {@literal null} elements
* @throws IllegalArgumentException in case the given {@literal Iterable} or one of its contained entities is
* {@literal null}.
* @param entities must not be {@literal null}. Must not contain {@literal null} elements.
* @throws IllegalArgumentException in case the given {@literal entities} or one of its entities is {@literal null}.
*/
void deleteAll(Iterable<? extends T> entities);

View File

@@ -41,7 +41,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param entity must not be {@literal null}.
* @return {@link Mono} emitting the saved entity.
* @throws IllegalArgumentException in case the given {@code entity} is {@literal null}.
* @throws IllegalArgumentException in case the given {@literal entity} is {@literal null}.
*/
<S extends T> Mono<S> save(S entity);
@@ -50,7 +50,8 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param entities must not be {@literal null}.
* @return {@link Flux} emitting the saved entities.
* @throws IllegalArgumentException in case the given {@link Iterable} {@code entities} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is
* {@literal null}.
*/
<S extends T> Flux<S> saveAll(Iterable<S> entities);
@@ -59,7 +60,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param entityStream must not be {@literal null}.
* @return {@link Flux} emitting the saved entities.
* @throws IllegalArgumentException in case the given {@code Publisher} {@code entityStream} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Publisher entityStream} is {@literal null}.
*/
<S extends T> Flux<S> saveAll(Publisher<S> entityStream);
@@ -68,7 +69,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param id must not be {@literal null}.
* @return {@link Mono} emitting the entity with the given id or {@link Mono#empty()} if none found.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}.
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}.
*/
Mono<T> findById(ID id);
@@ -77,16 +78,16 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param id must not be {@literal null}. Uses the first emitted element to perform the find-query.
* @return {@link Mono} emitting the entity with the given id or {@link Mono#empty()} if none found.
* @throws IllegalArgumentException in case the given {@link Publisher} {@code id} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Publisher id} is {@literal null}.
*/
Mono<T> findById(Publisher<ID> id);
/**
* Returns whether an entity with the id exists.
* Returns whether an entity with the given {@literal id} exists.
*
* @param id must not be {@literal null}.
* @return {@link Mono} emitting {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}.
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}.
*/
Mono<Boolean> existsById(ID id);
@@ -95,8 +96,8 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
* element to perform the exists-query.
*
* @param id must not be {@literal null}.
* @return {@link Mono} emitting {@literal true} if an entity with the given id exists, {@literal false} otherwise
* @throws IllegalArgumentException in case the given {@link Publisher} {@code id} is {@literal null}.
* @return {@link Mono} emitting {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException in case the given {@link Publisher id} is {@literal null}.
*/
Mono<Boolean> existsById(Publisher<ID> id);
@@ -108,20 +109,29 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
Flux<T> findAll();
/**
* Returns all instances with the given IDs.
* Returns all instances of the type {@code T} with the given IDs.
* <p>
* If some or all ids are not found, no entities are returned for these IDs.
* <p>
* Note that the order of elements in the result is not guaranteed.
*
* @param ids must not be {@literal null}.
* @return {@link Flux} emitting the found entities.
* @throws IllegalArgumentException in case the given {@link Iterable} {@code ids} is {@literal null}.
* @param ids must not be {@literal null} nor contain any {@literal null} values.
* @return {@link Flux} emitting the found entities. The size can be equal or less than the number of given
* {@literal ids}.
* @throws IllegalArgumentException in case the given {@link Iterable ids} or one of its items is {@literal null}.
*/
Flux<T> findAllById(Iterable<ID> ids);
/**
* Returns all instances of the type with the given IDs supplied by a {@link Publisher}.
* Returns all instances of the type {@code T} with the given IDs supplied by a {@link Publisher}.
* <p>
* If some or all ids are not found, no entities are returned for these IDs.
* <p>
* Note that the order of elements in the result is not guaranteed.
*
* @param idStream must not be {@literal null}.
* @return {@link Flux} emitting the found entities.
* @throws IllegalArgumentException in case the given {@link Publisher} {@code idStream} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Publisher idStream} is {@literal null}.
*/
Flux<T> findAllById(Publisher<ID> idStream);
@@ -137,7 +147,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param id must not be {@literal null}.
* @return {@link Mono} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}.
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}.
*/
Mono<Void> deleteById(ID id);
@@ -146,7 +156,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param id must not be {@literal null}.
* @return {@link Mono} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@link Publisher} {@code id} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Publisher id} is {@literal null}.
*/
Mono<Void> deleteById(Publisher<ID> id);
@@ -164,7 +174,8 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param entities must not be {@literal null}.
* @return {@link Mono} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@link Iterable} {@code entities} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is
* {@literal null}.
*/
Mono<Void> deleteAll(Iterable<? extends T> entities);
@@ -173,7 +184,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> {
*
* @param entityStream must not be {@literal null}.
* @return {@link Mono} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@link Publisher} {@code entityStream} is {@literal null}.
* @throws IllegalArgumentException in case the given {@link Publisher entityStream} is {@literal null}.
*/
Mono<Void> deleteAll(Publisher<? extends T> entityStream);

View File

@@ -42,7 +42,8 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* entity instance completely.
*
* @param entity must not be {@literal null}.
* @return the saved entity.
* @return {@link Single} emitting the saved entity.
* @throws IllegalArgumentException in case the given {@literal entity} is {@literal null}.
*/
<S extends T> Single<S> save(S entity);
@@ -50,8 +51,9 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Saves all given entities.
*
* @param entities must not be {@literal null}.
* @return the saved entities.
* @throws IllegalArgumentException in case the given entity is {@literal null}.
* @return {@link Flowable} emitting the saved entities.
* @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is
* {@literal null}.
*/
<S extends T> Flowable<S> saveAll(Iterable<S> entities);
@@ -59,8 +61,8 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Saves all given entities.
*
* @param entityStream must not be {@literal null}.
* @return the saved entities.
* @throws IllegalArgumentException in case the given {@code Publisher} is {@literal null}.
* @return {@link Flowable} emitting the saved entities.
* @throws IllegalArgumentException in case the given {@link Flowable entityStream} is {@literal null}.
*/
<S extends T> Flowable<S> saveAll(Flowable<S> entityStream);
@@ -68,26 +70,26 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Retrieves an entity by its id.
*
* @param id must not be {@literal null}.
* @return the entity with the given id or {@link Maybe#empty()} if none found.
* @throws IllegalArgumentException if {@code id} is {@literal null}.
* @return {@link Maybe} emitting the entity with the given id or {@link Maybe#empty()} if none found.
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}.
*/
Maybe<T> findById(ID id);
/**
* Retrieves an entity by its id supplied by a {@link Single}.
*
* @param id must not be {@literal null}.
* @return the entity with the given id or {@link Maybe#empty()} if none found.
* @throws IllegalArgumentException if {@code id} is {@literal null}.
* @param id must not be {@literal null}. Uses the first emitted element to perform the find-query.
* @return {@link Maybe} emitting the entity with the given id or {@link Maybe#empty()} if none found.
* @throws IllegalArgumentException in case the given {@link Single id} is {@literal null}.
*/
Maybe<T> findById(Single<ID> id);
/**
* Returns whether an entity with the given id exists.
* Returns whether an entity with the given {@literal id} exists.
*
* @param id must not be {@literal null}.
* @return {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException if {@code id} is {@literal null}.
* @return {@link Single} emitting {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}.
*/
Single<Boolean> existsById(ID id);
@@ -95,38 +97,49 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Returns whether an entity with the given id, supplied by a {@link Single}, exists.
*
* @param id must not be {@literal null}.
* @return {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException if {@code id} is {@literal null}
* @return {@link Single} emitting {@literal true} if an entity with the given id exists, {@literal false} otherwise.
* @throws IllegalArgumentException in case the given {@link Single id} is {@literal null}.
*/
Single<Boolean> existsById(Single<ID> id);
/**
* Returns all instances of the type.
*
* @return all entities.
* @return {@link Flowable} emitting all entities.
*/
Flowable<T> findAll();
/**
* Returns all instances of the type with the given IDs.
* Returns all instances of the type {@code T} with the given IDs.
* <p>
* If some or all ids are not found, no entities are returned for these IDs.
* <p>
* Note that the order of elements in the result is not guaranteed.
*
* @param ids must not be {@literal null}.
* @return the found entities.
* @param ids must not be {@literal null} nor contain any {@literal null} values.
* @return {@link Flowable} emitting the found entities. The size can be equal or less than the number of given
* {@literal ids}.
* @throws IllegalArgumentException in case the given {@link Iterable ids} or one of its items is {@literal null}.
*/
Flowable<T> findAllById(Iterable<ID> ids);
/**
* Returns all instances of the type with the given IDs.
* Returns all instances of the type {@code T} with the given IDs supplied by a {@link Flowable}.
* <p>
* If some or all ids are not found, no entities are returned for these IDs.
* <p>
* Note that the order of elements in the result is not guaranteed.
*
* @param idStream must not be {@literal null}.
* @return the found entities.
* @return {@link Flowable} emitting the found entities.
* @throws IllegalArgumentException in case the given {@link Flowable idStream} is {@literal null}.
*/
Flowable<T> findAllById(Flowable<ID> idStream);
/**
* Returns the number of entities available.
*
* @return the number of entities.
* @return {@link Single} emitting the number of entities.
*/
Single<Long> count();
@@ -134,7 +147,8 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Deletes the entity with the given id.
*
* @param id must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}.
* @return {@link Completable} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@literal id} is {@literal null}.
*/
Completable deleteById(ID id);
@@ -142,6 +156,7 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Deletes a given entity.
*
* @param entity must not be {@literal null}.
* @return {@link Completable} signaling when operation has completed.
* @throws IllegalArgumentException in case the given entity is {@literal null}.
*/
Completable delete(T entity);
@@ -150,20 +165,25 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> {
* Deletes the given entities.
*
* @param entities must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@link Iterable} is {@literal null}.
* @return {@link Completable} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is
* {@literal null}.
*/
Completable deleteAll(Iterable<? extends T> entities);
/**
* Deletes the given entities.
* Deletes the given entities supplied by a {@link Flowable}.
*
* @param entityStream must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@link Flowable} is {@literal null}.
* @return {@link Completable} signaling when operation has completed.
* @throws IllegalArgumentException in case the given {@link Flowable entityStream} is {@literal null}.
*/
Completable deleteAll(Flowable<? extends T> entityStream);
/**
* Deletes all entities managed by the repository.
*
* @return {@link Completable} signaling when operation has completed.
*/
Completable deleteAll();
}