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

Reply via email to