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.