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"
(
), then xmlrpc is used. If
it contains "rest" (e.g.,
), 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<jun.han37(a)gmail.com> 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<jun.han37(a)gmail.com>
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<jun.han37(a)gmail.com>
>>>>> 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<jun.han37(a)gmail.com>
>>>>> 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<jun.han37(a)gmail.com>
>>>>> 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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
devs(a)xwiki.org