@Verifier
 public Messages verifyUnit(Unit unit, WhenVerifier when) {
   Messages ret = new Messages();
   if (unit.getName().equals("verify3")) {
     ret.add("unit.name", new Message("errors.duplicate", "3"));
   }
   return ret;
 }
 @Verifier(when = {WhenVerifier.INSERT})
 public Messages verifyUnit(Unit unit, CallbackEventType eventType, WhenVerifier when) {
   Messages ret = new Messages();
   if (unit.getName().equals("verify4")) {
     ret.add("unit.name", new Message("errors.duplicate", "4"));
   }
   return ret;
 }
 @Verifier
 public Messages verifyUnit(Unit unit, CallbackEventType eventType) {
   Messages ret = new Messages();
   if (unit.getName().equals("verify2")) {
     ret.add("unit.name", new Message("errors.duplicate", "2"));
   }
   return ret;
 }
  public void testVerifierCallback() throws Exception {
    List<Object> list2 = new ArrayList<Object>();
    list2.add(new VerifierCallbackListener());
    DIContainer real = DIContainerFactory.getDIContainer();
    Map<Object, Object> map = new HashMap<Object, Object>();
    map.put(BasicService.PERSISTENCE_EVENT_LISTENERS, list2);
    MapDIContainer wrapper = new MapDIContainer(map);
    DIContainerFactory.setDIContainer(
        new CompositeDIContainer(Arrays.asList(new DIContainer[] {wrapper, real})));
    System.out.println(DIContainerFactory.getDIContainer().getClass().getName());
    try {
      SortedSet<CallbackEventListener> listeners =
          BasicService.getService().getEventListener(Unit.class, CallbackEventType.VERIFIER);
      assertEquals("返却数が誤っています。", 5, listeners.size());

      Unit u = BasicService.getService().findByPK(Unit.class, 1L);
      Messages msgs = u.validateObject();
      assertFalse("エラーが発生しています。", msgs.hasError());

      u.setName("verify");
      msgs = u.validateObject();
      System.out.println(msgs);
      assertFalse("エラーが発生しています。", msgs.hasError());

      u.setName("verify1");
      msgs = u.validateObject();
      System.out.println(msgs);
      assertTrue("エラーが発生していません。", msgs.hasError());

      u.setName("verify2");
      msgs = u.validateObject();
      System.out.println(msgs);
      assertTrue("エラーが発生していません。", msgs.hasError());

      u.setName("verify3");
      msgs = u.validateObject();
      System.out.println(msgs);
      assertTrue("エラーが発生していません。", msgs.hasError());

      u.setName("verify4");
      msgs = u.validateObject();
      System.out.println(msgs);
      assertFalse("エラーが発生しています。", msgs.hasError());

      msgs = BasicService.getService().validate(u, WhenVerifier.INSERT);
      System.out.println(msgs);
      assertTrue("エラーが発生していません。", msgs.hasError());

      u.setName("verify5");
      msgs = u.validateObject();
      System.out.println(msgs);
      assertFalse("エラーが発生していませす。", msgs.hasError());
    } finally {
      DIContainerFactory.setDIContainer(real);
    }
  }