/**
  * @param r
  * @return
  */
 @Override
 public List<String> getSupportedLevels(Resource r) {
   log.debug("getSupportedLevels");
   List<String> list = wrapped.getSupportedLevels(r);
   //        if (r instanceof AddressBookResource) {
   LockUtils.add(list, "3");
   LockUtils.add(list, "addressbook");
   LockUtils.add(list, "extended-mkcol");
   //        }
   return list;
 }
  @Override
  public List<QName> getResourceTypes(Resource r) {
    if (log.isTraceEnabled()) {
      log.trace("getResourceTypes:" + r.getClass().getCanonicalName());
    }
    QName qn, qn2;
    List<QName> list = wrapped.getResourceTypes(r);

    if (r instanceof AddressBookResource) {
      log.trace("getResourceTypes: is a AddressBookResource");
      qn = new QName(CardDavProtocol.CARDDAV_NS, "addressbook");
      qn2 = new QName(CardDavProtocol.CARDDAV_NS, "directory");
      if (list == null) {
        list = new ArrayList<QName>();
      }
      if (r instanceof AddressBookDirectoryResource) {
        list.add(qn2);
      }
      list.add(qn);
    }
    return list;
  }
 public AddressBookResourceTypeHelper(ResourceTypeHelper wrapped) {
   log.debug("CalendarResourceTypeHelper constructed :" + wrapped.getClass().getSimpleName());
   this.wrapped = wrapped;
 }