[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-user
Subject:    [BeanUtils] Problem using BeanUtils.copyProperties() to Complex Java Bean
From:       "Lim Chee Kin" <email () lim ! cheekin ! name>
Date:       2003-12-23 6:42:48
[Download RAW message or body]

Dear Sir or Madam,

	I am new to the BeanUtils component, I am facing problem of 
copy properties from 1 complex bean to another complex bean by using 
BeanUtils.copyProperties(), Below is the java bean's code:

import java.util.ArrayList;
public class ComplexBean implements java.io.Serializable {
	SimpleBean simple;
	ArrayList col = new ArrayList();

	public ComplexBean() {
		super();
	}
	
	public void add(Object b) {
		col.add(b);
		
	}

	public ComplexBean[] getCol() {
		return (ComplexBean[])col.toArray(new ComplexBean
[col.size()]);
	}
	
	public ComplexBean getCol(int index) {
		return (ComplexBean)col.get(index);
	}

	public void setCol(int index, ComplexBean simple) {
		col.set(index, simple);
	}
	
	public SimpleBean getSimple() {
		return simple;
	}

	public void setCol(ComplexBean[] complexBeans) {
		for (int loop=0;loop < complexBeans.length; loop++)
			col.add(complexBeans[loop]);
	}

	public void setSimple(SimpleBean bean) {
		simple = bean;
	}

}


import java.sql.Date;

public final class SimpleBean implements java.io.Serializable  {
	private String name;
	private long value;
	private double price;
	private Date dob;
	public SimpleBean() {
		super();
	}

	public Date getDob() {
		return dob;
	}

	public String getName() {
		return name;
	}

	public double getPrice() {
		return price;
	}

	public long getValue() {
		return value;
	}

	public void setDob(Date date) {
		dob = date;
	}

	public void setName(String string) {
		name = string;
	}

	public void setPrice(double d) {
		price = d;
	}

	public void setValue(long l) {
		value = l;
	}
	
}
----------------------------------------------------------------------
-------------------
I use the following code to test it, 

		SimpleBean simple = new SimpleBean();
		simple.setDob(new java.sql.Date(new java.util.Date
().getTime())); 
		simple.setName("Simple Test");
		simple.setPrice(12.80);		
		simple.setValue(12134);
		
		ComplexBean complex = new ComplexBean();
		complex.setSimple(simple);
		ComplexBean complexEx = new ComplexBean();
		complexEx.setSimple(simple);
		complexEx.add(complex);
		
		Map complexMapEx = BeanUtils.describe(complexEx);
		ComplexBean dest_complex = new ComplexBean();
		BeanUtils.copyProperties(dest_complex, complexMapEx);

but BeanUtils.copyProperties throw IllegalArgumentException stack 
trace as following
java.lang.IllegalArgumentException: argument type mismatch
	at java.lang.reflect.Method.invoke(Native Method)
	at 
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty
(PropertyUtils.java:1789)
	at org.apache.commons.beanutils.BeanUtils.copyProperty
(BeanUtils.java:450)
	at org.apache.commons.beanutils.BeanUtils.copyProperties
(BeanUtils.java:248)
	at beanutils.BeanUtil.main(BeanUtil.java:90)

May I know how to solve his problem. Is there anything wrong in 
SimpleBean and ComplexBean?

Best Regards - CK Lim

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic