[
https://issues.apache.org/jira/browse/IGNITE-51?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexey Goncharuk updated IGNITE-51:
-----------------------------------
Description:
# Need to introduce interface {{CacheObject}} that will hide the implementation
details of cached object representation.
{code}
public interface CacheObject {
public int hashCode();
public <T> T value(GridCacheContext ctx);
public byte[] valueBytes();
}
{code}
Implementation of this class must always store serialized form of the object
and should be optionally store deserialized form of the object. Cache object
must never keep the original reference of the user object.
# Inside {{GridCacheMapEntry}} fields {{key}}, {{keyBytes}}, {{value}} and
{{valueBytes}} should be replaced with corresponding {{CacheObject}} references.
# Same goes for other cache classes that were using keys, values or thereof
bytes implicitly ({{IgniteTxEntry}}, {{GridCacheEntryInfo}}, etc)
# Transformation of user object to a cache object in Ignite should be
implemented in {{GridPortableProcessor}} which should be renamed to
{{IgniteCacheObjectProcessor}}. {{IgniteCacheSerializarionManager}} should be
removed.
# Marshalling of {{CacheObject}} should take advantage of portable marshalling
mechanism and always use only the serialized bytes stored in the
{{CacheObject}}.
was:In JCache 'Store-By-Value' is default mode, now GridGain locally always
stores keys/valeus by reference.
> Support store-by-value mode
> ---------------------------
>
> Key: IGNITE-51
> URL: https://issues.apache.org/jira/browse/IGNITE-51
> Project: Ignite
> Issue Type: Sub-task
> Components: cache
> Reporter: Semen Boikov
> Assignee: Alexey Goncharuk
> Fix For: sprint-2
>
>
> # Need to introduce interface {{CacheObject}} that will hide the
> implementation details of cached object representation.
> {code}
> public interface CacheObject {
> public int hashCode();
> public <T> T value(GridCacheContext ctx);
> public byte[] valueBytes();
> }
> {code}
> Implementation of this class must always store serialized form of the object
> and should be optionally store deserialized form of the object. Cache object
> must never keep the original reference of the user object.
> # Inside {{GridCacheMapEntry}} fields {{key}}, {{keyBytes}}, {{value}} and
> {{valueBytes}} should be replaced with corresponding {{CacheObject}}
> references.
> # Same goes for other cache classes that were using keys, values or thereof
> bytes implicitly ({{IgniteTxEntry}}, {{GridCacheEntryInfo}}, etc)
> # Transformation of user object to a cache object in Ignite should be
> implemented in {{GridPortableProcessor}} which should be renamed to
> {{IgniteCacheObjectProcessor}}. {{IgniteCacheSerializarionManager}} should be
> removed.
> # Marshalling of {{CacheObject}} should take advantage of portable
> marshalling mechanism and always use only the serialized bytes stored in the
> {{CacheObject}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)