⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elresolver.java

📁 java属性邦定的(JSR-295)的一个实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

    /**
     * Attempts to set the value of the given <code>property</code> 
     * object on the given <code>base</code> object.
     *
     * <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>
     *
     * @param context The context of this evaluation.
     * @param base The base object whose property value is to be set,
     *     or <code>null</code> to set a top-level variable.
     * @param property The property or variable to be set.
     * @param value The value to set the property or variable to.
     * @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.
     * @throws PropertyNotWritableException if the given (base, property)
     *     pair is handled by this <code>ELResolver</code> but the specified
     *     variable or property is not writable.
     * @throws ELException if an exception was thrown while attempting to
     *     set the property or variable. The thrown exception
     *     must be included as the cause property of this exception, if
     *     available.
     */
    public abstract void setValue(ELContext context,
                                  Object base,
                                  Object property,
                                  Object value);

    /**
     * For a given <code>base</code> and <code>property</code>, attempts to
     * determine whether a call to {@link #setValue} will always fail.
     *
     * <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>
     *
     * @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 read-only status
     *     for.
     * @return If the <code>propertyResolved</code> property of 
     *     <code>ELContext</code> was set to <code>true</code>, then
     *     <code>true</code> if the property is read-only or
     *     <code>false</code> if not; 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.
     * @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 abstract boolean isReadOnly(ELContext context,
                                       Object base,
                                       Object property);

    /**
     * Returns information about the set of variables or properties that 
     * can be resolved for the given <code>base</code> object. One use for
     * this method is to assist tools in auto-completion.
     *
     * <p>If the <code>base</code> parameter is <code>null</code>, the 
     * resolver must enumerate the list of top-level variables it can 
     * resolve.</p>
     *
     * <p>The <code>Iterator</code> returned must contain zero or more 
     * instances of {@link java.beans.FeatureDescriptor}, in no guaranteed 
     * order. In the case of primitive types such as <code>int</code>, the 
     * value <code>null</code> must be returned. This is to prevent the 
     * useless iteration through all possible primitive values. A 
     * return value of <code>null</code> indicates that this resolver does 
     * not handle the given <code>base</code> object or that the results 
     * are too complex to represent with this method and the 
     * {@link #getCommonPropertyType} method should be used instead.</p>
     *
     * <p>Each <code>FeatureDescriptor</code> will contain information about
     * a single variable or property. In addition to the standard
     * properties, the <code>FeatureDescriptor</code> must have two
     * named attributes (as set by the <code>setValue</code> method):
     * <ul>
     *   <li>{@link #TYPE} - The value of this named attribute must be 
     *       an instance of <code>java.lang.Class</code> and specify the 
     *       runtime type of the variable or property.</li>
     *   <li>{@link #RESOLVABLE_AT_DESIGN_TIME} - The value of this 
     *       named attribute must be an instance of 
     *       <code>java.lang.Boolean</code> and indicates whether it is safe 
     *       to attempt to resolve this property at design-time. For 
     *       instance, it may be unsafe to attempt a resolution at design 
     *       time if the <code>ELResolver</code> needs access to a resource 
     *       that is only available at runtime and no acceptable simulated 
     *       value can be provided.</li>
     * </ul></p>
     *
     * <p>The caller should be aware that the <code>Iterator</code> 
     * returned might iterate through a very large or even infinitely large 
     * set of properties. Care should be taken by the caller to not get 
     * stuck in an infinite loop.</p>
     *
     * <p>This is a "best-effort" list.  Not all <code>ELResolver</code>s
     * will return completely accurate results, but all must be callable
     * at both design-time and runtime (i.e. whether or not
     * <code>Beans.isDesignTime()</code> returns <code>true</code>),
     * without causing errors.</p>
     *
     * <p>The <code>propertyResolved</code> property of the 
     * <code>ELContext</code> is not relevant to this method.
     * The results of all <code>ELResolver</code>s are concatenated
     * in the case of composite resolvers.</p>
     * 
     * @param context The context of this evaluation.
     * @param base The base object whose set of valid properties is to
     *     be enumerated, or <code>null</code> to enumerate the set of
     *     top-level variables that this resolver can evaluate.
     * @return An <code>Iterator</code> containing zero or more (possibly
     *     infinitely more) <code>FeatureDescriptor</code> objects, or 
     *     <code>null</code> if this resolver does not handle the given 
     *     <code>base</code> object or that the results are too complex to 
     *     represent with this method
     * @see java.beans.FeatureDescriptor
     */
    public abstract Iterator<FeatureDescriptor> getFeatureDescriptors(
                                                   ELContext context,
                                                   Object base);

    /**
     * Returns the most general type that this resolver accepts for the
     * <code>property</code> argument, given a <code>base</code> object.
     * One use for this method is to assist tools in auto-completion.
     *
     * <p>This assists tools in auto-completion and also provides a 
     * way to express that the resolver accepts a primitive value, 
     * such as an integer index into an array. For example, the 
     * {@link ArrayELResolver} will accept any <code>int</code> as a 
     * <code>property</code>, so the return value would be 
     * <code>Integer.class</code>.</p>
     *
     * @param context The context of this evaluation.
     * @param base The base object to return the most general property
     *     type for, or <code>null</code> to enumerate the set of
     *     top-level variables that this resolver can evaluate.
     * @return <code>null</code> if this <code>ELResolver</code> does not
     *     know how to handle the given <code>base</code> object; otherwise
     *     <code>Object.class</code> if any type of <code>property</code>
     *     is accepted; otherwise the most general <code>property</code>
     *     type accepted for the given <code>base</code>.
     */
    public abstract Class<?> getCommonPropertyType(ELContext context,
                                                Object base);
                    
}

⌨️ 快捷键说明

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