resourcemanager.java

来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 91 行

JAVA
91
字号
package anni.asecurity.manager;

import anni.asecurity.domain.Resource;

import anni.core.dao.hibernate.HibernateEntityDao;

import anni.core.security.AuthenticationHelper;
import anni.core.security.cache.AcegiCacheManager;
import anni.core.security.resource.ResourceDetails;

import org.acegisecurity.GrantedAuthority;

import org.apache.commons.lang.StringUtils;


/**
 * @author Lingo.
 * @since 2007年08月18日 下午 20时19分00秒578
 */
public class ResourceManager extends HibernateEntityDao<Resource> {
    /**
     * AcegiCacheManager.
     */
    private AcegiCacheManager acegiCacheManager = null;

    /**
     * @param acegiCacheManager AcegiCacheManager.
     */
    public void setAcegiCacheManager(AcegiCacheManager acegiCacheManager) {
        this.acegiCacheManager = acegiCacheManager;
    }

    /**
     * @param o resource.
     */
    @Override
    public void save(Object o) {
        Resource resource = (Resource) o;
        boolean isNew = (resource.getId() == null);
        String orginString = "";

        if (!isNew) {
            Resource orginResc = get(resource.getId());
            orginString = orginResc.getResString();
            getHibernateTemplate().evict(orginResc);
        }

        super.save(o);

        if (!isNew
                && !StringUtils.equals(resource.getResString(), orginString)) {
            removeRescInCache(orginString);
        }

        saveRescInCache(resource);
    }

    /**
     * @param o resource.
     */
    @Override
    public void remove(Object o) {
        super.remove(o);

        Resource resource = (Resource) o;
        removeRescInCache(resource.getResString());
    }

    /**
     * 把资源保存里缓存.
     *
     * @param resc 资源
     */
    private void saveRescInCache(Resource resc) {
        GrantedAuthority[] authorities = AuthenticationHelper
            .convertToGrantedAuthority(resc.getRoles(), "name");
        ResourceDetails rd = new anni.core.security.resource.Resource(resc
                .getResString(), resc.getResType(), authorities);
        acegiCacheManager.addResource(rd);
    }

    /**
     * 从缓存里删除资源.
     *
     * @param resString 资源内容
     */
    public void removeRescInCache(String resString) {
        acegiCacheManager.removeResource(resString);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?