Remote calls are done via a RemoteService interface (all low-level details are handled by Hessian).

public interface RemoteService extends Remote {
    RemoteSession establishSession() throws RemoteException;
RemoteSession establishSharedSession(String name) throws RemoteException; Object processMessage(ClientMessage message) throws RemoteException, Throwable;
}

The interesting part is "processMessage(ClientMessage)" - essentially all communications (including queries and updates) are done using a set of ClientMessages. The simplest message would be a QueryMessage that holds a NamedQuery. This is probably the place to start.

To estimate the level of effort ... with my current knowledge of the framework it would probably take me 2-5 hours to rewrite a very basic context-less query client in Java . There may be language-specific caveats of course. And a learning curve...

Andrus


On Jul 5, 2006, at 2:15 PM, Tomi NA wrote:

On 7/5/06, Andrus Adamchik <[EMAIL PROTECTED]> wrote:
Actually clients written in other languages is one area that has a
huge potential. And this is something I'd really like to explore.

Current transport layer (Hessian) has support in many other
languages, also a standard WS interface is being developed as a
Summer of Code project. All this works already. Still what's lacking
is an implementation of a client context in anything but Java. This
is the biggest challenge.

Well, acording to my limited understanding of the framework, the misc.
client lib implementations would be completely free of the
database-specific code and the templates to generate client classes
should be fairly easy to write...so that leaves the context,
expression manipulation, query manipulation etc. There's some work to
be done there, but it might make cayenne very interesting to a whole
new audience:
"Step 1: Welcome, to the new project wizzard. Please choose your
language: Java/C#/php/Ruby/Python/Perl/whatever."
"Step 2: tell me where your database is and I'll set up the servlet
container and all cayenne-related files so that you can gat your hands
on the db data..."
"Step 3: go!"

...or something along these lines. :)

So if there is an interest in the community to write clients in .NET,
PHP, Ruby, Python, (or maybe JavaScript/AJAX???), etc., let's do it.
A full implementation would have to mirror "cayenne-client-
nodeps.jar", but it can start small, by providing only query API, and
then grow to support relationships and updates.

Thoughts? Comments? Volunteers? ;-)

Can you estimate the effort needed to produce the minimal
implementation for another language? I mean, I'd like to hear an
estimate of the size of the problem from someone who has a better idea
than I do of the existing cayenne code needed to implement the client.
I could go look at client-nodeps.jar, but I'm itching to get out of
the office and I'd still miss things important to notice. :)

Btw, the tutorial you linked to is very understandable. I only read it
- haven't implemented anything - but it's still an opinion.

Cheers,
t.n.a.


Reply via email to