Author: jcouteau Date: 2013-01-26 15:38:37 +0100 (Sat, 26 Jan 2013) New Revision: 1525 Url: http://nuiton.org/projects/wikitty/repository/revisions/1525 Log: fixes #2514 Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java 2012-12-29 13:22:20 UTC (rev 1524) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java 2013-01-26 14:38:37 UTC (rev 1525) @@ -24,12 +24,13 @@ */ package org.nuiton.wikitty.entities; +import org.nuiton.wikitty.WikittyException; +import org.nuiton.wikitty.WikittyUtil; + import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Collection; import java.util.Collections; -import org.nuiton.wikitty.WikittyException; -import org.nuiton.wikitty.WikittyUtil; /** * @@ -96,7 +97,9 @@ public void setWikitty(Wikitty wikitty) { if(wikitty != null) { for (WikittyExtension ext : getStaticExtensions()) { - wikitty.addExtension(ext); + if (!wikitty.getExtensions().contains(ext)){ + wikitty.addExtension(ext); + } } } this.wikitty = wikitty; Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2012-12-29 13:22:20 UTC (rev 1524) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2013-01-26 14:38:37 UTC (rev 1525) @@ -25,6 +25,15 @@ package org.nuiton.wikitty.entities; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.ObjectUtil; +import org.nuiton.util.VersionUtil; +import org.nuiton.wikitty.WikittyException; +import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.generator.WikittyTagValue; + import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.math.BigDecimal; @@ -43,18 +52,14 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.util.ObjectUtil; -import org.nuiton.util.VersionUtil; -import org.nuiton.wikitty.WikittyException; -import org.nuiton.wikitty.WikittyUtil; -import org.nuiton.wikitty.generator.WikittyTagValue; /** * Wikitty implementation. - * + * + * {@link #getDirty()} contains 2 types of info : + * <li>the name of a modified field (extension.field)</li> + * <li>an extension added or deleted (extension)</li> + * * @author poussin * @version $Revision$ * @@ -247,7 +252,7 @@ } catch (CloneNotSupportedException eee) { throw new WikittyException(String.format( "Can't copy field %s.%s", - ext.getName(), fieldName), eee); + extName, fieldName), eee); } } this.setField(extName, fieldName, value); @@ -367,8 +372,7 @@ protected void setFieldDirty(String ext, String fieldName, Object oldValue, Object newValue) { String key = ext + "." + fieldName; - fieldDirty.add(key); - version = WikittyUtil.incrementMinorRevision(version); + incrementVersion(key); getPropertyChangeSupport().firePropertyChange(key, oldValue, newValue); } @@ -400,6 +404,7 @@ } extensions.put(ext.name, ext); + incrementVersion(ext.name); } /** @@ -428,12 +433,14 @@ * @see Wikitty#addMetaExtension(WikittyExtension, String) */ @Override - public void addMetaExtension(WikittyExtension metaExtension, String extensionName) { + public void addMetaExtension(WikittyExtension metaExtension, + String extensionName) { if (hasExtension(extensionName)) { String metaExtensionFQName = WikittyUtil.getFQMetaExtensionName( metaExtension.getName(), extensionName); extensions.put(metaExtensionFQName, metaExtension); + incrementVersion(metaExtensionFQName); } else { throw new IllegalArgumentException("this wikitty doesn't have an extension named " + extensionName); } @@ -1008,7 +1015,7 @@ } /** - * @see org.nuiton.wikitty.Wikitty#addToField(String, Object) + * @see org.nuiton.wikitty.entities.Wikitty#addToField(String, Object) */ @Override public void addToField(String fqFieldName, Object value) { @@ -1292,4 +1299,10 @@ } } + protected void incrementVersion(String cause) { + //Indexation solr vérifie si un objet à changé seulement si fieldDirty est non vide + fieldDirty.add(cause); + version = WikittyUtil.incrementMinorRevision(version); + } + } Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java 2012-12-29 13:22:20 UTC (rev 1524) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java 2013-01-26 14:38:37 UTC (rev 1525) @@ -24,18 +24,6 @@ */ package org.nuiton.wikitty; -import java.beans.PropertyChangeListener; -import java.math.BigDecimal; -import java.text.ParseException; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -52,6 +40,18 @@ import org.nuiton.wikitty.entities.WikittyLabelImpl; import org.nuiton.wikitty.services.WikittyServiceInMemory; +import java.beans.PropertyChangeListener; +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + /** * Test on WikittyUtil class. * @@ -581,7 +581,7 @@ String wikittyId = label.getWikittyId(); - Wikitty labelWikitty = WikittyUtil.getWikitty(null,null,label); + Wikitty labelWikitty = WikittyUtil.getWikitty(label); Assert.assertEquals(wikittyId, labelWikitty.getWikittyId()); Assert.assertEquals(Collections.singleton("Test"),labelWikitty.getFieldAsObject(WikittyLabel.EXT_WIKITTYLABEL,WikittyLabel.FIELD_WIKITTYLABEL_LABELS)); @@ -652,7 +652,7 @@ source.addLabels("toto"); source.addLabels("titi"); - Wikitty labelWikitty = WikittyUtil.getWikitty(null, null, source); + Wikitty labelWikitty = WikittyUtil.getWikitty(source); Wikitty cloned = WikittyUtil.clone(labelWikitty, false); WikittyLabelImpl labelCloned = new WikittyLabelImpl(cloned); @@ -669,7 +669,7 @@ source.addLabels("toto"); source.addLabels("titi"); - Wikitty labelWikitty = WikittyUtil.getWikitty(null, null, source); + Wikitty labelWikitty = WikittyUtil.getWikitty(source); Wikitty cloned = WikittyUtil.clone(labelWikitty, true); WikittyLabelImpl labelCloned = new WikittyLabelImpl(cloned);