I think we should mandate Admin rights to executing removeSpace() and return false otherwise. We need to check how confluence does it to return more information as it's indeed not much explanation for the end user. Thanks -Vincent On Jul 24, 2007, at 9:10 PM, Vincent Massol wrote:
On Jul 24, 2007, at 8:48 PM, Sergiu Dumitriu wrote:
On 7/24/07, Asiri Rathnayake <[email protected]> wrote:
Hi All,
We were silent for few days due to mid-semester work load (still have some unfinished business). Anyway, I have added the removeSpace RPC to xwiki back-end. But now i'm having few doubts about it. The remove space RPC works by retrieving all the page names under the given space and deleting them individually. But following complications may happen when using this RPC,
1. If the user does not have enough privileges to delete some of the pages within that space, an exception will be thrown half-way down. Now the RPC invoker does not know which pages were removed and which were not. (Thus, he is out of sync with the wiki)
2. If instead we chose to remove page by page from the client - Xeclipse (say), we don't have this problem , and we could even display a progress bar. (to indicate that pages are being deleted).
Since the XML RPC API requires the removeSpace() RPC, we must indeed add it. But wouldn't it be better if we do not use this RPC within Xeclipse (due to reasons mentioned above) ?
Or, is there a better way to implement removeSpace() RPC ? (like checking privileges before doing anything ?) ) (+ How ? )
From the user PoV, it is better to have a feedback as documents are deleted. This means that the client should make requests one by one. From a developer PoV, this means a lot more traffic and a lot more time, as each request creates a new connection, a new context initialization, new objects, etc.
Still, if there's an error while deleting documents, the server method should not be aborted, but should keep a list of failed documents. Now, I don't know what to do with this list. Should the method return a List, and if it is empty then everything was OK? Or should we simply return true/false, and make another call to see what documents are left in the space, if the result was "false"?
One easy answer: let's follow what the Confluence RPC Interface says. It says:
Boolean removeSpace(String token, String spaceKey)
(I think "Boolean" is a mistake and should be boolean but that needs to be checked).
Note: I'm talking about our CongluenceRpc* classes. Not about other XMLRPC interfaces.
-Vincent