ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Николай Ижиков" <nizhi...@apache.org>
Subject Re: BinaryObject API confuses users
Date Fri, 06 Dec 2019 10:45:29 GMT
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.kasnacheev@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, Николай Ижиков <nizhikov@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


Mime
View raw message