Return-Path: Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: (qmail 77443 invoked from network); 28 Dec 2009 05:50:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 28 Dec 2009 05:50:58 -0000 Received: (qmail 21001 invoked by uid 500); 28 Dec 2009 05:50:58 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 20768 invoked by uid 500); 28 Dec 2009 05:50:57 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 20758 invoked by uid 99); 28 Dec 2009 05:50:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Dec 2009 05:50:57 +0000 X-ASF-Spam-Status: No, hits=-10.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Dec 2009 05:50:49 +0000 Received: from brutus.apache.org (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 734FE234C045 for ; Sun, 27 Dec 2009 21:50:29 -0800 (PST) Message-ID: <1393617418.1261979429457.JavaMail.jira@brutus.apache.org> Date: Mon, 28 Dec 2009 05:50:29 +0000 (UTC) From: "Java Developer (JIRA)" To: issues@commons.apache.org Subject: [jira] Commented: (BEANUTILS-304) BeanDiff - encapsulate, apply, and merge bean differences In-Reply-To: <16060251.1202401448552.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/BEANUTILS-304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12794768#action_12794768 ] Java Developer commented on BEANUTILS-304: ------------------------------------------ I've attached a simple implementation of BeanDiff here: http://issues.apache.org/jira/browse/CONFIGURATION-394 Hope it helps. > BeanDiff - encapsulate, apply, and merge bean differences > --------------------------------------------------------- > > Key: BEANUTILS-304 > URL: https://issues.apache.org/jira/browse/BEANUTILS-304 > Project: Commons BeanUtils > Issue Type: New Feature > Components: Bean / Property Utils, Bean-Collections, ConvertUtils & Converters, DynaBean > Affects Versions: LATER THAN 1.8.3 > Reporter: Mark Lewis > Fix For: LATER THAN 1.8.3 > > Original Estimate: 240h > Remaining Estimate: 240h > > It would be great to have a way to compare two beans and capture the diff somehow. This is just my initial brainstorm on the idea: > - The BeanDiff class encapsulates differences between two beans -of the same type-, the source bean and the target bean. > - A BeanDiff instance represents what property assignments would be necessary to turn the target bean into the source bean. > - A BeanDiff can be applied to a target bean, performing the necessary property assignments to make its property values exactly match the source bean. > - Two BeanDiff instances can be merged into a single BeanDiff instance, allowing multiple source beans to be merged into one target bean. > - If a conflict would occur during a merge (from a property being assigned two different values), a BeanDiffConflictException is thrown. > - The BeanDiffConflictException contains an array of BeanDiffConflict objects. > - Each BeanDiffConflict instance represents a single property and the two conflicting values that were to be assigned. > - All these actions would work on DynaBeans as well. > - +Converters would be able to account for type differences in source and target bean properties.+ > An example of how this could be used is when dealing with ORM and optimistic locking. Knowing exactly which properties have been modified would allow concurrent modification of a bean (record) without fear of reasserting the original values and destroying someone else's changes. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.