public void testSetPropertyValuesIgnoresInvalidNestedOnRequest() {
   ITestBean rod = new TestBean();
   MutablePropertyValues pvs = new MutablePropertyValues();
   pvs.addPropertyValue(new PropertyValue("name", "rod"));
   pvs.addPropertyValue(new PropertyValue("graceful.rubbish", "tony"));
   pvs.addPropertyValue(new PropertyValue("more.garbage", new Object()));
   BeanWrapper bw = new BeanWrapperImpl(rod);
   bw.setPropertyValues(pvs, true);
   assertTrue("Set valid and ignored invalid", rod.getName().equals("rod"));
   try {
     // Don't ignore: should fail
     bw.setPropertyValues(pvs, false);
     fail("Shouldn't have ignored invalid updates");
   } catch (NotWritablePropertyException ex) {
     // OK: but which exception??
   }
 }
  public void testSetNestedPropertyPolymorphic() throws Exception {
    ITestBean rod = new TestBean("rod", 31);
    ITestBean kerry = new Employee();

    BeanWrapper bw = new BeanWrapperImpl(rod);
    bw.setPropertyValue("spouse", kerry);
    bw.setPropertyValue("spouse.age", new Integer(35));
    bw.setPropertyValue("spouse.name", "Kerry");
    bw.setPropertyValue("spouse.company", "Lewisham");
    assertTrue("kerry name is Kerry", kerry.getName().equals("Kerry"));

    assertTrue("nested set worked", rod.getSpouse() == kerry);
    assertTrue("no back relation", kerry.getSpouse() == null);
    bw.setPropertyValue(new PropertyValue("spouse.spouse", rod));
    assertTrue("nested set worked", kerry.getSpouse() == rod);

    BeanWrapper kbw = new BeanWrapperImpl(kerry);
    assertTrue(
        "spouse.spouse.spouse.spouse.company=Lewisham",
        "Lewisham".equals(kbw.getPropertyValue("spouse.spouse.spouse.spouse.company")));
  }