Hi Johannes,

Thanks for clearly exposing your issue. 

Regarding the missing entity, you should try again with Restlet 2.0 M5 which
fixed this bug (it used to work in hosted mode but not in compiled mode). If
it still doesn't work, please let us know.

Regarding transparent serialization, we are working on this already, see
this RFE:

"Transparent serialization to JSE, GWT, GAE and Android"
http://restlet.tigris.org/issues/show_bug.cgi?id=831

Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~ http://www.restlet.org
Noelios Technologies ~ Co-founder ~ http://www.noelios.com


-----Message d'origine-----
De : Johannes Peeters [mailto:[email protected]] 
Envoyé : mardi 8 septembre 2009 22:31
À : [email protected]
Objet : Restlet GWT issue with Response.getEntity()

Hi,

I am struggling to get the Restlet GWT to query my rest service  
(provided by resteasy, but I can't change this implemenation). I made  
a minimal example which calls the rest service (stripped some GWT  
code), which unfortunately does not work.

public class My_frontend_gwt implements EntryPoint {
     public void onModuleLoad() {
         final Button myButton = new Button("My");
         myButton.addClickListener(new ClickListener() {
             public void onClick(Widget sender) {
                 final Client client = new Client(Protocol.HTTP);
 
client.get("http://localhost:8088/com.myapp/rest/books/books.xml 
",
                                 new Uniform() {
                                     public void handle(Request  
request, Response response, Uniform callback) {
                                         try {
                                              
nameField.setText(response.getEntity().getText());
                                         } catch (IOException e) {
                                             e.printStackTrace();
                                         }
                                     }
                                 });
             }
         });
}

When I invoke the rest service with a curl call, I get (curl
http://localhost:8088/com.myapp/rest/books/books.xml) 
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"? 
 ><collection><book><id_>1</id_><title>test1</title></ 
book><book><id_>2</id_><title>test2</title></book></collection>

I am sure the service is also called from the GWT applications, since  
I see a hibernate query log passing:
Hibernate: select book0_.id_ as id1_84_, ... from Book book0_

But the entitiy in the Response object in the handle method equals  
null, which causes the getText() method to fail (I also tried  
getEntityAsXml() instead of getEntity()). So, the results are not fed  
back into the response, in my opinion.

I am running this test with org.restlet.jar from restlet-gwt-2.0m4,  
which is the only lib in my classpath. The imports I am using are
import org.restlet.Client;
import org.restlet.Uniform;
import org.restlet.data.Protocol;
import org.restlet.data.Request;
import org.restlet.data.Response;


When using org.restlet.gwt-2.0-M3.jar from the maven repository and  
the following snippet, the entity in my Response is still null, and  
the GWT hosted mode provides me with the error shown below.

import org.restlet.gwt.Callback;
import org.restlet.gwt.Client;
import org.restlet.gwt.data.Protocol;
import org.restlet.gwt.data.Request;
import org.restlet.gwt.data.Response;

public class My_frontend_gwt implements EntryPoint {
     public void onModuleLoad() {
         final Button myButton = new Button("My");
         myButton.addClickListener(new ClickListener() {
             public void onClick(Widget sender) {
                 final Client client = new Client(Protocol.HTTP);
 
client.get("http://localhost:8088/com.myapp/rest/books/books.xml 
",
                                 new Callback() {
                                     public void onEvent(Request  
request, Response response) {
                                          
nameField.setText(response.getEntityAsXml().getText());
                                     }
                                 });
             }
         });
}


Error with stacktrace:

[ERROR] Uncaught exception escaped
java.lang.NullPointerException: null
        at com.myapp.gwt. My_frontend_gwt
$1$1.onEvent(My_frontend_gwt.java:75)
        at org.restlet.gwt.engine.http.HttpClientConverter 
$1.onEvent(HttpClientConverter.java:383)
        at org.restlet.gwt.engine.http.GwtHttpClientCall 
$2.onResponseReceived(GwtHttpClientCall.java:234)
        at  
com 
.google 
.gwt.http.client.Request.fireOnResponseReceivedImpl(Request.java:264)
        at  
com 
.google 
.gwt.http.client.Request.fireOnResponseReceivedAndCatch(Request.java: 
236)
        at  
com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java: 
227)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
        at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:

103)
        at  
com.google.gwt.dev.shell.mac.MethodDispatch.invoke(MethodDispatch.java: 
71)
        at org.eclipse.swt.internal.carbon.OS.ReceiveNextEvent(Native
Method)
        at
org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2909)
        at  
com 
.google.gwt.dev.SwtHostedModeBase.processEvents(SwtHostedModeBase.java: 
235)
        at  
com.google.gwt.dev.HostedModeBase.pumpEventLoop(HostedModeBase.java:558)
        at com.google.gwt.dev.HostedModeBase.run(HostedModeBase.java:405)
        at com.google.gwt.dev.HostedMode.main(HostedMode.java:232)



So, as a starter, I would like to get to the plain xml result in my  
response (which is now giving me the NullPointerException). But it  
would be even better if I can get an automatic translation between the  
xml result and a set of java pojo's that I will make available for  
GWT, analogous to what Resteasy does to go from my jpa model to the  
xml representation (with XmlAdapters for the classes that have no  
default serialization in jaxb).

A long post, but I could not bring the message without this  
elaboration. Let me know if I need certain aspects need more  
clarification.

Thanks,
Johannes

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=23926
43

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2401619

Reply via email to