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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? annotationsconfigurator.java

?? dwr 源文件 dwr 源文件 dwr 源文件
?? JAVA
字號(hào):
/*
 * Copyright 2006 Maik Schreiber <blizzy AT blizzy DOT de>
 *
 * 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.directwebremoting.annotations;

import java.beans.Introspector;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

import org.directwebremoting.AccessControl;
import org.directwebremoting.AjaxFilter;
import org.directwebremoting.AjaxFilterManager;
import org.directwebremoting.Configurator;
import org.directwebremoting.Container;
import org.directwebremoting.Converter;
import org.directwebremoting.ConverterManager;
import org.directwebremoting.Creator;
import org.directwebremoting.CreatorManager;
import org.directwebremoting.convert.BeanConverter;
import org.directwebremoting.create.NewCreator;
import org.directwebremoting.util.LocalUtil;
import org.directwebremoting.util.Logger;

/**
 * A Configurator that works off Annotations.
 * @author Maik Schreiber [blizzy AT blizzy DOT de]
 * @author Joe Walker [joe at getahead dot ltd dot uk]
 */
public class AnnotationsConfigurator implements Configurator
{
    /* (non-Javadoc)
     * @see org.directwebremoting.Configurator#configure(org.directwebremoting.Container)
     */
    public void configure(Container container)
    {
        Object data = container.getBean("classes"); //$NON-NLS-1$
        if (data == null)
        {
            return;
        }

        if (data instanceof String)
        {
            String classesStr = (String) data;
            String[] classNames = classesStr.split(","); //$NON-NLS-1$
            for (int i = 0; i < classNames.length; i++)
            {
                String className = classNames[i].trim();
                try
                {
                    Class<?> clazz = LocalUtil.classForName(className);
                    processClass(clazz, container);
                }
                catch (Exception ex)
                {
                    log.error("Failed to process class: " + className, ex); //$NON-NLS-1$
                }
            }
        }
        else
        {
            try
            {
                processClass(data.getClass(), container);
            }
            catch (Exception ex)
            {
                log.error("Failed to process class: " + data.getClass().getName(), ex); //$NON-NLS-1$
            }
        }
    }

    /**
     * Process the annotations on a given class
     * @param clazz The class to search for annotations
     * @param container The IoC container to configure
     * @throws IllegalAccessException If annotation processing fails
     * @throws InstantiationException If annotation processing fails
     */
    private void processClass(Class<?> clazz, Container container) throws InstantiationException, IllegalAccessException
    {
        Create createAnn = clazz.getAnnotation(Create.class);
        if (createAnn != null)
        {
            processCreate(clazz, createAnn, container);
        }

        Convert convertAnn = clazz.getAnnotation(Convert.class);
        if (convertAnn != null)
        {
            processConvert(clazz, convertAnn, container);
        }

        GlobalFilter globalFilterAnn = clazz.getAnnotation(GlobalFilter.class);
        if (globalFilterAnn != null)
        {
            processGlobalFilter(clazz, globalFilterAnn, container);
        }
    }

    /**
     * Process the @Create annotaion on a given class
     * @param clazz The class annotated with @Create
     * @param createAnn The annotation
     * @param container The IoC container to configure
     */
    private void processCreate(Class<?> clazz, Create createAnn, Container container)
    {
        Class<? extends Creator> creator = createAnn.creator();
        String creatorClass = creator.getName();
        Map<String, String> creatorParams = getParamsMap(createAnn.creatorParams());
        ScriptScope scope = createAnn.scope();

        CreatorManager creatorManager = (CreatorManager) container.getBean(CreatorManager.class.getName());
        String creatorName = LocalUtil.replace(creatorClass, ".", "_"); //$NON-NLS-1$ //$NON-NLS-2$
        creatorManager.addCreatorType(creatorName, creatorClass);

        Map<String, String> params = new HashMap<String, String>();
        if (NewCreator.class.isAssignableFrom(NewCreator.class))
        {
            params.put("class", clazz.getName()); //$NON-NLS-1$
        }
        params.putAll(creatorParams);
        params.put("scope", scope.getValue()); //$NON-NLS-1$

        String name = createAnn.name();
        if (name == null || name.length() == 0)
        {
            name = LocalUtil.getShortClassName(clazz);
        }

        try
        {
            log.info("Adding class " + clazz.getName() + " as " + name); //$NON-NLS-1$ //$NON-NLS-2$
            creatorManager.addCreator(name, creatorName, params);
        }
        catch (Exception ex)
        {
            log.error("Failed to add class as Creator: " + clazz.getName(), ex); //$NON-NLS-1$
        }

        AccessControl accessControl = (AccessControl) container.getBean(AccessControl.class.getName());
        Method[] methods = clazz.getMethods();
        for (int i = 0; i < methods.length; i++)
        {
            if (methods[i].getAnnotation(RemoteMethod.class) != null)
            {
                accessControl.addIncludeRule(name, methods[i].getName());

                Auth authAnn = methods[i].getAnnotation(Auth.class);
                if (authAnn != null)
                {
                    accessControl.addRoleRestriction(name, methods[i].getName(), authAnn.role());
                }
            }
        }

        Filters filtersAnn = clazz.getAnnotation(Filters.class);
        if (filtersAnn != null)
        {
            Filter[] fs = filtersAnn.value();
            for (int i = 0; i < fs.length; i++)
            {
                processFilter(fs[i], name, container);
            }
        }
        // process single filter for convenience
        else
        {
            Filter filterAnn = clazz.getAnnotation(Filter.class);
            if (filterAnn != null)
            {
                processFilter(filterAnn, name, container);
            }
        }
    }

    /**
     * Process the @Filter annotaion
     * @param filterAnn The filter annotation
     * @param name The Javascript name of the class to filter 
     * @param container The IoC container to configure
     */
    private void processFilter(Filter filterAnn, String name, Container container)
    {
        Map<String, String> filterParams = getParamsMap(filterAnn.params());
        AjaxFilter filter = (AjaxFilter) LocalUtil.classNewInstance(name, filterAnn.type().getName(), AjaxFilter.class);
        if (filter != null)
        {
            LocalUtil.setParams(filter, filterParams, null);
            AjaxFilterManager filterManager = (AjaxFilterManager) container.getBean(AjaxFilterManager.class.getName());
            filterManager.addAjaxFilter(filter, name);
        }
    }

    /**
     * Process the @Convert annotaion on a given class
     * @param clazz The class annotated with @Convert
     * @param convertAnn The annotation
     * @param container The IoC container to configure
     * @throws InstantiationException
     * @throws IllegalAccessException
     */
    private void processConvert(Class<?> clazz, Convert convertAnn, Container container) throws InstantiationException, IllegalAccessException
    {
        Class<? extends Converter> converter = convertAnn.converter();
        String converterClass = converter.getName();
        Map<String, String> params = getParamsMap(convertAnn.params());

        ConverterManager converterManager = (ConverterManager) container.getBean(ConverterManager.class.getName());
        String converterName = LocalUtil.replace(converterClass, ".", "_"); //$NON-NLS-1$ //$NON-NLS-2$
        converterManager.addConverterType(converterName, converterClass);

        if (BeanConverter.class.isAssignableFrom(converter))
        {
            StringBuilder properties = new StringBuilder();
            Field[] fields = clazz.getFields();
            for (int i = 0; i < fields.length; i++)
            {
                if (fields[i].getAnnotation(RemoteProperty.class) != null)
                {
                    properties.append(',').append(fields[i].getName());
                }
            }

            Method[] methods = clazz.getMethods();
            for (int i = 0; i < methods.length; i++)
            {
                if (methods[i].getAnnotation(RemoteProperty.class) != null)
                {
                    String name = methods[i].getName();
                    if (name.startsWith(METHOD_PREFIX_GET) || name.startsWith(METHOD_PREFIX_IS))
                    {
                        if (name.startsWith(METHOD_PREFIX_GET))
                        {
                            name = name.substring(3);
                        }
                        else
                        {
                            name = name.substring(2);
                        }
                        name = Introspector.decapitalize(name);
                        properties.append(',').append(name);
                    }
                }
            }
            if (properties.length() > 0)
            {
                properties.deleteCharAt(0);
                params.put("include", properties.toString()); //$NON-NLS-1$
            }
        }

        converterManager.addConverter(clazz.getName(), converterName, params);
    }

    /**
     * Global Filters apply to all classes
     * @param clazz The class to use as a filter
     * @param globalFilterAnn The filter annotation
     * @param container The IoC container to configure
     * @throws InstantiationException In case we can't create the given clazz
     * @throws IllegalAccessException In case we can't create the given clazz
     */
    private void processGlobalFilter(Class<?> clazz, GlobalFilter globalFilterAnn, Container container) throws InstantiationException, IllegalAccessException
    {
        if (!AjaxFilter.class.isAssignableFrom(clazz))
        {
            throw new IllegalArgumentException(clazz.getName() + " is not an AjaxFilter implementation"); //$NON-NLS-1$
        }

        Map<String, String> filterParams = getParamsMap(globalFilterAnn.params());
        AjaxFilter filter = (AjaxFilter) clazz.newInstance();
        if (filter != null)
        {
            LocalUtil.setParams(filter, filterParams, null);
            AjaxFilterManager filterManager = (AjaxFilterManager) container.getBean(AjaxFilterManager.class.getName());
            filterManager.addAjaxFilter(filter);
        }
    }

    /**
     * Utility to turn a Param array into a Map<String, String>.
     * TODO: Should we move this code into Param? Is that even possible? 
     * @param params The params array from annotations
     * @return A Map<String, String>
     */
    private Map<String, String> getParamsMap(Param[] params)
    {
        Map<String, String> result = new HashMap<String, String>();
        if (params != null)
        {
            for (int i = 0; i < params.length; i++)
            {
                Param p = params[i];
                result.put(p.name(), p.value());
            }
        }
        return result;
    }

    /**
     * The getter prefix for boolean variables
     */
    private static final String METHOD_PREFIX_IS = "is"; //$NON-NLS-1$

    /**
     * The getter prefix for non-boolean variables
     */
    private static final String METHOD_PREFIX_GET = "get"; //$NON-NLS-1$

    /**
     * The log stream
     */
    private static final Logger log = Logger.getLogger(AnnotationsConfigurator.class);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91欧美激情一区二区三区成人| 国产精品五月天| 欧美美女直播网站| 欧美在线播放高清精品| 91欧美激情一区二区三区成人| 不卡的av中国片| 成人av网站大全| 91视频.com| 欧美中文字幕一区| 91超碰这里只有精品国产| 欧美老女人第四色| 日韩欧美色电影| 精品国产亚洲在线| 久久久午夜精品理论片中文字幕| 久久久美女毛片| 中文字幕欧美日本乱码一线二线| 国产精品成人网| 怡红院av一区二区三区| 性欧美大战久久久久久久久| 亚洲成人免费在线| 毛片不卡一区二区| 国产91精品在线观看| av中文字幕不卡| 色激情天天射综合网| 91麻豆精品国产91| 精品国产91久久久久久久妲己 | 欧美视频完全免费看| 欧美日韩激情一区二区| 日韩精品中文字幕一区二区三区| 国产亚洲一二三区| 亚洲人成网站色在线观看| 亚洲一区二区三区四区在线观看| 日韩电影免费一区| 国产suv精品一区二区883| 91蝌蚪porny| 欧美久久久久久久久中文字幕| 亚洲精品在线一区二区| 亚洲欧洲一区二区三区| 五月天一区二区| 国产乱子伦视频一区二区三区| 91日韩在线专区| 日韩三级.com| 中文字幕一区二区三区不卡在线 | 91老师片黄在线观看| 欧美疯狂做受xxxx富婆| 国产欧美精品国产国产专区| 一区二区在线观看免费视频播放| 日本女优在线视频一区二区| 粉嫩高潮美女一区二区三区| 欧美精品第1页| 国产精品久久免费看| 日本不卡在线视频| 99re66热这里只有精品3直播 | 92国产精品观看| 欧美日韩国产a| 久久综合99re88久久爱| 亚洲四区在线观看| 一区二区日韩av| 久久99国内精品| 色综合中文综合网| 国产一区二区三区四区五区入口 | 久久九九久久九九| 亚洲激情校园春色| 玖玖九九国产精品| 色综合久久久久久久| 欧美一级精品在线| 综合av第一页| 免费成人美女在线观看.| caoporn国产一区二区| 在线视频亚洲一区| 日本一区二区三区久久久久久久久不| 一区二区三区在线免费视频| 麻豆精品一二三| 一本久久a久久免费精品不卡| 69av一区二区三区| 综合久久综合久久| 精品无码三级在线观看视频| 色婷婷综合在线| 久久精品人人做人人爽人人| 婷婷综合在线观看| zzijzzij亚洲日本少妇熟睡| 日韩视频在线永久播放| 精品国产3级a| 久色婷婷小香蕉久久| 欧美三级中文字幕在线观看| 国产精品毛片大码女人| 久久国产夜色精品鲁鲁99| 成人亚洲精品久久久久软件| 91精品免费观看| 亚洲已满18点击进入久久| 丰满少妇在线播放bd日韩电影| 日韩一区二区三区免费看| 一区二区免费在线播放| www.亚洲激情.com| 欧美一区二区女人| 亚洲精品免费看| 成人精品小蝌蚪| 久久久国产午夜精品| 久久成人免费网站| 7777精品伊人久久久大香线蕉经典版下载 | 免费欧美日韩国产三级电影| 在线看日韩精品电影| 亚洲色图欧美偷拍| 高清beeg欧美| 国产亚洲一二三区| 国产精品系列在线观看| 日韩精品一区二区三区三区免费| 亚洲1区2区3区视频| www.在线成人| 一区免费观看视频| 95精品视频在线| 日韩一区有码在线| 91亚洲午夜精品久久久久久| 中文字幕一区二区三区色视频| 成人av午夜电影| 中文字幕在线观看不卡视频| www.性欧美| 亚洲精品一区二区在线观看| 国产精品香蕉一区二区三区| 国产欧美日韩综合| 高清不卡一二三区| 国产精品国产三级国产普通话蜜臀 | 国产一区二区三区免费看| 91麻豆精品91久久久久久清纯| 久久99最新地址| 精品久久久久久亚洲综合网| 狠狠色丁香九九婷婷综合五月| 精品国产91亚洲一区二区三区婷婷| 精品一区二区免费视频| 久久精品一区二区三区四区| 国产高清精品久久久久| 国产精品久久久久久久裸模| 色哟哟亚洲精品| 亚洲午夜一区二区三区| 欧美在线观看一二区| 天天综合网天天综合色| 日韩欧美一级二级三级| 国产成人啪免费观看软件 | 久久久精品国产免大香伊| 菠萝蜜视频在线观看一区| 亚洲乱码日产精品bd| 精品视频在线看| 亚洲成av人片在线观看无码| 日韩精品一区二区三区老鸭窝 | 久久99久久久久久久久久久| 欧美大片国产精品| 国内精品嫩模私拍在线| 国产精品美女久久福利网站| 欧美中文字幕亚洲一区二区va在线| 一区二区三区.www| 337p日本欧洲亚洲大胆精品| 不卡一区二区在线| 亚洲成人精品一区| 精品美女被调教视频大全网站| 成人综合激情网| 一区二区三区在线视频播放| 日韩久久久精品| 成人看片黄a免费看在线| 亚洲一区日韩精品中文字幕| 欧美日韩国产精品自在自线| 久99久精品视频免费观看| 国产精品网曝门| 欧美日韩亚洲不卡| 国产成人av网站| 一区二区久久久| 亚洲精品一区二区三区福利| 91国产福利在线| 精品一区二区在线看| 国产日韩欧美综合一区| 欧美精品一级二级| 懂色一区二区三区免费观看| 亚洲午夜电影在线| 国产日韩视频一区二区三区| 欧美三级欧美一级| 粉嫩av一区二区三区粉嫩| 日欧美一区二区| 成人欧美一区二区三区视频网页| 欧美三区免费完整视频在线观看| 岛国一区二区在线观看| 日本视频中文字幕一区二区三区| 国产精品久久久久久久裸模 | 亚洲国产欧美在线| 日本一区二区不卡视频| 欧美日韩国产成人在线免费| 成人成人成人在线视频| 麻豆一区二区99久久久久| 亚洲欧美日韩国产综合| 日韩三级在线观看| 91福利资源站| 北条麻妃国产九九精品视频| 国模大尺度一区二区三区| 一区二区三区美女视频| 国产蜜臀97一区二区三区 | 欧美撒尿777hd撒尿| 成人动漫视频在线| 国产伦理精品不卡| 婷婷亚洲久悠悠色悠在线播放| 国产精品日日摸夜夜摸av| 精品精品欲导航| 欧美一区二区三区免费|