Author: ymartel Date: 2014-02-14 11:15:55 +0100 (Fri, 14 Feb 2014) New Revision: 1584 Url: http://nuiton.org/projects/wikitty/repository/revisions/1584 Log: fixes #3083 : during bean copy, force wikittyVersion copy in last Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2014-02-07 12:03:00 UTC (rev 1583) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2014-02-14 10:15:55 UTC (rev 1584) @@ -1744,8 +1744,14 @@ PropertyDescriptor[] origDescriptors = bu.getPropertyUtils().getPropertyDescriptors(source); + PropertyDescriptor versionDescriptor = null; for (int i = 0; i < origDescriptors.length; i++) { String name = origDescriptors[i].getName(); + if ("wikittyVersion".equals(name)) { + versionDescriptor = origDescriptors[i]; + continue; + } + if (log.isDebugEnabled()) { log.debug("work on prop :" + name); } @@ -1757,8 +1763,8 @@ } if (bu.getPropertyUtils().isReadable(source, name) && bu.getPropertyUtils().isWriteable(dest, name)) { - if (log.isDebugEnabled()) { - log.debug("prop is copiable:" + name); + if (log.isInfoEnabled()) { + log.info("prop is copiable:" + name); } try { Object value = @@ -1769,6 +1775,17 @@ } } } + + //XXX ymartel 2014/02/14 : how to make it cleaner ? Must force the wikittyVersion be the last to set (to avoid all upgrade caused by fields modification) + if (versionDescriptor != null) { + String name = versionDescriptor.getName(); + try { + Object value = bu.getPropertyUtils().getSimpleProperty(source, name); + bu.copyProperty(dest, name, value); + } catch (NoSuchMethodException e) { + // Should not happen + } + } } static public byte[] crypt(String algo, String password, byte[] value) { Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java 2014-02-07 12:03:00 UTC (rev 1583) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java 2014-02-14 10:15:55 UTC (rev 1584) @@ -683,9 +683,9 @@ @Test public void testCopyBean() throws Exception { - WikittyLabel source = new WikittyLabelImpl(); - source.addLabels("toto"); - WikittyLabel dest = new WikittyLabelImpl(); + WikittyLabel source = new WikittyLabelImpl(); // version 0.1 (init) + source.addLabels("toto"); // changes : new version is 0.2 + WikittyLabel dest = new WikittyLabelImpl(); // version 0.1 (init) WikittyUtil.copyBean(source, dest);