You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Andrew Brampton (JIRA)" <ji...@apache.org> on 2014/01/23 01:50:21 UTC

[jira] [Commented] (BEANUTILS-332) Getter-/Setter-Detection does not work on inner default visible level classes

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

Andrew Brampton commented on BEANUTILS-332:
-------------------------------------------

I know this is a very old (4+ years) ticket, but I just hit this problem, and I wanted to understand why "BeanUtils works on public classes & methods. This isn't going to changed". Is there an alternative I can use?

thanks

> 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: Christian Kalkhoff
>
> 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 was sent by Atlassian JIRA
(v6.1.5#6160)