Gemfire JavaDocs_test
Class CopyHelper
- java.lang.Object
-
- org.apache.geode.CopyHelper
-
public final class CopyHelper extends java.lang.Object
A static helper for optimally creating copies. Creating copies of cache values provides improved concurrency as well as isolation. For transactions, creating a copy is the guaranteed way to enforce "Read Committed" isolation on changes to cacheEntries
.Here is a simple example of how to use
CopyHelper.copy
Object o = r.get("stringBuf"); StringBuilder s = (StringBuilder) CopyHelper.copy(o); s.append("... and they lived happily ever after. The End."); r.put("stringBuf", s);
- Since:
- GemFire 4.0
- See Also:
Cloneable
,Serializable
,DataSerializer
,GemFireCache.setCopyOnRead(boolean)
,CacheTransactionManager
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> T
copy(T o)
Makes a copy of the specified object.static <T> T
deepCopy(T o)
Makes a deep copy of the specified object o using serialization, so the object has to be serializable by GemFire.static boolean
isWellKnownImmutableInstance(java.lang.Object o)
Return true if the given object is an instance of a well known immutable class.
-
-
-
Method Detail
-
isWellKnownImmutableInstance
public static boolean isWellKnownImmutableInstance(java.lang.Object o)
Return true if the given object is an instance of a well known immutable class. The well known classes are:- String
- Byte
- Character
- Short
- Integer
- Long
- Float
- Double
- BigInteger
- BigDecimal
- UUID
- PdxInstance but not WritablePdxInstance
- Parameters:
o
- the object to check- Returns:
- true if o is an instance of a well known immutable class.
- Since:
- GemFire 6.6.2
-
copy
public static <T> T copy(T o)
Makes a copy of the specified object. The object returned is not guaranteed to be a deep copy of the original object, as explained below.
Copies can only be made if the original is a
Cloneable
or serializable by GemFire. If o is awell known immutable instance
then it will be returned without copying it.If the argument o is an instance of
Cloneable
, a copy is made by invokingclone
on it. Note that not all implementations ofclone
make deep copies (e.g.HashMap.clone
). Otherwise, if the argument is not an instance ofCloneable
, a copy is made using serialization: if GemFire serialization is implemented, it is used; otherwise, java serialization is used.The difference between this method and
deepCopy
, is that this method usesclone
if available, whereasdeepCopy
does not. As a result, forCloneable
objects copied using this method, how deep a copy the returned object is depends on its implementation ofclone
.- Type Parameters:
T
- the type of the object to be copied- Parameters:
o
- the original object that a copy is needed of- Returns:
- the new instance that is a copy of of the original
- Throws:
CopyException
- if copying fails because a class could not be found or could not be serialized.- Since:
- GemFire 4.0
- See Also:
deepCopy(Object)
-
deepCopy
public static <T> T deepCopy(T o)
Makes a deep copy of the specified object o using serialization, so the object has to be serializable by GemFire.If o is a
well known immutable instance
then it will be returned without copying it.The passed in object is serialized in memory, and then deserialized into a new instance, which is returned. If GemFire serialization is implemented for the object, it is used; otherwise, java serialization is used.
- Type Parameters:
T
- the type of the object to be copied- Parameters:
o
- the original object to be copied- Returns:
- the new instance that is a copy of the original
- Throws:
CopyException
- if copying fails because a class could not be found or could not be serialized- See Also:
copy(Object)
-
-