I am developing an Android App, and I have a basic Customer class, which has a nationality data member which in turn is another public class. When I instantiate a new Customer both the nationality and birth date members (of non-primitive data types) are not set (calling their getters causes a null reference exception).
BTW, I'm using Android Studio, and I'm creating a new Customer instance through a JSON wrapper that receives the data from a RESTFUL web service call.
public class Customer
{
    // Private fields
    private int Id;
    private String FirstName;
    private String LastName;
    private String OfficeNumber;
    private String MobileNumber;
    private String EmailAddress;
    private boolean Gender;
    private Date BirthDate;
    private Nationality Nationality;
    /* Setters & Getters */
    public int getId() {
        return Id;
    }
    public void setId(int id) {
        Id = id;
    }
    public String getFirstName() {
        return FirstName;
    }
    public void setFirstName(String firstName) {
        FirstName = firstName;
    }
    public String getLastName() {
        return LastName;
    }
    public void setLastName(String lastName) {
        LastName = lastName;
    }
    public String getOfficeNumber() {
        return OfficeNumber;
    }
    public void setOfficeNumber(String officeNumber) {
        OfficeNumber = officeNumber;
    }
    public String getMobileNumber() {
        return MobileNumber;
    }
    public void setMobileNumber(String mobileNumber) {
        MobileNumber = mobileNumber;
    }
    public String getEmailAddress() {
        return EmailAddress;
    }
    public void setEmailAddress(String emailAddress) {
        EmailAddress = emailAddress;
    }
    public boolean getGender() {
        return Gender;
    }
    public void setGender(boolean gender) {
        Gender = gender;
    }
    public Date getBirthDate() {
        return BirthDate;
    }
    public void setBirthDate(Date birthDate) {
        BirthDate = birthDate;
    }
    public Nationality getNationality() {
        return Nationality;
    }
    public void setNationality(Nationality nationality) {Nationality = nationality; }
}
Nationality Class
public class Nationality
{
    // Private Fields
    private int Id;
    private String NationalityEn;
    private String NationalityAr;
    public Nationality(int id, String nationalityEn, String nationalityAr)
    {
        setId(id);
        setNationalityEn(nationalityEn);
        setNationalityAr(nationalityAr);
    }
    public Nationality(){}
    // Setters & Getters
    public int getId() {
        return Id;
    }
    public void setId(int id) {
        Id = id;
    }
    public String getNationalityEn() {
        return NationalityEn;
    }
    public void setNationalityEn(String nationalityEn) {
        NationalityEn = nationalityEn;
    }
    public String getNationalityAr() {
        return NationalityAr;
    }
    public void setNationalityAr(String nationalityAr) {
        NationalityAr = nationalityAr;
    }
}
Wrapper:
public class JSONToObjectWarpper
{
    public Customer getCustomerObject(JSONObject jsonObject)
    {
        Customer customer = new Customer();
        try
        {
            JSONObject js = jsonObject.getJSONObject("Customer");
            Nationality nationality = new Nationality(
                    js.getJSONObject("Nationality").getInt("Id"),
                    js.getJSONObject("Nationality").getString("NationalityEn"),
                    js.getJSONObject("Nationality").getString("NationalityAr")
            );
            Date date = ConvertFromWCFDate(js.getString("BirthDate"));
            customer.setId(js.getInt("Id"));
            customer.setFirstName(js.getString("FirstName"));
            customer.setLastName(js.getString("LastName"));
            customer.setOfficeNumber(js.getString("OfficeNumber"));
            customer.setMobileNumber(js.getString("MobileNumber"));
            customer.setEmailAddress(js.getString("EmailAddress"));
            customer.setGender(js.getBoolean("Gender"));
            customer.setBirthDate(date);
            customer.setNationality(nationality);
        }
        catch (JSONException e)
        {
            // Handle the Exception Here
        }
        return customer;
    }
}
What am I missing here ?! Thanks in advance for the help.
 
     
    