Package com.tangosol.util.extractor
Class UniversalUpdater
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.BitHelper
-
- com.tangosol.util.ExternalizableHelper
-
- com.tangosol.util.extractor.AbstractUpdater
-
- com.tangosol.util.extractor.UniversalUpdater
-
- All Implemented Interfaces:
ExternalizableLite
,PortableObject
,ValueUpdater
,Serializable
public class UniversalUpdater extends AbstractUpdater implements ExternalizableLite, PortableObject
Universal ValueUpdater implementation.Either a property-based and method-based
ValueUpdater
based on whether constructor parametersName
is evaluated to be a property or method. Depending on thetarget
parameter ofupdate(Object, Object)
target
, the property can reference a JavaBean property orMap
key.- Since:
- 12.2.1.4
- Author:
- gg 2005.10.27, jf 2017.11.28
- See Also:
CompositeUpdater
, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelper
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description static String
BEAN_MODIFIER_PREFIX
JavaBean property modifier prefix.protected String
m_sName
A method name, or a property name.static String
METHOD_SUFFIX
Ifm_sName
ends with this suffix, it represents a method name.-
Fields inherited from class com.tangosol.util.ExternalizableHelper
BINARY_SIZE, CHUNK_SIZE, CHUNK_THRESHOLD, CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, DECO_BACKUP, DECO_CUSTOM, DECO_EXPIRY, DECO_ID_MAX, DECO_ID_MIN, DECO_JCACHE, DECO_JCACHE_SYNTHETIC, DECO_MEMCACHED, DECO_PUSHREP, DECO_QUEUE_METADATA, DECO_RSVD_1, DECO_STORE, DECO_TX, DECO_VALUE, DECO_WLS, EMPTY_BINARY_ARRAY, FMT_B_ARRAY, FMT_BIN_DECO, FMT_BIN_EXT_DECO, FMT_BINARY, FMT_BOOLEAN, FMT_BYTE, FMT_DECIMAL, FMT_DOUBLE, FMT_EXT, FMT_FLOAT, FMT_IDO, FMT_INT, FMT_INTEGER, FMT_LONG, FMT_NONE, FMT_NULL, FMT_OBJ_EXT, FMT_OBJ_SER, FMT_OPT, FMT_OPT_DOUBLE, FMT_OPT_INT, FMT_OPT_LONG, FMT_SHORT, FMT_STRING, FMT_UNKNOWN, FMT_XML_BEAN, FMT_XML_SER, FORCE_RESOLVING_STREAMS, LAMBDA_SERIALIZATION, MAX_DECO_HEADER_BYTES, PACKED_INT_SIZE, PACKED_LONG_SIZE, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
-
-
Constructor Summary
Constructors Constructor Description UniversalUpdater()
Default constructor (necessary for the ExternalizableLite interface).UniversalUpdater(String sName)
Construct a UniversalUpdater for the provided name.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static String
computeCanonicalName(String sName)
Compute the canonical name for this updater.static ValueUpdater
createUpdater(String sNames)
Return aValueUpdater
forsNames
boolean
equals(Object o)
Compare the UniversalUpdater with another object to determine equality.String
getCanonicalName()
Return the canonical name for this updater.String
getMethodName()
Determine the name of the method that this extractor is configured to invoke.int
hashCode()
Determine a hash value for the UniversalUpdater object according to the generalObject.hashCode()
contract.boolean
isMethodUpdater()
Return true iff this updater references a setter method.void
readExternal(PofReader in)
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
readExternal(DataInput in)
Restore the contents of this object by loading the object's state from the passed DataInput object.String
toString()
Provide a human-readable description of this ValueUpdater object.void
update(Object oTarget, Object oValue)
Update the state of the passed target object using the passed value.protected void
updateComplex(Object oTarget, Object oValue)
Implement update of target using reflection or property setter.void
writeExternal(PofWriter out)
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.void
writeExternal(DataOutput out)
Save the contents of this object by storing the object's state into the passed DataOutput object.-
Methods inherited from class com.tangosol.util.extractor.AbstractUpdater
updateEntry
-
Methods inherited from class com.tangosol.util.ExternalizableHelper
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, checkObjectInputFilter, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getConfigSerialFilter, getConfigSerialFilterFactory, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectInputFilter, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isPatchCompatible, isPatchCompatible, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readBooleanArray, readByteArray, readCharArray, readCharArray, readCollection, readDate, readDoubleArray, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readFloatArray, readInt, readInt, readIntArray, readIntArray, readIntArray2d, readLargeBooleanArray, readLargeByteArray, readLargeCharArray, readLargeDoubleArray, readLargeFloatArray, readLargeIntArray, readLargeLongArray, readLargeObjectArray, readLargeStringArray, readLong, readLong, readLongArray, readLongArray, readMap, readMap, readObject, readObject, readObjectArray, readObjectArray, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, validateLoadArray, validateLoadClass, writeBigDecimal, writeBigInteger, writeBooleanArray, writeByteArray, writeCollection, writeDate, writeDoubleArray, writeExternalizableLite, writeFloatArray, writeInt, writeInt, writeIntArray2d, writeLong, writeLong, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializable
-
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLong
-
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
-
-
-
-
Field Detail
-
BEAN_MODIFIER_PREFIX
public static final String BEAN_MODIFIER_PREFIX
JavaBean property modifier prefix.- See Also:
- Constant Field Values
-
METHOD_SUFFIX
public static final String METHOD_SUFFIX
Ifm_sName
ends with this suffix, it represents a method name.- See Also:
- Constant Field Values
-
m_sName
protected String m_sName
A method name, or a property name.
-
-
Constructor Detail
-
UniversalUpdater
public UniversalUpdater()
Default constructor (necessary for the ExternalizableLite interface).
-
UniversalUpdater
public UniversalUpdater(String sName)
Construct a UniversalUpdater for the provided name. IfsName
ends in aMETHOD_SUFFIX
, then the name is a method name. This implementation assumes that a target's class will have one and only one method with the specified name and this method will have exactly one parameter; if the name is a property name, there should be a corresponding JavaBean property modifier method or it will be used as a key in aMap
.- Parameters:
sName
- a method or property name- See Also:
computeCanonicalName(String)
-
-
Method Detail
-
update
public void update(Object oTarget, Object oValue)
Update the state of the passed target object using the passed value. For intrinsic types, the specified value is expected to be a standard wrapper type in the same manner that reflection works; for example, an int value would be passed as a java.lang.Integer.- Specified by:
update
in interfaceValueUpdater
- Overrides:
update
in classAbstractUpdater
- Parameters:
oTarget
- the Object to update the state ofoValue
- the new value to update the state with- See Also:
updateComplex(Object, Object)
-
isMethodUpdater
public boolean isMethodUpdater()
Return true iff this updater references a setter method.- Returns:
- true iff this is setter method updater.
-
getMethodName
public String getMethodName()
Determine the name of the method that this extractor is configured to invoke.- Returns:
- method name without the
METHOD_SUFFIX
-
getCanonicalName
public String getCanonicalName()
Return the canonical name for this updater. A canonical name uniquely identifies an updater, but not how it is to be updated. Thus, two different updater implementations with the same non-null canonical name are considered to be equal, and should reflect this in their implementations of hashCode and equals. Canonical names for properties are designated by their property name in camel case, for instance a Java Bean with method setFooBar would have a property named fooBar, and fooBar would also be its canonical name.- Returns:
- the updater's canonical name
- Since:
- Coherence 12.3.1
-
updateComplex
protected void updateComplex(Object oTarget, Object oValue) throws InvocationTargetException, IllegalAccessException
Implement update of target using reflection or property setter. Cache the reflection computation to enable avoiding reflection lookup if next target has same class type.If unable to find method name via reflection and
oTarget
is aMap
, use canonical name as a key to update target.- Parameters:
oTarget
- the Object to update the state ofoValue
- the new value to update the state with- Throws:
InvocationTargetException
- if reflection method lookup failsIllegalAccessException
- if reflection method lookup fails- Since:
- Coherence 12.3.1
-
computeCanonicalName
public static String computeCanonicalName(String sName)
Compute the canonical name for this updater. IfsName
does not end with aMETHOD_SUFFIX
, it is the canonical name of a property. IfsName
begins withBEAN_MODIFIER_PREFIX
and ends withMETHOD_SUFFIX
, the canonical name issName
value with prefix and suffix removed and the canonical name is for a property. Otherwise, the canonical name is thesName
and refers to method name.- Parameters:
sName
- a method or property name- Returns:
- return canonical name of sName
-
createUpdater
public static ValueUpdater createUpdater(String sNames)
Return aValueUpdater
forsNames
- Parameters:
sNames
- property or setter method name; this parameter can also be a dot-delimited sequence of property and/or method names which would result in using aCompositeUpdater
- Returns:
- ValueUpdater for
sNames
-
equals
public boolean equals(Object o)
Compare the UniversalUpdater with another object to determine equality. Compare by canonical names when both are non-null.
-
hashCode
public int hashCode()
Determine a hash value for the UniversalUpdater object according to the generalObject.hashCode()
contract.
-
toString
public String toString()
Provide a human-readable description of this ValueUpdater object.
-
readExternal
public void readExternal(DataInput in) throws IOException
Restore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternal
in interfaceExternalizableLite
- Parameters:
in
- the DataInput stream to read data from in order to restore the state of this object- Throws:
IOException
- if an I/O exception occursNotActiveException
- if the object is not in its initial state, and therefore cannot be deserialized into
-
writeExternal
public void writeExternal(DataOutput out) throws IOException
Save the contents of this object by storing the object's state into the passed DataOutput object.- Specified by:
writeExternal
in interfaceExternalizableLite
- Parameters:
out
- the DataOutput stream to write the state of this object to- Throws:
IOException
- if an I/O exception occurs
-
readExternal
public void readExternal(PofReader in) throws IOException
Restore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
readExternal
in interfacePortableObject
- Parameters:
in
- the PofReader from which to read the object's state- Throws:
IOException
- if an I/O error occurs
-
writeExternal
public void writeExternal(PofWriter out) throws IOException
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.- Specified by:
writeExternal
in interfacePortableObject
- Parameters:
out
- the PofWriter to which to write the object's state- Throws:
IOException
- if an I/O error occurs
-
-