Hello! I think we should check that setField happily accepts both BinaryObject and BinaryObjectBuilder, and then deprecate this method.
Regards, -- Ilya Kasnacheev пт, 6 дек. 2019 г. в 16:02, Alexei Scherbakov <alexey.scherbak...@gmail.com >: > 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 >