Package net.shibboleth.idp.session

# Class AbstractSPSessionSerializer

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
net.shibboleth.idp.session.AbstractSPSessionSerializer

All Implemented Interfaces:
  `Component`, `DestructableComponent`, `InitializableComponent`, `StorageSerializer<SPSession>`

Direct Known Subclasses:
  `BasicSPSessionSerializer`, `CASSPSessionSerializer`, `SAML1SPSessionSerializer`, `SAML2SPSessionSerializer`

@ThreadSafe public abstract class AbstractSPSessionSerializer extends AbstractInitializableComponent implements StorageSerializer<SPSession>
Base class for `SPSession` serializers that handles data common to all such objects.

## Field Summary

Fields
Modifier and Type
Field
Description
`private static final String`
`CREATION_INSTANT_FIELD`
Field name of creation instant.
`private final Duration`
`expirationOffset`
Milliseconds to subtract from record expiration to establish session expiration value.
`private final org.slf4j.Logger`
`log`
Class logger.
`private static final String`
`SERVICE_ID_FIELD`
Field name of service ID.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractSPSessionSerializer(Duration offset)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`SPSession`
`deserialize(long version, String context, String key, String value, Long expiration)`
`protected abstract SPSession`
`doDeserialize(JsonObject obj, String id, Instant creation, Instant expiration)`
Implement this method to return the appropriate type of object, populated with the basic information supplied.
`protected void`
`doSerializeAdditional(SPSession instance, JsonGenerator generator)`
Override this method to handle serialization of additional data.
`String`
`serialize(SPSession instance)`

### Methods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent

`checkComponentActive, checkSetterPreconditions, destroy, doDestroy, doInitialize, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, initialize, isDestroyed, isInitialized`

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

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

### Methods inherited from interface net.shibboleth.shared.component.InitializableComponent

`initialize, isInitialized`

## Field Details

### SERVICE_ID_FIELD

@Nonnull @NotEmpty private static final String SERVICE_ID_FIELD
Field name of service ID.

See Also:
  - Constant Field Values

### CREATION_INSTANT_FIELD

@Nonnull @NotEmpty private static final String CREATION_INSTANT_FIELD
Field name of creation instant.

See Also:
  - Constant Field Values

### log

@Nonnull private final org.slf4j.Logger log
Class logger.

### expirationOffset

@Nonnull private final Duration expirationOffset
Milliseconds to subtract from record expiration to establish session expiration value.

## Constructor Details

### AbstractSPSessionSerializer

protected AbstractSPSessionSerializer(@Nonnull Duration offset)
Constructor.

Parameters:
  `offset` - time to subtract from record expiration to establish session expiration value

## Method Details

### serialize

@Nonnull @NotEmpty public String serialize(@Nonnull SPSession instance) throws IOException

Specified by:
  `serialize` in interface `StorageSerializer<SPSession>`
Throws:
  `IOException`

### deserialize

@Nonnull public SPSession deserialize(long version, @Nonnull @NotEmpty String context, @Nonnull @NotEmpty String key, @Nonnull @NotEmpty String value, @Nullable Long expiration) throws IOException

Specified by:
  `deserialize` in interface `StorageSerializer<SPSession>`
Throws:
  `IOException`

### doSerializeAdditional

protected void doSerializeAdditional(@Nonnull SPSession instance, @Nonnull JsonGenerator generator)
Override this method to handle serialization of additional data.

The serialization "context" is the continuation of a JSON struct.

Parameters:
  `instance` - object to serialize
  `generator` - JSON generator to write to

### doDeserialize

@Nonnull protected abstract SPSession doDeserialize(@Nonnull JsonObject obj, @Nonnull @NotEmpty String id, @Nonnull Instant creation, @Nonnull Instant expiration) throws IOException
Implement this method to return the appropriate type of object, populated with the basic information supplied.

The JSON object supplied is a structure that may contain additional data created by the concrete subclass during serialization.

Parameters:
  `obj` - JSON structure to parse
  `id` - the identifier of the service associated with this session
  `creation` - creation time of session
  `expiration` - expiration time of session
Returns:
  the newly constructed object
Throws:
  `IOException` - if an error occurs during deserialization