r2055 - in trunk: . topia-persistence topia-persistence/src/main/java/org/nuiton/topia/framework topia-persistence/src/main/java/org/nuiton/topia/generator topia-persistence/src/main/java/org/nuiton/topia/persistence topia-persistence/src/site/rst topia-service-migration topia-service-migration/src/main/java/org/nuiton/topia/migration topia-service-replication topia-service-replication/src/test/java/org/nuiton/topia/replication topia-service-security topia-service-security/src/main/java/org/
Author: fdesbois Date: 2010-07-09 16:01:56 +0200 (Fri, 09 Jul 2010) New Revision: 2055 Url: http://nuiton.org/repositories/revision/topia/2055 Log: - Change snapshot version to 2.4 - Evo #762, #763, #764 : remove deprecated methods in DAO and Entity - Evo #765 : Replace old transformers for entity classes by EntityTransformer in TopiaMetaTransformer - Refactor TopiaQuery instanciation in DAO, old constructors will be soon removed. Modified: trunk/pom.xml trunk/topia-persistence/pom.xml trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityImplTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaMetaTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAO.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntity.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java trunk/topia-persistence/src/site/rst/FAQ.rst trunk/topia-service-migration/pom.xml trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TMSVersionAbstract.java trunk/topia-service-replication/pom.xml trunk/topia-service-replication/src/test/java/org/nuiton/topia/replication/AbstractReplicationEngineTest.java trunk/topia-service-security/pom.xml trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/pom.xml 2010-07-09 14:01:56 UTC (rev 2055) @@ -37,7 +37,7 @@ </parent> <artifactId>topia</artifactId> - <version>2.3.5-SNAPSHOT</version> + <version>2.4-SNAPSHOT</version> <modules> <module>topia-persistence</module> Modified: trunk/topia-persistence/pom.xml =================================================================== --- trunk/topia-persistence/pom.xml 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/pom.xml 2010-07-09 14:01:56 UTC (rev 2055) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.3.5-SNAPSHOT</version> + <version>2.4-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> @@ -189,17 +189,12 @@ <testPhase>true</testPhase> <templates> org.nuiton.topia.generator.TopiaMetaTransformer, - org.nuiton.topia.generator.EntityTransformer, - org.nuiton.topia.generator.InterfaceTransformer, - org.nuiton.topia.generator.BeanTransformer, + org.nuiton.eugene.java.JavaInterfaceTransformer, + org.nuiton.eugene.java.JavaBeanTransformer, org.nuiton.topia.generator.EntityDTOTransformer, + org.nuiton.topia.generator.BinderHelperTransformer, org.nuiton.topia.generator.QueryHelperTransformer </templates> - <excludeTemplates> - <excludeTemplate>org.nuiton.topia.generator.EntityAbstractTransformer</excludeTemplate> - <excludeTemplate>org.nuiton.topia.generator.EntityImplTransformer</excludeTemplate> - <excludeTemplate>org.nuiton.topia.generator.EntityInterfaceTransformer</excludeTemplate> - </excludeTemplates> <fullPackagePath>org.nuiton.topia</fullPackagePath> <defaultPackage>org.nuiton.topia</defaultPackage> </configuration> 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 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -770,10 +770,10 @@ "commit")); try { - for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) { - // TODO-fdesbois-20100507 : need to be removed for 2.5 version - dao.commitTransaction(); - } +// for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) { +// // TODO-fdesbois-20100507 : need to be removed for 2.5 version +// dao.commitTransaction(); +// } Transaction tx = hibernate.getTransaction(); // Transaction tx = hibernate.beginTransaction(); hibernate.flush(); @@ -815,10 +815,10 @@ "topia.persistence.error.unsupported.operation.on.closed.context", "rollback")); try { - for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) { - // TODO-fdesbois-20100507 : need to be removed for 2.5 version - dao.rollbackTransaction(); - } +// for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) { +// // TODO-fdesbois-20100507 : need to be removed for 2.5 version +// dao.rollbackTransaction(); +// } Transaction tx = hibernate.getTransaction(); // Transaction tx = hibernate.beginTransaction(); hibernate.clear(); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -821,40 +821,7 @@ String attrName = attr.getName(); String attrType = attr.getType(); ObjectModelOperation op; - - op = addOperation(result, - "findContains" + StringUtils.capitalize(attrName), - "E", - ObjectModelModifier.PUBLIC); - addException(op, TopiaException.class); - addParameter(op, attrType + "...", "v"); - setDocumentation(op, "Retourne le premier élément trouvé dont " + - "l'attribut " + attrName + " contient le paramètre."); - setOperationBody(op, "" -/*{ - //FIXME TC-20100129 : really strange behaviour : contains on sub-sub properties instead of sub properties ? - //E result = findContainsProperties(<%=clazzName + "." + getConstantName(TopiaGeneratorUtil.toLowerCaseFirstLetter(attrName))%>, Arrays.asList(v)); - E result = findContainsProperties("<%=TopiaGeneratorUtil.toLowerCaseFirstLetter(attrName)%>", Arrays.asList(v)); - return result; - }*/ - ); - - op = addOperation(result, - "findAllContains" + StringUtils.capitalize(attrName), - "List<E>", - ObjectModelModifier.PUBLIC); - addException(op, TopiaException.class); - addParameter(op, attrType + "...", "v"); - setDocumentation(op, "Retourne les éléments trouvé dont l'attribut " + - attrName + " contient le paramètre."); - setOperationBody(op, "" -/*{ - //FIXME TC-20100129 : really strange behaviour : contains on sub-sub properties instead of sub properties ? - //List<E> results = findAllContainsProperties(<%=clazzName + "." + getConstantName(TopiaGeneratorUtil.toLowerCaseFirstLetter(attrName))%>, Arrays.asList(v)); - List<E> results = findAllContainsProperties("<%=TopiaGeneratorUtil.toLowerCaseFirstLetter(attrName)%>", Arrays.asList(v)); - return results; - }*/ - ); + // Since 2.3.5 do nothing, findContains and findAllContains are not generated anymore } private boolean isCollectionNeeded( Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractTransformer.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractTransformer.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -53,7 +53,9 @@ * @version $Id$ * @since 2.3.0 * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.topia.generator.EntityAbstractTransformer" + * @deprecated since 2.3.5 : all transformations needed for Entity is in {@link EntityTransformer} included in {@link TopiaMetaTransformer} */ +@Deprecated public class EntityAbstractTransformer extends ObjectModelTransformerToJava { /** Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityImplTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityImplTransformer.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityImplTransformer.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -40,7 +40,9 @@ * @version $Id$ * @since 2.3.0 * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.topia.generator.EntityImplTransformer" + * @deprecated since 2.3.5 : all transformations needed for Entity is in {@link EntityTransformer} included in {@link TopiaMetaTransformer} */ +@Deprecated public class EntityImplTransformer extends ObjectModelTransformerToJava { /** Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceTransformer.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceTransformer.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -48,7 +48,9 @@ * @version $Id$ * @since 2.3.0 * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.topia.generator.EntityInterfaceTransformer" + * @deprecated since 2.3.5 : all transformations needed for Entity is in {@link EntityTransformer} included in {@link TopiaMetaTransformer} */ +@Deprecated public class EntityInterfaceTransformer extends ObjectModelTransformerToJava { /** Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -279,12 +279,11 @@ return false; } - // On ne génère pas le impl si l'entité a des opérations qui ne sont - // pas seulement pour le DAO + // On ne génère pas le impl si l'entité a des opérations if (!operations.isEmpty()) { if (isVerbose()) { - log.info("Will not generate [" + fqn + "], there is some operations and not only DAO ones"); + log.info("Will not generate [" + fqn + "], there is some operations to manually implement"); } return false; } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaMetaTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaMetaTransformer.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaMetaTransformer.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -54,9 +54,7 @@ public TopiaMetaTransformer() { super( - EntityInterfaceTransformer.class, - EntityAbstractTransformer.class, - EntityImplTransformer.class, + EntityTransformer.class, DAOTransformer.class, DAOImplTransformer.class, DAOAbstractTransformer.class, Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAO.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAO.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAO.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -105,30 +105,6 @@ TopiaContextImplementor getContext(); /** - * Appelé lorsque le context a eu un commit de fait. - * <p/> - * TODO il faudrait peut-etre plutot faire un commit a deux phase car - * plusieurs type de persistence peuvent etre melangé, et il serait bien que - * si l'une echoué les autres echoue aussi. - * - * @throws TopiaException if any pb while commit - * @deprecated since 2.3.4 do nothing in dao implementation generated, not - * well placed - */ - @Deprecated - void commitTransaction() throws TopiaException; - - /** - * Appelé lorsque le context a eu un rollback de fait. - * - * @throws TopiaException if any pb while rollback - * @deprecated since 2.3.4 do nothing in dao implementation generated, not - * well placed - */ - @Deprecated - void rollbackTransaction() throws TopiaException; - - /** * Find usages of the given {@code entity} in the entities of the given * {@code type}. * @@ -455,69 +431,5 @@ */ E findByPrimaryKey(Object... k) throws TopiaException; - /* - * Find Contains - */ - - /** - * Cherche et renvoie la première entité trouvée dont les propriétés en clé - * de Map contiennent toutes les valeurs de la Collection. - * - * @param properties les proprietes a utiliser - * @return l'entité trouvé - * @throws TopiaException if any pb while getting datas - * @deprecated since 2.3.4 strange method, not very useful, use {@link - * TopiaQuery} instead - */ - @Deprecated - E findContainsProperties(Map<String, Collection<?>> properties) throws - TopiaException; - - /** - * Cherche et renvoie la première entité trouvée dont la propriété - * propertyName contient values, ainsi de suite avec others. - * - * @param propertyName le nom de la propriété - * @param values les premières valeurs à tester - * @param others les secondes valeurs ) tester - * @return l'entité trouvé - * @throws TopiaException if any pb while getting datas - * @deprecated since 2.3.4 strange method, not very useful, use {@link - * TopiaQuery} instead - */ - @Deprecated - E findContainsProperties(String propertyName, Collection<?> values, - Object... others) throws TopiaException; - - /** - * Cherche et renvoie la première entité trouvée dont les propriétés en clé - * de Map contiennent toutes les valeurs de la Collection. - * - * @param properties les propriétés à tester - * @return l'entité trouvé - * @throws TopiaException if any pb while getting datas - * @deprecated since 2.3.4 strange method, not very useful, use {@link - * TopiaQuery} instead - */ - @Deprecated - List<E> findAllContainsProperties(Map<String, Collection<?>> properties) - throws TopiaException; - - /** - * Cherche et renvoie toutes les entités trouvées dont la propriété - * propertyName contient values, ainsi de suite avec others. - * - * @param propertyName the name of the property - * @param values les premières valeurs à tester - * @param others les secondes valeurs à tester - * @return l'entité trouvé - * @throws TopiaException if any pb while getting datas - * @deprecated since 2.3.4 strange method, not very useful, use {@link - * TopiaQuery} instead - */ - @Deprecated - List<E> findAllContainsProperties(String propertyName, - Collection<?> values, Object... others) - throws TopiaException; } //TopiaDAO Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -40,8 +40,6 @@ import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.hibernate.Criteria; -import org.hibernate.FlushMode; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.metadata.ClassMetadata; @@ -55,12 +53,9 @@ import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.security.Permission; -import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; /** * TODO-fdesbois-20100508 : Need translation of javadoc. @@ -114,16 +109,6 @@ throw new TopiaException("Impossible de récuperer l'identifiant " + idPropName + " de l'entite: " + e); } -// } catch (IllegalAccessException eee) { -// throw new TopiaException("Impossible de récuperer l'identifiant " -// + idPropName + " de l'entite: " + e); -// } catch (InvocationTargetException eee) { -// throw new TopiaException("Impossible de récuperer l'identifiant " -// + idPropName + " de l'entite: " + e); -// } catch (NoSuchMethodException eee) { -// throw new TopiaException("Impossible de récuperer l'identifiant " -// + idPropName + " de l'entite: " + e); -// } } /** @@ -255,26 +240,6 @@ } /** - * Callback method when context was commit. By default, the method does - * nothing - * - * @throws TopiaException - */ - @Override - public void commitTransaction() throws TopiaException { - } - - /** - * Callback method when context was rollback. By default, the method does - * nothing - * - * @throws TopiaException - */ - @Override - public void rollbackTransaction() throws TopiaException { - } - - /** * private method because this is hibernate specific method and we don't * want expose it * @@ -421,8 +386,6 @@ throw new IllegalArgumentException( "Can't put properties on new Object", eee); } - // TODO-fdesbois-20100507 : need to be removed for 2.5 version - result.postCreate(); // on fait un save maintenant, car puisqu'on a creer l'entity au // travers du DAO, on s'attend a l'avoir a disposition tout de @@ -455,16 +418,12 @@ @Override public TopiaQuery createQuery() { - // Need to be change by constructor with entity only, only when - // method from TopiaQuery will be removed - return new TopiaQuery(this); + return new TopiaQuery(getEntityClass()); } @Override public TopiaQuery createQuery(String entityAlias) { - // Need to be change by constructor with entity only, only when - // method from TopiaQuery will be removed - return new TopiaQuery(this, entityAlias); + return new TopiaQuery(getEntityClass(), entityAlias); } @Override @@ -714,138 +673,5 @@ } - @Override - public E findContainsProperties(Map<String, Collection<?>> properties) - throws TopiaException { - List<E> results = findAllContainsProperties(properties); - E result = null; - if (!results.isEmpty()) { - result = results.get(0); - } - return result; - } - @Override - public E findContainsProperties(String propertyName, - Collection<?> values, Object... others) throws TopiaException { - Map<String, Collection<?>> properties = new HashMap<String, Collection<?>>(); - properties.put(propertyName, values); - Object name = null; - for (int i = 0; i < others.length;) { - try { - name = others[i++]; - values = (Collection<?>) others[i++]; - properties.put((String) name, values); - } catch (ClassCastException eee) { - throw new IllegalArgumentException( - "Les noms des propriétés doivent être des chaines et " + - "non pas " + propertyName.getClass().getName(), - eee); - } catch (ArrayIndexOutOfBoundsException eee) { - throw new IllegalArgumentException( - "Le nombre d'argument n'est pas un nombre pair: " - + (others.length + 2) - + " La dernière propriété était: " + name, eee); - } - } - E result = findContainsProperties(properties); - return result; - } - - /** - * Find all entities with a specific rule : When the entity have a - * Collection type property, you want to find all entites where some values - * are contained in the collection type property. Example entity parameter : - * private Collection<Date> historicalDates; You want some dates to be - * contained in historicalDates. Collection<Date> myDates... - * myDates.add(date1) ... Map<String, Collection> properties = new - * HashMap<String,Collection>(); properties.put("historicalDates",myDates); - * findAllContainsProperties(properties); - * - * @param properties - * @return the list of entities corresponding to the request - * @throws TopiaException if any pb - * @deprecated since 2.3.4 - */ - @Override - @Deprecated - public List<E> findAllContainsProperties(Map<String, - Collection<?>> properties) throws TopiaException { - List<E> all = findAll(); - List<E> result = new ArrayList<E>(); - for (E e : all) { - boolean ok = true; - try { - for (Entry<String, Collection<?>> kv : properties.entrySet()) { - Collection<?> entityValues = (Collection<?>) PropertyUtils - .getProperty(e, kv.getKey()); - Collection<?> values = kv.getValue(); - if (!entityValues.containsAll(values)) { - ok = false; - break; - } - } - } catch (Exception eee) { - ok = false; - if (log.isWarnEnabled()) { - log.warn( - "Impossible d'acceder a la methode demandé pour " + - "l'obbjet " + e, eee); - } - } - if (ok) { - result.add(e); - } - } - return result; - } - - /** @deprecated since 2.3.4 */ - @Override - @Deprecated - public List<E> findAllContainsProperties(String propertyName, - Collection<?> values, Object... others) - throws TopiaException { - Map<String, Collection<?>> properties = new HashMap<String, Collection<?>>(); - properties.put(propertyName, values); - Object name = null; - for (int i = 0; i < others.length;) { - try { - name = others[i++]; - values = (Collection<?>) others[i++]; - properties.put((String) name, values); - } catch (ClassCastException eee) { - throw new IllegalArgumentException( - "Les noms des propriétés doivent être des chaines et " + - "non pas " + propertyName.getClass().getName(), - eee); - } catch (ArrayIndexOutOfBoundsException eee) { - throw new IllegalArgumentException( - "Le nombre d'argument n'est pas un nombre pair: " - + (others.length + 2) - + " La dernière propriété était: " + name, eee); - } - } - List<E> result = findAllContainsProperties(properties); - return result; - } - - /** - * TODO-TC20100225 Should this method deprecated (it is never used ?) - * Renvoie un Criteria créé avec l'entityClass - * - * @param mode le FlushMode du Criteria - * @return le Criteria nouvellement créé - * @throws TopiaException if any pb - * @deprecated since 2.3.4 Criteria is no longer used, prefer using {@link - * TopiaQuery} - */ - @Deprecated - private Criteria createCriteria(FlushMode mode) throws TopiaException { - Criteria criteria = getSession().createCriteria(entityClass); - criteria.setFlushMode(mode); - return criteria; - } - - } //TopiaDAOImpl Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOLegacy.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -246,25 +246,7 @@ return result; } - /** - * Callback method when context was commit. - * By default, the method does nothing - * @throws org.nuiton.topia.TopiaException - */ @Override - public void commitTransaction() throws TopiaException { - } - - /** - * Callback method when context was rollback. - * By default, the method does nothing - * @throws org.nuiton.topia.TopiaException - */ - @Override - public void rollbackTransaction() throws TopiaException { - } - - @Override public E create(Object... properties) throws TopiaException { Map<String, Object> map = new HashMap<String, Object>(); Object propertyName = null; @@ -405,130 +387,130 @@ return result; } - @Override - public E findContainsProperties(Map<String, Collection<?>> properties) - throws TopiaException { - List<E> results = findAllContainsProperties(properties); - E result = null; - if (results.size() > 0) { - result = results.get(0); - } - return result; - } +// @Override +// public E findContainsProperties(Map<String, Collection<?>> properties) +// throws TopiaException { +// List<E> results = findAllContainsProperties(properties); +// E result = null; +// if (results.size() > 0) { +// result = results.get(0); +// } +// return result; +// } +// +// @Override +// public E findContainsProperties(String propertyName, +// Collection values, Object... others) throws TopiaException { +// Map<String, Collection<?>> properties = new HashMap<String, Collection<?>>(); +// properties.put(propertyName, values); +// Object name = null; +// for (int i = 0; i < others.length;) { +// try { +// name = others[i++]; +// values = (Collection) others[i++]; +// properties.put((String) name, values); +// } catch (ClassCastException eee) { +// throw new IllegalArgumentException( +// "Les noms des propriétés doivent être des chaines et non pas " +// + propertyName.getClass().getName(), eee); +// } catch (ArrayIndexOutOfBoundsException eee) { +// throw new IllegalArgumentException( +// "Le nombre d'argument n'est pas un nombre pair: " +// + (others.length + 2) +// + " La dernière propriété était: " + name, eee); +// } +// } +// E result = findContainsProperties(properties); +// return result; +// } +// +// /** +// * Find all entities with a specific rule : +// * When the entity have a Collection type property, you want to find all entites where some values are +// * contained in the collection type property. +// * Example entity parameter : private Collection<Date> historicalDates; +// * You want some dates to be contained in historicalDates. +// * Collection<Date> myDates... +// * myDates.add(date1) ... +// * Map<String, Collection> properties = new HashMap<String,Collection>(); +// * properties.put("historicalDates",myDates); +// * findAllContainsProperties(properties); +// * @param properties +// * @return the list of entities corresponding to the request +// * @throws org.nuiton.topia.TopiaException if any pb +// */ +// @Override +// public List<E> findAllContainsProperties(Map<String, Collection<?>> properties) throws TopiaException { +// List<E> all = findAll(); +// List<E> result = new ArrayList<E>(); +// for (E e : all) { +// boolean ok = true; +// try { +// for (Entry<String, Collection<?>> kv : properties.entrySet()) { +// Collection entityValues = (Collection) PropertyUtils +// .getProperty(e, kv.getKey()); +// Collection values = kv.getValue(); +// if (!entityValues.containsAll(values)) { +// ok = false; +// break; +// } +// } +// } catch (IllegalAccessException eee) { +// ok = false; +// if (log.isWarnEnabled()) { +// log.warn( +// "Impossible d'acceder a la methode demandé pour l'obbjet " +// + e, eee); +// } +// } catch (InvocationTargetException eee) { +// ok = false; +// if (log.isWarnEnabled()) { +// log.warn( +// "Impossible d'acceder a la methode demandé pour l'obbjet " +// + e, eee); +// } +// } catch (NoSuchMethodException eee) { +// ok = false; +// if (log.isWarnEnabled()) { +// log.warn( +// "Impossible d'acceder a la methode demandé pour l'obbjet " +// + e, eee); +// } +// } +// if (ok) { +// result.add(e); +// } +// } +// return result; +// } +// +// @Override +// public List<E> findAllContainsProperties(String propertyName, +// Collection values, Object... others) throws TopiaException { +// Map<String, Collection<?>> properties = new HashMap<String, Collection<?>>(); +// properties.put(propertyName, values); +// Object name = null; +// for (int i = 0; i < others.length;) { +// try { +// name = others[i++]; +// values = (Collection) others[i++]; +// properties.put((String) name, values); +// } catch (ClassCastException eee) { +// throw new IllegalArgumentException( +// "Les noms des propriétés doivent être des chaines et non pas " +// + propertyName.getClass().getName(), eee); +// } catch (ArrayIndexOutOfBoundsException eee) { +// throw new IllegalArgumentException( +// "Le nombre d'argument n'est pas un nombre pair: " +// + (others.length + 2) +// + " La dernière propriété était: " + name, eee); +// } +// } +// List<E> result = findAllContainsProperties(properties); +// return result; +// } @Override - public E findContainsProperties(String propertyName, - Collection values, Object... others) throws TopiaException { - Map<String, Collection<?>> properties = new HashMap<String, Collection<?>>(); - properties.put(propertyName, values); - Object name = null; - for (int i = 0; i < others.length;) { - try { - name = others[i++]; - values = (Collection) others[i++]; - properties.put((String) name, values); - } catch (ClassCastException eee) { - throw new IllegalArgumentException( - "Les noms des propriétés doivent être des chaines et non pas " - + propertyName.getClass().getName(), eee); - } catch (ArrayIndexOutOfBoundsException eee) { - throw new IllegalArgumentException( - "Le nombre d'argument n'est pas un nombre pair: " - + (others.length + 2) - + " La dernière propriété était: " + name, eee); - } - } - E result = findContainsProperties(properties); - return result; - } - - /** - * Find all entities with a specific rule : - * When the entity have a Collection type property, you want to find all entites where some values are - * contained in the collection type property. - * Example entity parameter : private Collection<Date> historicalDates; - * You want some dates to be contained in historicalDates. - * Collection<Date> myDates... - * myDates.add(date1) ... - * Map<String, Collection> properties = new HashMap<String,Collection>(); - * properties.put("historicalDates",myDates); - * findAllContainsProperties(properties); - * @param properties - * @return the list of entities corresponding to the request - * @throws org.nuiton.topia.TopiaException if any pb - */ - @Override - public List<E> findAllContainsProperties(Map<String, Collection<?>> properties) throws TopiaException { - List<E> all = findAll(); - List<E> result = new ArrayList<E>(); - for (E e : all) { - boolean ok = true; - try { - for (Entry<String, Collection<?>> kv : properties.entrySet()) { - Collection entityValues = (Collection) PropertyUtils - .getProperty(e, kv.getKey()); - Collection values = kv.getValue(); - if (!entityValues.containsAll(values)) { - ok = false; - break; - } - } - } catch (IllegalAccessException eee) { - ok = false; - if (log.isWarnEnabled()) { - log.warn( - "Impossible d'acceder a la methode demandé pour l'obbjet " - + e, eee); - } - } catch (InvocationTargetException eee) { - ok = false; - if (log.isWarnEnabled()) { - log.warn( - "Impossible d'acceder a la methode demandé pour l'obbjet " - + e, eee); - } - } catch (NoSuchMethodException eee) { - ok = false; - if (log.isWarnEnabled()) { - log.warn( - "Impossible d'acceder a la methode demandé pour l'obbjet " - + e, eee); - } - } - if (ok) { - result.add(e); - } - } - return result; - } - - @Override - public List<E> findAllContainsProperties(String propertyName, - Collection values, Object... others) throws TopiaException { - Map<String, Collection<?>> properties = new HashMap<String, Collection<?>>(); - properties.put(propertyName, values); - Object name = null; - for (int i = 0; i < others.length;) { - try { - name = others[i++]; - values = (Collection) others[i++]; - properties.put((String) name, values); - } catch (ClassCastException eee) { - throw new IllegalArgumentException( - "Les noms des propriétés doivent être des chaines et non pas " - + propertyName.getClass().getName(), eee); - } catch (ArrayIndexOutOfBoundsException eee) { - throw new IllegalArgumentException( - "Le nombre d'argument n'est pas un nombre pair: " - + (others.length + 2) - + " La dernière propriété était: " + name, eee); - } - } - List<E> result = findAllContainsProperties(properties); - return result; - } - - @Override public List<E> findAllByProperty(String propertyName, Object value) throws TopiaException { Map<String, Object> properties = new HashMap<String, Object>(); @@ -679,7 +661,6 @@ throw new IllegalArgumentException( "Can't put properties on new Object", eee); } - result.postCreate(); // on fait un save maintenant, car puisqu'on a creer l'entity au // travers du DAO, on s'attend a l'avoir a disposition tout de Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntity.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntity.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntity.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -37,12 +37,9 @@ package org.nuiton.topia.persistence; -import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.generator.EntityAbstractTransformer; import org.nuiton.topia.generator.EntityHibernateMappingGenerator; -import org.nuiton.topia.generator.EntityImplTransformer; -import org.nuiton.topia.generator.EntityInterfaceTransformer; +import org.nuiton.topia.generator.EntityTransformer; import org.nuiton.topia.generator.TopiaMetaTransformer; import java.beans.PropertyChangeListener; @@ -65,9 +62,7 @@ * @author fdesbois <fdesbois@codelutin.com> * @version $Id$ * @see EntityHibernateMappingGenerator - * @see EntityInterfaceTransformer - * @see EntityAbstractTransformer - * @see EntityImplTransformer + * @see EntityTransformer */ @SearchFields public interface TopiaEntity extends Serializable { @@ -131,40 +126,7 @@ */ void setTopiaCreateDate(Date date); - @Deprecated - TopiaContext getTopiaContext(); - /** - * Called just after object creation and initialisation each entity impl can - * overide it to do something after creation - * - * @throws TopiaException if any pb - * @deprecated since 2.3.4 : don't really know is concrete usage, the needed - * treatment can be directly done after creating the entity with - * {@link TopiaDAO#create(Object...)} - */ - @Deprecated - void postCreate() throws TopiaException; - - /** - * @throws TopiaException if any pb - * @deprecated since 2.3.4 : context will no longer be keeped by the entity, - * so it will be impossible to do such operation. Use {@link - * TopiaDAO#update(TopiaEntity)} instead. - */ - @Deprecated - void update() throws TopiaException; - - /** - * @throws TopiaException if any pb - * @deprecated since 2.3.4 : context will no longer be keeped by the entity, - * so it will be impossible to do such operation. Use {@link - * TopiaDAO#delete(TopiaEntity)} instead. - */ - @Deprecated - void delete() throws TopiaException; - - /** * @return all object that must be deleted if this object is deleted * @throws TopiaException if any pb */ Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -161,7 +161,6 @@ this.topiaCreateDate = topiaCreateDate; } - @Override public TopiaContext getTopiaContext() { return topiaContext; } @@ -179,21 +178,6 @@ } @Override - public void postCreate() throws TopiaException { - // do nothing by default - } - - @Override - public void update() throws TopiaException { - throw new UnsupportedOperationException(); - } - - @Override - public void delete() throws TopiaException { - throw new UnsupportedOperationException(); - } - - @Override public List<TopiaEntity> getComposite() throws TopiaException { throw new UnsupportedOperationException(); } Modified: trunk/topia-persistence/src/site/rst/FAQ.rst =================================================================== --- trunk/topia-persistence/src/site/rst/FAQ.rst 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-persistence/src/site/rst/FAQ.rst 2010-07-09 14:01:56 UTC (rev 2055) @@ -61,10 +61,14 @@ Comment étendre un DAO avec d'autres méthodes spécifiques ? =========================================================== -Il est possible (depuis Topia 2.2.0) d'étendre un DAO avec des méthodes définies à partir du modèle. Il suffit -d'ajouter le stéréotype <<dao>> à votre méthode directement sur une class <<entity>>. Ainsi le DAOImpl associé -à l'entité ne sera pas généré et devra être défini à la charge du développeur. +Il est possible d'étendre un DAO avec des méthodes définies à partir du modèle +(méthode différente entre version 2.2 et 2.4). +Il suffit de créer une interface contenant les méthodes à ajouter au dao. +Cette interface doit avoir le stéréotype <<dao>>. De plus l'interface doit +dépendre (lien de dépendance nommé explicitement 'dao') de la classe de l'entité. +Le DAOImpl ne sera pas généré et devra être défini à la charge du développeur. + Exemple (présent dans topiatest.zargo dans les sources de topia-persistence) : Ajout d'une méthode findAllByCompany sur une entité Contact. Chaque société à un ensemble d'employés (Employee) qui ont des Modified: trunk/topia-service-migration/pom.xml =================================================================== --- trunk/topia-service-migration/pom.xml 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-migration/pom.xml 2010-07-09 14:01:56 UTC (rev 2055) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.3.5-SNAPSHOT</version> + <version>2.4-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TMSVersionAbstract.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TMSVersionAbstract.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TMSVersionAbstract.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -50,30 +50,6 @@ } /** - * update : - * @deprecated since 2.3.4, use the DAO api instead. - * @throws TopiaException - */ - - @Deprecated - @Override - public void update() throws TopiaException { - ((TopiaContextImplementor)getTopiaContext()).getDAO(TMSVersion.class).update(this); -} - - /** - * delete : - * @deprecated since 2.3.4, use the DAO api instead. - * @throws TopiaException - */ - - @Deprecated - @Override - public void delete() throws TopiaException { - ((TopiaContextImplementor)getTopiaContext()).getDAO(TMSVersion.class).delete(this); -} - - /** * accept : * Envoi via les methodes du visitor l'ensemble des champs de l'entity avec leur nom, type et valeur. Modified: trunk/topia-service-replication/pom.xml =================================================================== --- trunk/topia-service-replication/pom.xml 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-replication/pom.xml 2010-07-09 14:01:56 UTC (rev 2055) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.3.5-SNAPSHOT</version> + <version>2.4-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: trunk/topia-service-replication/src/test/java/org/nuiton/topia/replication/AbstractReplicationEngineTest.java =================================================================== --- trunk/topia-service-replication/src/test/java/org/nuiton/topia/replication/AbstractReplicationEngineTest.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-replication/src/test/java/org/nuiton/topia/replication/AbstractReplicationEngineTest.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -489,8 +489,8 @@ } TopiaDAO<? extends TopiaEntity> daoSrc = ctxt.getDAO(c.getContract()); TopiaDAO<? extends TopiaEntity> daoDst = ctxt2.getDAO(c.getContract()); - long nbSrc = daoSrc.size(); - long nbDst = daoDst.size(); + long nbSrc = daoSrc.count(); + long nbDst = daoDst.count(); assertEquals("le nombres d'entites de type " + c + " devrait etre " + nbSrc + " mais est " + nbDst, nbSrc, nbDst); List<String> idsSrc = daoSrc.findAllIds(); List<String> idsDst = daoDst.findAllIds(); Modified: trunk/topia-service-security/pom.xml =================================================================== --- trunk/topia-service-security/pom.xml 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-security/pom.xml 2010-07-09 14:01:56 UTC (rev 2055) @@ -35,7 +35,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>topia</artifactId> - <version>2.3.5-SNAPSHOT</version> + <version>2.4-SNAPSHOT</version> </parent> <groupId>org.nuiton.topia</groupId> Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java =================================================================== --- trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -48,6 +48,7 @@ import org.nuiton.topia.framework.TopiaService; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaEntityAbstract; import org.nuiton.topia.persistence.TopiaId; import org.nuiton.topia.taas.entities.TaasAuthorizationImpl; import org.nuiton.topia.taas.entities.TaasPrincipalImpl; @@ -452,7 +453,8 @@ List<Permission> permissions; try { - TopiaContextImplementor transaction = (TopiaContextImplementor) entity.getTopiaContext(); + TopiaContextImplementor transaction = (TopiaContextImplementor) + ((TopiaEntityAbstract)entity).getTopiaContext(); TopiaDAO<?> dao = transaction.getDAO(klass); permissions = dao.getRequestPermission(topiaId, actions); } catch (TopiaException e) { Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java =================================================================== --- trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java 2010-07-09 13:10:32 UTC (rev 2054) +++ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java 2010-07-09 14:01:56 UTC (rev 2055) @@ -151,7 +151,7 @@ user.setLastConnectionDate(new Date()); int numberOfConnection = user.getNumberOfConnection(); user.setNumberOfConnection(numberOfConnection + 1); - user.update(); + userDAO.update(user); // Récupération des principals principals = new HashSet<TaasPrincipalWrapper>();
participants (1)
-
fdesbois@users.nuiton.org