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

Denis Magda commented on IGNITE-2422:
-------------------------------------

[~vozerov], 

Ok, now I see. Please confirm that my understanding is correct. 

If someone passes a builder instance into {{BinaryObjectBuilder.setField(String 
name, @Nullable BinaryObjectBuilder builder)}} then the field {{name}} will be 
assigned a binary object produced by {{builder.build()}} like method. Correct?

So, the last question that is left is how to handle {{BinaryObjectBuilder[]}} 
that are passed into one of {{BinaryObjectBuilder.setField(...)}} methods.

The test assigned to this ticket fails because it's unable to deserialize 
{{BinaryObjectBuilder[]}} set this way
{code}
root.setField(
            "e",
            new BinaryObjectBuilder[] {
                getBuilder("test" + "_d").setField("x", 10),
                getBuilder("test" + "_d").setField("x", 20) });
{code}

I see two solutions:
- throw an exception;
- create {{BinaryObject[]}} array internally that will be filled out by 
{{BinaryObjectBuilder}} from the respective array. For every 
{{BinaryObjectBuilder}} we will call {{build}} method.

I vote for the second approach. What's your opinion? 

> Unable to deserialize BinaryObjectBuilder
> -----------------------------------------
>
>                 Key: IGNITE-2422
>                 URL: https://issues.apache.org/jira/browse/IGNITE-2422
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 1.5.0.final
>            Reporter: Denis Magda
>            Assignee: Maksim Kozlov
>              Labels: important
>             Fix For: 2.0
>
>         Attachments: ExampleNodeStartup.java
>
>
> Presently it's possible to serialize {{BinaryObjectBuilder}} but it will lead 
> to the errors at deserialization stage.
> After a brief investigation I see that this happens because neither 
> {{org.apache.ignite.binary.BinaryObjectBuilder}} nor 
> {{org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl}} 
> presents in {{META-INF/classnames.properties}} file.
> If you try to update 
> {{ignite/modules/core/src/main/resources/META-INF/classnames.properties}} by 
> building the project from scratch and copying-pasting generated content from 
> built {{classnames.properties}}, then you will still see that there are still 
> no entries for  {{org.apache.ignite.binary.BinaryObjectBuilder}} nor 
> {org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl}}.
> Looks like that {{ClassesGenerator}} misses these and other possible classes 
> by some reason.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to