[ 
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)

Reply via email to