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

