Browse Source

DATACMNS-1601 - Polishing.

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

Original pull request: #412.
pull/420/head
Mark Paluch 6 years ago
parent
commit
6d8040d8da
No known key found for this signature in database
GPG Key ID: 51A00FA751B91849
  1. 30
      src/main/java/org/springframework/data/repository/CrudRepository.java
  2. 49
      src/main/java/org/springframework/data/repository/reactive/ReactiveCrudRepository.java
  3. 72
      src/main/java/org/springframework/data/repository/reactive/RxJava2CrudRepository.java

30
src/main/java/org/springframework/data/repository/CrudRepository.java

@ -32,16 +32,17 @@ public interface CrudRepository<T, ID> extends Repository<T, ID> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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);

49
src/main/java/org/springframework/data/repository/reactive/ReactiveCrudRepository.java

@ -41,7 +41,7 @@ public interface ReactiveCrudRepository<T, ID> extends Repository<T, ID> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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);

72
src/main/java/org/springframework/data/repository/reactive/RxJava2CrudRepository.java

@ -42,7 +42,8 @@ public interface RxJava2CrudRepository<T, ID> extends Repository<T, ID> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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> { @@ -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();
}

Loading…
Cancel
Save