Hi Fabio/Jun,

On Jun 20, 2011, at 10:44 AM, Fabio Mancinelli wrote:

> Hi Jun,
> 
> thanks, for the update.
> 
> I agree with Vincent... The backend should not be an explicit choice
> made for each connection. REST should be the default and if you need
> XMLRPC (for example for connecting to a veeeery old XWiki instance)
> you might have an advanced button that allows you to do this or, as
> you suggested, the URI might suggest the backend to use.

We've been supporting REST for a very long time now. My opinion is to drop 
XMLRPC support altogether in the next release of XEclipse.

Thanks
-Vincent

> You should progress on the REST aspects asap though.
> 
> Thanks,
> Fabio
> 
> On Sun, Jun 19, 2011 at 4:57 PM, Jun Han <[email protected]> wrote:
>> Hi Vincent,
>> 
>> Thanks a lot for your suggestion.
>> 
>> IMHO, xmlrpc is included for the purpose of back-ward compatibility.
>> As REST API was first introduced in version 1.8 from xwiki jira,
>> xmlrpc might be useful If the xwiki server only supports xmlrpc (e.g.,
>> v1.4 or v1.5).
>> 
>> I agree that technical details should not be exposed to end user.
>> 
>> The backend implementation may be determined via analyzing user input of
>> server endpoint. For example, if the serverurl contains "confluence"
>> (http://localhost:8080/xwiki/xmlrpc/confluence), then xmlrpc is used. If
>> it contains "rest" (e.g., http://localhost:8080/xwiki/rest), then rest
>> is used.
>> 
>> However, the current implementation will populate the specific server
>> url field according to the backend type (xmlrpc or rest).
>> There may be some better way to do this.
>> 
>> Best regards
>> 
>> Jun Han
>> 
>> On 06/19/2011 03:40 AM, Vincent Massol wrote:
>>> Hi there,
>>> 
>>> I haven't followed this thread but just noticing this: why do we want to 
>>> expose to users something purely technical (ie the backend implementation)?
>>> Also why do we want to have to maintain several backends?
>>> 
>>> IMO we should only use one and use the REST API only.
>>> 
>>> If it's only about migration from the current XMLRPC to REST, it should be 
>>> a "hidden" config param not exposed to users and that we use internally 
>>> only IMO.
>>> 
>>> The goal should always be to make it as easy as possible for end users, 
>>> i.e. they shouldn't have to think when using XEclipse.
>>> 
>>> Thanks
>>> -Vincent
>>> 
>>> On Jun 19, 2011, at 6:52 AM, Jun Han wrote:
>>> 
>>>> Hi Fabio,
>>>> 
>>>> I have already finished re-factoring the whole xmlrpc backend.
>>>> 
>>>> A new combo list is added to the "new connection" wizard to provide two
>>>> choices (xmlrpc and rest), as shown in
>>>> http://dl.dropbox.com/u/3466762/xwiki/newConnectionWizard.png.
>>>> 
>>>> When user selects "xmlrpc", the xmlrpc implementation is used. The
>>>> navigation panel can show the xwiki resources, as shown in
>>>> http://dl.dropbox.com/u/3466762/xwiki/xmlrpcBackend.png.
>>>> 
>>>> I will continue working on the rest backend following the previous
>>>> discussion.
>>>> 
>>>> Best regards
>>>> 
>>>> Jun Han
>>>> 
>>>> On 06/17/2011 09:24 AM, Fabio Mancinelli wrote:
>>>>> Hi Jun,
>>>>> 
>>>>> could you post a status about your work?
>>>>> Your commits stream
>>>>> (https://github.com/junhan/xwiki-eclipse/commits/master) is not very
>>>>> informative (are you holding commits locally? If so you should push
>>>>> more frequently!)
>>>>> 
>>>>> Midterm is approaching so we need to make things advance a little bit 
>>>>> faster.
>>>>> 
>>>>> Thanks,
>>>>> Fabio
>>>>> 
>>>>> 
>>>>> 
>>>>> On Mon, Jun 13, 2011 at 9:00 AM, Jun Han<[email protected]>   wrote:
>>>>>> Dear all,
>>>>>> 
>>>>>> After I looked into the current implementation of XEclipse and tried
>>>>>> several attempts, one plan, whose goal is to provide an abstract
>>>>>> communication layer between XEclipse and server, might be feasible.
>>>>>> A rough system diagram showing the relationships of plugins of XWiki
>>>>>> Eclipse is available at:
>>>>>> http://dl.dropbox.com/u/3466762/xwiki/architecture.png
>>>>>> 
>>>>>> In order to remove dependency of particular back-end implementation
>>>>>> (xmlrpc or rest),
>>>>>> an abstract layer, which includes two plugins (model and storage) will
>>>>>> be created.
>>>>>> 1. model plugin contains the current package of xwiki.eclipse.core.model
>>>>>> 2. storage plugin contains xwiki.eclipse.core.storage including two
>>>>>> abstract classes, AbstractLocalDataStorage and AbstractRemoteDataStorage.
>>>>>> 
>>>>>> In this way, all the core implementation and UI components (dialogs,
>>>>>> properties dialog, adapters) in ui plugin will now depend on the model
>>>>>> and storage plugins rather than the xmlrpc implementation.
>>>>>> 
>>>>>> Instead of only providing the required jar files, xmlrpc and rest
>>>>>> plugins will also do the following:
>>>>>> 1. extend the AbstractLocalDataStorage and AbstractRemoteDataStorage in
>>>>>> storage plugin
>>>>>> 2. extend the model classes in model plugin
>>>>>> 
>>>>>> In this way, all the abstract classes in model and storage plugins will
>>>>>> be initialized in the run time and perform the specified functions.
>>>>>> 
>>>>>> If my understanding is correct, I will begin re-factoring work.
>>>>>> 
>>>>>> Best regards
>>>>>> 
>>>>>> Jun Han
>>>>>> 
>>>>>> On 6/11/2011 10:32 AM, Eduard Moraru wrote:
>>>>>>> Hi Jun,
>>>>>>> 
>>>>>>> Instead of returning Object, you should return
>>>>>>> org.xwiki.eclipse.core.model.Page or Object, etc.
>>>>>>> 
>>>>>>> So the storage abstraction needs to include and abstract model as well 
>>>>>>> in
>>>>>>> order to be usable. This means that the implementation also comes with a
>>>>>>> model implementation (xmlrpc.model.PageSummary for xmlrpc back-end,
>>>>>>> rest.jaxb.model.Page for rest back-end, etc.... all of them implementing
>>>>>>> org.xwiki.eclipse.core.model.Page)
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> Eduard
>>>>>>> 
>>>>>>> On Fri, Jun 10, 2011 at 7:52 PM, Jun Han<[email protected]>     wrote:
>>>>>>> 
>>>>>>>> Hi Eduard,
>>>>>>>> 
>>>>>>>> Thanks a lot for prompt instruction.
>>>>>>>> 
>>>>>>>> I forgot to sync the screenshot to the server. Now it is the correct 
>>>>>>>> one.
>>>>>>>> 
>>>>>>>> Regarding the pluggable solution for both xml-rpc and rest, I will try
>>>>>>>> to devise a common storage API for both of them.
>>>>>>>> 
>>>>>>>> For example,
>>>>>>>> public Object getPage(String pageId)
>>>>>>>> public List<Object>     getPages(String spaceKey)
>>>>>>>> 
>>>>>>>> They will return
>>>>>>>> 1. xmlrpc.model.PageSummary if connecting via xmlrpc or
>>>>>>>> 2. rest.jaxb.model.Page if connecting via rest.
>>>>>>>> 
>>>>>>>> If this is the way to go, I will look more into how to implement this.
>>>>>>>> Adapter pattern may be used.
>>>>>>>> 
>>>>>>>> Best regards
>>>>>>>> 
>>>>>>>> Jun Han
>>>>>>>> 
>>>>>>>> On 06/10/2011 12:08 PM, Eduard Moraru wrote:
>>>>>>>>> Hi Jun,
>>>>>>>>> 
>>>>>>>>> On 06/10/2011 05:26 PM, Jun Han wrote:
>>>>>>>>>> Hi, Eduard and Fabio,
>>>>>>>>>> 
>>>>>>>>>> I finished part of the navigation panel, which shows the connection,
>>>>>>>>>> wiki, space.
>>>>>>>>>> Please see the screenshot at
>>>>>>>>>> http://dl.dropbox.com/u/3466762/xwiki/Screenshot-navigationPanel.png
>>>>>>>>> I think you pasted the wrong screenshot. We`ve already seen this one 
>>>>>>>>> and
>>>>>>>>> I think it's from an early stage of development.
>>>>>>>>>> Adding pages under space is straightforward too, however, it requires
>>>>>>>>>> re-factor a lot of source code, which spreads in the plugin of
>>>>>>>>>> xwiki.eclipse.ui and xwiki.eclipse.core.
>>>>>>>>>> 
>>>>>>>>>> I will continue work on displaying more XWiki resources after I 
>>>>>>>>>> finish
>>>>>>>>>> re-factoring the properties editor, action provider (context menu), 
>>>>>>>>>> and
>>>>>>>>>> other dialog windows related to connection, wiki, space.
>>>>>>>>> It should not take that much of a refactoring on the UI part, since 
>>>>>>>>> the
>>>>>>>>> heavy lifting is done in the core.
>>>>>>>>> 
>>>>>>>>> What I actually wanted to tell you is that you should take the
>>>>>>>>> refactoring in a modular direction and consider your work as a
>>>>>>>>> contribution and alternative for the existing system and not only as a
>>>>>>>>> replacement. I you can`t do it as a contribution, consider adding a
>>>>>>>>> mechanism that allows you to do so (see our first discussions on
>>>>>>>>> integrating the rest back-end). Keep the abstraction layer 
>>>>>>>>> (interfaces,
>>>>>>>>> model, etc) as the main think the ui and even core components
>>>>>>>>> communicate with and keep the implementation of that abstraction layer
>>>>>>>>> pluggable (xml-rpc, rest, etc). The UI must also be aware of this and
>>>>>>>>> act accordingly.
>>>>>>>>> 
>>>>>>>>> We don`t want to do the same replacement work if, for whatever reason,
>>>>>>>>> we want to switch to a different back-end in the future. So keep that 
>>>>>>>>> in
>>>>>>>>> mind at all time during GSoC.
>>>>>>>>> 
>>>>>>>>> Besides that, keep up the good work ;)
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> Eduard
>>>>>>>>>> Best regards
>>>>>>>>>> Jun Han
>>>>>>>>>> 
>>>>>>>>>> On 06/09/2011 07:26 PM, Eduard Moraru wrote:
>>>>>>>>>>> Hi Jun,
>>>>>>>>>>> 
>>>>>>>>>>> On 06/09/2011 11:14 AM, Fabio Mancinelli wrote:
>>>>>>>>>>>> Hi Jun,
>>>>>>>>>>>> 
>>>>>>>>>>>> I am not sure that syntaxes should appear as a child of 
>>>>>>>>>>>> connection. I
>>>>>>>>>>>> would show this information in the property panel of the 
>>>>>>>>>>>> connection.
>>>>>>>>>>> I think that you should make the "wikis" implicit as well and leave
>>>>>>>> only
>>>>>>>>>>> the Connection Name as top root, just like in my previous proposal:
>>>>>>>>>>> 
>>>>>>>>>>> Connection01
>>>>>>>>>>> - wiki1
>>>>>>>>>>> -- spaceA
>>>>>>>>>>> --- pageX
>>>>>>>>>>> - wiki2
>>>>>>>>>>> - etc.
>>>>>>>>>>> 
>>>>>>>>>>> As Fabio pointed out, stuff like supported syntaxes and xwiki 
>>>>>>>>>>> version
>>>>>>>>>>> should be displayed in the properties page of a connection.
>>>>>>>>>>> 
>>>>>>>>>>> Also, you need to take care when the user enters the user name and
>>>>>>>>>>> password and consider the wiki for which it applies. User Admin on 
>>>>>>>>>>> the
>>>>>>>>>>> main wiki (xwiki:XWiki.Admin) is not the same as user Admin on 
>>>>>>>>>>> subwiki1
>>>>>>>>>>> (subwiki1:XWiki.Admin).
>>>>>>>>>>> I believe that, if you don`t enter the absolute user name
>>>>>>>>>>> (xwiki:XWiki.Admin) and you enter only the relative name (Admin), it
>>>>>>>>>>> will be resolved to the wiki of the resource you are trying to 
>>>>>>>>>>> access.
>>>>>>>>>>> You should, at least internally, always use absolute user names.
>>>>>>>>>>> 
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Eduard
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Fabio
>>>>>>>>>>>> 
>>>>>>>>>>>> On Wed, Jun 8, 2011 at 10:26 PM, Jun Han<[email protected]>
>>>>>>>> wrote:
>>>>>>>>>>>>> Hi Eduard and Fabio,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks a lot for your suggestions.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I managed to create a top-level tree expansion when user requests 
>>>>>>>>>>>>> the
>>>>>>>>>>>>> entry point of REST API: localhost:8080/xwiki/rest.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> A screenshot is available at:
>>>>>>>>>>>>> http://dl.dropbox.com/u/3466762/xwiki/Screenshot-navigationPanel.png
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Now the labels display the whole<href>         attribute, I plan 
>>>>>>>>>>>>> to
>>>>>>>> "syntaxes"
>>>>>>>>>>>>> and "wikis" later on.
>>>>>>>>>>>>> When user clicks the "wikis", the navigation tree will continue to
>>>>>>>>>>>>> expand to show all the sub-wiki names.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> It took me a while to figure out the configuration of tree content
>>>>>>>>>>>>> provider, tree viewer and label provider, which is a little 
>>>>>>>>>>>>> different
>>>>>>>>>>>>> with what I did in Eclipse SWT development. As this has been 
>>>>>>>>>>>>> sorted
>>>>>>>> out,
>>>>>>>>>>>>> I would pick up the pace.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>> Jun Han
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 06/07/2011 10:37 AM, Eduard Moraru wrote:
>>>>>>>>>>>>>> Hi Jun,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On 06/07/2011 02:05 PM, Fabio Mancinelli wrote:
>>>>>>>>>>>>>>> Hi Jun,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> the REST api also takes into account Wikis, so you should take 
>>>>>>>>>>>>>>> into
>>>>>>>>>>>>>>> account this into the plugin.
>>>>>>>>>>>>>> Also, I think that we need to display the other resources (like 
>>>>>>>>>>>>>> we
>>>>>>>> do
>>>>>>>>>>>>>> now), but maybe we should improve that too.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I`d suggest that we group objects by class name, something like:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> xwiki.org       (wiki/farm/connection name, given by the user)
>>>>>>>>>>>>>> -- xwiki          (main/sub wiki name)
>>>>>>>>>>>>>> ---- Main
>>>>>>>>>>>>>> ------ WebHome
>>>>>>>>>>>>>> -------- XWiki.XWikiComments
>>>>>>>>>>>>>> ---------- 0
>>>>>>>>>>>>>> ---------- 1
>>>>>>>>>>>>>> ---------- 2
>>>>>>>>>>>>>> -------- XWiki.MyClass
>>>>>>>>>>>>>> ---------- 0
>>>>>>>>>>>>>> ---------- 1
>>>>>>>>>>>>>> etc.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 0, 1, 2 above are object numbers, but, in the future, they might
>>>>>>>> change
>>>>>>>>>>>>>> to some other IDs.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The advantage of such an ordering is that, highly used pages 
>>>>>>>>>>>>>> (that
>>>>>>>> have
>>>>>>>>>>>>>> lots of comments, or lots of objects of specific classes) will 
>>>>>>>>>>>>>> allow
>>>>>>>>>>>>>> easier management of the objects.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> If a list of numbers looks too blank, you could have them print 
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> value of the first property it their class, just like XWiki`s 
>>>>>>>>>>>>>> object
>>>>>>>>>>>>>> editor does and you`d have something like:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> -------- XWiki.XWikiComments
>>>>>>>>>>>>>> ---------- 0 : Administrator         ('author' property value)
>>>>>>>>>>>>>> ---------- 1 : Guest
>>>>>>>>>>>>>> ---------- 2 : Administrator
>>>>>>>>>>>>>> -------- XWiki.MyClass
>>>>>>>>>>>>>> ---------- 0 : etc.
>>>>>>>>>>>>>> ---------- 1 : etc.
>>>>>>>>>>>>>> etc.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I don`t know what's the status of Attachments (I don remember if 
>>>>>>>>>>>>>> we
>>>>>>>>>>>>>> display them or not), but we should have them as an 'implicit' 
>>>>>>>>>>>>>> first
>>>>>>>>>>>>>> class like:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> ------ WebHome
>>>>>>>>>>>>>> -------- Attachments
>>>>>>>>>>>>>> ---------- dog.png
>>>>>>>>>>>>>> ---------- spreadsheet.xls
>>>>>>>>>>>>>> -------- XWiki.XWikiComments
>>>>>>>>>>>>>> ---------- 0 : Administrator         ('author' property value)
>>>>>>>>>>>>>> ---------- 1 : Guest
>>>>>>>>>>>>>> ---------- 2 : Administrator
>>>>>>>>>>>>>> -------- XWiki.MyClass
>>>>>>>>>>>>>> ---------- 0 : etc.
>>>>>>>>>>>>>> ---------- 1 : etc.
>>>>>>>>>>>>>> etc.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Anyway, the main idea is to expose as much as REST API allows. 
>>>>>>>>>>>>>> Check
>>>>>>>>>>>>>> again the API specs.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> You can get creative with the details on how to display/handle 
>>>>>>>>>>>>>> the
>>>>>>>> new
>>>>>>>>>>>>>> stuff. :)
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>>> Eduard
>>>>>>>>>>>>>>> -Fabio
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Tue, Jun 7, 2011 at 7:35 AM, Jun Han<[email protected]>
>>>>>>>>    wrote:
>>>>>>>>>>>>>>>> Hi Fabio,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I have finished replacing xmlrpc implementation of login
>>>>>>>> functionality
>>>>>>>>>>>>>>>> by sending http GET request to entry point
>>>>>>>>>>>>>>>> (http://localhost:8080/xwiki/rest/) along with 
>>>>>>>>>>>>>>>> username/password.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> A status code of 200 will be regarded as successful while 401
>>>>>>>> means
>>>>>>>>>>>>>>>> login fails.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> The source code have been updated in org.xwiki.eclipse.ui and
>>>>>>>>>>>>>>>> org.xwiki.eclipse.core plugins.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I will begin working on xwiki navigatoin panel and replace 
>>>>>>>>>>>>>>>> xmlrpc
>>>>>>>> code
>>>>>>>>>>>>>>>> accordingly.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> One question is what resources are to be included in navigation
>>>>>>>> panel,
>>>>>>>>>>>>>>>> besides xwiki ->            space ->            pages? and how 
>>>>>>>>>>>>>>>> to display
>>>>>>>> them?
>>>>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Jun Han
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 06/05/2011 05:50 PM, Fabio Mancinelli wrote:
>>>>>>>>>>>>>>>>> Hi Jun,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> login/logout can be implemented in order to store on the 
>>>>>>>>>>>>>>>>> client
>>>>>>>> side
>>>>>>>>>>>>>>>>> user credentials that are sent with HTTP requests.
>>>>>>>>>>>>>>>>> Currently there is no way in the REST-api to get a "session
>>>>>>>> token"
>>>>>>>>>>>>>>>>> (like the cookie sent after a login is made using the web 
>>>>>>>>>>>>>>>>> form)
>>>>>>>> so
>>>>>>>>>>>>>>>>> that subsequent requests are performed on the behalf of a
>>>>>>>> previously
>>>>>>>>>>>>>>>>> authenticated user.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> So what is usually done is to send basic-auth credentials with
>>>>>>>> each request.
>>>>>>>>>>>>>>>>> You can start with this. Next you might try to retrieve the
>>>>>>>> cookie by
>>>>>>>>>>>>>>>>> faking a standard login and using that cookie in subsequent
>>>>>>>> requests.
>>>>>>>>>>>>>>>>> The ideal setting would be to implement server side some
>>>>>>>> OAuth-like
>>>>>>>>>>>>>>>>> mechanism, but this is out of scope wrt your project.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> -Fabio
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Sat, Jun 4, 2011 at 6:27 PM, Jun Han<[email protected]>
>>>>>>>>        wrote:
>>>>>>>>>>>>>>>>>> Dear all,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> I am on the way of replacing the xmlrpc implementation of
>>>>>>>>>>>>>>>>>>                RemoteXWikiDataStorage implements 
>>>>>>>>>>>>>>>>>> IDataStorage {}.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> One question is about how to implement login and logout
>>>>>>>> functionality
>>>>>>>>>>>>>>>>>> via REST API.
>>>>>>>>>>>>>>>>>>           From REST API document, users can be authenticated 
>>>>>>>>>>>>>>>>>> via
>>>>>>>> something like:
>>>>>>>>>>>>>>>>>> 1. XWiki session
>>>>>>>>>>>>>>>>>> 2. HTTP Basic Auth.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> HTTP basic auth can be implemented via adding HTTP header to 
>>>>>>>>>>>>>>>>>> the
>>>>>>>> HTTP
>>>>>>>>>>>>>>>>>> request, then XEclipse can display Xwiki Resources by parsing
>>>>>>>> the response.
>>>>>>>>>>>>>>>>>> Therefore, do we need to implement login and logout methods?
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>>>>>>> Jun Han
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to