rdbmsbasedfilterinvocationdefinitionmap.java

来自「一个关于tlms的一个小程序 看看能否帮助到别人」· Java 代码 · 共 105 行

JAVA
105
字号
package com.szmx.component.security.acegipro.intercept.web;

import com.szmx.component.security.acegipro.providers.dao.DaoFilterInvocationDefinitionMapProvider;
import org.acegisecurity.ConfigAttributeDefinition;
import org.acegisecurity.intercept.web.*;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;

import java.util.Iterator;

/**
 * ================================================================
 * Copyright 2006 szmx
 * <p/>
 * Change Revision
 * ---------------------------------------------------------------
 * Date             Author            Remarks
 * Mar 13, 2006     bzhang      Create class com.szmx.base.security.acegipro.intercept.web.RdbmsBasedFilterInvocationDefinitionMap
 * ================================================================
 */
public class RdbmsBasedFilterInvocationDefinitionMap
        extends AbstractFilterInvocationDefinitionSource
{
    //~ Static fields/initializers =============================================
    private static final Log logger = LogFactory.getLog(RdbmsBasedFilterInvocationDefinitionMap.class);
    private static final String EXP_PATTERN_TYPE_ANT = "PATTERN_TYPE_APACHE_ANT";
    private static final String EXP_PATTERN_TYPE_PERL5  = "PATTERN_TYPE_PERL5_REGEXP";

    //~ Instance fields ========================================================
    private boolean convertUrlToLowercaseBeforeComparison = true;
    private String expressionPatternType = EXP_PATTERN_TYPE_ANT;
    private DaoFilterInvocationDefinitionMapProvider daoFilterInvocationDefinitionMapProvider = null;
    private FilterInvocationDefinitionSource daoFilterInvocationDefinitionSource = null;   // cache

    //~ Methods ================================================================
    public Iterator getConfigAttributeDefinitions() {
        return getDaoFilterInvocationDefinitionSource().getConfigAttributeDefinitions();
    }

    public ConfigAttributeDefinition lookupAttributes(String url) {
        FilterInvocationDefinitionSource definitionSource = getDaoFilterInvocationDefinitionSource();
        if (PathBasedFilterInvocationDefinitionMap.class.isInstance(definitionSource)) {
            return ((PathBasedFilterInvocationDefinitionMap)definitionSource).lookupAttributes(url);
        } else if (RegExpBasedFilterInvocationDefinitionMap.class.isInstance(definitionSource)) {
            return ((RegExpBasedFilterInvocationDefinitionMap)definitionSource).lookupAttributes(url);
        } else {
            String msg = "Wrong type of " + definitionSource
                    + ", it should be " + RegExpBasedFilterInvocationDefinitionMap.class
                    + " or " + PathBasedFilterInvocationDefinitionMap.class;
            logger.error(msg);
            throw new IllegalStateException(msg);
        }
    }

    /**
     * Reload FilterInvocationDefinitionSource Object From DAO
     * & stored as property daoFilterInvocationDefinitionSource
     */
    public void retrieveDaoFilterInvocationDefinitionSource() {
        FilterInvocationDefinitionMap definitionSource;
        if (EXP_PATTERN_TYPE_ANT.equals(expressionPatternType)) {
            definitionSource = new PathBasedFilterInvocationDefinitionMap();
        } else if (EXP_PATTERN_TYPE_PERL5.equals(expressionPatternType)) {
            definitionSource = new RegExpBasedFilterInvocationDefinitionMap();
        } else {
            String msg = "Wrong expression pattern type value.";
            logger.error(msg);
            throw new IllegalArgumentException(msg);
        }
        definitionSource.setConvertUrlToLowercaseBeforeComparison(convertUrlToLowercaseBeforeComparison);
        if (daoFilterInvocationDefinitionMapProvider == null) {
            String msg = "None DaoFilterInvocationDefinitionMapProvider setted.";
            logger.error(msg);
            throw new IllegalArgumentException(msg);
        }

        // load definitionMap from datasource.
        daoFilterInvocationDefinitionSource = (FilterInvocationDefinitionSource)
                daoFilterInvocationDefinitionMapProvider.getDaoFilterInvocationDefinitionMap(definitionSource);

        logger.debug("Retrieved DaoFilterInvocationDefinitionSource = "
                + daoFilterInvocationDefinitionSource);
    }

    //~ Getter & Setter ========================================================
    public void setConvertUrlToLowercaseBeforeComparison(boolean convertUrlToLowercaseBeforeComparison) {
        this.convertUrlToLowercaseBeforeComparison = convertUrlToLowercaseBeforeComparison;
    }

    public void setExpressionPatternType(String expressionPatternType) {
        this.expressionPatternType = expressionPatternType;
    }

    public void setDaoFilterInvocationDefinitionMapProvider(DaoFilterInvocationDefinitionMapProvider daoFilterInvocationDefinitionMapProvider) {
        this.daoFilterInvocationDefinitionMapProvider = daoFilterInvocationDefinitionMapProvider;
    }

    public FilterInvocationDefinitionSource getDaoFilterInvocationDefinitionSource() {
        if (daoFilterInvocationDefinitionSource == null) {
            retrieveDaoFilterInvocationDefinitionSource();
        }
        return daoFilterInvocationDefinitionSource;
    }
}

⌨️ 快捷键说明

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