This is an automated email from the git hooks/post-receive script. New commit to branch feature/3484 in repository topia. See http://git.nuiton.org/topia.git commit 02cd977e8c2bcd0c1bf73cbc8e41b45ccdf1b0d6 Author: Arnaud Thimel <thimel@codelutin.com> Date: Thu Sep 4 16:20:08 2014 +0200 refs #3484 ListenableEntity added to the generated interface only if necessary --- src/site/rst/tutos/migrate_to_3.0.rst | 25 ++++++++++++++++++++++ ...ListenableEntity.java => ListenableEntity.java} | 2 +- .../topia/persistence/TopiaEntityEnumProvider.java | 2 ++ .../persistence/internal/AbstractTopiaEntity.java | 23 +++++--------------- .../nuiton/topia/templates/EntityTransformer.java | 11 +++++----- .../org/nuiton/topia/templates/TopiaTagValues.java | 6 ++++++ 6 files changed, 45 insertions(+), 24 deletions(-) diff --git a/src/site/rst/tutos/migrate_to_3.0.rst b/src/site/rst/tutos/migrate_to_3.0.rst index 5311cdb..4183f44 100644 --- a/src/site/rst/tutos/migrate_to_3.0.rst +++ b/src/site/rst/tutos/migrate_to_3.0.rst @@ -77,6 +77,25 @@ soient générés, il faut ajouter à votre fichier de properties la tag-value s model.tagValue.generatePropertyChangeSupport=true +Au même titre, les méthodes permettant d'ajouter/supprimer des listener sur les PropertyChangeSupport ne sont plus sur +le contrat TopiaEntity, mais sur le contrat ListenableEntity. Si vous utilisiez ces méthodes sur votre entité métier, +pas de changement. En revanche si vous utilisiez ces méthodes sur TopiaEntity, vous devez maintenant caster l'entité. + +:: + + // Topia 2.x + TopiaEntity anEntity = ...; + anEntity.addPropertyChangeListener(listener); + + // Topia 3 + TopiaEntity anEntity = ...; + if (anEntity instanceof ListenableEntity) { + ((ListenableEntity)anEntity).addPropertyChangeListener(listener); + } + +D'une manière générale, si toutes vos entités sont des ListenableEntity, nous vous encourageons à utiliser ce contrat à +la place de TopiaEntity. + Refonte des indexed/ordered =========================== @@ -387,6 +406,12 @@ Liste des classes d'implémentation (ou des contrats) +TopiaPersistenceHelper renommé +------------------------------ + +Le contrat TopiaPersistenceHelper est renommé en TopiaEntityEnumProvider. À noter que le MyModelTopiaApplicationContext +implémente ce contrat. + .. _le guide dédié: ./user/ordered_vs_indexed_migration.html diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaListenableEntity.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/ListenableEntity.java similarity index 99% rename from topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaListenableEntity.java rename to topia-persistence/src/main/java/org/nuiton/topia/persistence/ListenableEntity.java index 1852e8a..b6c2627 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaListenableEntity.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/ListenableEntity.java @@ -6,7 +6,7 @@ import java.beans.VetoableChangeListener; /** * @author Arnaud Thimel (Code Lutin) */ -public interface TopiaListenableEntity extends TopiaEntity { +public interface ListenableEntity { //------------------------------------------------------------------------// //-- PropertyListener (read) methods -------------------------------------// diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityEnumProvider.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityEnumProvider.java index f9f0ea1..9f73520 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityEnumProvider.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityEnumProvider.java @@ -26,6 +26,8 @@ package org.nuiton.topia.persistence; /** * Object which helps to wrap some static generated code (entityEnum). + * <p/> + * This contract used to be named TopiaPersistenceHelper. * * @author Tony Chemit - chemit@codelutin.com * @since 2.6.12 diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaEntity.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaEntity.java index 0354a39..c79a53f 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaEntity.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaEntity.java @@ -26,7 +26,7 @@ package org.nuiton.topia.persistence.internal; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityContextable; -import org.nuiton.topia.persistence.TopiaListenableEntity; +import org.nuiton.topia.persistence.ListenableEntity; import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; import java.beans.PropertyChangeListener; @@ -40,11 +40,14 @@ import com.google.common.base.Objects; /** * Base class of each entity. It contains the common attributes and a part of the entities event support. + * <p/> + * This class does not realize {@link org.nuiton.topia.persistence.ListenableEntity} but it implements its methods to + * lighten base implementation. * * @author poussin <poussin@codelutin.com> * @author Arnaud Thimel (Code Lutin) */ -public abstract class AbstractTopiaEntity implements TopiaListenableEntity, TopiaEntity { +public abstract class AbstractTopiaEntity implements TopiaEntity { private static final long serialVersionUID = -7458577454878852241L; @@ -292,90 +295,74 @@ public abstract class AbstractTopiaEntity implements TopiaListenableEntity, Topi } } - @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { getWritePropertyChangeSupport(true).addPropertyChangeListener(propertyName, listener); } - @Override public void addPropertyChangeListener(PropertyChangeListener listener) { getWritePropertyChangeSupport(true).addPropertyChangeListener(listener); } - @Override public void addVetoableChangeListener(String propertyName, VetoableChangeListener vetoable) { getWriteVetoableChangeSupport(true).addVetoableChangeListener(propertyName, vetoable); } - @Override public void addVetoableChangeListener(VetoableChangeListener vetoable) { getWriteVetoableChangeSupport(true).addVetoableChangeListener(vetoable); } - @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { getWritePropertyChangeSupport(true).removePropertyChangeListener(propertyName, listener); } - @Override public void removePropertyChangeListener(PropertyChangeListener listener) { getWritePropertyChangeSupport(true).removePropertyChangeListener(listener); } - @Override public void removeVetoableChangeListener(String propertyName, VetoableChangeListener vetoable) { getWriteVetoableChangeSupport(true).removeVetoableChangeListener(propertyName, vetoable); } - @Override public void removeVetoableChangeListener(VetoableChangeListener vetoable) { getWriteVetoableChangeSupport(true).removeVetoableChangeListener(vetoable); } - @Override public void addPropertyListener(String propertyName, PropertyChangeListener listener) { getReadPropertyChangeSupport(true).addPropertyChangeListener(propertyName, listener); } - @Override public void addPropertyListener(PropertyChangeListener listener) { getReadPropertyChangeSupport(true).addPropertyChangeListener(listener); } - @Override public void addVetoableListener(String propertyName, VetoableChangeListener vetoable) { getReadVetoableChangeSupport(true).addVetoableChangeListener(propertyName, vetoable); } - @Override public void addVetoableListener(VetoableChangeListener vetoable) { getReadVetoableChangeSupport(true).addVetoableChangeListener(vetoable); } - @Override public void removePropertyListener(String propertyName, PropertyChangeListener listener) { getReadPropertyChangeSupport(true).removePropertyChangeListener(propertyName, listener); } - @Override public void removePropertyListener(PropertyChangeListener listener) { getReadPropertyChangeSupport(true).removePropertyChangeListener(listener); } - @Override public void removeVetoableListener(String propertyName, VetoableChangeListener vetoable) { getReadVetoableChangeSupport(true).removeVetoableChangeListener(propertyName, vetoable); } - @Override public void removeVetoableListener(VetoableChangeListener vetoable) { getReadVetoableChangeSupport(true).removeVetoableChangeListener(vetoable); } diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java index f9a9bef..07c07a2 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java @@ -47,7 +47,7 @@ import org.nuiton.eugene.models.object.ObjectModelParameter; import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntityVisitor; -import org.nuiton.topia.persistence.TopiaListenableEntity; +import org.nuiton.topia.persistence.ListenableEntity; import org.nuiton.topia.persistence.internal.AbstractTopiaEntity; import org.nuiton.topia.persistence.TopiaDaoSupplier; import org.nuiton.topia.persistence.TopiaException; @@ -291,10 +291,11 @@ public class EntityTransformer extends ObjectModelTransformerToJava { TopiaEntityContextable.class); } - // TODO AThimel 03/09/14 Include only if property chance support is enabled - addInterface(interfaceAlreadyDone, - outputInterface, - TopiaListenableEntity.class); + if (topiaTagValues.isGeneratePropertyChangeSupport(input, model)) { + addInterface(interfaceAlreadyDone, + outputInterface, + ListenableEntity.class); + } } protected void createEntityAbstractClass(ObjectModelPackage aPackage, diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java index 871e84c..31b4156 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java @@ -871,6 +871,12 @@ public class TopiaTagValues extends TagValueDefinitionProvider { return value; } + public boolean isGeneratePropertyChangeSupport(ObjectModelClass clazz, ObjectModel model) { + ObjectModelPackage modelPackage = model.getPackage(clazz); + boolean value = findBooleanTagValue(TAG_GENERATE_PROPERTY_CHANGE_SUPPORT, clazz, modelPackage, model); + return value; + } + //--------------------------------------------------------------------------------------------------------------- //-- DEPRECATED API TO REMOVE --------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------- -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.