Exemplo n.º 1
0
  /** @see PermissionManager#savePerm(Permission) */
  @Override
  @Transactional
  public void save(Permission perm) {
    Assert.notNull(perm);

    if (!getDao().exists(perm, "name")) {
      if (perm.getId() != null) { // 更新
        Permission old = get(perm.getId());
        BeanUtils.copyProperties(perm, old, new String[] {"resources", "roles"});
        if (perm.getStatus() != null) {
          old.setStatus(perm.getStatus());
        }
        getDao().update(old);
      } else { // 新建
        perm.setStatus(Constants.STATUS_AVAILABLE);
        getDao().save(perm);
      }
      if (acegiCacheManager != null) {
        acegiCacheManager.onPermissionChanged(perm);
      }
    } else {
      throw new ApplicationException("Reduplicate permission name [" + perm.getName() + "]");
    }
  }