My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
LeaveYourFeedbackHere  

Featured
Updated Feb 4, 2010 by maj...@gmail.com

What do you think about PGR ?

Do you test it ?

Have you got any suggestions ?

Do you find some bug ?

Please leave your feedback here as comment.

Comment by geve...@gmail.com, May 10, 2008

Awesome, I have a big GWT project that I'm integrating with AppEngine?. This code should serve as a great starting point.

I haven't tried it yet, but once I start using it I will provide some feedback.

Comment by pokstad@gmail.com, Jun 6, 2008

I'm surprised Google hasn't started an official project to make this a reality. Have you guys been contacted by Google?

Comment by derek.li...@gmail.com, Jun 19, 2008

Great work.

I just added server side exception support. (see the issue tab)

Everything seems to be working as expected.

It is a great solution for GWT and GAE integration.

Comment by mitchbri...@gmail.com, Jul 8, 2008

Hi. I've been trying this out with some success. Any ideas when full support for exceptions will be ready. The comment on the issues tab suggests that derek liang's patch won't do custom exceptions. I'm willing to help.

Comment by nevin.fr...@gmail.com, Jul 8, 2008

Thanks for putting this out there; the ability to make GWT RPCs to AppEngine? apps is really going to help a lot of people out. I'm trying to implement an example of my own in order to solidify my understanding of how this works, and I am a little confused; is the ExampleServiceImpl? class in the example ever actually used? The serverside python methods are completely separate from GWT's serverside Java, right?

Comment by project member maj...@gmail.com, Jul 9, 2008

Hello nevin.freeman, the ExampleServiceImpl? is only for testing in GWT Shell without -noserver option. Remember that the GWT allow to start with it own server and if you add <servlet path="/services" class="package.and.class"/> to gwt.xml, then GWT serve implementation of service on /service url. But in runtime, on AppEngine? there is only python code on server side.

Comment by nevin.fr...@gmail.com, Jul 9, 2008

Thanks, that makes sense. Is it necessary to have the testing implementation in order for the GWT compiler to produce the signatureMap = ... info? I've added the servlet path declaration to my module.gwt.xml and am still not able to find the signature info in my compiled JS files. I see the methodMap = ... line, but no signatureMap.

Comment by daniel.wilkerson@gmail.com, Jul 11, 2008

Please explain why you made it GPL? Do you really want to prevent people from using it to write commercial applications?

Also, the GPL doesn't really make much sense for a web app. The GPL only requires that a derived work, such as code that links with GPLed code also be GPLed if that code is released. If I keep my server side code on my server and never release it, then the GPL "viral" quality is irrelevant, even though other people can use the app.

However, if part of your library/framework is client side, which a cursory glance suggests that it is, then I have to release all of my client side source if someone using my app in their browser is legally considered to be "releasing" it; if not, then again the GPL is irrelevant.

I am not a lawyer, but the GPL wasn't really designed for web services and choosing a less confusing license, such as BSD or public domain, would sure make things simpler and probably doesn't make any difference to you.

Comment by project member maj...@gmail.com, Jul 14, 2008

Hello daniel.wilkerson,

I was not think to long about license, I select first one witch I have in mind :). Maybe You have right, I have to read and think about this. It is my first non commercial project, so I probably made mistake. Thank you for your voice.

Comment by amp...@gmail.com, Jul 17, 2008

I used PGR from a gadget in a demo and it worked beautifully. Great work, thanks! If our demo turns into a fully fledged project, would it be advisable using PGR in a production environment? Couldn't find anything wrong but the fact that it is version 0.3.1 tends to make managers nervous.

I would also like to know how far the Python generator is and how you were planning to do this. If you had some ideas around Eclipse I may be able to help.

Comment by project member maj...@gmail.com, Jul 21, 2008

The 1.0 version will be release when generator will be finished, and all knows bugs and requirements will be realized.

"Generator is mostly done. We have to integrate it into PGR but I will be able to complete it only in few weeks." - Michael

Comment by maoyang....@gmail.com, Aug 3, 2008

if I used this library , Did my Web app which build on GAE need to opensource ?

Comment by project member maj...@gmail.com, Aug 4, 2008

Hello maoyang.chien

If You only use this library, Web app which build on GAE do not need to be opensource. But if you will create new library/framework based on PGR and You will want to publish them then your library need to be opensource.

Comment by khanse...@gmail.com, Aug 12, 2008

I've been looking to pass datastore objects directly back to GWT without writing routines to explicitly convert them to DTO objects.

I found this possible, at least on the dev_appserver, as long as I precede the keys in the serialization dict with an underscore.

I've just started working with this and thought I'd raise the concept.

class TestDto(db.Model):
    tileStr = db.StringProperty(required = True)
    tileIndex = db.IntegerProperty(required = True)
    tileCount = db.IntegerProperty(required = True)
    
    __serialization__ = {
       "_tileIndex": core.Types.INT,
       "_tileCount": core.Types.INT,
       "_tileStr": core.Types.STRING,
    }

Comment by yfa...@gmail.com, Sep 4, 2008

What are the benefits of using this approach vs. JSON.

Thank you.

Comment by project member maj...@gmail.com, Sep 9, 2008

Hello yfaihe

Regular Gwt RPC, with async and sync interfaces, full object-oriented, type safe (GWT 1.5), server side exceptions support, simple automated object to object (Java to Python and Python to Java) conversion without additional object layer, etc.

Comment by jbo...@gmail.com, Sep 14, 2008

Hi guys,

I am very interested in what you are doing, but I'm new to GAE and I'm very confused about how to get started.

I've struggle to figure out how to get the example up and running in eclipse, but I can't debug GWT in hosted mode. Is it possible?

Thank you

Comment by clement...@gmail.com, Sep 14, 2008

I am proficient in GWT, but not in python. I'm desperately trying to set this working but to no avail.

Can anyone provide a better tutorial on using this library? What is the pgr-generator? How to find signatureMap data? I can't find it even though i compiled in pretty mode. So many questions.

I feel this library is great, but I need clearer documentation. Anyone willing to help me? I am willing to contribute after I get it up and running.

Comment by project member maj...@gmail.com, Sep 15, 2008

Hello

1. PGR is only library for simplicity services and data transfer layer between 'java/javascript' client side code and python server side code. This tool doesn't compile java to python. If someone want write application for GAE, have to know python language and GAE api.

2. I work on generator tool for automatically generate some server side code: sinatures map, 'abstract' implementation of services, value objects (vo/dto) classes. (For advanced: first implementation is already available by svn) So I don't want work on documentation for old solution.

3. Target tool will have: - simple example inside, - project creator tool (eclipse/netbeans/ant/idea), - gwt library (deferred binding using generators) - new documentation (for new, and for already existing gwt projects)

jbochi Debuging for client side will be available by GWT shell as in any gwt application. Server side debuging will be available by python debugger (http://code.google.com/search/#p=appengine&q=debugging).

clementyew Sometimes (when app doesn't have services, or services use only primitives as parameters or return type) GWT doesn't generate signatureMap, in this case put empty signatures dict to your python code: signatures = {}

Comment by jbo...@gmail.com, Sep 16, 2008

Hi Majo44. I've figured out by myself how to get everything up and running, but thank you very much anyway.

Keep up the good work!

Comment by clement...@gmail.com, Sep 20, 2008

Hi,

I managed to run the example. However, when I tried doing one myself (New GWT project, with different package name org.gaegwt.client), then, I change the python package from pl/simpatico/pgrexample/client into org/gaegwt/client.

When I change, the RPC doesn't work. My question is, how do I change the package and directory name instead of using pl.simpatico.pgrexample?

Please help me solve this little problem. Thanks.

Comment by project member maj...@gmail.com, Sep 25, 2008

Hi clementyew,

The modules/packages structure on python side must be the same as in java gwt code. Gwt in rpc serialized stream send full name (include package) of requested service interface, pgr on server side look for the python class in the same package/module, with the same name. Also vo's names are send in rpc serialized stream so pgr look for classes in exactly the same package/module.

e.g.

if gwt service interface is org.gaegwt.client.ServiceA the python source file must be in org/gaegwt/client.py file and have declared python class ServiceA

So if you want change packages/modules structure, you must at first change it in java/gwt sources.

Comment by peter.od...@gmail.com, Sep 26, 2008

Great initiative. Up until now, open-source community has democratized the production of internet services. That is, by making the tools available for free, anyone (within reason) can do the necessary programming. Now, the python-gwt-rpc project is a real enabler on the way to democratizing the distribution (GAE) of internet services. Big words, I know, but I do not feel ashamed writing them.

GWT (free to use. java.) and GAE (free to use. python.) in combination has a tremendous potential, and right in the middle sits this project and merges them into a whole that is much bigger than the sum of its parts.

So, when is the next release coming?

Comment by clement...@gmail.com, Sep 27, 2008

Hi Majo44,

I still can't get it to work. Here's wat I've done.

1. My GWT structure :

package org.test.client ----- RPCService.java package org.test.client.vo -- BlogEntry?.java

2. Python :

/org/test/client.py ----- RPCService defined here /org/test/client/vo.py ----- BlogEntry? defined here

3. Copy signatureMap and paste into sig.py

4. appcfg.py update folder into appengine.

Here's the error log from within appengine :

No module named org.test.client.vo File "/base/data/home/apps/clement-yew/2.8/pgr/core.py", line 823, in import_module

mod = import(name)
ImportError?: No module named org.test.client.vo Can't find or load package (module) 'org.test.client.vo'

I've tried this thing the whole day today. Too frustrated that's why i asked for help. Oh ya, I didn't use the build.xml provided. I compiled the GWT in netbeans, then copy the files over. The pgr library I juz copy and put as a folder only.

Hope you can help me. Appreciate it a lot.

Thanks in advance.

Comment by clement...@gmail.com, Sep 28, 2008

Well, I finally figured out what's wrong. I realized i didn't put the file init.py in all subdirectories. Didn't expect that it's important.

Solved the problem. Planning on posting up a tutorial on using this library shortly.

Keep it up with the great job! This is a noble and useful project. I hope to see it mature in the future. :)

Comment by project member maj...@gmail.com, Oct 3, 2008

hello

I publish first preview of new pgr with generator tool, have a fun :) give me feedback.

P.S. Do not ask for documentation :)

Comment by henning....@gmail.com, Oct 3, 2008

Hi, just wanted to say thanks: Your project is great and helped me a lot getting GWT and AppEngine? to work together.

Now I will try the new release with the generator. Henning

Comment by nistem, Oct 9, 2008

I do not need pgr.properties to be in my basedir to build the sources as I have an own build.properties but pgr.jar swears if this file is not present in my basedir.

Comment by project member maj...@gmail.com, Oct 10, 2008

I still looking for the best way to provide destinationDir property to pgr.jar, thats way now the pgr.properties file is required (with pgr.destinationDir property). This is really non comfortable solution. In next release I will chage this: 1. adding default destinationDir (e.g. .pgr-tmp, or some other related to gwt compilation output dir) 2. this property will be able to overwrite by enviroment variable

Comment by nevin.fr...@gmail.com, Oct 26, 2008

I'm having some trouble passing a simple Boolean value from GAE to GWT. It seems that whether I pass it on its own or as part of a DTO, the value is not preserved, and the object is == null when I try and reference it client side. This is with the non-generator release. Has anyone else had trouble with this?

Comment by cirrus.p...@gmail.com, Nov 12, 2008

Hi, I can't make it work. I followed the example with a very simple service(a "sumInts" method without parameters and returning a boolean). I have this exception:

com.google.gwt.user.client.rpc.StatusCodeException?: Traceback (most recent call last): File "D:\google_appengine\google\appengine\ext\webapp\init.py", line 501, in call handler.post(groups) File "D:\workspace_JEE\Cirrus\build\cirrus.Cirrus\pgr\core.py", line 147, in post req = rr.readRequest(self.request.body) File "D:\workspace_JEE\Cirrus\build\cirrus.Cirrus\pgr\core.py", line 262, in readRequest gwtRpcRequest.version = self.readInt() File "D:\workspace_JEE\Cirrus\build\cirrus.Cirrus\pgr\core.py", line 321, in readInt return int(v) ValueError?: invalid literal for int() with base 10: '5|0|4|http://localhost:8080/|5BA8A5B3E35F40698BB0BF65F390BCF2|cirrus.client.services.CirrusMainService|sumInts|1|2|3|4|0|'

I need a bit of help !!! Thanks.

Comment by dsadi...@gmail.com, Nov 26, 2008

Hi cirrus.project, I think there is a problem in core.py with the delimiter character. I had to change line 246 to this:

__token_separator__ = '|'

Maybe Google changed the rpc encoding with the latest app engine update...

Comment by Kenny.Ma...@gmail.com, Mar 21, 2009

Been about 6 months, any plans for a final 1.0 build?

Comment by project member maj...@gmail.com, Jun 17, 2009

Hello

Until the Google App Engine for Java was released this project is not evolve

Thanks all for your interest of this project but I don't see any good reason for evolve on this project. If you need some support, or want to elaborate PGR please contact me by email.


Sign in to add a comment
Powered by Google Project Hosting