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.XmlBeanClassCacheNested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringJavaBean property modifier prefix.protected StringA method name, or a property name.static final StringIfm_sNameends 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_TOPLINK, 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, s_tloInEHDeserialize, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor (necessary for the ExternalizableLite interface).UniversalUpdater(String sName) Construct a UniversalUpdater for the provided name. -
Method Summary
Modifier and TypeMethodDescriptionstatic StringcomputeCanonicalName(String sName) Compute the canonical name for this updater.static ValueUpdatercreateUpdater(String sNames) Return aValueUpdaterforsNamesbooleanCompare 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.inthashCode()Determine a hash value for the UniversalUpdater object according to the generalObject.hashCode()contract.booleanReturn true iff this updater references a setter method.voidRestore the contents of a user type instance by reading its state using the specified PofReader object.voidRestore 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.voidUpdate the state of the passed target object using the passed value.protected voidupdateComplex(Object oTarget, Object oValue) Implement update of target using reflection or property setter.voidwriteExternal(PofWriter out) Save the contents of a POF user type instance by writing its state using the specified PofWriter object.voidwriteExternal(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
updateEntryMethods 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, writeIntArray, writeIntArray2d, writeLong, writeLong, writeLongArray, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializableMethods 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, toLongMethods 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, newHashMap, newHashMap, newHashSet, newHashSet, 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_sNameends 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. IfsNameends 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:
updatein interfaceValueUpdater- Overrides:
updatein 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
oTargetis 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. IfsNamedoes not end with aMETHOD_SUFFIX, it is the canonical name of a property. IfsNamebegins withBEAN_MODIFIER_PREFIXand ends withMETHOD_SUFFIX, the canonical name issNamevalue with prefix and suffix removed and the canonical name is for a property. Otherwise, the canonical name is thesNameand refers to method name.- Parameters:
sName- a method or property name- Returns:
- return canonical name of sName
-
createUpdater
Return aValueUpdaterforsNames- 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:
readExternalin 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:
writeExternalin 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:
readExternalin 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:
writeExternalin interfacePortableObject- Parameters:
out- the PofWriter to which to write the object's state- Throws:
IOException- if an I/O error occurs
-