ignite-dev mailing list archives

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