Index: topia/src/java/org/codelutin/topia/generators/TopiaObjectModelModifier.java diff -u topia/src/java/org/codelutin/topia/generators/TopiaObjectModelModifier.java:1.4 topia/src/java/org/codelutin/topia/generators/TopiaObjectModelModifier.java:1.5 --- topia/src/java/org/codelutin/topia/generators/TopiaObjectModelModifier.java:1.4 Thu Jul 28 08:49:14 2005 +++ topia/src/java/org/codelutin/topia/generators/TopiaObjectModelModifier.java Fri Jul 29 13:19:12 2005 @@ -23,9 +23,9 @@ * * @author Arnaud Thimel * Copyright Code Lutin - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ * - * Mise a jour: $Date: 2005/07/28 08:49:14 $ + * Mise a jour: $Date: 2005/07/29 13:19:12 $ * par : $Author: thimel $ */ @@ -47,23 +47,27 @@ * Modifie l'ObjectModel pour y rajouter les classes d'association nécessaires * à la persistance du framework * @author thimel - * */ public class TopiaObjectModelModifier implements ObjectModelModifier { + // TODO Une fois que lutingenerator aura été modifié (les interfaces + // des ObjectModelXXX permettront également la modification du modèle), + // changer les ObjectModelXXXImpl en ObjectModelXXX. + // (cf. TODO de lutingenerator). + // Pour l'instant, on se restreint au objets + // org.codelutin.generator.models.object.xml.* + /* (non-Javadoc) * @see org.codelutin.topia.ObjectModelModifier#modify(org.codelutin.generator.models.object.ObjectModel) */ public ObjectModel modify(ObjectModel model) { if (!(model instanceof ObjectModelImpl)) - return model; // Si ce n'est pas un ObjectModelImpl, on ne pourra pas ajouter de classes + // Si ce n'est pas un ObjectModelImpl, on ne pourra pas ajouter de classes + throw new IllegalArgumentException("model must be an instanceof ObjectModelImpl"); ObjectModelImpl modelImpl = (ObjectModelImpl)model; + // On met la liste des classes dans une autre liste de manière à pouvoir modifier la liste de modelImpl sans ConcurrentModificationException (à cause du deuxième modelImpl.parsetAssociationClass(...) à la fin du code) + List listClasses = new ArrayList(modelImpl.getClasses()); // On parcours toutes les classes du modèle - Iterator classes = modelImpl.getClasses().iterator(); - List listClasses = new ArrayList(); - while (classes.hasNext()) { - listClasses.add((ObjectModelClass)classes.next()); - } for (ObjectModelClass clazz : listClasses) { // On parcours tous les attributs de la classe Iterator attributes = clazz.getAttributes().iterator();