[ 
https://issues.apache.org/jira/browse/BEAM-5376?focusedWorklogId=144023&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-144023
 ]

ASF GitHub Bot logged work on BEAM-5376:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 13/Sep/18 17:36
            Start Date: 13/Sep/18 17:36
    Worklog Time Spent: 10m 
      Work Description: amaliujia commented on a change in pull request #6383: 
[BEAM-5376] Support nullability on all Row types
URL: https://github.com/apache/beam/pull/6383#discussion_r217472409
 
 

 ##########
 File path: 
sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaBeanSchemaTest.java
 ##########
 @@ -155,10 +155,10 @@ public void testRecursiveGetters() throws 
NoSuchSchemaException {
 
     Row nestedRow = row.getRow("nested");
     assertEquals("string", nestedRow.getString("str"));
-    assertEquals((byte) 1, nestedRow.getByte("aByte"));
-    assertEquals((short) 2, nestedRow.getInt16("aShort"));
-    assertEquals((int) 3, nestedRow.getInt32("anInt"));
-    assertEquals((long) 4, nestedRow.getInt64("aLong"));
+    assertEquals((byte) 1, (Object) nestedRow.getByte("aByte"));
 
 Review comment:
   My intention was to make the code more understandable for readers. Because 
if we do explicitly casting and leave less guess room for readers, readers will 
know the same type of values are compared, and they do not need to question the 
correctness because of implicitly casting somewhere. At least, readers do not 
need to search  how `assertEquals` is implemented for different types. From 
this perspective, `assertEquals(Byte.valueof((byte) 1), 
nestedRow.getByte("aByte"))` is ugly, but necessary.
   
   After I read the code, seems like the family of `assertEquals` in JUnit is 
simpler. `assertEquals(Byte.valueof((byte) 1), nestedRow.getByte("aByte"))` 
will be converted `assertEquals(object, object)`, and `object.equals(object)` 
will be called. In `Byte` implementation, as Anton pointed out, `Byte.equals()` 
accepts `Object` and does a casting anyway. So from implementation perspective, 
there is no difference among approaches in this discussion.
   
   Since there isn't a perfect way to make the code clear, I am ok with either 
the original way in this PR, or other discussed way to implement it.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 144023)
    Time Spent: 2h  (was: 1h 50m)

> Row interface doesn't support nullability on all fields.
> --------------------------------------------------------
>
>                 Key: BEAM-5376
>                 URL: https://issues.apache.org/jira/browse/BEAM-5376
>             Project: Beam
>          Issue Type: Improvement
>          Components: dsl-sql
>            Reporter: Andrew Pilloud
>            Assignee: Andrew Pilloud
>            Priority: Major
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> For example: 
> {code:java}
> public boolean getBoolean(int idx);{code}
> Should be:
> {code:java}
> public Boolean getBoolean(int idx);{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to