[ 
https://issues.apache.org/jira/browse/SQOOP-2006?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Qian Xu updated SQOOP-2006:
---------------------------
    Attachment: SQOOP-2006.patch

> bad smell: NPE check in SQOOP-1995 is not obvious
> -------------------------------------------------
>
>                 Key: SQOOP-2006
>                 URL: https://issues.apache.org/jira/browse/SQOOP-2006
>             Project: Sqoop
>          Issue Type: Improvement
>    Affects Versions: 1.99.5
>            Reporter: Qian Xu
>            Assignee: Qian Xu
>            Priority: Minor
>             Fix For: 1.99.5
>
>         Attachments: SQOOP-2006.patch
>
>
> SQOOP-1995 fixed a NPE, which is adding a schema NPE check in 6 get/set 
> FooData methods. [~vybs] explained that the IDF class can be instantiated by 
> reflection, which will call the default no arg constructor, so that the 
> property schema will not be assigned expectedly. 
> IMO, although the patch can guard invalid access to a null schema, but as the 
> getter and setter methods have nothing to do with schema and there is no 
> comment left, it will be hard to understand why we have such code after 
> couple of months. 
> It seems a IDF class should have a not null schema the whole life time. I've 
> some options:
> 1. We check null schema where a NPE happens
> 2. Disallow reflection of IDF class or search all code occurrences to make 
> sure schema will be set properly (I think we already have test cases to guard 
> use cases)
> 3. Use some design by contract framework 
> (https://github.com/nhatminhle/cofoja) to define invariant, e.g. 
> {{@Invariant(schema != null)}}. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to