Author: bpoussin Date: 2010-12-08 16:55:22 +0100 (Wed, 08 Dec 2010) New Revision: 581 Url: http://nuiton.org/repositories/revision/wikitty/581 Log: fix Anomalie #1135: Cannot store a Wikitty that got a new extension Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-12-08 15:47:38 UTC (rev 580) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-12-08 15:55:22 UTC (rev 581) @@ -202,23 +202,22 @@ @Override public WikittyEvent store(String securityToken, Collection<Wikitty> wikitties, boolean force) { - Collection<Wikitty> wikittiesToStore = checkStore(securityToken, wikitties); - WikittyEvent result = ws.store(securityToken, wikittiesToStore, force); + checkStore(securityToken, wikitties); + WikittyEvent result = ws.store(securityToken, wikitties, force); return result; } /** - * FIXME poussin 20101028 pourquoi retourner une liste ? soit on a le droit - * de faire un store sur tout, on bien on refuse avec une exception - * verifier que result ne sert bien a rien (surtout pas a filtrer) + * Indique si on a bien le droit d'enregistrer tout les wikitties de la + * collection. Des que pour un wikitty on a pas les droits, une exception + * est levee. * * @param securityToken * @param wikitties * @return */ - protected Collection<Wikitty> checkStore(String securityToken, Collection<Wikitty> wikitties) { + protected void checkStore(String securityToken, Collection<Wikitty> wikitties) { String userId = getUserId(securityToken); - List<Wikitty> result = new ArrayList<Wikitty>(); for (Wikitty wikitty : wikitties) { // usual case, a user want to store a wikitty @@ -271,19 +270,24 @@ canChange = canWrite(securityToken, userId, concernedExtensionName, wikitty); } - if (canChange) { - Object newValue = wikitty.getFqField(fqFieldDirtyName); - oldVersion.setFqField(fqFieldDirtyName, newValue); - } else { + // TODO poussin 20101208 quel est l'interet de faire cette copie ? + // surtout quelle ne fonctionne pas car le oldVersion n'a pas + // forcement toutes les extensions du nouveau wikitty + // Code supprime et remplace +// if (canChange) { +// Object newValue = wikitty.getFqField(fqFieldDirtyName); +// oldVersion.setFqField(fqFieldDirtyName, newValue); +// } else { +// throw new SecurityException(_("user %s can't write field %s on wikitty %s", +// userId, fqFieldDirtyName, wikitty)); +// } + if (!canChange) { throw new SecurityException(_("user %s can't write field %s on wikitty %s", userId, fqFieldDirtyName, wikitty)); } } } - - result.add(wikitty); } - return result; } @Override
participants (1)
-
bpoussin@users.nuiton.org