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