Author: lgiessmann Date: Wed Aug 10 12:45:20 2011 New Revision: 719
Log: trunk: rest-interface: fixed updated-fragments, that is invoked after a delete-operation. Now, it can handle multiple fragments that belongs to one topic
Modified: trunk/src/rest_interface/set-up-json-interface.lisp
Modified: trunk/src/rest_interface/set-up-json-interface.lisp ============================================================================== --- trunk/src/rest_interface/set-up-json-interface.lisp Wed Aug 10 07:55:51 2011 (r718) +++ trunk/src/rest_interface/set-up-json-interface.lisp Wed Aug 10 12:45:20 2011 (r719) @@ -684,13 +684,20 @@ (loop for role in (roles inst :revision rev) collect (d:player role :revision rev))))))) (fragments - (delete-if #'null - (map 'list (lambda(top) - (elephant:get-instance-by-value - 'd:FragmentC 'd::topic top)) - (delete-duplicates - (delete deleted-topic - (delete-if #'null all-tops))))))) + (delete-if + #'null + (map 'list (lambda(top) + (let ((all-frgs + (sort + (elephant:get-instances-by-value + 'd:FragmentC 'd::topic top) + #'> :key 'revision))) + (let ((frg (first all-frgs))) + (map nil 'elephant:drop-instance (rest all-frgs)) + frg))) + (delete-duplicates + (delete deleted-topic + (delete-if #'null all-tops))))))) (map nil (lambda(frg) (setf (slot-value frg 'd::serializer-cache) nil) (d:serialize-fragment frg (fragment-serializer)))