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]