You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by lc kin <fi...@yahoo.com> on 2003/12/22 05:49:32 UTC

[BeanUtils] Problem using BeanUtils.copyProperties() to Complex Java Bean

Dear Sir/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

__________________________________
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/

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