[ 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]