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

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

?? compositeelresolver.java

?? java屬性邦定的(JSR-295)的一個實現
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright (C) 2007 Sun Microsystems, Inc. All rights reserved. Use is
 * subject to license terms.
 */

package org.jdesktop.el;

import java.util.ArrayList;
import java.util.Iterator;
import java.beans.FeatureDescriptor;

/**
 * Maintains an ordered composite list of child <code>ELResolver</code>s.
 *
 * <p>Though only a single <code>ELResolver</code> is associated with an
 * <code>ELContext</code>, there are usually multiple resolvers considered
 * for any given variable or property resolution. <code>ELResolver</code>s
 * are combined together using a <code>CompositeELResolver</code>, to define
 * rich semantics for evaluating an expression.</p>
 *
 * <p>For the {@link #getValue}, {@link #getType}, {@link #setValue} and
 * {@link #isReadOnly} methods, an <code>ELResolver</code> is not
 * responsible for resolving all possible (base, property) pairs. In fact,
 * most resolvers will only handle a <code>base</code> of a single type.
 * To indicate that a resolver has successfully resolved a particular
 * (base, property) pair, it must set the <code>propertyResolved</code>
 * property of the <code>ELContext</code> to <code>true</code>. If it could 
 * not handle the given pair, it must leave this property alone. The caller
 * must ignore the return value of the method if <code>propertyResolved</code>
 * is <code>false</code>.</p>
 *
 * <p>The <code>CompositeELResolver</code> initializes the
 * <code>ELContext.propertyResolved</code> flag to <code>false</code>, and uses 
 * it as a stop condition for iterating through its component resolvers.</p>
 *
 * <p>The <code>ELContext.propertyResolved</code> flag is not used for the 
 * design-time methods {@link #getFeatureDescriptors} and
 * {@link #getCommonPropertyType}. Instead, results are collected and 
 * combined from all child <code>ELResolver</code>s for these methods.</p>
 *
 * @see ELContext
 * @see ELResolver
 * @since JSP 2.1
 */
public class CompositeELResolver extends ELResolver {

    /**
     * Adds the given resolver to the list of component resolvers.
     *
     * <p>Resolvers are consulted in the order in which they are added.</p>
     *
     * @param elResolver The component resolver to add.
     * @throws NullPointerException If the provided resolver is
     *     <code>null</code>.
     */
    public void add(ELResolver elResolver) {

        if (elResolver == null) {
            throw new NullPointerException();
        }
                                                                                
        elResolvers.add(elResolver);
    }

    /**
     * Attempts to resolve the given <code>property</code> object on the given
     * <code>base</code> object by querying all component resolvers.
     *
     * <p>If this resolver handles the given (base, property) pair, 
     * the <code>propertyResolved</code> property of the 
     * <code>ELContext</code> object must be set to <code>true</code>
     * by the resolver, before returning. If this property is not 
     * <code>true</code> after this method is called, the caller should ignore 
     * the return value.</p>
     *
     * <p>First, <code>propertyResolved</code> is set to <code>false</code> on
     * the provided <code>ELContext</code>.</p>
     *
     * <p>Next, for each component resolver in this composite:
     * <ol>
     *   <li>The <code>getValue()</code> method is called, passing in
     *       the provided <code>context</code>, <code>base</code> and 
     *       <code>property</code>.</li>
     *   <li>If the <code>ELContext</code>'s <code>propertyResolved</code>
     *       flag is <code>false</code> then iteration continues.</li>
     *   <li>Otherwise, iteration stops and no more component resolvers are
     *       considered. The value returned by <code>getValue()</code> is
     *       returned by this method.</li>
     * </ol></p>
     *
     * <p>If none of the component resolvers were able to perform this
     * operation, the value <code>null</code> is returned and the
     * <code>propertyResolved</code> flag remains set to 
     * <code>false</code></p>.
     *
     * <p>Any exception thrown by component resolvers during the iteration
     * is propagated to the caller of this method.</p>
     *
     * @param context The context of this evaluation.
     * @param base The base object whose property value is to be returned,
     *     or <code>null</code> to resolve a top-level variable.
     * @param property The property or variable to be resolved.
     * @return If the <code>propertyResolved</code> property of 
     *     <code>ELContext</code> was set to <code>true</code>, then
     *     the result of the variable or property resolution; otherwise
     *     undefined.
     * @throws NullPointerException if context is <code>null</code>
     * @throws PropertyNotFoundException if the given (base, property) pair
     *     is handled by this <code>ELResolver</code> but the specified
     *     variable or property does not exist or is not readable.
     * @throws ELException if an exception was thrown while performing
     *     the property or variable resolution. The thrown exception
     *     must be included as the cause property of this exception, if
     *     available.
     */
    public Object getValue(ELContext context,
                           Object base,
                           Object property) {
        context.setPropertyResolved(false);
        int i = 0, len = this.elResolvers.size();
        ELResolver elResolver;
        Object value; 
        while (i < len) {
            elResolver = this.elResolvers.get(i);
            value = elResolver.getValue(context, base, property);
            if (context.isPropertyResolved()) {
                return value;
            }
            i++;
        } 
        return ELContext.UNRESOLVABLE_RESULT;
    }

    /**
     * For a given <code>base</code> and <code>property</code>, attempts to
     * identify the most general type that is acceptable for an object to be 
     * passed as the <code>value</code> parameter in a future call 
     * to the {@link #setValue} method. The result is obtained by 
     * querying all component resolvers.
     *
     * <p>If this resolver handles the given (base, property) pair, 
     * the <code>propertyResolved</code> property of the 
     * <code>ELContext</code> object must be set to <code>true</code>
     * by the resolver, before returning. If this property is not 
     * <code>true</code> after this method is called, the caller should ignore 
     * the return value.</p>
     *
     * <p>First, <code>propertyResolved</code> is set to <code>false</code> on
     * the provided <code>ELContext</code>.</p>
     *
     * <p>Next, for each component resolver in this composite:
     * <ol>
     *   <li>The <code>getType()</code> method is called, passing in
     *       the provided <code>context</code>, <code>base</code> and 
     *       <code>property</code>.</li>
     *   <li>If the <code>ELContext</code>'s <code>propertyResolved</code>
     *       flag is <code>false</code> then iteration continues.</li>
     *   <li>Otherwise, iteration stops and no more component resolvers are
     *       considered. The value returned by <code>getType()</code> is
     *       returned by this method.</li>
     * </ol></p>
     *
     * <p>If none of the component resolvers were able to perform this
     * operation, the value <code>null</code> is returned and the
     * <code>propertyResolved</code> flag remains set to 
     * <code>false</code></p>.
     *
     * <p>Any exception thrown by component resolvers during the iteration
     * is propagated to the caller of this method.</p>
     *
     * @param context The context of this evaluation.
     * @param base The base object whose property value is to be analyzed,
     *     or <code>null</code> to analyze a top-level variable.
     * @param property The property or variable to return the acceptable 
     *     type for.
     * @return If the <code>propertyResolved</code> property of 
     *     <code>ELContext</code> was set to <code>true</code>, then
     *     the most general acceptable type; otherwise undefined.
     * @throws NullPointerException if context is <code>null</code>
     * @throws PropertyNotFoundException if the given (base, property) pair
     *     is handled by this <code>ELResolver</code> but the specified
     *     variable or property does not exist or is not readable.
     * @throws ELException if an exception was thrown while performing
     *     the property or variable resolution. The thrown exception
     *     must be included as the cause property of this exception, if
     *     available.
     */
    public Class<?> getType(ELContext context,
                         Object base,
                         Object property) {
        context.setPropertyResolved(false);
        int i = 0, len = this.elResolvers.size();
        ELResolver elResolver;
        Class<?> type;  
        while (i < len) {
            elResolver = this.elResolvers.get(i);
            type = elResolver.getType(context, base, property);
            if (context.isPropertyResolved()) {
                return type;
            }
            i++;
        }
        return null;
    }

    /**
     * Attempts to set the value of the given <code>property</code> 
     * object on the given <code>base</code> object. All component
     * resolvers are asked to attempt to set the value.
     *
     * <p>If this resolver handles the given (base, property) pair, 
     * the <code>propertyResolved</code> property of the 
     * <code>ELContext</code> object must be set to <code>true</code>
     * by the resolver, before returning. If this property is not 
     * <code>true</code> after this method is called, the caller can
     * safely assume no value has been set.</p>
     *
     * <p>First, <code>propertyResolved</code> is set to <code>false</code> on
     * the provided <code>ELContext</code>.</p>
     *
     * <p>Next, for each component resolver in this composite:
     * <ol>
     *   <li>The <code>setValue()</code> method is called, passing in
     *       the provided <code>context</code>, <code>base</code>, 
     *       <code>property</code> and <code>value</code>.</li>
     *   <li>If the <code>ELContext</code>'s <code>propertyResolved</code>
     *       flag is <code>false</code> then iteration continues.</li>
     *   <li>Otherwise, iteration stops and no more component resolvers are
     *       considered.</li>
     * </ol></p>
     *
     * <p>If none of the component resolvers were able to perform this
     * operation, the <code>propertyResolved</code> flag remains set to 
     * <code>false</code></p>.
     *
     * <p>Any exception thrown by component resolvers during the iteration
     * is propagated to the caller of this method.</p>
     *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色精品视频| 国产精品色在线观看| 国产三级欧美三级日产三级99 | 在线精品视频免费播放| 欧美一级在线视频| 夜夜精品浪潮av一区二区三区| 国产在线不卡一卡二卡三卡四卡| 欧美丝袜自拍制服另类| 一色屋精品亚洲香蕉网站| 激情综合色播激情啊| 欧美精品欧美精品系列| 亚洲丝袜制服诱惑| 岛国一区二区三区| 精品日韩欧美在线| 麻豆精品视频在线观看视频| 日本丰满少妇一区二区三区| 亚洲国产成人午夜在线一区| 美女精品一区二区| 91麻豆精品91久久久久久清纯| 亚洲视频香蕉人妖| zzijzzij亚洲日本少妇熟睡| 久久婷婷成人综合色| 青青草国产成人99久久| 欧美日韩国产综合视频在线观看| 亚洲视频一区二区在线观看| www.欧美日韩| 国产精品国产三级国产| 成人性生交大片免费看视频在线 | 亚洲一区二区三区中文字幕在线 | 亚洲欧美欧美一区二区三区| 国产成人自拍网| 2023国产精华国产精品| 国产一区999| 久久网站最新地址| 国产91色综合久久免费分享| 国产亚洲欧洲一区高清在线观看| 精东粉嫩av免费一区二区三区| 日韩一区二区电影网| 国产自产v一区二区三区c| 欧美电影免费观看高清完整版在| 激情五月婷婷综合网| 久久五月婷婷丁香社区| 成人黄色一级视频| 亚洲在线中文字幕| 欧美一区三区二区| 极品美女销魂一区二区三区 | 国产精品理论在线观看| 成人免费av资源| 亚洲日本一区二区| 欧美福利视频导航| 国产一区二区三区香蕉| 亚洲国产高清在线| 欧美日韩亚洲另类| 久久国产福利国产秒拍| 精品国产乱码久久久久久图片| 丁香天五香天堂综合| 日韩一区日韩二区| 6080午夜不卡| 国产夫妻精品视频| 亚洲一区二区在线免费观看视频| 欧美一卡二卡三卡| 成人h动漫精品| 日韩极品在线观看| 欧美国产成人在线| 欧美精品第一页| 国产91露脸合集magnet| 亚洲综合色噜噜狠狠| 精品国产一区二区三区av性色 | 九一久久久久久| 国产精品每日更新在线播放网址| 色综合中文字幕国产| 亚洲柠檬福利资源导航| 日韩欧美成人一区二区| 91美女在线看| 韩国av一区二区三区在线观看| 一区二区三区国产| 久久久精品天堂| 91.成人天堂一区| a级精品国产片在线观看| 久久国产欧美日韩精品| 一片黄亚洲嫩模| 国产日韩欧美综合一区| 欧美一区二区成人| 在线免费亚洲电影| 国产99久久久国产精品潘金网站| 亚洲最色的网站| 中文幕一区二区三区久久蜜桃| 日韩一区二区免费在线观看| 91美女蜜桃在线| www.爱久久.com| 高清久久久久久| 免费在线欧美视频| 亚洲成人av电影| 一区二区三区在线视频免费观看| 国产喷白浆一区二区三区| 日韩一区二区三区四区| 欧美在线免费观看亚洲| 91偷拍与自偷拍精品| 成人理论电影网| 国产精品中文有码| 精品亚洲免费视频| 老司机精品视频一区二区三区| 亚洲午夜久久久久久久久电影院| 亚洲天堂免费在线观看视频| 日本一区二区三级电影在线观看 | 欧美日韩国产三级| 色婷婷一区二区三区四区| 国产suv精品一区二区三区| 久久91精品久久久久久秒播| 日韩一区欧美二区| 日本欧美在线看| 奇米一区二区三区| 美女久久久精品| 精品一区二区三区在线播放| 日本不卡不码高清免费观看| 日韩电影网1区2区| 蜜臀99久久精品久久久久久软件| 日韩综合小视频| 蜜芽一区二区三区| 久久精品99国产精品| 精品制服美女丁香| 国产精品一区二区x88av| 国产精品白丝jk白祙喷水网站 | 国内外精品视频| 紧缚捆绑精品一区二区| 狠狠色丁香久久婷婷综| 国产高清在线精品| 99re这里只有精品首页| 在线亚洲高清视频| 国产日韩欧美激情| 欧美国产禁国产网站cc| 亚洲欧美aⅴ...| 日本不卡一二三| 国产成人自拍网| 欧美亚洲一区二区在线| 欧美精品日韩一本| 国产性做久久久久久| 亚洲精品你懂的| 美女视频黄 久久| av福利精品导航| 91精品国产美女浴室洗澡无遮挡| 久久久久久电影| 亚洲综合色网站| 卡一卡二国产精品| 成人18视频日本| 欧美日韩一区二区在线观看| 精品剧情在线观看| 久久国产麻豆精品| 日一区二区三区| 久久精品视频免费观看| 久久成人免费网站| 99精品欧美一区二区三区小说| 欧美三级中文字幕在线观看| 欧美大尺度电影在线| 国产精品乱码久久久久久| 亚洲成av人片在线观看无码| 亚洲成av人片| 国产成人精品三级麻豆| 美女视频黄频大全不卡视频在线播放| 欧美亚洲图片小说| 亚洲综合色视频| 欧美性生活一区| 亚洲一区二区三区在线| 色综合久久久久久久久久久| 中文字幕在线不卡视频| 成人av资源站| 中文字幕亚洲不卡| 97精品国产97久久久久久久久久久久 | 香蕉av福利精品导航| 欧美性猛交xxxx黑人交| 亚洲福利视频一区| 欧美老肥妇做.爰bbww| 婷婷丁香激情综合| 欧美一区二区三区公司| 美女视频免费一区| 久久综合狠狠综合久久激情 | 日韩一级片网址| 国内久久精品视频| 国产精品天天看| 97精品视频在线观看自产线路二 | 亚洲成人777| 欧美一卡2卡三卡4卡5免费| 免费观看久久久4p| 2020国产成人综合网| 春色校园综合激情亚洲| 日韩毛片视频在线看| 欧美色手机在线观看| 日本欧美大码aⅴ在线播放| www国产成人| 91亚洲永久精品| 亚洲国产成人va在线观看天堂| 欧美一区二区在线视频| 精一区二区三区| 国产精品久久久久久久午夜片| 色综合久久66| 美女高潮久久久| 18涩涩午夜精品.www| 欧美日韩不卡在线| 国产激情偷乱视频一区二区三区| 日韩美女视频一区二区|