Thank you Florin, Sergiu, Eduard!
Will try your suggestions and I'll tell you. 

Bernardo

-----Mensaje original-----
De: [email protected] [mailto:[email protected]] En nombre de Florin 
Ciubotaru
Enviado el: jueves, 16 de junio de 2011 17:49
Para: XWiki Developers
Asunto: Re: [xwiki-devs] creating groups via XML-RPC

Hi Bernardo,

As Eduard said the REST API is newer and has a better traction, though it
doesn't match the entire XML-RPC functionality(eg: syntax conversion).
Your use case is typical for some RPC style automation and our API should
work just fine.

Regarding your issue:
The XWikiObject entities also have an "id" property which identifies them in
a document. Incrementing that property should prevent the storeObject(..)
code from overriding the previous objects(group members).

I didn't test the java client for the xml-rpc, but I doubt there's something
wrong with it.
To see a more clear representation of the model you could check these
sources(.net mapping):
-
http://svn.xwiki.org/svnroot/xwiki/xoffice/trunk/xword/Connectivity/Clients/XmlRpc/Model/

Hope this helps,
Florin Ciubotaru

2011/6/16 Riveira Faraldo, Bernardo <[email protected]>

>
>   Hi there!
>
>
>   We are trying to use XWiki 3.0 enterprise, trying to create via
>   XML-RPC thousands of users, groups and membership programmatically so
>   we can keep updated AD, Liferay, other sources of users, other apps,
>   all with CAS integration, etc.
>
>
>   As there is still no confluence 2.0 API compatibility but we need to
>   create users & groups in XWiki from an external software, we have been
>   collecting pieces of code from messages and FAQs about how to
>   implement it.
>
>
>   We try to create users, their pages, and add them to the XWikiAllGroup
>   with :
>
>
>                              Page page = new Page();
>
>                               page.setSpace("XWiki");
>
>                               page.setTitle("username01");
>
>                               page.setId("XWiki.username01");
>
>                               page.setContent("{{include
>   document=\"XWiki.XWikiUserSheet\"/}}");
>
>                               rpc.storePage(page);
>
>
>                               XWikiObject xobj = new XWikiObject();
>
>                               xobj.setClassName("XWiki.XWikiUsers");
>
>                               xobj.setPageId("XWiki.username01");
>
>                               xobj.setProperty("first_name", "name");
>
>                               xobj.setProperty("last_name", "last
>   name");
>
>                               xobj.setProperty("email",
>   "[email protected]");
>
>                               xobj.setProperty("password","##########");
>
>                               rpc.storeObject(xobj);
>
>
>                               XWikiObject xobjgrp = new XWikiObject();
>
>                               xobjgrp.setClassName("XWiki.XWikiGroups");
>
>                               xobjgrp.setPageId("XWiki.XWikiAllGroup");
>
>
>   xobjgrp.setProperty("member","XWiki.username01");
>
>                               rpc.storeObject(xobjgrp);
>
>
>   (Suppose we run that with username01 to username99)
>
>
>   Although first time we run this, the page gets created, the user gets
>   created but the properties not! :-o
>
>   If we run again the import, then every user gets their properties. :-?
>
>
>   Then, only the LAST user created gets correctly added to
>   XWiki.XWikiAllGroup. If we stop/debug the program between each user
>   creation process, always the last one appears at XWiki.XWikiAllGroup
>   when checking via UI. So they are all there for a moment, until they
>   are replaced by the last one. Like if the rpc.storeObject(xobjgrp)
>   deleted previously any other user in that XWiki.XWikiAllGroup page.
>
>
>   Then we try to create groups using this:
>
>
>                   // create group 01
>
>
>                                   Page page = new Page();
>
>                                   page.setSpace("XWiki");
>
>   page.setTitle("group01");
>
>   page.setContent("{{include document='XWiki.XWikiGroupSheet' /}}");
>
>                                   rpc.storePage(page);
>
>
>                   // create group 02
>
>
>                                   Page page = new Page();
>
>                                   page.setSpace("XWiki");
>
>   page.setTitle("group02");
>
>   page.setContent("{{include document='XWiki.XWikiGroupSheet' /}}");
>
>                                   rpc.storePage(page);
>
>
>                   ...
>
>
>   Those "Groups" get created as Pages with XWikiGroupSheet app that
>   allows us to see/edit the users via UI, but we need to add them via
>   XML-RPC.
>
>
>   ALSO, they are Pages, but they are NOT EXACTLY the same as if they
>   where created via the Admin UI, where when you create a "Group" it
>   shows slightly differently:
>
>
>   Autocreated via XML-RPC:
>
>
>   [cid:[email protected]]
>
>   Versus when a group is created via Admin UI, it shows up differently,
>   just like this:
>
>
>   [cid:[email protected]]
>
>
>   SO, we suppose the way we create a Group via XML-RPC (just a Page with
>   a special Sheet) is NOT ENOUGH.
>
>
>   And finally we try to add existing users to newly created groups with
>   code like this:
>
>
>                   // user 01 to group 01
>
>
>                                                  XWikiObject xobjgrp =
>   new XWikiObject();
>
>
>   xobjgrp.setClassName("XWiki.XWikiGroups");
>
>
>   xobjgrp.setPageId("group01");
>
>
>   xobjgrp.setProperty("member","XWiki.username01");
>
>
>   rpc.storeObject(xobjgrp);
>
>
>                   // user 01 to group 02
>
>
>                                                  XWikiObject xobjgrp =
>   new XWikiObject();
>
>
>   xobjgrp.setClassName("XWiki.XWikiGroups");
>
>
>   xobjgrp.setPageId("group02");
>
>
>   xobjgrp.setProperty("member","XWiki.username01");
>
>
>   rpc.storeObject(xobjgrp);
>
>
>                   // user 02 to group 01
>
>
>                                                  XWikiObject xobjgrp =
>   new XWikiObject();
>
>
>   xobjgrp.setClassName("XWiki.XWikiGroups");
>
>
>   xobjgrp.setPageId("group01");
>
>
>   xobjgrp.setProperty("member","XWiki.username02");
>
>
>   rpc.storeObject(xobjgrp);
>
>
>                   // user 03 to group 01
>
>
>                                                  XWikiObject xobjgrp =
>   new XWikiObject();
>
>
>   xobjgrp.setClassName("XWiki.XWikiGroups");
>
>
>   xobjgrp.setPageId("group01");
>
>
>   xobjgrp.setProperty("member","XWiki.username02");
>
>
>   rpc.storeObject(xobjgrp);
>
>
>                   ...
>
>
>   If now we check the group via UI, we can find Pages named
>   XWiki.group01 , XWiki.group02, and with only one user each (although
>   in the code up there username 01, 02 and 03 should be members of
>   group01 !!! only THE LAST ONE (username03) remains.
>
>
>   Also we tried to add also some users to the default (pre-created)
>   XWiki.XWikiAdminGroup so they can act as administrators:
>
>
>                                                  XWikiObject xobjgrp =
>   new XWikiObject();
>
>
>   xobjgrp.setClassName("XWiki.XWikiGroups");
>
>
>   xobjgrp.setPageId("XWiki.XWikiAdminGroup");
>
>
>   xobjgrp.setProperty("member","XWiki.username01");
>
>
>   rpc.storeObject(xobjgrp);
>
>
>                                                  XWikiObject xobjgrp =
>   new XWikiObject();
>
>
>   xobjgrp.setClassName("XWiki.XWikiGroups");
>
>
>   xobjgrp.setPageId("XWiki.XWikiAdminGroup");
>
>
>   xobjgrp.setProperty("member","XWiki.username02");
>
>
>   rpc.storeObject(xobjgrp);
>
>
>   As before only XWiki.username02 stays as member of
>   XWiki.XWikiAdminGroup.
>
>
>   We tried this with a fresh install of XWikiEnt3.0+Jetty+HSQLDB, then
>   in Tomcat+MySQL, same problem in all of them.
>
>   So, are we doing something wrong? Maybe something must be done with
>   every user or group before you can add membership via XML-RPC?
>
>
>   Sorry for the long post and thanks in advance!
>
>   Bernardo Riveira
>
> *****
> Este mensaje se dirige exclusivamente a su destinatario. Puede contener
> información privilegiada, confidencial o legalmente protegida.
> Si ha recibido este mensaje por error le rogamos que lo borre
> inmediatamente, así como todas sus copias, y lo comunique al remitente.
> En virtud de la legislación vigente está prohibida la utilización,
> divulgación  copia o impresión sin autorización.
> No existe renuncia a la confidencialidad o privilegio por causa de una
> transmisión errónea.
> *****
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs
*****
Este mensaje se dirige exclusivamente a su destinatario. Puede contener 
información privilegiada, confidencial o legalmente protegida.
Si ha recibido este mensaje por error le rogamos que lo borre inmediatamente, 
así como todas sus copias, y lo comunique al remitente.
En virtud de la legislación vigente está prohibida la utilización, divulgación  
copia o impresión sin autorización.
No existe renuncia a la confidencialidad o privilegio por causa de una 
transmisión errónea.
*****

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to