[
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)