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 12:54:59 GMT
I’m too, Alex.

But, this signature leads to the same error as I mentioned.



> 6 дек. 2019 г., в 15:53, Alexei Scherbakov <alexey.scherbakoff@gmail.com>
написал(а):
> 
> I wonder why signature is not
> 
> setField(String name, BinaryObject obj)
> 
> пт, 6 дек. 2019 г. в 15:00, Ilya Kasnacheev <ilya.kasnacheev@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, Николай Ижиков <nizhikov@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.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
>>> 
>>> 
>> 
> 
> 
> -- 
> 
> Best regards,
> Alexei Scherbakov


Mime
View raw message