commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Niall Pemberton (JIRA)" <j...@apache.org>
Subject [jira] Commented: (BEANUTILS-341) BeanUtils.populate throws an exception (INoSuchMethodException -> nvocationTargetException) in case the bean is a nested class
Date Fri, 20 Mar 2009 21:17:50 GMT

    [ https://issues.apache.org/jira/browse/BEANUTILS-341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12685363#action_12685363
] 

Niall Pemberton commented on BEANUTILS-341:
-------------------------------------------

BeanUtils only deals with public classes - which your test bean isn't. So I don't believe
this is a BeanUtils bug

> BeanUtils.populate throws an exception (INoSuchMethodException -> nvocationTargetException)
 in case the bean is a nested class
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: BEANUTILS-341
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-341
>             Project: Commons BeanUtils
>          Issue Type: Bug
>          Components: Bean / Property Utils
>    Affects Versions: 1.8.0
>         Environment: jdk1.6
>            Reporter: Ivan.Huang
>
> BeanUtils.populate throws an exception (INoSuchMethodException -> nvocationTargetException)
in case the bean is a nested class:
> public class BeanUtilsTest extends TestCase {
> 	TestBean bean = null;
> 	Map<String, Object> params = null;
> 	@Override
> 	public void setUp() {
> 		bean = new TestBean();
> 		params = new HashMap<String, Object>();
> 	}
> 	
> 	public void testPopulate() {
> 		params.put("name", "Ivan");
> 		params.put("authentication", false);
> 		params.put("age", 24);
> 		try {
> 			BeanUtils.populate(bean, params);
> 		} catch (Exception e) {
> 			e.printStackTrace();
> 		}
> 		
> 		System.out.println(bean);
> 	}
> 	
> 	@Override
> 	public void tearDown() {
> 		this.bean = null;
> 		this.params = null;
> 	}
> }
> class TestBean {
> 	
> 	private String name;
> 	
> 	private int age;
> 	
> 	private boolean authenticated;
> 	
> 	public String getName() {
> 		return name;
> 	}
> 	
> 	public void setName(String name) {
> 		this.name = name;
> 	}
> 	
> 	public int getAge() {
> 		return age;
> 	}
> 	public void setAge(int age) {
> 		this.age = age;
> 	}
> 	public boolean isAuthenticated() {
> 		return authenticated;
> 	}
> 	
> 	public void setAuthenticated(boolean authenticated) {
> 		this.authenticated = authenticated;
> 	}
> 	
> 	@Override
> 	public String toString() {
> 		return ToStringBuilder.reflectionToString(this);
> 	}
> }
> java.lang.reflect.InvocationTargetException: Cannot set age
> 	at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1017)
> 	at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:830)
> 	at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:433)
> 	at com.alibaba.apache.BeanUtils.BeanUtilsTest.testPopulate(BeanUtilsTest.java:32)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at junit.framework.TestCase.runTest(TestCase.java:168)
> 	at junit.framework.TestCase.runBare(TestCase.java:134)
> 	at junit.framework.TestResult$1.protect(TestResult.java:110)
> 	at junit.framework.TestResult.runProtected(TestResult.java:128)
> 	at junit.framework.TestResult.run(TestResult.java:113)
> 	at junit.framework.TestCase.run(TestCase.java:124)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:232)
> 	at junit.framework.TestSuite.run(TestSuite.java:227)
> 	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: java.lang.NoSuchMethodException: Property 'age' has no setter method in class
'class com.alibaba.apache.BeanUtils.TestBean'
> 	at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2128)
> 	at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1948)
> 	at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:2054)
> 	at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1015)
> 	... 22 more
> cn.edu.ccnu.ivan.apache.BeanUtils.TestBean@17590db[name=<null>,age=0,authenticated=false]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message