亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? reloadabledefinitionsfactory.java

?? struts的源代碼
?? JAVA
字號:
/*
 * $Id: ReloadableDefinitionsFactory.java 54929 2004-10-16 16:38:42Z germuska $ 
 *
 * Copyright 1999-2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.struts.tiles.definition;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts.tiles.ComponentDefinition;
import org.apache.struts.tiles.ComponentDefinitionsFactory;
import org.apache.struts.tiles.DefinitionsFactoryException;
import org.apache.struts.tiles.FactoryNotFoundException;
import org.apache.struts.tiles.xmlDefinition.I18nFactorySet;
import org.apache.struts.util.RequestUtils;

/**
 * A reloadable factory.
 * This factory is the main entrance to any factory implementation. It takes in
 * charge real implementation instance, and allows reloading by creating a new
 * instance.
 *
 * @since Struts 1.1
 * @version $Rev: 54929 $ $Date: 2004-10-16 17:38:42 +0100 (Sat, 16 Oct 2004) $
 */
public class ReloadableDefinitionsFactory implements ComponentDefinitionsFactory {

    /** 
     * The real factory instance. 
     */
    protected ComponentDefinitionsFactory factory = null;

    /** 
     * Initialization parameters. 
     */
    protected Map properties = null;

    /** 
     * Name of init property carrying factory class name. 
     */
    public static final String DEFINITIONS_FACTORY_CLASSNAME =
        "definitions-factory-class";

    /**
     * Constructor.
     * Create a factory according to servlet settings.
     * @param servletContext Our servlet context.
     * @param servletConfig Our servlet config.
     * @throws DefinitionsFactoryException If factory creation fail.
     */
    public ReloadableDefinitionsFactory(
        ServletContext servletContext,
        ServletConfig servletConfig)
        throws DefinitionsFactoryException {

        properties = new ServletPropertiesMap(servletConfig);
        factory = createFactory(servletContext, properties);
    }

    /**
     * Constructor.
     * Create a factory according to servlet settings.
     * @param servletContext Our servlet context.
     * @param properties Map containing all properties.
     * @throws DefinitionsFactoryException If factory creation fail.
     */
    public ReloadableDefinitionsFactory(
        ServletContext servletContext,
        Map properties)
        throws DefinitionsFactoryException {

        this.properties = properties;
        factory = createFactory(servletContext, properties);
    }

    /**
    * Create Definition factory from provided classname.
    * If a factory class name is provided, a factory of this class is created. Otherwise,
    * a default factory is created.
    * Factory must have a constructor taking ServletContext and Map as parameter.
    * @param classname Class name of the factory to create.
    * @param servletContext Servlet Context passed to newly created factory.
    * @param properties Map of name/property passed to newly created factory.
    * @return newly created factory.
    * @throws DefinitionsFactoryException If an error occur while initializing factory
    */
    public ComponentDefinitionsFactory createFactoryFromClassname(
        ServletContext servletContext,
        Map properties,
        String classname)
        throws DefinitionsFactoryException {

        if (classname == null) {
            return createFactory(servletContext, properties);
        }

        // Try to create from classname
        try {
            Class factoryClass = RequestUtils.applicationClass(classname);
            ComponentDefinitionsFactory factory =
                (ComponentDefinitionsFactory) factoryClass.newInstance();
            factory.initFactory(servletContext, properties);
            return factory;

        } catch (ClassCastException ex) { // Bad classname
            throw new DefinitionsFactoryException(
                "Error - createDefinitionsFactory : Factory class '"
                    + classname
                    + " must implements 'ComponentDefinitionsFactory'.",
                ex);

        } catch (ClassNotFoundException ex) { // Bad classname
            throw new DefinitionsFactoryException(
                "Error - createDefinitionsFactory : Bad class name '"
                    + classname
                    + "'.",
                ex);

        } catch (InstantiationException ex) { // Bad constructor or error
            throw new DefinitionsFactoryException(ex);

        } catch (IllegalAccessException ex) {
            throw new DefinitionsFactoryException(ex);
        }

    }

    /**
    * Create default Definition factory.
    * Factory must have a constructor taking ServletContext and Map as parameter.
    * In this implementation, default factory is of class I18nFactorySet
    * @param servletContext Servlet Context passed to newly created factory.
    * @param properties Map of name/property passed to newly created factory.
    * @return newly created factory.
    * @throws DefinitionsFactoryException If an error occur while initializing factory
    */
    public ComponentDefinitionsFactory createDefaultFactory(
        ServletContext servletContext,
        Map properties)
        throws DefinitionsFactoryException {

        ComponentDefinitionsFactory factory =
            new I18nFactorySet(servletContext, properties);

        return factory;
    }

    /**
    * Create Definition factory.
    * Convenience method. ServletConfig is wrapped into a Map allowing retrieval
    * of init parameters. Factory classname is also retrieved, as well as debug level.
    * Finally, approriate createDefinitionsFactory() is called.
    * @param servletContext Servlet Context passed to newly created factory.
    * @param properties Map containing all properties.
    */
    public ComponentDefinitionsFactory createFactory(
        ServletContext servletContext,
        Map properties)
        throws DefinitionsFactoryException {

        String classname = (String) properties.get(DEFINITIONS_FACTORY_CLASSNAME);

        if (classname != null) {
            return createFactoryFromClassname(servletContext, properties, classname);
        }

        return new I18nFactorySet(servletContext, properties);
    }

    /**
     * Get a definition by its name.
     * Call appropriate method on underlying factory instance.
     * Throw appropriate exception if definition or definition factory is not found.
     * @param definitionName Name of requested definition.
     * @param request Current servlet request.
     * @param servletContext Current servlet context.
     * @throws FactoryNotFoundException Can't find definition factory.
     * @throws DefinitionsFactoryException General error in factory while getting definition.
     */
    public ComponentDefinition getDefinition(
        String definitionName,
        ServletRequest request,
        ServletContext servletContext)
        throws FactoryNotFoundException, DefinitionsFactoryException {

        return factory.getDefinition(
            definitionName,
            (HttpServletRequest) request,
            servletContext);
    }

    /**
     * Reload underlying factory.
     * Reload is done by creating a new factory instance, and replacing the old instance
     * with the new one.
     * @param servletContext Current servlet context.
     * @throws DefinitionsFactoryException If factory creation fails.
     */
    public void reload(ServletContext servletContext)
        throws DefinitionsFactoryException {

        ComponentDefinitionsFactory newInstance =
            createFactory(servletContext, properties);

        factory = newInstance;
    }

    /**
     * Get underlying factory instance.
     * @return ComponentDefinitionsFactory
     */
    public ComponentDefinitionsFactory getFactory() {
        return factory;
    }

    /**
      * Init factory.
      * This method is required by interface ComponentDefinitionsFactory. It is
      * not used in this implementation, as it manages itself the underlying creation
      * and initialization.
      * @param servletContext Servlet Context passed to newly created factory.
      * @param properties Map of name/property passed to newly created factory.
      * Map can contain more properties than requested.
      * @throws DefinitionsFactoryException An error occur during initialization.
    */
    public void initFactory(ServletContext servletContext, Map properties)
        throws DefinitionsFactoryException {
        // do nothing
    }

    /**
     * Return String representation.
     * @return String representation.
     */
    public String toString() {
        return factory.toString();
    }

    /**
     * Inner class.
     * Wrapper for ServletContext init parameters.
     * Object of this class is an HashMap containing parameters and values
     * defined in the servlet config file (web.xml).
     */
    class ServletPropertiesMap extends HashMap {
        /**
         * Constructor.
         */
        ServletPropertiesMap(ServletConfig config) {
            // This implementation is very simple.
            // It is possible to avoid creation of a new structure, but this would
            // imply writing all of the Map interface.
            Enumeration e = config.getInitParameterNames();
            while (e.hasMoreElements()) {
                String key = (String) e.nextElement();
                put(key, config.getInitParameter(key));
            }
        }
    } // end inner class
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
人妖欧美一区二区| 性做久久久久久久免费看| 欧美视频一区二区在线观看| 日本特黄久久久高潮| 国产精品国产自产拍高清av王其| 欧美日本不卡视频| 成人av在线影院| 免费成人美女在线观看.| 亚洲人成人一区二区在线观看| 欧美一区二区免费视频| 91国模大尺度私拍在线视频| 国产精品综合一区二区三区| 亚洲r级在线视频| 国产日产精品一区| 欧美大片拔萝卜| 欧美日韩一区二区三区视频 | 99热这里都是精品| 国内精品在线播放| 天天免费综合色| 亚洲免费观看高清完整版在线观看| 亚洲精品在线免费观看视频| 91精品在线观看入口| 日本精品视频一区二区三区| 成人app网站| 国产精品一二三在| 久久99精品一区二区三区三区| 亚洲自拍偷拍综合| 亚洲日本乱码在线观看| 国产精品萝li| 亚洲国产精品黑人久久久| 日韩一区二区三区电影在线观看| 精品视频一区二区不卡| 色婷婷综合久久久| 99这里都是精品| 成人精品视频一区| 福利91精品一区二区三区| 国产精品自拍一区| 国产真实乱偷精品视频免| 日本va欧美va瓶| 日本欧美韩国一区三区| 日本免费在线视频不卡一不卡二| 亚洲福利视频三区| 亚洲电影你懂得| 三级不卡在线观看| 日日欢夜夜爽一区| 日本系列欧美系列| 免费亚洲电影在线| 久久国产精品第一页| 国产在线播放一区三区四| 国产综合色在线视频区| 国产综合色在线| 久久精品99久久久| 国产精品亚洲成人| 国产91综合一区在线观看| 成人免费黄色在线| eeuss鲁片一区二区三区| a级高清视频欧美日韩| 色哟哟精品一区| 欧美精品日韩一区| 欧美变态凌虐bdsm| 国产女人aaa级久久久级| 日韩美女视频一区二区 | 亚洲尤物视频在线| 日韩精品一卡二卡三卡四卡无卡| 日本伊人色综合网| 国产一二精品视频| 91在线观看下载| 欧美视频自拍偷拍| 日韩一区二区三区av| 久久蜜桃香蕉精品一区二区三区| 欧美激情综合在线| 一区二区三区四区激情| 天天色图综合网| 国内精品久久久久影院色| 成人激情小说乱人伦| 欧美色老头old∨ideo| 日韩精品一区二区三区四区| 亚洲国产精品成人综合色在线婷婷| 国产精品乱人伦一区二区| 亚洲国产精品一区二区www在线 | 裸体健美xxxx欧美裸体表演| 国产精选一区二区三区| 一本大道久久a久久精品综合| 3d动漫精品啪啪一区二区竹菊| 久久理论电影网| 一区二区三区不卡视频在线观看| 日本亚洲欧美天堂免费| 成人精品国产一区二区4080| 欧美日韩三级一区二区| 久久久久久久久久看片| 一区二区三区国产豹纹内裤在线| 蜜桃视频在线观看一区| 成人不卡免费av| 欧美一区二区在线不卡| 亚洲区小说区图片区qvod| 韩国女主播一区| 色88888久久久久久影院野外 | 日韩欧美电影一二三| 国产精品超碰97尤物18| 日本亚洲最大的色成网站www| 99久久综合国产精品| 欧美成人在线直播| 亚洲国产一区视频| 波多野洁衣一区| 精品久久久久久久人人人人传媒| 亚洲伦在线观看| 国产99久久久久久免费看农村| 欧美日韩国产美| 亚洲精品自拍动漫在线| 国产成人在线色| 日韩久久免费av| 午夜激情综合网| 色婷婷精品大在线视频| 国产精品久久影院| 国内精品嫩模私拍在线| 欧美欧美午夜aⅴ在线观看| 亚洲视频网在线直播| 国产98色在线|日韩| 久久综合九色综合欧美亚洲| 亚洲bt欧美bt精品777| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日韩电影一区二区三区四区| 色屁屁一区二区| 国产精品久久久久一区二区三区| 国产精品888| 欧美mv和日韩mv的网站| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲国产欧美在线| 91免费精品国自产拍在线不卡| 国产精品视频yy9299一区| 国产成人鲁色资源国产91色综| 26uuu精品一区二区在线观看| 久久精品99久久久| 日韩一区二区在线播放| 日精品一区二区三区| 7777精品伊人久久久大香线蕉| 亚洲综合一区二区三区| 欧美性猛交xxxxxxxx| 亚洲综合久久av| 精品视频资源站| 天天色图综合网| 日韩一区二区免费视频| 日韩黄色免费电影| 日韩一区二区三区在线观看 | 黑人巨大精品欧美黑白配亚洲| 欧美一区二区三区电影| 久久99精品久久久久| 欧美不卡一区二区三区四区| 久久av资源网| 久久蜜桃一区二区| 成人久久18免费网站麻豆| 日韩美女精品在线| 欧美性xxxxxxxx| 日韩高清不卡一区二区三区| 日韩欧美电影在线| 国产成人精品三级麻豆| 亚洲日本中文字幕区| 欧美日韩高清一区二区不卡| 男女视频一区二区| 国产欧美日韩麻豆91| av日韩在线网站| 亚洲777理论| 精品久久国产字幕高潮| 国产毛片一区二区| 亚洲日本青草视频在线怡红院| 欧美日本精品一区二区三区| 韩国视频一区二区| 综合久久给合久久狠狠狠97色| 欧美日韩精品高清| 久99久精品视频免费观看| 国产精品你懂的在线欣赏| 欧美在线不卡视频| 麻豆精品在线播放| 中文字幕欧美一| 欧美日本精品一区二区三区| 国产麻豆欧美日韩一区| 亚洲区小说区图片区qvod| 91精品国产乱码| 国产成人精品一区二区三区四区| 亚洲三级在线免费观看| 欧美一区二区视频在线观看| 国产成人精品www牛牛影视| 夜夜亚洲天天久久| 亚洲精品在线观看视频| 欧美丝袜第三区| 国产ts人妖一区二区| 婷婷丁香久久五月婷婷| 国产日韩精品久久久| 欧美巨大另类极品videosbest | 日本伊人色综合网| 中文字幕av在线一区二区三区| 欧美日韩国产影片| 高清不卡在线观看av| 偷拍日韩校园综合在线| 亚洲欧洲日本在线| www成人在线观看| 欧美日韩一级黄| www.色精品| 国产精品一区二区三区四区| 舔着乳尖日韩一区|