# Class DeltaRequest

java.lang.Object
org.apache.catalina.ha.session.DeltaRequest

All Implemented Interfaces:
  `Externalizable, Serializable`

public class DeltaRequest extends Object implements Externalizable
This class is used to track the series of actions that happens when a request is executed. These actions will then translate into invocations of methods on the actual session.

This class is NOT thread safe. One DeltaRequest per session.

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ACTION_REMOVE`
Action to remove a value.
`static final int`
`ACTION_SET`
Action to set a value.
`static final Log`
`log`
The logger for this class.
`static final String`
`NAME_AUTHTYPE`
Name used for auth type actions.
`static final String`
`NAME_ISNEW`
Name used for new flag actions.
`static final String`
`NAME_LISTENER`
Name used for listener actions.
`static final String`
`NAME_MAXINTERVAL`
Name used for max inactive interval actions.
`static final String`
`NAME_PRINCIPAL`
Name used for principal actions.
`protected static final StringManager`
`sm`
The string manager for this package.
`static final int`
`TYPE_ATTRIBUTE`
Action type for session attributes.
`static final int`
`TYPE_AUTHTYPE`
Action type for session authentication type.
`static final int`
`TYPE_ISNEW`
Action type for session new flag.
`static final int`
`TYPE_LISTENER`
Action type for session listener.
`static final int`
`TYPE_MAXINTERVAL`
Action type for session max inactive interval.
`static final int`
`TYPE_NOTE`
Action type for session note.
`static final int`
`TYPE_PRINCIPAL`
Action type for session principal.

## Constructor Summary

Constructors
Constructor
Description
`DeltaRequest()`
Default constructor required by `Externalizable`.
`DeltaRequest(String sessionId, boolean recordAllActions)`
Construct a new DeltaRequest.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addAction(int type, int action, String name, Object value)`
Add an action to the list of actions to be executed.
`void`
`addSessionListener(SessionListener listener)`
Record an add session listener action.
`void`
`clear()`
Clear all actions and the action pool.
`void`
`execute(DeltaSession session, boolean notifyListeners)`
Execute all recorded actions on the given session.
`String`
`getSessionId()`
Get the session identifier.
`int`
`getSize()`
Get the number of actions recorded.
`void`
`readExternal(ObjectInput in)`
`void`
`removeAttribute(String name)`
Record a remove attribute action.
`void`
`removeNote(String name)`
Record a remove note action.
`void`
`removeSessionListener(SessionListener listener)`
Record a remove session listener action.
`void`
`reset()`
Reset this request, returning all action objects to the pool.
`protected byte[]`
`serialize()`
serialize DeltaRequest
`void`
`setAttribute(String name, Object value)`
Record a set attribute action.
`void`
`setAuthType(String authType)`
Record a set auth type action.
`void`
`setMaxInactiveInterval(int interval)`
Record a set max inactive interval action.
`void`
`setNew(boolean n)`
Record a set new action.
`void`
`setNote(String name, Object value)`
Record a set note action.
`void`
`setPrincipal(Principal p)`
Only support principals from type `GenericPrincipal`
`void`
`setSessionId(String sessionId)`
Set the session identifier.
`void`
`writeExternal(ObjectOutput out)`

### Methods inherited from class Object

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

## Field Details

### log

public static final Log log
The logger for this class.

### sm

protected static final StringManager sm
The string manager for this package.

### TYPE_ATTRIBUTE

public static final int TYPE_ATTRIBUTE
Action type for session attributes.

See Also:
  - Constant Field Values

### TYPE_PRINCIPAL

public static final int TYPE_PRINCIPAL
Action type for session principal.

See Also:
  - Constant Field Values

### TYPE_ISNEW

public static final int TYPE_ISNEW
Action type for session new flag.

See Also:
  - Constant Field Values

### TYPE_MAXINTERVAL

public static final int TYPE_MAXINTERVAL
Action type for session max inactive interval.

See Also:
  - Constant Field Values

### TYPE_AUTHTYPE

public static final int TYPE_AUTHTYPE
Action type for session authentication type.

See Also:
  - Constant Field Values

### TYPE_LISTENER

public static final int TYPE_LISTENER
Action type for session listener.

See Also:
  - Constant Field Values

### TYPE_NOTE

public static final int TYPE_NOTE
Action type for session note.

See Also:
  - Constant Field Values

### ACTION_SET

public static final int ACTION_SET
Action to set a value.

See Also:
  - Constant Field Values

### ACTION_REMOVE

public static final int ACTION_REMOVE
Action to remove a value.

See Also:
  - Constant Field Values

### NAME_PRINCIPAL

public static final String NAME_PRINCIPAL
Name used for principal actions.

See Also:
  - Constant Field Values

### NAME_MAXINTERVAL

public static final String NAME_MAXINTERVAL
Name used for max inactive interval actions.

See Also:
  - Constant Field Values

### NAME_ISNEW

public static final String NAME_ISNEW
Name used for new flag actions.

See Also:
  - Constant Field Values

### NAME_AUTHTYPE

public static final String NAME_AUTHTYPE
Name used for auth type actions.

See Also:
  - Constant Field Values

### NAME_LISTENER

public static final String NAME_LISTENER
Name used for listener actions.

See Also:
  - Constant Field Values

## Constructor Details

### DeltaRequest

public DeltaRequest()
Default constructor required by `Externalizable`.

### DeltaRequest

public DeltaRequest(String sessionId, boolean recordAllActions)
Construct a new DeltaRequest.

Parameters:
  `sessionId` - Session identifier
  `recordAllActions` - Record all actions, including duplicates

## Method Details

### setAttribute

public void setAttribute(String name, Object value)
Record a set attribute action.

Parameters:
  `name` - Attribute name
  `value` - Attribute value

### removeAttribute

public void removeAttribute(String name)
Record a remove attribute action.

Parameters:
  `name` - Attribute name

### setNote

public void setNote(String name, Object value)
Record a set note action.

Parameters:
  `name` - Note name
  `value` - Note value

### removeNote

public void removeNote(String name)
Record a remove note action.

Parameters:
  `name` - Note name

### setMaxInactiveInterval

public void setMaxInactiveInterval(int interval)
Record a set max inactive interval action.

Parameters:
  `interval` - Max inactive interval in seconds

### setPrincipal

public void setPrincipal(Principal p)
Only support principals from type `GenericPrincipal`

Parameters:
  `p` - Session principal
See Also:
  - `GenericPrincipal`

### setNew

public void setNew(boolean n)
Record a set new action.

Parameters:
  `n` - New flag value

### setAuthType

public void setAuthType(String authType)
Record a set auth type action.

Parameters:
  `authType` - Authentication type

### addSessionListener

public void addSessionListener(SessionListener listener)
Record an add session listener action.

Parameters:
  `listener` - Session listener to add

### removeSessionListener

public void removeSessionListener(SessionListener listener)
Record a remove session listener action.

Parameters:
  `listener` - Session listener to remove

### addAction

protected void addAction(int type, int action, String name, Object value)
Add an action to the list of actions to be executed.

Parameters:
  `type` - Action type
  `action` - Action (set or remove)
  `name` - Attribute or property name
  `value` - Attribute or property value

### execute

public void execute(DeltaSession session, boolean notifyListeners)
Execute all recorded actions on the given session.

Parameters:
  `session` - Target session
  `notifyListeners` - Whether to notify session listeners

### reset

public void reset()
Reset this request, returning all action objects to the pool.

### getSessionId

public String getSessionId()
Get the session identifier.

Returns:
  Session identifier

### setSessionId

public void setSessionId(String sessionId)
Set the session identifier.

Parameters:
  `sessionId` - Session identifier

### getSize

public int getSize()
Get the number of actions recorded.

Returns:
  Number of actions

### clear

public void clear()
Clear all actions and the action pool.

### readExternal

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException

Specified by:
  `readExternal` in interface `Externalizable`
Throws:
  `IOException`
  `ClassNotFoundException`

### writeExternal

public void writeExternal(ObjectOutput out) throws IOException

Specified by:
  `writeExternal` in interface `Externalizable`
Throws:
  `IOException`

### serialize

protected byte[] serialize() throws IOException
serialize DeltaRequest

Returns:
  serialized delta request
Throws:
  `IOException` - IO error serializing
See Also:
  - `writeExternal(java.io.ObjectOutput)`