Author: niallp
Date: Wed Jul 4 18:10:25 2007
New Revision: 553357
URL: http://svn.apache.org/viewvc?view=rev&rev=553357
Log:
Fix for BEANUTILS-61 - PropertyUtilsBean isReadable() and isWriteable() methods
do not work correctly for WrapDynaBean - thanks to Brian Ewins
Added:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java
(with props)
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java
(with props)
Modified:
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java
Modified:
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java?view=diff&rev=553357&r1=553356&r2=553357
==============================================================================
---
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
(original)
+++
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
Wed Jul 4 18:10:25 2007
@@ -253,7 +253,10 @@
((DynaBean) orig).getDynaClass().getDynaProperties();
for (int i = 0; i < origDescriptors.length; i++) {
String name = origDescriptors[i].getName();
- if (getPropertyUtils().isWriteable(dest, name)) {
+ // Need to check isReadable() for WrapDynaBean
+ // (see Jira issue# BEANUTILS-61)
+ if (getPropertyUtils().isReadable(orig, name) &&
+ getPropertyUtils().isWriteable(dest, name)) {
Object value = ((DynaBean) orig).get(name);
copyProperty(dest, name, value);
}
Modified:
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java?view=diff&rev=553357&r1=553356&r2=553357
==============================================================================
---
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java
(original)
+++
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java
Wed Jul 4 18:10:25 2007
@@ -241,12 +241,9 @@
((DynaBean) orig).getDynaClass().getDynaProperties();
for (int i = 0; i < origDescriptors.length; i++) {
String name = origDescriptors[i].getName();
- if (dest instanceof DynaBean) {
- if (isWriteable(dest, name)) {
- Object value = ((DynaBean) orig).get(name);
- ((DynaBean) dest).set(name, value);
- }
- } else /* if (dest is a standard JavaBean) */ {
+ // Need to check isReadable() for WrapDynaBean
+ // (see Jira issue# BEANUTILS-61)
+ if (isReadable(orig, name)) {
if (isWriteable(dest, name)) {
Object value = ((DynaBean) orig).get(name);
setSimpleProperty(dest, name, value);
@@ -1333,6 +1330,12 @@
bean.getClass() + "'");
}
+ // Treat WrapDynaBean as special case - may be a write-only property
+ // (see Jira issue# BEANUTILS-61)
+ if (bean instanceof WrapDynaBean) {
+ bean = ((WrapDynaBean)bean).getInstance();
+ }
+
// Return the requested result
if (bean instanceof DynaBean) {
// All DynaBean properties are readable
@@ -1390,6 +1393,12 @@
if (name == null) {
throw new IllegalArgumentException("No name specified for bean
class '" +
bean.getClass() + "'");
+ }
+
+ // Treat WrapDynaBean as special case - may be a read-only property
+ // (see Jira issue# BEANUTILS-61)
+ if (bean instanceof WrapDynaBean) {
+ bean = ((WrapDynaBean)bean).getInstance();
}
// Return the requested result
Added:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java?view=auto&rev=553357
==============================================================================
---
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java
(added)
+++
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java
Wed Jul 4 18:10:25 2007
@@ -0,0 +1,466 @@
+/*
+ * 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 org.apache.commons.beanutils.bugs;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.beanutils.WrapDynaBean;
+import org.apache.commons.beanutils.bugs.other.Jira61BeanFactory;
+import org.apache.commons.beanutils.bugs.other.Jira61BeanFactory.TestBean;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Test case for Jira issue# BEANUTILS-61.
+ * <p />
+ * See https://issues.apache.org/jira/browse/BEANUTILS-61
+ * <p />
+ *
+ * [EMAIL PROTECTED] WrapDynaBean} is a secial case for the PropertyUtils's
+ * isReadable() and isWriteable() methods - since the bean being
+ * wrapped may have read-only or write-only properties (unlike
+ * regular DynaBeans.
+ *
+ * @version $Revision$ $Date$
+ */
+public class Jira61TestCase extends TestCase {
+
+ private Log log = LogFactory.getLog(Jira61TestCase.class);
+ private Jira61BeanFactory.TestBean testBean;
+ private WrapDynaBean wrapDynaBean;
+
+ /**
+ * Create a test case with the specified name.
+ *
+ * @param name The name of the test
+ */
+ public Jira61TestCase(String name) {
+ super(name);
+ }
+
+ /**
+ * Run the Test.
+ *
+ * @param args Arguments
+ */
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+ /**
+ * Create a test suite for this test.
+ *
+ * @return a test suite
+ */
+ public static Test suite() {
+ return (new TestSuite(Jira61TestCase.class));
+ }
+
+ /**
+ * Set up.
+ *
+ * @throws java.lang.Exception
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+ testBean = Jira61BeanFactory.createBean();
+ PropertyUtils.getPropertyDescriptor(testBean, "mappedReadOnly");
+ PropertyUtils.getPropertyDescriptor(testBean, "mappedWriteOnly");
+ wrapDynaBean = new WrapDynaBean(testBean);
+ }
+
+ /**
+ * Tear Down.
+ *
+ * @throws java.lang.Exception
+ */
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#isReadable(Object, String)}
+ * for simple properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_isReadable() {
+ boolean result = false;
+
+ try {
+ result = PropertyUtils.isReadable(wrapDynaBean, "simpleReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleReadOnly Threw exception: " + t);
+ }
+ assertTrue("PropertyUtils.isReadable(bean, \"simpleReadOnly\")
returned " + result, result);
+
+ try {
+ result = PropertyUtils.isReadable(wrapDynaBean, "simpleWriteOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleWriteOnly Threw exception: " + t);
+ }
+ assertFalse("PropertyUtils.isReadable(bean, \"simpleWriteOnly\")
returned " + result, result);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#isWriteable(Object, String)}
+ * for simple properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_isWriteable() {
+ boolean result = false;
+
+ try {
+ result = PropertyUtils.isWriteable(wrapDynaBean, "simpleReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleReadOnly Threw exception: " + t);
+ }
+ assertFalse("PropertyUtils.isWriteable(bean, \"simpleReadOnly\")
returned " + result, result);
+
+ try {
+ result = PropertyUtils.isWriteable(wrapDynaBean,
"simpleWriteOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleWriteOnly Threw exception: " + t);
+ }
+ assertTrue("PropertyUtils.isWriteable(bean, \"simpleWriteOnly\")
returned " + result, result);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#isReadable(Object, String)}
+ * for indexed properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_isReadable_Indexed() {
+ boolean result = false;
+
+ try {
+ result = PropertyUtils.isReadable(wrapDynaBean, "indexedReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedReadOnly Threw exception: " + t);
+ }
+ assertTrue("PropertyUtils.isReadable(bean, \"indexedReadOnly\")
returned " + result, result);
+
+ try {
+ result = PropertyUtils.isReadable(wrapDynaBean,
"indexedWriteOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedWriteOnly Threw exception: " + t);
+ }
+ assertFalse("PropertyUtils.isReadable(bean, \"indexedWriteOnly\")
returned " + result, result);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#isReadable(Object, String)}
+ * for mapped properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_isReadable_Mapped() {
+ boolean result = false;
+
+ try {
+ result = PropertyUtils.isReadable(wrapDynaBean, "mappedReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedReadOnly Threw exception: " + t);
+ }
+ assertTrue("PropertyUtils.isReadable(bean, \"mappedReadOnly\")
returned " + result, result);
+
+ try {
+ result = PropertyUtils.isReadable(wrapDynaBean, "mappedWriteOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedWriteOnly Threw exception: " + t);
+ }
+ assertFalse("PropertyUtils.isReadable(bean, \"mappedWriteOnly\")
returned " + result, result);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#isWriteable(Object, String)}
+ * for indexed properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_isWriteable_Indexed() {
+ boolean result = false;
+
+ try {
+ result = PropertyUtils.isWriteable(wrapDynaBean,
"indexedReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedReadOnly Threw exception: " + t);
+ }
+ assertFalse("PropertyUtils.isWriteable(bean, \"indexedReadOnly\")
returned " + result, result);
+
+ try {
+ result = PropertyUtils.isWriteable(wrapDynaBean,
"indexedWriteOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedWriteOnly Threw exception: " + t);
+ }
+ assertTrue("PropertyUtils.isWriteable(bean, \"indexedWriteOnly\")
returned " + result, result);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#isWriteable(Object, String)}
+ * for mapped properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_isWriteable_Mapped() {
+ boolean result = false;
+
+ try {
+ result = PropertyUtils.isWriteable(wrapDynaBean, "mappedReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedReadOnly Threw exception: " + t);
+ }
+ assertFalse("PropertyUtils.isWriteable(bean, \"mappedReadOnly\")
returned " + result, result);
+
+ try {
+ result = PropertyUtils.isWriteable(wrapDynaBean,
"mappedWriteOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedWriteOnly Threw exception: " + t);
+ }
+ assertTrue("PropertyUtils.isWriteable(bean, \"mappedWriteOnly\")
returned " + result, result);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#getProperty(Object, String)}
+ * for simple properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_getProperty() {
+ boolean threwIllegalArgumentException = false;
+ Object result = null;
+ try {
+ result = PropertyUtils.getProperty(wrapDynaBean, "simpleReadOnly");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleWriteOnly Threw exception: " + t);
+ }
+ assertEquals("simpleReadOnly", testBean.getSimpleReadOnly(), result);
+
+ try {
+ result = PropertyUtils.getProperty(wrapDynaBean,
"simpleWriteOnly");
+ } catch (IllegalArgumentException ex) {
+ threwIllegalArgumentException = true; // expected result
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleWriteOnly Threw exception: " + t);
+ }
+ assertTrue("Expected IllegalArgumentException but returned '" + result
+ "'", threwIllegalArgumentException);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#setProperty(Object, String,
Object)}
+ * for simple properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_setProperty() {
+ boolean threwIllegalArgumentException = false;
+ try {
+ PropertyUtils.setProperty(wrapDynaBean, "simpleReadOnly",
"READONLY-SIMPLE-BAR");
+ } catch (IllegalArgumentException ex) {
+ threwIllegalArgumentException = true; // expected result
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleReadOnly Threw exception: " + t);
+ }
+ assertTrue("Expected IllegalArgumentException",
threwIllegalArgumentException);
+
+ try {
+ PropertyUtils.setProperty(wrapDynaBean, "simpleWriteOnly",
"SIMPLE-BAR");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("simpleWriteOnly Threw exception: " + t);
+ }
+ assertEquals("simpleWriteOnly", testBean.getSimpleReadOnly(),
"SIMPLE-BAR");
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#getProperty(Object, String)}
+ * for indexed properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_getProperty_Indexed() {
+ boolean threwIllegalArgumentException = false;
+ Object result = null;
+ try {
+ result = PropertyUtils.getProperty(wrapDynaBean,
"indexedReadOnly[0]");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedReadOnly Threw exception: " + t);
+ }
+ assertEquals("indexedReadOnly", testBean.getIndexedReadOnly(0),
result);
+
+ try {
+ result = PropertyUtils.getProperty(wrapDynaBean,
"indexedWriteOnly[0]");
+ } catch (IllegalArgumentException ex) {
+ threwIllegalArgumentException = true; // expected result
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedWriteOnly Threw exception: " + t);
+ }
+ assertTrue("Expected IllegalArgumentException but returned '" + result
+ "'", threwIllegalArgumentException);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#setProperty(Object, String,
Object)}
+ * for indexed properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_setProperty_Indexed() {
+ boolean threwIllegalArgumentException = false;
+ try {
+ PropertyUtils.setProperty(wrapDynaBean, "indexedReadOnly[0]",
"READONLY-INDEXED-BAR");
+ } catch (IllegalArgumentException ex) {
+ threwIllegalArgumentException = true; // expected result
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedReadOnly Threw exception: " + t);
+ }
+ assertTrue("Expected IllegalArgumentException",
threwIllegalArgumentException);
+
+ try {
+ PropertyUtils.setProperty(wrapDynaBean, "indexedWriteOnly[0]",
"INDEXED-BAR");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("indexedWriteOnly Threw exception: " + t);
+ }
+ assertEquals("indexedWriteOnly", testBean.getIndexedReadOnly(0),
"INDEXED-BAR");
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#getProperty(Object, String)}
+ * for mapped properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_getProperty_Mapped() {
+ boolean threwIllegalArgumentException = false;
+ Object result = null;
+ try {
+ result = PropertyUtils.getProperty(wrapDynaBean,
"mappedReadOnly(foo-key)");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedReadOnly Threw exception: " + t);
+ }
+ assertEquals("mappedReadOnly", testBean.getMappedReadOnly("foo-key"),
result);
+
+ try {
+ result = PropertyUtils.getProperty(wrapDynaBean,
"mappedWriteOnly(foo-key)");
+ } catch (IllegalArgumentException ex) {
+ threwIllegalArgumentException = true; // expected result
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedWriteOnly Threw exception: " + t);
+ }
+ assertTrue("Expected IllegalArgumentException but returned '" + result
+ "'", threwIllegalArgumentException);
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#setProperty(Object, String,
Object)}
+ * for mapped properties.
+ */
+ public void testIssue_BEANUTILS_61_PropertyUtils_setProperty_Mapped() {
+ boolean threwIllegalArgumentException = false;
+ try {
+ PropertyUtils.setProperty(wrapDynaBean, "mappedReadOnly(foo-key)",
"READONLY-MAPPED-BAR");
+ } catch (IllegalArgumentException ex) {
+ threwIllegalArgumentException = true; // expected result
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedReadOnly Threw exception: " + t);
+ }
+ assertTrue("Expected IllegalArgumentException",
threwIllegalArgumentException);
+
+ try {
+ PropertyUtils.setProperty(wrapDynaBean,
"mappedWriteOnly(foo-key)", "MAPPED-BAR");
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("mappedWriteOnly Threw exception: " + t);
+ }
+ assertEquals("mappedWriteOnly", testBean.getMappedReadOnly("foo-key"),
"MAPPED-BAR");
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#copyProperties(Object, Object)}
+ * to a read-only WrapDynaBean property.
+ */
+ public void
testIssue_BEANUTILS_61_PropertyUtils_copyProperties_to_WrapDynaBean() {
+ String value = "copied simpleReadOnly";
+ Map source = new HashMap();
+ source.put("simpleReadOnly", value);
+ try {
+ PropertyUtils.copyProperties(wrapDynaBean, source);
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("copyProperties Threw exception: " + t);
+ }
+ assertFalse("Target value='" + value + "'",
value.equals(testBean.getSimpleReadOnly()));
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] PropertyUtils#copyProperties(Object, Object)}
+ * to a read-only WrapDynaBean property.
+ */
+ public void
testIssue_BEANUTILS_61_PropertyUtils_copyProperties_from_WrapDynaBean() {
+ String value = "ORIG TARGET VALUE";
+ TestBean targetBean = Jira61BeanFactory.createBean();
+ targetBean.setSimpleWriteOnly(value);
+ try {
+ PropertyUtils.copyProperties(targetBean, wrapDynaBean);
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("copyProperties Threw exception: " + t);
+ }
+ assertTrue("Target value='" + targetBean.getSimpleReadOnly() + "'",
value.equals(targetBean.getSimpleReadOnly()));
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] BeanUtils#copyProperties(Object, Object)}
+ * to a read-only WrapDynaBean property.
+ */
+ public void
testIssue_BEANUTILS_61_BeanUtils_copyProperties_to_WrapDynaBean() {
+ String value = "copied simpleReadOnly";
+ Map source = new HashMap();
+ source.put("simpleReadOnly", value);
+ try {
+ BeanUtils.copyProperties(wrapDynaBean, source);
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("copyProperties Threw exception: " + t);
+ }
+ assertFalse("Target value='" + value + "'",
value.equals(testBean.getSimpleReadOnly()));
+ }
+
+ /**
+ * Test [EMAIL PROTECTED] BeanUtils#copyProperties(Object, Object)}
+ * to a read-only WrapDynaBean property.
+ */
+ public void
testIssue_BEANUTILS_61_BeanUtils_copyProperties_from_WrapDynaBean() {
+ String value = "ORIG TARGET VALUE";
+ TestBean targetBean = Jira61BeanFactory.createBean();
+ targetBean.setSimpleWriteOnly(value);
+ try {
+ BeanUtils.copyProperties(targetBean, wrapDynaBean);
+ } catch (Throwable t) {
+ log.error("ERROR " + t, t);
+ fail("copyProperties Threw exception: " + t);
+ }
+ assertTrue("Target value='" + targetBean.getSimpleReadOnly() + "'",
value.equals(targetBean.getSimpleReadOnly()));
+ }
+}
Propchange:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira61TestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java?view=auto&rev=553357
==============================================================================
---
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java
(added)
+++
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java
Wed Jul 4 18:10:25 2007
@@ -0,0 +1,115 @@
+/*
+ * 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 org.apache.commons.beanutils.bugs.other;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.beanutils.bugs.Jira61TestCase;
+
+/**
+ * Factory which creates beans for [EMAIL PROTECTED] Jira61TestCase}.
+ *
+ * @version $Revision$ $Date$
+ */
+public class Jira61BeanFactory {
+
+ /**
+ * Factory method which creates a new [EMAIL PROTECTED] TestBean}.
+ *
+ * @return a new [EMAIL PROTECTED] TestBean}.
+ */
+ public static TestBean createBean() {
+ return new TestBean();
+ }
+
+ /**
+ * Test Bean
+ */
+ public static class TestBean {
+
+ private String[] indexed = new String[] {"one", "two", "three"};
+ private String simple = "FOO";
+ private Map mapped = new HashMap();
+
+ /** Default Constructor */
+ public TestBean() {
+ mapped.put("foo-key", "foo-value");
+ mapped.put("bar-key", "bar-value");
+ }
+
+ /**
+ * Return simpleReadOnly
+ *
+ * @return the simple value
+ */
+ public String getSimpleReadOnly() {
+ return simple;
+ }
+
+ /**
+ * Set simpleWriteOnly
+ *
+ * @param simple simple value
+ */
+ public void setSimpleWriteOnly(String simple) {
+ this.simple = simple;
+ }
+
+ /**
+ * Return indexed property.
+ *
+ * @param index The index
+ * @return The indexed value
+ */
+ public String getIndexedReadOnly(int index) {
+ return indexed[index];
+ }
+
+ /**
+ * Set indexed property.
+ *
+ * @param index The index
+ * @param value The indexed value
+ */
+ public void setIndexedWriteOnly(int index, String value) {
+ this.indexed[index] = value;
+ }
+
+ /**
+ * Return mapped property.
+ *
+ * @param key The mapped key
+ * @return The mapped value
+ */
+ public String getMappedReadOnly(String key) {
+ return (String)mapped.get(key);
+ }
+
+ /**
+ * Set mapped property.
+ *
+ * @param key The mapped key
+ * @param value The mapped value
+ */
+ public void setMappedWriteOnly(String key, String value) {
+ mapped.put(key, value);
+ }
+
+ }
+
+}
Propchange:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/other/Jira61BeanFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]