Author: athimel Date: 2013-07-23 01:57:38 +0200 (Tue, 23 Jul 2013) New Revision: 2778 Url: http://nuiton.org/projects/topia/repository/revisions/2778 Log: refs #552 - Improve TopiaContext API - Add TopiaContext.evict(x) method Modified: trunk/src/site/rst/migrate_to_3.0.rst trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java Modified: trunk/src/site/rst/migrate_to_3.0.rst =================================================================== --- trunk/src/site/rst/migrate_to_3.0.rst 2013-07-20 00:48:20 UTC (rev 2777) +++ trunk/src/site/rst/migrate_to_3.0.rst 2013-07-22 23:57:38 UTC (rev 2778) @@ -54,8 +54,8 @@ Modularisation de la génération des TopiaID ------------------------------------------- -La forme des topiaIds générés à changer. Si vous souhaitez conserver l'ancienne forme parce que vous -souhaitez conserver l'uniformité avec une base de données existante ou si vous utilise +La forme des topiaIds générés à changé. Si vous souhaitez conserver l'ancienne forme parce que vous +souhaitez conserver l'uniformité avec une base de données existante ou si vous utilisez topia-service-security, vous devez explicitement le spécifier à Topia 3.0 via la configuration : topia.persistence.topiaIdFactoryClassName=org.nuiton.topia.persistence.LegacyTopiaIdFactory @@ -80,3 +80,13 @@ Si le code précédent réalisait un cast, il faut le supprimer car cela peut causer maintenant une erreur de compilation. + + +TopiaContextListener +-------------------- + +L'API TopiaContextListener contenant des opérations de manipulation du schéma de base de données a été déprécié. +L'interface est remplacée par TopiaSchemaListener. Les méthodes présentes sur le TopiaContext qui servaient à ajouter/ +supprimer un TopiaContextListener sont elles aussi dépréciées au profit de méthodes manipulant des TopiaSchemaListener. + + Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2013-07-20 00:48:20 UTC (rev 2777) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2013-07-22 23:57:38 UTC (rev 2778) @@ -379,6 +379,16 @@ void add(TopiaEntity e) throws TopiaException; /** + * Detaches the given entity from the session + * + * @param e the entity to detach + * @throws TopiaException if any exception + * + * @since 3.0 + */ + void evict(TopiaEntity e) throws TopiaException; + + /** * Clear persistence implementation cache. * * @since 2.6.13 @@ -416,28 +426,28 @@ // TODO AThimel 20/07/13 Copy "String getSchemaName();" from topia-3.0-jpa ? /** - * Permet de créer le schema de la base de données. + * Triggers database schema creation * * @throws TopiaException if any exception */ void createSchema() throws TopiaException; /** - * Permet d'afficher les requetes SQL de creation de base. + * Displays the SQL queries that would be used for a schema creation * * @throws TopiaException if any exception */ void showCreateSchema() throws TopiaException; /** - * Permet de mettre à jour le schema de la base de données. + * Triggers database schema update * * @throws TopiaException if any exception */ void updateSchema() throws TopiaException; /** - * Permet de supprimer le schema de la base de données. + * Triggers database schema drop * * @throws TopiaException if any exception * @since 3.0 @@ -469,56 +479,55 @@ /* ------------------ IMPORT / EXPORT / REPLICATION ---------------------*/ /** - * Permet de dupliquer de ce context vers un context d'une autre base des - * données sans modification des entites. + * Makes a replication of some entities from this context to the given + * context without any entity modification. * <p/> - * <b>Note:</b> Si le parametre <code>entityAndCondition</code> est vide, - * alors on duplique toutes les entités de la base. + * <b>Note:</b> If the <code>entityAndCondition</code> parameter is empty, + * all the database will be replicated * <p/> - * <b>Note 2:</b> Il se peut que la replication simple ne soit pas - * suffisante (par example si l'on veut repliquer q'une partie d'une - * entité), on utilisera donc la seconde méthode {@link + * <b>Note 2:</b> The simple replication may not be sufficent. You may want + * to replicate only a part of some entities : use the method {@link * #replicateEntities(TopiaContext, List)}. * - * @param dstCtxt le context de la base destination - * @param entityAndCondition paramètre qui vont par deux, qui represente la - * classe de l'entity a exporter et la condition - * where que doit respecter l'objet pour etre - * exporter (entityClass, condition) - * @throws TopiaException si une erreur pendant la duplication - * @throws IllegalArgumentException si l'un des context n'est pas ouvert, ou - * si on essaye de dupliquer dans la même - * base. + * @param destinationContext the destination context + * @param entityAndCondition [key;value;...] parameter which key is the + * entity class to replicate, and value the + * "where" condition to use when querying entities + * @throws TopiaException if any problem occurred during replicate + * @throws IllegalArgumentException if one of the context is closed or if + * trying to replicate within the same + * database */ - void replicate(TopiaContext dstCtxt, + void replicate(TopiaContext destinationContext, Object... entityAndCondition) throws TopiaException, IllegalArgumentException; /** - * Permet de dupliquer une entité du type donné vers un autre context. + * Replicate a given entity from this context to the given context. * - * @param dstCtxt le context de la base destination - * @param entity l'entité à répliquer - * @param <T> le type des entités à répliquer - * @throws TopiaException si une erreur pendant la duplication - * @throws IllegalArgumentException si l'un des context n'est pas ouvert, ou - * si on essaye de dupliquer dans la même - * base. + * @param destinationContext the destination context + * @param entity the entity instance to replicate + * @param <T> type of the entity to replicate + * @throws TopiaException if any problem occurred during replicate + * @throws IllegalArgumentException if one of the context is closed or if + * trying to replicate within the same + * database */ - <T extends TopiaEntity> void replicateEntity(TopiaContext dstCtxt, + <T extends TopiaEntity> void replicateEntity(TopiaContext destinationContext, T entity) throws TopiaException, IllegalArgumentException; /** - * Permet de dupliquer les entités du type donné vers un autre context. + * Makes a replication of some entities from this context to the given + * context without any entity modification. * - * @param dstCtxt le context de la base destination - * @param entities les entités à répliquer - * @param <T> le type des entités à répliquer - * @throws TopiaException si une erreur pendant la duplication - * @throws IllegalArgumentException si l'un des context n'est pas ouvert, ou - * si on essaye de dupliquer dans la même - * base. + * @param destinationContext the destination context + * @param entities the list of entities instance to replicate + * @param <T> type of the entities to replicate + * @throws TopiaException if any problem occurred during replicate + * @throws IllegalArgumentException if one of the context is closed or if + * trying to replicate within the same + * database */ - <T extends TopiaEntity> void replicateEntities(TopiaContext dstCtxt, + <T extends TopiaEntity> void replicateEntities(TopiaContext destinationContext, List<T> entities) throws TopiaException, IllegalArgumentException; /* ------------------ H2 specific methods ---------------------*/ Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-07-20 00:48:20 UTC (rev 2777) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2013-07-22 23:57:38 UTC (rev 2778) @@ -1076,6 +1076,11 @@ } @Override + public void evict(TopiaEntity e) throws TopiaException { + getHibernate().evict(e); + } + + @Override public void replicate(TopiaContext dstCtxt, Object... entityAndCondition) throws TopiaException, IllegalArgumentException { checkClosed(String.format("This context is closed, it is not possible to release the operation '%1$s'",