Author: markt Date: Tue Jul 2 18:52:15 2013 New Revision: 1499058 URL: http://svn.apache.org/r1499058 Log: EL 3.0 New bean name resolver
Added: tomcat/trunk/java/javax/el/BeanNameELResolver.java (with props) Added: tomcat/trunk/java/javax/el/BeanNameELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/BeanNameELResolver.java?rev=1499058&view=auto ============================================================================== --- tomcat/trunk/java/javax/el/BeanNameELResolver.java (added) +++ tomcat/trunk/java/javax/el/BeanNameELResolver.java Tue Jul 2 18:52:15 2013 @@ -0,0 +1,128 @@ +/* + * 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.beans.FeatureDescriptor; +import java.util.Iterator; + +public class BeanNameELResolver extends ELResolver { + + private final BeanNameResolver beanNameResolver; + + public BeanNameELResolver(BeanNameResolver beanNameResolver) { + this.beanNameResolver = beanNameResolver; + } + + @Override + public Object getValue(ELContext context, Object base, Object property) + throws NullPointerException, PropertyNotFoundException, ELException { + + if (context == null) { + throw new NullPointerException(); + } + if (base != null || !(property instanceof String)) { + return null; + } + + String beanName = (String) property; + + if (beanNameResolver.isNameResolved(beanName)) { + context.setPropertyResolved(true); + return beanNameResolver.getBean((String) property); + } + + return null; + } + + @Override + public void setValue(ELContext context, Object base, Object property, + Object value) throws NullPointerException, + PropertyNotFoundException, PropertyNotWritableException, + ELException { + + if (context == null) { + throw new NullPointerException(); + } + if (base != null || !(property instanceof String)) { + return; + } + + String beanName = (String) property; + + if (beanNameResolver.isNameResolved(beanName) || + beanNameResolver.canCreateBean(beanName)) { + context.setPropertyResolved(true); + beanNameResolver.setBeanValue(beanName, value); + } + } + + @Override + public Class<?> getType(ELContext context, Object base, Object property) + throws NullPointerException, PropertyNotFoundException, ELException { + + if (context == null) { + throw new NullPointerException(); + } + if (base != null || !(property instanceof String)) { + return null; + } + + String beanName = (String) property; + + if (beanNameResolver.isNameResolved(beanName)) { + context.setPropertyResolved(true); + beanNameResolver.getBean(beanName).getClass(); + } + + return null; + } + + @Override + public boolean isReadOnly(ELContext context, Object base, Object property) + throws NullPointerException, PropertyNotFoundException, ELException { + + + if (context == null) { + throw new NullPointerException(); + } + if (base != null || !(property instanceof String)) { + // Return value undefined + return false; + } + + String beanName = (String) property; + + if (beanNameResolver.isNameResolved(beanName)) { + context.setPropertyResolved(true); + return beanNameResolver.isReadOnly(beanName); + } + + // Return value undefined + return false; + } + + @Override + public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, + Object base) { + return null; + } + + @Override + public Class<?> getCommonPropertyType(ELContext context, Object base) { + return String.class; + } +} Propchange: tomcat/trunk/java/javax/el/BeanNameELResolver.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org