commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Yandell (JIRA)" <j...@apache.org>
Subject [jira] Updated: (BEANUTILS-201) [beanutils] Proposition for "controlled" copy of bean properties
Date Wed, 08 Nov 2006 01:38:54 GMT
     [ http://issues.apache.org/jira/browse/BEANUTILS-201?page=all ]

Henri Yandell updated BEANUTILS-201:
------------------------------------

      Bugzilla Id:   (was: 37987)
    Fix Version/s: LATER THAN 1.8.0

> [beanutils] Proposition for "controlled" copy of bean properties
> ----------------------------------------------------------------
>
>                 Key: BEANUTILS-201
>                 URL: http://issues.apache.org/jira/browse/BEANUTILS-201
>             Project: Commons BeanUtils
>          Issue Type: Improvement
>          Components: Bean / Property Utils
>         Environment: Operating System: All
> Platform: Other
>            Reporter: adelino
>            Priority: Minor
>             Fix For: LATER THAN 1.8.0
>
>
> IN SHORT
> This request is about adding to the BeanUtils class a new method:
> copyProperties(Object target, Object src, Class editable)
> ... that copies 'src' to 'target' as if they were declared as instances 
> of 'editable'. See sections below for more details.
> This request is to some extent related to the enhancement 32642.
> PROBLEM DESCRIPTION
> Today Commons BeanUtils offers the possibility to copy properties between
> 2 java beans:
> static void copyProperties(Object dest, Object orig)
>  
> As the instrospection does not 
> care about how the target variable was declared, calling such a method will
> copy more properties that one wants.
> To illustrate this point, let's consider the following types:
> interface EditablePriceableItem {
> 	public int getPrice();
> 	public void setPrice(int val);
> }
> class PurchaseItem implements EditablePriceableItem {
> 	//... attributes
> 	public String getPurchaseNr() { ... }
> 	public void setPurchaseNr(String nr) { ... }
> 	public int getPrice() { ... } ;
> 	public void setPrice(int val) { ... };
> }
> class Project implements EditablePriceableItem {
> 	//... attributes
> 	public String getDescription() { ... }
> 	public void setDescription(String desc) { ... }
> 	public int getPrice() { ... } ;
> 	public void setPrice(int val) { ... };
> }
> Somewhere in a class, we have:
> 	EditablePriceableItem priceableSrc;
> 	EditablePriceableItem priceableTarget;
> 	//(1)
> 	// ...
> 	// priceableSrc is set by some method
> 	// ...
> 	//
> 	//(2)
> 	// priceableTarget gets instanciated
> 	// ...
> 	//(3)
> 	//Now I want to copy Priceable properties (and only priceable 
> properties !)
> 	//from priceableSrc to priceableTarget
> 	BeanUtils.copyProperties(priceableTarget,priceableSrc);
> Although variables are declared as EditablePriceableItem, what gets copied in 
> (3)
> depends on the concrete type of priceableSrc and priceableTarget.
> a) When priceableSrc and priceableTarget are instances of PurchaseItem,
> 	price and purchaseNr are copied
> b) When priceableSrc and priceableTarget are instances of Project,
> 	price and description are copied
> c) When priceableSrc is an instance of PurchaseItem and priceableTarget
>     is an instance of Project (or the opposite) only price gets copied
> As a conclusion the behaviour in (3) is not uniform.
> PROPOSITION
> To control the scope of properties that are copied, it would be very useful
> to have a method such as:
> static void copyProperties(Object target, Object source, Class editableScope)
> where editableScope is an interface or class that declares the properties.
> Writing (3) as:
> 	BeanUtils.copyProperties(priceableTarget,priceableSrc,
> 	                         EditablePriceableItem.class);
> would provide a consistent behaviour.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


Mime
View raw message