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
Universal ValueUpdater implementation.
Either a property-based and method-based ValueUpdater
based on whether constructor parameter sName
is evaluated to be a property or method.
Depending on the target
parameter of update(Object, Object)
target
,
the property can reference a JavaBean property or Map
key.
- Since:
- 12.2.1.4
- Author:
- gg 2005.10.27, jf 2017.11.28
- See Also:
-
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
Modifier and TypeFieldDescriptionstatic final String
JavaBean property modifier prefix.protected String
A method name, or a property name.static final String
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
ConstructorDescriptionDefault constructor (necessary for the ExternalizableLite interface).UniversalUpdater
(String sName) Construct a UniversalUpdater for the provided name. -
Method Summary
Modifier and TypeMethodDescriptionstatic String
computeCanonicalName
(String sName) Compute the canonical name for this updater.static ValueUpdater
createUpdater
(String sNames) Return aValueUpdater
forsNames
boolean
Compare the UniversalUpdater with another object to determine equality.Return the canonical name for this updater.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
Return true iff this updater references a setter method.void
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
Restore the contents of this object by loading the object's state from the passed DataInput object.toString()
Provide a human-readable description of this ValueUpdater object.void
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, isResolving, isSerializable, isSerializerCompatible, 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 Details
-
BEAN_MODIFIER_PREFIX
JavaBean property modifier prefix.- See Also:
-
METHOD_SUFFIX
Ifm_sName
ends with this suffix, it represents a method name.- See Also:
-
m_sName
A method name, or a property name.
-
-
Constructor Details
-
UniversalUpdater
public UniversalUpdater()Default constructor (necessary for the ExternalizableLite interface). -
UniversalUpdater
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:
-
-
Method Details
-
update
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:
-
isMethodUpdater
public boolean isMethodUpdater()Return true iff this updater references a setter method.- Returns:
- true iff this is setter method updater.
-
getMethodName
Determine the name of the method that this extractor is configured to invoke.- Returns:
- method name without the
METHOD_SUFFIX
-
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
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
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
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
Provide a human-readable description of this ValueUpdater object. -
readExternal
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 occurs
-
writeExternal
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
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
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
-