VMware VMware GemFire Native .NET Reference 10.4.3
|
PdxInstance provides run time access to the fields of a PDX without deserializing the PDX. More...
#include <IPdxInstance.hpp>
Inherits IDisposable.
Public Member Functions | |
IWritablePdxInstance ^ | CreateWriter () |
Creates and returns a IWritablePdxInstance whose initial values are those of this PdxInstance. | |
bool | Equals (Object^ other) |
Returns true if the given object is equals to this instance. | |
String ^ | GetClassName () |
Return the full name of the class that this pdx instance represents. | |
Object ^ | GetField (String^ fieldName) |
Reads the named field and returns its value. | |
IList< String^> ^ | GetFieldNames () |
Return an list of the field names on this PdxInstance. | |
int | GetHashCode () |
Generates a hashCode based on the identity fields of this PdxInstance. | |
Object ^ | GetObject () |
Deserializes and returns the domain object that this instance represents. | |
bool | HasField (String^ fieldName) |
Checks if the named field exists and returns the result. | |
bool | IsIdentityField (String^ fieldName) |
Checks if the named field was IPdxWriter.MarkIdentityField marked as an identity field. | |
String ^ | ToString () |
Prints out all of the identity fields of this PdxInstance. | |
PdxInstance provides run time access to the fields of a PDX without deserializing the PDX.
Preventing deserialization saves time and memory and does not require the domain class. This interface is implemented by NativeClient. The PdxInstance implementation is a light weight wrapper that simply refers to the raw bytes of the PDX that are kept in the cache. Applications can choose to access PdxInstances instead of .NET objects by configuring the Cache to prefer PDX instances during deserialization. This can be done in cache.xml
by setting the attribute read-serialized
to true on the pdx
element. Or it can be done programmatically using the CacheFactory.SetPdxReadSerialized method. Once this preference is configured, then any time deserialization of a PDX is done it will deserialize into a PdxInstance. PdxInstance are immutable. If you want to change one call see cref="IPdxInstance.CreateWriter"/>.
IWritablePdxInstance ^ Apache::Geode::Client::IPdxInstance::CreateWriter | ( | ) |
Creates and returns a IWritablePdxInstance whose initial values are those of this PdxInstance.
This call returns a copy of the current field values so modifications made to the returned value will not modify this PdxInstance.
returns> a IWritablePdxInstance
bool Apache::Geode::Client::IPdxInstance::Equals | ( | Object^ | other | ) |
Returns true if the given object is equals to this instance.
If other
is not a PdxInstance then it is not equal to this instance. NOTE: Even if other
is the result of calling GetObject it will not be equal to this instance. Otherwise equality of two PdxInstances is determined as follows:
If one of the instances does not have a field that the other one does then equals will assume it has the field with a default value. If a PdxInstance has marked identity fields using IPdxWriter.MarkIdentityField then only the marked identity fields are its identity fields. Otherwise all its fields are identity fields. An identity field is equal if all the following are true:
If a field's type is OBJECT
then its value must be deserialized to determine if it is equals. If the deserialized object is an array then all the array element is used to determine equality. Otherwise Object.Equals is used. If a field's type is OBJECT[]
then its value must be deserialized and all the array element is used to determine equality. For all other field types then the value does not need to be deserialized. Instead the serialized raw bytes are compared and used to determine equality. Note that any fields that have objects that do not override Object.Equals will cause equals to return false when you might have expected it to return true.
param name="other"> the other instance to compare to this.
returns> true
if this instance is equal to other
.
String ^ Apache::Geode::Client::IPdxInstance::GetClassName | ( | ) |
Return the full name of the class that this pdx instance represents.
returns> the name of the class that this pdx instance represents.
Object ^ Apache::Geode::Client::IPdxInstance::GetField | ( | String^ | fieldName | ) |
Reads the named field and returns its value.
If the field does not exist null
is returned. A null
result indicates that the field does not exist or that it exists and its value is currently null
. The HasField method can be used to figure out which if these two cases is true. If an Object[] is deserialized by this call then that array's component type will be Object
instead of the original class that the array had when it was serialized. This is done so that PdxInstance objects can be added to the array.
param name="fieldName"> name of the field to read
returns> If this instance has the named field then the field's value is returned, otherwise null
is returned.
IList< String^> ^ Apache::Geode::Client::IPdxInstance::GetFieldNames | ( | ) |
Return an list of the field names on this PdxInstance.
returns> an list of the field names on this PdxInstance
int Apache::Geode::Client::IPdxInstance::GetHashCode | ( | ) |
Generates a hashCode based on the identity fields of this PdxInstance.
If a PdxInstance has marked identity fields using IPdxWriter.MarkIdentityField then only the marked identity fields are its identity fields. Otherwise all its fields are identity fields.
If an identity field is of type OBJECT
then it is deserialized. If the deserialized object is an array then all the array element is used. Otherwise Object.GetHashCode is used. If an identity field is of type OBJECT[]
this it is deserialized and all the array element is used. Otherwise the field is not deserialized and the raw bytes of its value are used to compute the hash code.
Object ^ Apache::Geode::Client::IPdxInstance::GetObject | ( | ) |
Deserializes and returns the domain object that this instance represents.
returns> the deserialized domain object.
bool Apache::Geode::Client::IPdxInstance::HasField | ( | String^ | fieldName | ) |
Checks if the named field exists and returns the result.
This can be useful when writing code that handles more than one version of a PDX class.
param> fieldName the name of the field to check
returns> true
if the named field exists; otherwise false
bool Apache::Geode::Client::IPdxInstance::IsIdentityField | ( | String^ | fieldName | ) |
Checks if the named field was IPdxWriter.MarkIdentityField marked as an identity field.
Note that if no fields have been marked then all the fields are used as identity fields even though this method will return false
since none of them have been marked.
param name="fieldName"> the name of the field to check
returns> true
if the named field exists and was marked as an identify field; otherwise false
String ^ Apache::Geode::Client::IPdxInstance::ToString | ( | ) |
Prints out all of the identity fields of this PdxInstance.
If a PdxInstance has marked identity fields using IPdxWriter.MarkIdentityField then only the marked identity fields are its identity fields. Otherwise all its fields are identity fields.