Looks like it's already possible to pass binary object as value using BinaryObjectBuilder setField(String name, Object val);
If it works we can remove a signature with BinaryObjectBuilder. The API is truly confusing. пт, 6 дек. 2019 г. в 15:55, Николай Ижиков <nizhi...@apache.org>: > I’m too, Alex. > > But, this signature leads to the same error as I mentioned. > > > > > 6 дек. 2019 г., в 15:53, Alexei Scherbakov <alexey.scherbak...@gmail.com> > написал(а): > > > > I wonder why signature is not > > > > setField(String name, BinaryObject obj) > > > > пт, 6 дек. 2019 г. в 15:00, Ilya Kasnacheev <ilya.kasnach...@gmail.com>: > > > >> Hello! > >> > >> I think that repeating argument type name in method name is a code > smell. > >> Rather, we should describe how this method is different from other > methods > >> of its bunch. > >> > >> In this case, it is different since it allows you to create nested > binary > >> objects, i.e., ones with non-flat structure. > >> > >> Regards, > >> -- > >> Ilya Kasnacheev > >> > >> > >> пт, 6 дек. 2019 г. в 13:45, Николай Ижиков <nizhi...@apache.org>: > >> > >>> Hello, Ilya. > >>> > >>> I don’t get your point > >>> > >>>> We don’t passing … binary, just a … BinaryObjeсtBuilder. > >>> > >>> May be we should go with `setBinaryObjectBuilderField` or > >>> `setBinaryObjectField`? > >>> > >>> > >>>> 6 дек. 2019 г., в 13:38, Ilya Kasnacheev <ilya.kasnach...@gmail.com> > >>> написал(а): > >>>> > >>>> Hello! > >>>> > >>>> I can see where you are getting at, can we call it "setFieldNested" > >>> instead > >>>> or something like that? > >>>> > >>>> setBinaryField is confusing because we're not passing anything > >> especially > >>>> binary, just a nested BinaryObjectBuilder. > >>>> > >>>> Regards, > >>>> -- > >>>> Ilya Kasnacheev > >>>> > >>>> > >>>> пт, 6 дек. 2019 г. в 13:17, Николай Ижиков <nizhi...@apache.org>: > >>>> > >>>>> Hello, Igniters. > >>>>> > >>>>> We have confusing API in `BinaryObjectBuilder` class. > >>>>> > >>>>> The code below leads to the `ClassCastException` > >>>>> The cause is java method resolution rules [1] > >>>>> > >>>>>> There may be more than one such method, in which case the most > >> specific > >>>>> one is chosen > >>>>> > >>>>> I suggest to deprecate `setField(String name, @Nullable > >>>>> BinaryObjectBuilder builder);` method and introduce > >>>>> `setBinaryField(String name, @Nullable BinaryObjectBuilder builder);` > >>>>> instead of it. > >>>>> > >>>>> What do you think? > >>>>> > >>>>> ``` > >>>>> public class BugTest extends GridCommonAbstractTest { > >>>>> @Test public void testBinaryObject() throws Exception { > >>>>> try (Ignite ignite = startGrid(0)) { > >>>>> BinaryObjectBuilder builder = > >>>>> ignite.binary().builder("testVal") > >>>>> .setField("name", "John Doe", String.class); > >>>>> > >>>>> builder.setField("name", builder.getField("name")); > >>>>> } > >>>>> } > >>>>> } > >>>>> ``` > >>>>> > >>>>> [1] > >>>>> > >>> > >> > https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.12.2 > >>> > >>> > >> > > > > > > -- > > > > Best regards, > > Alexei Scherbakov > > -- Best regards, Alexei Scherbakov