Author: craigmcc
Date: Tue Jan 17 16:58:12 2006
New Revision: 369992

URL: http://svn.apache.org/viewcvs?rev=369992&view=rev
Log:
In VariableResolverImpl, remove direct dependency on Commons BeanUtils by
using the new helper methods for property access and conversion.  As a side
effect of this change, also change the unit tests that specified properties
of type java.sql.Date, since JSF does not supply a standard converter for this,
while BeanUtils did.

Modified:
    struts/shale/trunk/tiger/nbproject/private/private.xml
    
struts/shale/trunk/tiger/src/java/org/apache/shale/tiger/faces/VariableResolverImpl.java
    
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
    
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-4.xml
    
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-5.xml
    
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl4TestCase.java
    
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl5TestCase.java

Modified: struts/shale/trunk/tiger/nbproject/private/private.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/nbproject/private/private.xml?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- struts/shale/trunk/tiger/nbproject/private/private.xml (original)
+++ struts/shale/trunk/tiger/nbproject/private/private.xml Tue Jan 17 16:58:12 
2006
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-private xmlns="http://www.netbeans.org/ns/project-private/1";>
-    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
-</project-private>
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1";>
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
+</project-private>

Modified: 
struts/shale/trunk/tiger/src/java/org/apache/shale/tiger/faces/VariableResolverImpl.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/java/org/apache/shale/tiger/faces/VariableResolverImpl.java?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- 
struts/shale/trunk/tiger/src/java/org/apache/shale/tiger/faces/VariableResolverImpl.java
 (original)
+++ 
struts/shale/trunk/tiger/src/java/org/apache/shale/tiger/faces/VariableResolverImpl.java
 Tue Jan 17 16:58:12 2006
@@ -23,12 +23,9 @@
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
 import javax.faces.el.ValueBinding;
 import javax.faces.el.VariableResolver;
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.commons.beanutils.ConversionException;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.shale.tiger.config.FacesConfigConfig;
@@ -40,7 +37,9 @@
 import org.apache.shale.tiger.managed.config.ManagedPropertyConfig;
 import org.apache.shale.tiger.managed.config.MapEntriesConfig;
 import org.apache.shale.tiger.managed.config.MapEntryConfig;
+import org.apache.shale.util.ConverterHelper;
 import org.apache.shale.util.Messages;
+import org.apache.shale.util.PropertyHelper;
 
 /**
  * <p>Implementation of <code>VariableResolver</code> that delegates
@@ -101,6 +100,12 @@
 
 
     /**
+     * <p>Helper bean for performing conversions.</p>
+     */
+    private ConverterHelper convHelper = new ConverterHelper();
+
+
+    /**
      * <p>Log instance for this class.</p>
      */
     private transient Log log = null;
@@ -119,6 +124,13 @@
     private VariableResolver original = null;
 
 
+    /**
+     * <p>Helper bean for accessing properties.</p>
+     */
+    private PropertyHelper propHelper = new PropertyHelper();
+
+
+
     // ----------------------------------------------- VariableResolver Methods
 
 
@@ -193,60 +205,6 @@
 
 
     /**
-     * <p>Convert the specified value to the specified type.</p>
-     *
-     * @param context <code>FacesContext</code> for the current request
-     * @param type Type to which the value should be converted, or
-     *  <code>null</code> to leave it as a string
-     * @param value Value to be converted
-     *
-     * @exception EvaluationException if an evaluation error occurs
-     */
-    private Object convert(FacesContext context, Class type, String value) {
-
-        // If the type is not specified, return the value unchanged
-        if (type == null) {
-            return value;
-        }
-
-        // Handle primitive type conversions explicitly
-        try {
-            if ((type == Boolean.TYPE) || (type == Boolean.class)) {
-                return Boolean.valueOf(value);
-            } else if ((type == Byte.TYPE) || (type == Byte.class)) {
-                return Byte.valueOf(value);
-            } else if ((type == Double.TYPE) || (type == Double.class)) {
-                return Double.valueOf(value);
-            } else if ((type == Float.TYPE) || (type == Float.class)) {
-                return Float.valueOf(value);
-            } else if ((type == Integer.TYPE) || (type == Integer.class)) {
-                return Integer.valueOf(value);
-            } else if ((type == Long.TYPE) || (type == Long.class)) {
-                return Long.valueOf(value);
-            } else if ((type == Short.TYPE) || (type == Short.class)) {
-                return Short.valueOf(value);
-            }
-        } catch (NumberFormatException e) {
-            throw new EvaluationException(messages().
-                getMessage("convert.format",
-                           context.getViewRoot().getLocale(),
-                           new Object[] { value, type.getName() }), e);
-        }
-
-        // For all other cases, use the conversion utility
-        try {
-            return ConvertUtils.convert(value, type);
-        } catch (ConversionException e) {
-            throw new EvaluationException(messages().
-                getMessage("convert.exception",
-                           context.getViewRoot().getLocale(),
-                           new Object[] { value, type.getName() }), e);
-        }
-
-    }
-
-
-    /**
      * <p>Create, configure, and return a new instance based on the
      * specified managed bean, after storing it in the configured
      * scope (if any).</p>
@@ -390,7 +348,11 @@
                     
context.getApplication().createValueBinding(entry.getValue());
                 list.add(vb.getValue(context));
             } else {
-                list.add(convert(context, type, entry.getValue()));
+                if (type != null) {
+                    list.add(convHelper.asObject(context, type, 
entry.getValue()));
+                } else {
+                    list.add(entry.getValue());
+                }
             }
         }
 
@@ -455,7 +417,12 @@
 
         // Add a map key/value pair for each configuration element that is 
present
         for (MapEntryConfig entry : config.getEntries()) {
-            Object key = convert(context, keyClass, entry.getKey());
+            Object key = null;
+            if (keyClass != null) {
+                key = convHelper.asObject(context, keyClass, entry.getKey());
+            } else {
+                key = entry.getKey();
+            }
             if (entry.isNullValue()) {
                 map.put(key, null);
             } else if (entry.isExpression()) {
@@ -464,7 +431,11 @@
                     
context.getApplication().createValueBinding(entry.getValue());
                 map.put(key, vb.getValue(context));
             } else {
-                map.put(key, convert(context, valueClass, entry.getValue()));
+                if (valueClass != null) {
+                    map.put(key, convHelper.asObject(context, valueClass, 
entry.getValue()));
+                } else {
+                    map.put(key, entry.getValue());
+                }
             }
         }
 
@@ -509,8 +480,9 @@
             // specified instance, if it exists
             Object property = null;
             try {
-                property = PropertyUtils.getProperty(instance, mp.getName());
-            } catch (NoSuchMethodException e) {
+                property = propHelper.getValue(instance, mp.getName());
+//                property = PropertyUtils.getProperty(instance, mp.getName());
+            } catch (PropertyNotFoundException e) {
                 ; // Fall through to creating our own list
             } catch (Exception e) {
                 throw new EvaluationException(messages().
@@ -535,7 +507,8 @@
 
             // Store the value of the property
             try {
-                BeanUtils.setProperty(instance, mp.getName(), property);
+                propHelper.setValue(instance, mp.getName(), property);
+//                BeanUtils.setProperty(instance, mp.getName(), property);
             } catch (Exception e) {
                 throw new EvaluationException(messages().
                     getMessage("list.set",
@@ -556,8 +529,9 @@
             // specified instance, if it exists
             Object property = null;
             try {
-                property = PropertyUtils.getProperty(instance, mp.getName());
-            } catch (NoSuchMethodException e) {
+                property = propHelper.getValue(instance, mp.getName());
+//                property = PropertyUtils.getProperty(instance, mp.getName());
+            } catch (PropertyNotFoundException e) {
                 ; // Fall through to creating our own map
             } catch (Exception e) {
                 throw new EvaluationException(messages().
@@ -581,7 +555,8 @@
 
             // Store the value of the property
             try {
-                BeanUtils.setProperty(instance, mp.getName(), property);
+                propHelper.setValue(instance, mp.getName(), property);
+//                BeanUtils.setProperty(instance, mp.getName(), property);
             } catch (Exception e) {
                 throw new EvaluationException(messages().
                     getMessage("map.set",
@@ -615,7 +590,11 @@
 
         // Assign the acquired value to the specified bean property
         try {
-            BeanUtils.setProperty(instance, mp.getName(), value);
+            Class type = propHelper.getType(instance, mp.getName());
+            if ((value != null) && (value instanceof String)) {
+                value = convHelper.asObject(context, type, (String) value);
+            }
+            propHelper.setValue(instance, mp.getName(), value);
         } catch (Exception e) {
             throw new EvaluationException(messages().
                 getMessage("variable.evaluate",

Modified: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
 (original)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/FacesConfigParserTestCase.java
 Tue Jan 17 16:58:12 2006
@@ -106,9 +106,9 @@
         assertEquals(4, facesConfig.getManagedBeans().size());
 
         // Validate bean "explicitSqlDateList"
-        mb = facesConfig.getManagedBean("explicitSqlDateList");
+        mb = facesConfig.getManagedBean("explicitIntegerList");
         assertNotNull(mb);
-        assertEquals("explicitSqlDateList", mb.getName());
+        assertEquals("explicitIntegerList", mb.getName());
         assertEquals("none", mb.getScope());
         assertEquals("java.util.Vector", mb.getType());
         assertNotNull(mb.getListEntries());
@@ -116,18 +116,18 @@
         assertEquals(0, mb.getProperties().size());
 
         entries = mb.getListEntries();
-        assertEquals("java.sql.Date", entries.getValueType());
+        assertEquals("java.lang.Integer", entries.getValueType());
         assertEquals(4, entries.getEntries().size());
         entry = entries.getEntries().get(0);
         assertNotNull(entry);
         assertTrue(!entry.isExpression());
         assertTrue(!entry.isNullValue());
-        assertEquals("2006-01-02", entry.getValue());
+        assertEquals("123", entry.getValue());
         entry = entries.getEntries().get(1);
         assertNotNull(entry);
         assertTrue(!entry.isExpression());
         assertTrue(!entry.isNullValue());
-        assertEquals("2006-03-04", entry.getValue());
+        assertEquals("234", entry.getValue());
         entry = entries.getEntries().get(2);
         assertNotNull(entry);
         assertTrue(!entry.isExpression());
@@ -137,7 +137,7 @@
         assertNotNull(entry);
         assertTrue(!entry.isExpression());
         assertTrue(!entry.isNullValue());
-        assertEquals("2006-05-06", entry.getValue());
+        assertEquals("345", entry.getValue());
 
         // Validate bean "explicitStringList"
         mb = facesConfig.getManagedBean("explicitStringList");
@@ -272,9 +272,9 @@
         assertEquals(2, facesConfig.getManagedBeans().size());
 
         // Validate bean "stringDateMap"
-        mb = facesConfig.getManagedBean("stringDateMap");
+        mb = facesConfig.getManagedBean("stringIntegerMap");
         assertNotNull(mb);
-        assertEquals("stringDateMap", mb.getName());
+        assertEquals("stringIntegerMap", mb.getName());
         assertEquals("none", mb.getScope());
         assertEquals("java.util.TreeMap", mb.getType());
         assertNull(mb.getListEntries());
@@ -283,18 +283,18 @@
 
         entries = mb.getMapEntries();
         assertEquals("java.lang.String", entries.getKeyType());
-        assertEquals("java.sql.Date", entries.getValueType());
+        assertEquals("java.lang.Integer", entries.getValueType());
         assertEquals(4, entries.getEntries().size());
 
         entry = entries.getEntries().get(0);
         assertEquals("First", entry.getKey());
-        assertEquals("2006-01-02", entry.getValue());
+        assertEquals("123", entry.getValue());
         assertTrue(!entry.isExpression());
         assertTrue(!entry.isNullValue());
 
         entry = entries.getEntries().get(1);
         assertEquals("Second", entry.getKey());
-        assertEquals("2006-03-04", entry.getValue());
+        assertEquals("234", entry.getValue());
         assertTrue(!entry.isExpression());
         assertTrue(!entry.isNullValue());
 
@@ -306,7 +306,7 @@
 
         entry = entries.getEntries().get(3);
         assertEquals("Fourth", entry.getKey());
-        assertEquals("2006-05-06", entry.getValue());
+        assertEquals("345", entry.getValue());
         assertTrue(!entry.isExpression());
         assertTrue(!entry.isNullValue());
 

Modified: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-4.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-4.xml?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-4.xml
 (original)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-4.xml
 Tue Jan 17 16:58:12 2006
@@ -29,15 +29,15 @@
     <!-- Configure a variety of managed beans that are actually lists -->
 
     <managed-bean>
-        <managed-bean-name>explicitSqlDateList</managed-bean-name>
+        <managed-bean-name>explicitIntegerList</managed-bean-name>
         <managed-bean-class>java.util.Vector</managed-bean-class>
         <managed-bean-scope>none</managed-bean-scope>
         <list-entries>
-            <value-class>java.sql.Date</value-class>
-            <value>2006-01-02</value>
-            <value>2006-03-04</value>
+            <value-class>java.lang.Integer</value-class>
+            <value>123</value>
+            <value>234</value>
             <null-value/>
-            <value>2006-05-06</value>
+            <value>345</value>
         </list-entries>
     </managed-bean>
 

Modified: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-5.xml
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-5.xml?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-5.xml
 (original)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/config/test-config-5.xml
 Tue Jan 17 16:58:12 2006
@@ -29,19 +29,19 @@
     <!-- Configure a managed bean that is actually a map -->
 
     <managed-bean>
-        <managed-bean-name>stringDateMap</managed-bean-name>
+        <managed-bean-name>stringIntegerMap</managed-bean-name>
         <managed-bean-class>java.util.TreeMap</managed-bean-class>
         <managed-bean-scope>none</managed-bean-scope>
         <map-entries>
             <key-class>java.lang.String</key-class>
-            <value-class>java.sql.Date</value-class>
+            <value-class>java.lang.Integer</value-class>
             <map-entry>
                 <key>First</key>
-                <value>2006-01-02</value>
+                <value>123</value>
             </map-entry>
             <map-entry>
                 <key>Second</key>
-                <value>2006-03-04</value>
+                <value>234</value>
             </map-entry>
             <map-entry>
                 <key>Third</key>
@@ -49,7 +49,7 @@
             </map-entry>
             <map-entry>
                 <key>Fourth</key>
-                <value>2006-05-06</value>
+                <value>345</value>
             </map-entry>
         </map-entries>
     </managed-bean>

Modified: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl4TestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl4TestCase.java?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl4TestCase.java
 (original)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl4TestCase.java
 Tue Jan 17 16:58:12 2006
@@ -110,19 +110,19 @@
     // ------------------------------------------------------------ Test 
Methods
 
 
-    // Test creating bean "explicitSqlDateList"
-    public void testExplicitSqlDateList() {
+    // Test creating bean "explicitIntegerList"
+    public void testExplicitIntegerList() {
 
-        Object instance = resolver.resolveVariable(facesContext, 
"explicitSqlDateList");
+        Object instance = resolver.resolveVariable(facesContext, 
"explicitIntegerList");
         assertNotNull(instance);
         assertTrue(instance instanceof Vector);
         List list = (List) instance;
         assertEquals(4, list.size());
 
-        assertEquals(new Date(106, 0, 2), list.get(0));
-        assertEquals(new Date(106, 2, 4), list.get(1));
+        assertEquals(new Integer(123), list.get(0));
+        assertEquals(new Integer(234), list.get(1));
         assertNull(list.get(2));
-        assertEquals(new Date(106, 4, 6), list.get(3));
+        assertEquals(new Integer(345), list.get(3));
 
     }
 

Modified: 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl5TestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl5TestCase.java?rev=369992&r1=369991&r2=369992&view=diff
==============================================================================
--- 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl5TestCase.java
 (original)
+++ 
struts/shale/trunk/tiger/src/test/org/apache/shale/tiger/faces/VariableResolverImpl5TestCase.java
 Tue Jan 17 16:58:12 2006
@@ -111,19 +111,19 @@
     // ------------------------------------------------------------ Test 
Methods
 
 
-    // Test creating bean "stringDateMap"
-    public void testStringDateMap() {
+    // Test creating bean "stringIntegerMap"
+    public void testStringIntegerMap() {
 
-        Object instance = resolver.resolveVariable(facesContext, 
"stringDateMap");
+        Object instance = resolver.resolveVariable(facesContext, 
"stringIntegerMap");
         assertNotNull(instance);
         assertTrue(instance instanceof TreeMap);
         Map map = (Map) instance;
         assertEquals(4, map.size());
 
-        assertEquals(new Date(106, 0, 2), map.get("First"));
-        assertEquals(new Date(106, 2, 4), map.get("Second"));
+        assertEquals(new Integer(123), map.get("First"));
+        assertEquals(new Integer(234), map.get("Second"));
         assertNull(map.get("Third"));
-        assertEquals(new Date(106, 4, 6), map.get("Fourth"));
+        assertEquals(new Integer(345), map.get("Fourth"));
 
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to