On Fri, Aug 20, 2010 at 8:47 PM, Pierre-Arnaud Marcelot <pa@marcelot.net> wrote:
Hi dev,

Almost three years ago, I did an experimentation with Eclipse RAP (Rich Ajax Platform) and tried to convert Directory Studio plugins to be used within a RAP application.
At this time, RAP was in its early years (months) and the extensive use the Eclipse framework APIs we were doing in Studio's plugins prevented me to successfully run it in RAP.
Eventhough I managed to convert a large part Apache DS Configuration plugin. Screenshots available here [1].

This week I spent around half a day trying to do the same with the latest version of RAP, and I have to say I'm pretty pleased about the result so far... :)
RAP has evolved a lot in the last three years and a lot of Classes/Methods/Members are now supported in the RAP implementation (while they were not, three years ago).

In approximatively two hours, and a large cut in Studio's code (more and more classes are being supported, but there are still some that are not yet available), I was able to make Studio run within a RAP application in a web browser !  [2]
There still a lot of things broken, especially a nasty bug while trying to use UI thread to update widgets, but it works.
You can create a new connection and browse the tree...

I've created a SVN branch in order to share with you this experiment and, maybe, try to go forward... [3]

If you want to test it, you need to have an Eclipse for RCP/RAP developers distribution, with RAP target platform enabled.
I've not migrated all the project, but just the smallest set to get the LDAP Browser working.
Here's the list of project you need to import:
- common.core
- common.ui
- connection.core
- connection.ui
- ldapbrowser.common
- ldapbrowser.core
- ldapbrowser.ui
- ldifeditor
- ldifparser
- org.antlr.antlr
- org.apache.commons.codec
- org.apache.commons.collections
- org.apache.commons.io
- org.apache.commons.lang
- org.apache.commons.logging
- org.apache.directory.shared.asn1
- org.apache.directory.shared.dsmlparser
- org.apache.directory.shared.ldap
- org.apache.directory.shared.ldapconstants
- org.apache.httpcomponents.httpclient
- org.apache.httpcomponents.httpcore
- org.apache.logging.log4j
- org.apache.mina.core
- org.bouncycastle.bcprovjdk15
- org.dom4j.dom4j
- org.slf4j.api
- org.slf4j.log4j12
- org.xpp3.xpp3
- repository
- valueeditors

To launch Studio in RAP, you need to create a new "RAP Application" launch configuration.

I'm very happy about the results I've got so far, and I'm pretty confident about the RAP project now.
I really think a lot of things can now be implemented using RAP and our existing Eclipse plugins code base.

Especially, I'm thinking about a webapp, embedded with ApacheDS (and launched in Jetty), in which the user could view/edit the configuration, or simply browse the server tree...

New doors are now opened to make this project even better... :)


[1] - http://people.apache.org/~pamarcelot/ApacheDSConfInRAP/
[2] - http://people.apache.org/~pamarcelot/Studio_in_RAP/
[3] - https://svn.apache.org/repos/asf/directory/studio/branches/studio-rap/

This is incredible. The theory 3 years ago is finally becoming a reality. Thanks for looking at this again and yes this opens up some very cool doors for us.

Alex Karasulu
My Blog :: http://www.jroller.com/akarasulu/
Apache Directory Server :: http://directory.apache.org
Apache MINA :: http://mina.apache.org
To set up a meeting with me: http://tungle.me/AlexKarasulu