Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 26369 invoked from network); 21 Dec 2005 11:22:05 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 21 Dec 2005 11:22:05 -0000 Received: (qmail 30034 invoked by uid 500); 21 Dec 2005 11:21:59 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 29965 invoked by uid 500); 21 Dec 2005 11:21:59 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 29953 invoked by uid 99); 21 Dec 2005 11:21:58 -0000 X-ASF-Spam-Status: No, hits=0.6 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [192.87.106.226] (HELO ajax.apache.org) (192.87.106.226) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Dec 2005 03:21:58 -0800 Received: by ajax.apache.org (Postfix, from userid 99) id 9E7B6DE; Wed, 21 Dec 2005 12:21:37 +0100 (CET) From: bugzilla@apache.org To: commons-dev@jakarta.apache.org Subject: DO NOT REPLY [Bug 37987] New: - proposition for "controlled" copy of bean properties Message-ID: X-Bugzilla-Reason: AssignedTo Date: Wed, 21 Dec 2005 12:21:37 +0100 (CET) X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG� RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT . ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND� INSERTED IN THE BUG DATABASE. http://issues.apache.org/bugzilla/show_bug.cgi?id=37987 Summary: proposition for "controlled" copy of bean properties Product: Commons Version: unspecified Platform: Other OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: Bean Utilities AssignedTo: commons-dev@jakarta.apache.org ReportedBy: adelino.rodrigues@emea.eu.int 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. -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org