Package com.tangosol.coherence.servlet
Class AttributeHolder
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.coherence.servlet.AttributeHolder
-
- All Implemented Interfaces:
Externalizable,Serializable
- Direct Known Subclasses:
OptimizedHolder
public class AttributeHolder extends Base implements Externalizable
An immutable object to hold attribute values and related information.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Constructor Summary
Constructors Constructor Description AttributeHolder()Default constructor is required for deserialization purposes.AttributeHolder(AbstractHttpSessionModel model)AttributeHolder(String sName, Object oValue, AbstractHttpSessionModel model)Construct an AttributeHolder for a value.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidflush()Called to flush the value to its data storage.protected ObjectgetInternalValue()Obtain the internally managed object value.AbstractHttpSessionModelgetModel()Return the AbstractHttpSessionModel to which this AttributeHolder belongs.StringgetName()Determine the name of the attribute.ObjectgetValue()Obtain the object form of the value.booleanisActivationListener()Determine if the value is an object that implements the HttpSessionActivationListener interface.booleanisBindingListener()Determine if the value is an object that implements the HttpSessionBindingListener interface.protected booleanisEnableSuspectAttributes()Determine if suspect attributes need special treatment.booleanisLocal()If a session distribution controller is used, and if the session is not local (is distributed), then this property specifies whether or not this specific attribute is managed locally.protected booleanisSuspect()Determine if the value needs to be serialized because it was never serialized or because it could have changed.protected booleanisSuspect(Object oValue)Determine if the value needs to be marked as suspect because suspect attribute handling is enabled and it is not known to be immutablevoidonBound(AttributeHolder holderOrig)Called when the attribute is bound.voidonUnbound(boolean fReplaced, boolean fAll)Called when the attribute is unbound.protected voidprepareWrite()Called to test serialization; if the holder cannot serialize its value, it should throw an IOException at this point.voidreadExternal(DataInput in)Helper to read the object state from a stream.voidreadExternal(ObjectInput in)The object implements the readExternal method to restore its contents by calling the methods of DataInput for primitive types and readObject for objects, strings and arrays.protected voidsetInternalValue(Object oValue)Store the internally managed object value.protected voidsetLocal(boolean fLocal)Specify whether or not this attribute is managed locally.protected voidsetModel(AbstractHttpSessionModel model)protected voidsetSuspect(boolean fSuspect)Toggle the suspect flag for the value.voidwriteExternal(DataOutput out)Helper to write the object state to a stream.voidwriteExternal(ObjectOutput out)The object implements the writeExternal method to save its contents by calling the methods of DataOutput for its primitive values or calling the writeObject method of ObjectOutput for objects, strings, and arrays.-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
-
-
-
Constructor Detail
-
AttributeHolder
public AttributeHolder()
Default constructor is required for deserialization purposes.
-
AttributeHolder
public AttributeHolder(AbstractHttpSessionModel model)
-
AttributeHolder
public AttributeHolder(String sName, Object oValue, AbstractHttpSessionModel model)
Construct an AttributeHolder for a value.- Parameters:
sName- the attribute nameoValue- the value of the attribute; not nullmodel- the http session model
-
-
Method Detail
-
getModel
public AbstractHttpSessionModel getModel()
Return the AbstractHttpSessionModel to which this AttributeHolder belongs.- Returns:
- the parent AbstractHttpSessionModel
-
setModel
protected void setModel(AbstractHttpSessionModel model)
-
getName
public String getName()
Determine the name of the attribute.- Returns:
- the attribute name managed by this holder
-
getValue
public Object getValue()
Obtain the object form of the value.- Returns:
- the object form of the value
-
isActivationListener
public boolean isActivationListener()
Determine if the value is an object that implements the HttpSessionActivationListener interface.- Returns:
- true if the value implements HttpSessionActivationListener
-
isBindingListener
public boolean isBindingListener()
Determine if the value is an object that implements the HttpSessionBindingListener interface.- Returns:
- true if the value implements HttpSessionBindingListener
-
onBound
public void onBound(AttributeHolder holderOrig)
Called when the attribute is bound.- Parameters:
holderOrig- the holder that this new bound holder is replacing, if any, otherwise null
-
onUnbound
public void onUnbound(boolean fReplaced, boolean fAll)Called when the attribute is unbound.- Parameters:
fReplaced- set to true of this is the result of a bind operation (so the holder is being replaced)fAll- true if this method is called within the context of anAbstractHttpSessionModel.unbind()call
-
isLocal
public boolean isLocal()
If a session distribution controller is used, and if the session is not local (is distributed), then this property specifies whether or not this specific attribute is managed locally.- Returns:
- true iff the attribute is managed locally
-
setLocal
protected void setLocal(boolean fLocal)
Specify whether or not this attribute is managed locally.Note: an attribute could change from local to distributed if and only if a session distribution controller is used and the session is distributed. It could change from distributed to local only as a result of serialization failure when the attribute preservation feature is enabled.
- Parameters:
fLocal- true iff the attribute is managed locally
-
flush
protected void flush() throws IOExceptionCalled to flush the value to its data storage.- Throws:
IOException- on I/O error
-
getInternalValue
protected Object getInternalValue()
Obtain the internally managed object value.- Returns:
- the cached object form of the value, or null if it has not been lazily deserialized
-
setInternalValue
protected void setInternalValue(Object oValue)
Store the internally managed object value.- Parameters:
oValue- the object form of the value
-
isSuspect
protected boolean isSuspect()
Determine if the value needs to be serialized because it was never serialized or because it could have changed.- Returns:
- true if the holder's value has been accessed and is mutable
-
isSuspect
protected boolean isSuspect(Object oValue)
Determine if the value needs to be marked as suspect because suspect attribute handling is enabled and it is not known to be immutable- Parameters:
oValue- the object which may be suspect- Returns:
- true if the object is deemed suspect
-
setSuspect
protected void setSuspect(boolean fSuspect)
Toggle the suspect flag for the value. Method provided to enable effective subclassing.- Parameters:
fSuspect- true if suspect, false otherwise
-
prepareWrite
protected void prepareWrite() throws IOExceptionCalled to test serialization; if the holder cannot serialize its value, it should throw an IOException at this point. Note that this method should only be called as part of the "write" processing for the model, as the holder will expect an immediate follow-up call to actually write itself out.- Throws:
IOException- if the holder cannot serialize its value
-
isEnableSuspectAttributes
protected boolean isEnableSuspectAttributes()
Determine if suspect attributes need special treatment.- Returns:
- true iff suspect attributes need special treatment
- See Also:
SessionHelper.CTX_INIT_ENABLE_SUSPECT_ATTRIBUTES
-
readExternal
public void readExternal(ObjectInput in) throws IOException
The object implements the readExternal method to restore its contents by calling the methods of DataInput for primitive types and readObject for objects, strings and arrays. The readExternal method must read the values in the same sequence and with the same types as were written by writeExternal.- Specified by:
readExternalin interfaceExternalizable- Parameters:
in- the stream to read data from in order to restore the object- Throws:
IOException- if an I/O exception occurs
-
writeExternal
public void writeExternal(ObjectOutput out) throws IOException
The object implements the writeExternal method to save its contents by calling the methods of DataOutput for its primitive values or calling the writeObject method of ObjectOutput for objects, strings, and arrays.- Specified by:
writeExternalin interfaceExternalizable- Parameters:
out- the stream to write the object to- Throws:
IOException- if an I/O exception occurs
-
readExternal
public void readExternal(DataInput in) throws IOException
Helper to read the object state from a stream.- Parameters:
in- the stream to read data from in order to restore the object- Throws:
IOException- if an I/O exception occurs
-
writeExternal
public void writeExternal(DataOutput out) throws IOException
Helper to write the object state to a stream.- Parameters:
out- the stream to write the object to- Throws:
IOException- if an I/O exception occurs
-
-