Package org.opensaml.xacml.ctx.provider.impl

# Class ObligationService

java.lang.Object
org.opensaml.xacml.ctx.provider.impl.ObligationService

public class ObligationService extends Object
A service for evaluating the obligations within a context.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`private class`
`ObligationService.ObligationHandlerComparator`
Comparator used to order obligation handlers by precedence.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Set<BaseObligationHandler>`
`obligationHandlers`
Registered obligation handlers.
`private ReentrantReadWriteLock`
`rwLock`
Read/write lock around the registered obligation handlers.

## Constructor Summary

Constructors
Constructor
Description
`ObligationService()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`addObligationhandler(Collection<BaseObligationHandler> handlers)`
Adds a collection of obligation handler to the list of registered handlers This method waits until a write lock is obtained for the set of registered obligation handlers.
`void`
`addObligationhandler(BaseObligationHandler handler)`
Adds an obligation handler to the list of registered handlers This method waits until a write lock is obtained for the set of registered obligation handlers.
`Set<BaseObligationHandler>`
`getObligationHandlers()`
Gets the registered obligation handlers.
`protected Map<String,ObligationType>`
`preprocessObligations(ObligationProcessingContext context)`
Preprocesses the obligations returned within the result.
`void`
`processObligations(ObligationProcessingContext context)`
Processes the obligations within the effective XACML policy.
`void`
`removeObligationHandler(BaseObligationHandler handler)`
Removes an obligation handler from the list of registered handlers This method waits until a write lock is obtained for the set of registered obligation handlers.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### rwLock

@Nonnull private ReentrantReadWriteLock rwLock
Read/write lock around the registered obligation handlers.

### obligationHandlers

@Nonnull private Set<BaseObligationHandler> obligationHandlers
Registered obligation handlers.

## Constructor Details

### ObligationService

public ObligationService()
Constructor.

## Method Details

### getObligationHandlers

@Nonnull @Unmodifiable @Live public Set<BaseObligationHandler> getObligationHandlers()
Gets the registered obligation handlers.

Returns:
  registered obligation handlers

### addObligationhandler

public void addObligationhandler(@Nonnull BaseObligationHandler handler)
Adds an obligation handler to the list of registered handlers This method waits until a write lock is obtained for the set of registered obligation handlers.

Parameters:
  `handler` - the handler to add to the list of registered handlers.

### addObligationhandler

public void addObligationhandler(@Nonnull Collection<BaseObligationHandler> handlers)
Adds a collection of obligation handler to the list of registered handlers This method waits until a write lock is obtained for the set of registered obligation handlers.

Parameters:
  `handlers` - the collection of handlers to add to the list of registered handlers.

### removeObligationHandler

public void removeObligationHandler(@Nonnull BaseObligationHandler handler)
Removes an obligation handler from the list of registered handlers This method waits until a write lock is obtained for the set of registered obligation handlers.

Parameters:
  `handler` - the handler to remove from the list of registered handlers.

### processObligations

public void processObligations(@Nonnull ObligationProcessingContext context) throws ObligationProcessingException
Processes the obligations within the effective XACML policy. This method waits until a read lock is obtained for the set of registered obligation handlers.

Parameters:
  `context` - current processing context
Throws:
  `ObligationProcessingException` - thrown if there is a problem evaluating an obligation

### preprocessObligations

@Nonnull protected Map<String,ObligationType> preprocessObligations(@Nonnull ObligationProcessingContext context)
Preprocesses the obligations returned within the result. This preprocessing determines the active effect, based on `ResultType.getDecision()`, and creates an index that maps obligation IDs to the `ObligationType` returned by the PDP.

Parameters:
  `context` - current processing context
Returns:
  preprocessed obligations