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
>>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> devs mailing list
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> devs mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> devs mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>>>>> _______________________________________________
>>>>>>>>>> devs mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>>>> _______________________________________________
>>>>>>>>> devs mailing list
>>>>>>>>> [email protected]
>>>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> devs mailing list
>>>>>>>> [email protected]
>>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>> _______________________________________________
>>>>>>> devs mailing list
>>>>>>> [email protected]
>>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>> _______________________________________________
>>>>>> devs mailing list
>>>>>> [email protected]
>>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>>>
>>>>> _______________________________________________
>>>>> devs mailing list
>>>>> [email protected]
>>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>> _______________________________________________
>>>> devs mailing list
>>>> [email protected]
>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>>
>>> _______________________________________________
>>> devs mailing list
>>> [email protected]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs

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

Reply via email to