commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Cristian Kalkhoff (JIRA)" <j...@apache.org>
Subject [jira] Created: (BEANUTILS-332) Getter-/Setter-Detection does not work on inner default visible level classes
Date Tue, 25 Nov 2008 17:15:44 GMT
Getter-/Setter-Detection does not work on inner default visible level classes
-----------------------------------------------------------------------------

                 Key: BEANUTILS-332
                 URL: https://issues.apache.org/jira/browse/BEANUTILS-332
             Project: Commons BeanUtils
          Issue Type: Bug
          Components: Bean / Property Utils
    Affects Versions: 1.8.0
         Environment: Linux, Java 1.5
            Reporter: Cristian Kalkhoff
             Fix For: 1.8.0


There seem to be a problem for the BeanUtils copyProperties method, if origin oder destinationĀ“s
class is only default visible.

I stepped over that when I wrote a unit test, that includes two bean classes with equal properties.
I declared them static but not public by accident and wondered why it didnĀ“t worked. After
some debugging I found it to fail while checking for readable source and writeable target
properties.

See this code sample - Putting public in front of the inner classes static class let it work
again:

import junit.framework.TestCase;

public class BeanUtilsTest extends TestCase {

    public void testCopyPropertiesObjectObject() {

	SourceBean source = new SourceBean();
	FullTargetBean fullTarget = new FullTargetBean();
	BeanUtils.copyProperties(fullTarget, source);
	assertEquals("My World!", fullTarget.getName()); // Fails since it is still "Hello World!"
    }

    static class SourceBean {

	private long id = 10L;

	private String name = "My World!";

	private Boolean fullMoon = true;

	public long getId() {
	    return id;
	}

	public void setId(long id) {
	    this.id = id;
	}

	public String getName() {
	    return name;
	}

	public void setName(String name) {
	    this.name = name;
	}

	public Boolean getFullMoon() {
	    return fullMoon;
	}

	public void setFullMoon(Boolean fullMoon) {
	    this.fullMoon = fullMoon;
	}

    }

    static class FullTargetBean {
	private long id = 16L;

	private String name = "Hello World!";

	private Boolean fullMoon = false;

	public long getId() {
	    return id;
	}

	public void setId(long id) {
	    this.id = id;
	}

	public String getName() {
	    return name;
	}

	public void setName(String name) {
	    this.name = name;
	}

	public Boolean isFullMoon() {
	    return fullMoon;
	}

	public void setFullMoon(Boolean fullMoon) {
	    this.fullMoon = fullMoon;
	}
    }
}






-- 
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