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 6c4f8ab0dbac55d2826045adcd56f16484fa3bf7 Author: Arnaud Thimel <thimel@codelutin.com> Date: Fri Sep 5 17:45:21 2014 +0200 refs #3484 Split in 2 contracts (ListenableBean and ListenableTopiaEntity) --- src/site/rst/tutos/migrate_to_3.0.rst | 27 +++++--- .../topia/persistence/event/ListenableBean.java | 71 ++++++++++++++++++++++ .../ListenableTopiaEntity.java} | 10 ++- .../persistence/internal/AbstractTopiaEntity.java | 21 ++++++- .../nuiton/topia/templates/EntityTransformer.java | 4 +- 5 files changed, 119 insertions(+), 14 deletions(-) diff --git a/src/site/rst/tutos/migrate_to_3.0.rst b/src/site/rst/tutos/migrate_to_3.0.rst index 0eddc53..1ff11a9 100644 --- a/src/site/rst/tutos/migrate_to_3.0.rst +++ b/src/site/rst/tutos/migrate_to_3.0.rst @@ -78,8 +78,9 @@ 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 ListenableBean. 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é. +le contrat TopiaEntity, mais sur le contrat ListenableTopiaEntity. 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é ou utiliser directement le bon contrat. :: @@ -87,14 +88,18 @@ pas de changement. En revanche si vous utilisiez ces méthodes sur TopiaEntity, TopiaEntity anEntity = ...; anEntity.addPropertyChangeListener(listener); - // Topia 3 + // Topia 3 (cast) TopiaEntity anEntity = ...; - if (anEntity instanceof ListenableBean) { - ((ListenableBean)anEntity).addPostWriteListener(listener); + if (anEntity instanceof ListenableTopiaEntity) { + ((ListenableTopiaEntity)anEntity).addPostWriteListener(listener); } -D'une manière générale, si toutes vos entités sont des ListenableBean, nous vous encourageons à utiliser ce contrat à -la place de TopiaEntity. + // Topia 3 (direct) + ListenableTopiaEntity anEntity = ...; + anEntity.addPostWriteListener(listener); + +D'une manière générale, si toutes vos entités sont des ListenableTopiaEntity, nous vous encourageons à utiliser ce +contrat à la place de TopiaEntity. Ces méthodes ont également été renommées, voici les correspondances : @@ -109,6 +114,14 @@ Ces méthodes ont également été renommées, voici les correspondances : addPropertyChangeListener -> addPostWriteListener removePropertyChangeListener -> removePostWriteListener +À noter que les méthodes suivantes existent toujours, mais sont dorénavant isolées sur un autre contrat (ListenableBean) : + +:: + + addPropertyChangeListener + removePropertyChangeListener + + Refonte des indexed/ordered =========================== diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableBean.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableBean.java new file mode 100644 index 0000000..42bf0ce --- /dev/null +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableBean.java @@ -0,0 +1,71 @@ +package org.nuiton.topia.persistence.event; + +import java.beans.PropertyChangeListener; + +/** + * Contract to centralize usable methods to register/unregister PropertyChangeListener. This contract respects the + * java beans expectations. + * <p/> + * If you do not need to match the java beans expectations, prefer using + * {@link org.nuiton.topia.persistence.event.ListenableTopiaEntity}. + * + * @author Arnaud Thimel (Code Lutin) + * @see org.nuiton.topia.persistence.event.ListenableTopiaEntity + */ +public interface ListenableBean { + + //------------------------------------------------------------------------// + //-- Post Write that respects the java beans expectations ----------------// + //------------------------------------------------------------------------// + + /** + * Adds a {@link java.beans.PropertyChangeListener} on any property writing. + * <p/> + * This method does the same than {@link ListenableTopiaEntity#addPostWriteListener(java.beans.PropertyChangeListener)} + * and respects the java beans expectations. + * + * @param listener the listener to register + * @see java.beans.PropertyChangeSupport + * @see ListenableTopiaEntity#addPostWriteListener(java.beans.PropertyChangeListener) + */ + void addPropertyChangeListener(PropertyChangeListener listener); + + /** + * Adds a {@link java.beans.PropertyChangeListener} on the given property writing. + * <p/> + * This method does the same than {@link ListenableTopiaEntity#addPostWriteListener(String, java.beans.PropertyChangeListener)} + * and respects the java beans expectations. + * + * @param propertyName the property name to listen + * @param listener the listener to register + * @see java.beans.PropertyChangeSupport + * @see ListenableTopiaEntity#addPostWriteListener(String, java.beans.PropertyChangeListener) + */ + void addPropertyChangeListener(String propertyName, PropertyChangeListener listener); + + /** + * Remove the given {@link java.beans.PropertyChangeListener} registered for any property writing. + * <p/> + * This method does the same than {@link ListenableTopiaEntity#removePostWriteListener(java.beans.PropertyChangeListener)} + * and respects the java beans expectations. + * + * @param listener the listener to unregister + * @see java.beans.PropertyChangeSupport + * @see ListenableTopiaEntity#removePostWriteListener(java.beans.PropertyChangeListener) + */ + void removePropertyChangeListener(PropertyChangeListener listener); + + /** + * Remove the given {@link java.beans.PropertyChangeListener} registered the given property writing. + * <p/> + * This method does the same than {@link ListenableTopiaEntity#removePostWriteListener(String, java.beans.PropertyChangeListener)} + * and respects the java beans expectations. + * + * @param propertyName the property name to unregister writing + * @param listener the listener to unregister + * @see java.beans.PropertyChangeSupport + * @see ListenableTopiaEntity#removePostWriteListener(String, java.beans.PropertyChangeListener) + */ + void removePropertyChangeListener(String propertyName, PropertyChangeListener listener); + +} diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/ListenableBean.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableTopiaEntity.java similarity index 93% rename from topia-persistence/src/main/java/org/nuiton/topia/persistence/ListenableBean.java rename to topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableTopiaEntity.java index e6f635e..415de3f 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/ListenableBean.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableTopiaEntity.java @@ -1,12 +1,18 @@ -package org.nuiton.topia.persistence; +package org.nuiton.topia.persistence.event; import java.beans.PropertyChangeListener; import java.beans.VetoableChangeListener; /** + * Contract to centralize usable methods to register/unregister pre/post read/write listeners. + * <p/> + * If you need to match the java beans expectations, prefer using + * {@link org.nuiton.topia.persistence.event.ListenableBean}. + * * @author Arnaud Thimel (Code Lutin) + * @see org.nuiton.topia.persistence.event.ListenableBean */ -public interface ListenableBean { +public interface ListenableTopiaEntity extends ListenableBean { //------------------------------------------------------------------------// //-- Pre Read (VetoableChangeListener) methods ---------------------------// 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 566187d..16bdf0f 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,6 @@ package org.nuiton.topia.persistence.internal; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityContextable; -import org.nuiton.topia.persistence.ListenableBean; import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; import java.beans.PropertyChangeListener; @@ -41,8 +40,8 @@ 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.ListenableBean} but it implements its methods to - * lighten base implementation. + * This class does not realize {@link org.nuiton.topia.persistence.event.ListenableTopiaEntity} but it implements its + * methods to lighten base implementation. * * @author poussin <poussin@codelutin.com> * @author Arnaud Thimel (Code Lutin) @@ -399,4 +398,20 @@ public abstract class AbstractTopiaEntity implements TopiaEntity { } } + public void addPropertyChangeListener(PropertyChangeListener listener) { + addPostWriteListener(listener); + } + + public void addPropertyChangeListener(String property, PropertyChangeListener listener) { + addPostWriteListener(property, listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + removePostWriteListener(listener); + } + + public void removePropertyChangeListener(String property, PropertyChangeListener listener) { + removePostWriteListener(property, listener); + } + } 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 168edde..ce6e1b9 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.ListenableBean; +import org.nuiton.topia.persistence.event.ListenableTopiaEntity; import org.nuiton.topia.persistence.internal.AbstractTopiaEntity; import org.nuiton.topia.persistence.TopiaDaoSupplier; import org.nuiton.topia.persistence.TopiaException; @@ -294,7 +294,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { if (topiaTagValues.isGeneratePropertyChangeSupport(input, model)) { addInterface(interfaceAlreadyDone, outputInterface, - ListenableBean.class); + ListenableTopiaEntity.class); } } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.