/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 javax.el; import java.util.Iterator; /** * @author Jacob Hookom [jacob/hookom.net] * */ public abstract class ELResolver { public static final String TYPE = "type"; public static final String RESOLVABLE_AT_DESIGN_TIME = "resolvableAtDesignTime"; /** * @param context The EL context for this evaluation * @param base The base object on which the property is to be found * @param property The property whose value is to be returned * @return the value of the provided property * @throws NullPointerException * If the supplied context is <code>null</code> * @throws PropertyNotFoundException * If the base/property combination provided to the resolver is * one that the resolver can handle but no match was found or a * match was found but was not readable * @throws ELException * Wraps any exception throw whilst resolving the property */ public abstract Object getValue(ELContext context, Object base, Object property); /** * Invokes a method on the the given object. This default implementation * always returns <code>null</code>. * * @param context The EL context for this evaluation * @param base The base object on which the method is to be found * @param method The method to invoke * @param paramTypes The types of the parameters of the method to invoke * @param params The parameters with which to invoke the method * * @return Always <code>null</code> * * @since EL 2.2 */ public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params) { return null; } /** * @param context The EL context for this evaluation * @param base The base object on which the property is to be found * @param property The property whose type is to be returned * @return the type of the provided property * @throws NullPointerException * If the supplied context is <code>null</code> * @throws PropertyNotFoundException * If the base/property combination provided to the resolver is * one that the resolver can handle but no match was found or a * match was found but was not readable * @throws ELException * Wraps any exception throw whilst resolving the property */ public abstract Class<?> getType(ELContext context, Object base, Object property); /** * @param context The EL context for this evaluation * @param base The base object on which the property is to be found * @param property The property whose value is to be set * @param value The value to set the property to * @throws NullPointerException * If the supplied context is <code>null</code> * @throws PropertyNotFoundException * If the base/property combination provided to the resolver is * one that the resolver can handle but no match was found * @throws PropertyNotWritableException * If the base/property combination provided to the resolver is * one that the resolver can handle but the property was not * writable * @throws ELException * Wraps any exception throw whilst resolving the property */ public abstract void setValue(ELContext context, Object base, Object property, Object value); /** * @param context The EL context for this evaluation * @param base The base object on which the property is to be found * @param property The property to be checked for read only status * @return <code>true</code> if the identified property is read only, * otherwise <code>false</code> * @throws NullPointerException * If the supplied context is <code>null</code> * @throws PropertyNotFoundException * If the base/property combination provided to the resolver is * one that the resolver can handle but no match was found * @throws ELException * Wraps any exception throw whilst resolving the property */ public abstract boolean isReadOnly(ELContext context, Object base, Object property); public abstract Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base); public abstract Class<?> getCommonPropertyType(ELContext context, Object base); /** * Converts the given object to the given type. This default implementation * always returns <code>null</code>. * * @param context The EL context for this evaluation * @param obj The object to convert * @param type The type to which the object should be converted * * @return Always <code>null</code> * * @since EL 3.0 */ public Object convertToType(ELContext context, Object obj, Class<?> type) { context.setPropertyResolved(false); return null; } }