/** Create the control Employee. */
  private Employee getControlObject() {
    List<String> prjIds = new ArrayList<String>();
    prjIds.add(PRJ_ID1);
    prjIds.add(null);
    prjIds.add(PRJ_ID2);
    prjIds.add(PRJ_ID3);

    List<Float> sals = new ArrayList<Float>();
    sals.add(Float.valueOf(SAL_1));
    sals.add(Float.valueOf(SAL_2));

    List<String> pData = new ArrayList<String>();
    pData.add(PDATA_1);
    pData.add(PDATA_2);

    List<String> cData = new ArrayList<String>();
    cData.add(CDATA_1);
    cData.add(CDATA_2);

    Employee ctrlEmp = new Employee();
    ctrlEmp.id = EMPID;
    ctrlEmp.projectIds = prjIds;
    ctrlEmp.salaries = sals;
    ctrlEmp.privateData = pData;
    ctrlEmp.characterData = cData;
    return ctrlEmp;
  }
  /**
   * Tests XmlDirectCollectionMapping configuration via eclipselink-oxm.xml. Here an unmarshal
   * operation is performed.
   *
   * <p>Positive test.
   */
  public void testDirectCollectionUnmarshal() {
    // load instance doc
    String src = PATH + "employee.xml";
    InputStream iDocStream = loader.getResourceAsStream(src);
    if (iDocStream == null) {
      fail("Couldn't load instance doc [" + src + "]");
    }
    // tweak control object
    Employee ctrlEmp = getControlObject();
    // unmarshal null will result in "" being set in the object
    ctrlEmp.projectIds.remove(1);
    ctrlEmp.projectIds.add(1, "");
    // 'privateData' is write only
    ctrlEmp.privateData = null;

    try {
      Employee empObj = (Employee) jaxbContext.createUnmarshaller().unmarshal(iDocStream);
      assertNotNull("Unmarshalled object is null.", empObj);
      assertTrue("Accessor method was not called as expected", empObj.wasSetCalled);
      assertTrue("Unmarshal failed:  Employee objects are not equal", ctrlEmp.equals(empObj));
    } catch (JAXBException e) {
      e.printStackTrace();
      fail("Unmarshal operation failed.");
    }
  }
  public Object getControlObject() {
    Employee ctrlEmp = new Employee();
    ctrlEmp.firstName = FNAME;
    ctrlEmp.lastName = LNAME;
    ctrlEmp.empId = EMPID;
    ctrlEmp.mgrId = MGRID;
    ctrlEmp.setProject(PNAME);
    ctrlEmp.data1 = DATA1;
    ctrlEmp.data2 = DATA2;
    ctrlEmp.salary = SALARY;
    ctrlEmp.privateData = PRIVATE_DATA;
    ctrlEmp.characterData = CHARACTER_DATA;
    ctrlEmp.projectId = PROJECT_ID;

    // 'privateData' is write only
    ctrlEmp.privateData = null;
    // JAXB will default a null String to ""
    ctrlEmp.someString = "";

    return ctrlEmp;
  }
 public Object getWriteControlObject() {
   if (ctrlEmp == null) {
     ctrlEmp = new Employee();
     ctrlEmp.firstName = FNAME;
     ctrlEmp.lastName = LNAME;
     ctrlEmp.empId = EMPID;
     ctrlEmp.mgrId = MGRID;
     ctrlEmp.setProject(PNAME);
     ctrlEmp.data1 = DATA1;
     ctrlEmp.data2 = DATA2;
     ctrlEmp.salary = SALARY;
     ctrlEmp.privateData = PRIVATE_DATA;
     ctrlEmp.characterData = CHARACTER_DATA;
     ctrlEmp.projectId = PROJECT_ID;
     ctrlEmp.setSomeString(null);
   }
   return ctrlEmp;
 }