[topia] branch feature/3484 updated (a0feae9 -> 6c4f8ab)
This is an automated email from the git hooks/post-receive script. New change to branch feature/3484 in repository topia. See http://git.nuiton.org/topia.git from a0feae9 AbstractTopiaEntity does not realize ListenableBean contract (even if it implements its methods) new 6c4f8ab refs #3484 Split in 2 contracts (ListenableBean and ListenableTopiaEntity) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: 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) Summary of changes: 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(-) create mode 100644 topia-persistence/src/main/java/org/nuiton/topia/persistence/event/ListenableBean.java rename topia-persistence/src/main/java/org/nuiton/topia/persistence/{ListenableBean.java => event/ListenableTopiaEntity.java} (93%) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
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>.
participants (1)
-
nuiton.org scm