Author: mrdon
Date: Sun Dec 11 21:52:17 2005
New Revision: 356164

URL: http://svn.apache.org/viewcvs?rev=356164&view=rev
Log:
Adding DynaBean support in Ognl

Added:
    struts/sandbox/trunk/ti/phase1/jars/legacy/
      - copied from r356010, struts/sandbox/trunk/ti/phase1/jars/compat/
    struts/sandbox/trunk/ti/phase1/jars/legacy/project.properties
      - copied unchanged from r356014, 
struts/sandbox/trunk/ti/phase1/jars/compat/project.properties
    struts/sandbox/trunk/ti/phase1/jars/legacy/project.xml
      - copied unchanged from r356014, 
struts/sandbox/trunk/ti/phase1/jars/compat/project.xml
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/
      - copied from r356014, struts/sandbox/trunk/ti/phase1/jars/compat/src/
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/
    
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/
    struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/
    
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestDynaBeanPropertyAccessor.java

Added: 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java?rev=356164&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
 (added)
+++ 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
 Sun Dec 11 21:52:17 2005
@@ -0,0 +1,55 @@
+/*
+ * $Id$
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed 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 org.apache.ti.legacy;
+
+import java.io.Serializable;
+import org.apache.commons.beanutils.DynaBean;
+import org.apache.commons.beanutils.DynaClass;
+import ognl.OgnlException;
+import ognl.PropertyAccessor;
+import java.util.Map;
+
+/**
+ * 
+ * @todo Finish documenting me!
+ */
+public class DynaBeanPropertyAccessor implements PropertyAccessor {
+
+    public Object getProperty(Map context, Object target, Object name) throws 
OgnlException {
+        
+        if (target instanceof DynaBean && name != null) {
+            DynaBean bean = (DynaBean)target;
+            DynaClass cls = bean.getDynaClass();
+            String key = name.toString();
+            if (cls.getDynaProperty(key) != null) {
+                return bean.get(key);
+            }
+        }
+        return null;
+    }    
+
+    public void setProperty(Map context, Object target, Object name, Object 
value) throws OgnlException {
+        
+        if (target instanceof DynaBean && name != null) {
+            DynaBean bean = (DynaBean)target;
+            String key = name.toString();
+            bean.set(key, value);
+        }
+    }    
+
+}

Added: 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestDynaBeanPropertyAccessor.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestDynaBeanPropertyAccessor.java?rev=356164&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestDynaBeanPropertyAccessor.java
 (added)
+++ 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestDynaBeanPropertyAccessor.java
 Sun Dec 11 21:52:17 2005
@@ -0,0 +1,134 @@
+package org.apache.ti.legacy;
+
+import junit.framework.*;
+import java.io.*;
+import java.util.*;
+import org.apache.commons.beanutils.*;
+
+import ognl.*;
+
+/**  Description of the Class */
+public class TestDynaBeanPropertyAccessor extends TestCase {
+
+    protected DynaBean bean = null;
+    
+    public TestDynaBeanPropertyAccessor(String name) throws Exception {
+        super(name);
+    }
+
+
+    public static void main(String args[]) {
+        junit.textui.TestRunner.run(TestDynaBeanPropertyAccessor.class);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+
+        // Instantiate a new DynaBean instance
+        DynaClass dynaClass = createDynaClass();
+        bean = dynaClass.newInstance();
+
+        // Initialize the DynaBean's property values (like TestBean)
+        bean.set("booleanProperty", new Boolean(true));
+        bean.set("booleanSecond", new Boolean(true));
+        bean.set("doubleProperty", new Double(321.0));
+        bean.set("floatProperty", new Float((float) 123.0));
+        int intArray[] = { 0, 10, 20, 30, 40 };
+        bean.set("intArray", intArray);
+        int intIndexed[] = { 0, 10, 20, 30, 40 };
+        bean.set("intIndexed", intIndexed);
+        bean.set("intProperty", new Integer(123));
+        List listIndexed = new ArrayList();
+        listIndexed.add("String 0");
+        listIndexed.add("String 1");
+        listIndexed.add("String 2");
+        listIndexed.add("String 3");
+        listIndexed.add("String 4");
+        bean.set("listIndexed", listIndexed);
+        bean.set("longProperty", new Long((long) 321));
+        HashMap mappedProperty = new HashMap();
+        mappedProperty.put("First Key", "First Value");
+        mappedProperty.put("Second Key", "Second Value");
+        bean.set("mappedProperty", mappedProperty);
+        HashMap mappedIntProperty = new HashMap();
+        mappedIntProperty.put("One", new Integer(1));
+        mappedIntProperty.put("Two", new Integer(2));
+        bean.set("mappedIntProperty", mappedIntProperty);
+        // Property "nullProperty" is not initialized, so it should return null
+        bean.set("shortProperty", new Short((short) 987));
+        String stringArray[] =
+                { "String 0", "String 1", "String 2", "String 3", "String 4" };
+        bean.set("stringArray", stringArray);
+        String stringIndexed[] =
+                { "String 0", "String 1", "String 2", "String 3", "String 4" };
+        bean.set("stringIndexed", stringIndexed);
+        bean.set("stringProperty", "This is a string");
+
+    }
+
+
+
+
+    public void testGetProperty() throws Exception {
+        
+        DynaBeanPropertyAccessor trans = new DynaBeanPropertyAccessor();
+        assertTrue("This is a string".equals(trans.getProperty(null, bean, 
"stringProperty"))); 
+        assertTrue(trans.getProperty(null, bean, "listIndexed") instanceof 
List); 
+        
+    }
+
+    public void testSetProperty() throws Exception {
+        
+        DynaBeanPropertyAccessor trans = new DynaBeanPropertyAccessor();
+        trans.setProperty(null, bean, "stringProperty", "bob");
+        assertTrue("bob".equals(trans.getProperty(null, bean, 
"stringProperty"))); 
+        
+    }
+
+    public void testOGNL() throws Exception {
+        
+        OgnlRuntime.setPropertyAccessor(DynaBean.class, new 
DynaBeanPropertyAccessor());
+
+        assertTrue("This is a string".equals(Ognl.getValue("stringProperty", 
bean)));
+
+    }
+
+
+    /**
+     * Create and return a <code>DynaClass</code> instance for our test
+     * <code>DynaBean</code>.
+     */
+    protected DynaClass createDynaClass() {
+
+        int intArray[] = new int[0];
+        String stringArray[] = new String[0];
+
+        DynaClass dynaClass = new BasicDynaClass
+                ("TestDynaClass", null,
+                        new DynaProperty[]{
+                            new DynaProperty("booleanProperty", Boolean.TYPE),
+                            new DynaProperty("booleanSecond", Boolean.TYPE),
+                            new DynaProperty("doubleProperty", Double.TYPE),
+                            new DynaProperty("floatProperty", Float.TYPE),
+                            new DynaProperty("intArray", intArray.getClass()),
+                            new DynaProperty("intIndexed", 
intArray.getClass()),
+                            new DynaProperty("intProperty", Integer.TYPE),
+                            new DynaProperty("listIndexed", List.class),
+                            new DynaProperty("longProperty", Long.TYPE),
+                            new DynaProperty("mappedProperty", Map.class),
+                            new DynaProperty("mappedIntProperty", Map.class),
+                            new DynaProperty("nullProperty", String.class),
+                            new DynaProperty("shortProperty", Short.TYPE),
+                            new DynaProperty("stringArray", 
stringArray.getClass()),
+                            new DynaProperty("stringIndexed", 
stringArray.getClass()),
+                            new DynaProperty("stringProperty", String.class),
+                        });
+        return (dynaClass);
+
+    }
+
+
+}
+



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

Reply via email to