[ 
https://issues.apache.org/jira/browse/IGNITE-12468?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17030659#comment-17030659
 ] 

Aleksey Plekhanov commented on IGNITE-12468:
--------------------------------------------

[~Pavlukhin], about collections wrapped into objects, there is no duplication. 
When object is marshalling, the object and all it's fields in nested 
collections are marshalled as OBJ type (not BINARY_OBJ). When we unmarshall 
objects "with keep binary" flag - only top level object is wrapped into 
BINARY_OBJ type. If we unmarshall top level collection "with keep binary" flag, 
each collection item of OBJ type wrapped into BINARY_OBJ type. So, we need 
recursive unwrapping only for top level collections, maps and arrays. 

> ClassCastException on thinClient in Apache Ignite
> -------------------------------------------------
>
>                 Key: IGNITE-12468
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12468
>             Project: Ignite
>          Issue Type: Bug
>          Components: binary, clients, thin client
>    Affects Versions: 2.6
>            Reporter: LEE PYUNG BEOM
>            Assignee: Aleksey Plekhanov
>            Priority: Major
>
>  
> {code:java}
>     ClientConfiguration cfg = new 
> ClientConfiguration().setAddresses("127.0.0.1:10800");
>     try (IgniteClient igniteClient = Ignition.startClient(cfg)) {
>         System.out.println(">>> Thin client put-get example started.");
>         final String CACHE_NAME = "put-get-example";
>         ClientCache<Integer, Object> cache = 
> igniteClient.getOrCreateCache(CACHE_NAME);
>         Person p = new Person();
>         //put
>         HashMap<Integer, Person> hm = new HashMap<Integer, Person>();
>         hm.put(1, p);
>         cache.put(1, hm);
>         //get
>         HashMap<Integer, Person> map = (HashMap<Integer, Person>)cache.get(1);
>         Person p2 = map.get(1);
>         System.out.format(">>> Loaded [%s] from the cache.\n",p2);
>     }
>     catch (ClientException e) {
>         System.err.println(e.getMessage());
>         e.printStackTrace();
>     }
>     catch (Exception e) {
>         System.err.format("Unexpected failure: %s\n", e);
>         e.printStackTrace();
>     }
> {code}
>  
> I use the thin client of apache-ignite.
> I Create a hashmap and put the Person 
> class(org.apache.ignite.examples.model.Person) object into it.
> And when I take it out of the hashmap, I get the following exceptions:
>  
> {code:java}
> > java.lang.ClassCastException:
> > org.apache.enite.internal.binary.BinaryObjectImpl cannot be cast to
> > org.apache.engite.examples.model.Person.
> {code}
> An exception is given in the code below.
>  
> {code:java}
> Person p2 = map.get(1);
> {code}
>  
> However, there is no exception if I modify the code as follows:
>  
> {code:java}
> BinaryObject bo = (BinaryObject) map.get(1);
> Person p2 = bo.deserialize();
> {code}
> I don't think that's necessary. Is there another solution?
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to