@ExperimentalApi
public interface RelationService
For example, to create a favourite relation between a user and the DEV Space :
relationService.create(RelationInstance.builder(user, new SpaceFavouriteRelation(), space).build));
assertTrue(relationService.isRelated(user, new SpaceFavouriteRelation(), space));
and to find the favourite spaces of a user :
relationService.findTargets(user, new SpaceFavouriteRelation()).fetchMany(new SimplePageRequest(0, 10));
IMPORTANT: there is no security validation for user, there is only security validation for content. It's 100% responsibility of the consumer to check current user permissions for deletion of user relations!
RelationInstance
,
Relatable
,
RelationDescriptor
Modifier and Type | Interface and Description |
---|---|
static interface |
RelationService.RelatableFinder<R extends Relatable>
Finder, which is used to perform basic relation operations, such as fetching source or target entities of
particular relation, get total number of related entities etc.
|
static interface |
RelationService.Validator
Responsible for validating the create and delete operations that can be performed using the RelationService
|
Modifier and Type | Method and Description |
---|---|
<S extends Relatable,T extends Relatable> |
create(RelationInstance<S,T> relationInstance)
Creates a directed relation between two relatable entities.
|
<S extends Relatable,T extends Relatable> |
delete(RelationInstance<S,T> relationInstance)
Remove a relation if it exists between a source and a target relatable entity
|
<S extends Relatable,T extends Relatable> |
findSources(T target,
RelationDescriptor<S,T> relationDescriptor)
Create a finder to find sources of a relation.
|
<S extends Relatable,T extends Relatable> |
findTargets(S source,
RelationDescriptor<S,T> relationDescriptor)
Create a finder to find targets of a relation.
|
<S extends Relatable,T extends Relatable> |
isRelated(S source,
RelationDescriptor<S,T> relationDescriptor,
T target)
Determine whether a given source and target are related by the given relation
|
<S extends Relatable,T extends Relatable> |
removeAllRelationsFromEntityWithType(RelationDescriptor<S,T> relationDescriptor,
Relatable relatable)
Remove all relations of the given type where the given entity participates
|
RelationService.Validator |
validator() |
<S extends Relatable,T extends Relatable> RelationInstance<S,T> create(RelationInstance<S,T> relationInstance) throws ServiceException
For example, when a user favourites a space a SpaceFavouriteRelation is created from the user to the space:
relationService.create(RelationInstance.builder(user, new SpaceFavouriteRelation(), space).build))
;
S
- type of the source entityT
- type of the target entityrelationInstance
- the relation to createServiceException
- if validation fails<S extends Relatable,T extends Relatable> void delete(RelationInstance<S,T> relationInstance) throws ServiceException
S
- type of the source entityT
- type of the target entityrelationInstance
- relation to be deletedServiceException
- if validation fails<S extends Relatable,T extends Relatable> boolean isRelated(S source, RelationDescriptor<S,T> relationDescriptor, T target)
S
- type of the source entityT
- type of the target entityRelationService.Validator validator()
<S extends Relatable,T extends Relatable> RelationService.RelatableFinder<T> findTargets(S source, RelationDescriptor<S,T> relationDescriptor)
For example, to find spaces that a user has favourites :
relationService.findTargets(user, new SpaceFavouriteRelation()).fetchMany(new SimplePageRequest(0,
10));
S
- the type of the source entityT
- the type of the target entitysource
- the source entity (LHS) of the relationrelationDescriptor
- the type of relation to find<S extends Relatable,T extends Relatable> RelationService.RelatableFinder<S> findSources(T target, RelationDescriptor<S,T> relationDescriptor)
This method is used to find all sources for given relation and given source. For example, it can be used in operations like "findAllUsersWhoFavouritedThisPage" (user2content relation) or "findAllFollowers" (user2user relation)
For example, to find users that favourite a particular space :
relationService.findSources(space, new SpaceFavouriteRelation()).fetchMany(new SimplePageRequest(0,
10));
S
- the type of the source entityT
- the type of the target entitytarget
- the target entity (RHS) of the relationrelationDescriptor
- the type of relation to find<S extends Relatable,T extends Relatable> void removeAllRelationsFromEntityWithType(RelationDescriptor<S,T> relationDescriptor, Relatable relatable)
S
- the type of the source entity in the relation typeT
- the type of the target entity in the relation typerelationDescriptor
- relation descriptor representing the type of relation to removerelatable
- the entity participating in the relationshipsCopyright © 2003–2018 Atlassian. All rights reserved.