[appengine-java] New book: Google App Engine Java and GWT Application Development

2010-12-03 Thread Daniel Guermeur
hi,

Some of you may be interested in a book I co-authored that has just
been published:
Google App Engine Java and GWT Application Development by Amy Unruh
and Daniel Guermeur, from Packt.

The book describes many of the techniques and approaches used to
develop GAE+GWT applications, and includes an app developed
throughout  the book as a running example. It has a particular focus
on some of the technologies useful for building scalable social-media-
oriented applications, including: MVP and UiBinder, using the Channel
API for push, using Facebook and Twitter OAuth for authorization, JDO,
the Task Queue, transactions and transactional tasks, Memcache, and
XMPP.


This is the Packt Publishing link:
- http://link.packtpub.com/5XWJBI

Book blog w/ table of contents:
- http://theconnectr.blogspot.com/

Enjoy.

-- Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Channel API still not live...

2010-09-19 Thread Daniel Guermeur
Hello there,

Google announced Channel API for 1.3.6 but it is still not live in
1.3.7. It runs in dev mode but when deployed I get a 'feature not
implemented' exception.

Does anyone has any updated on this? Google team?

Thank you.
Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] App Engine Channel API release date on production?

2010-09-12 Thread Daniel Guermeur
Hello there,

I thought Channel API would be enabled with v1.3.6. We are now at
v1.3.7, and I get an error when trying it:

Uncaught exception from servlet
com.google.apphosting.api.ApiProxy$FeatureNotEnabledException: The
channel service is not enabled.

Could anyone share some info regarding its release?

Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Dance Dance Robot error / Channel API

2010-07-28 Thread Daniel Guermeur
Thanks Don. Including dev-channel-js.js works perfectly.

Daniel

On Jul 27, 10:14 am, Don Schwarz schwa...@google.com wrote:
 Sorry, to be clear, I meant that you should create an /_ah/channel directory
 at the top of your war and copy dev-channel-js.js so it is a file named
 'jsapi' in that /_ah/channel directory.  This is the path that will work
 automatically in the 1.3.6 DevAppServer and in prod when this feature
 launches publicly.

 If you name the script something else (as you've done), that will work fine
 for now but you'll need to remember to adjust the path later.



 On Mon, Jul 26, 2010 at 9:47 PM, GoSharp Lite gosharpl...@gmail.com wrote:
  Thanks, Don. It works like a charm after I include below line in html.
  script src=/_ah/channel/jsapi/dev-channel-js.js/script

  On Jul 26, 11:03 pm, Don Schwarz schwa...@google.com wrote:
   Yes, this feature isn't launched in the production server yet.

   You can try it out in the 1.3.5 DevAppServer, but it requires a slightly
   workaround:

   Extract the apphosting/tools/dev-channel-js.js file from
   appengine-api-1.0-sdk-1.3.5.jar and move it to /_ah/channel/jsapi in your
   war directory (as if it were a static file).

   Your HTML should then use script src=/_ah/channel/jsapi.  You should
  not
   referencehttp://talkgadget.google.com/talkgadget/channel.jsdirectly.
   That
   path will never work in the DevAppServer.  The dance-dance-robot sample
  will
   be updated when 1.3.6 is launched and this works in the DevAppServer
  without
   the above workaround.

   On Mon, Jul 19, 2010 at 10:13 PM, GoSharp Lite gosharpl...@gmail.com
  wrote:

I have the same error using dev server.

If you deploy your app to production server, below error log shows
channel service is not enable.

exception: com.google.apphosting.api.ApiProxy
$FeatureNotEnabledException: The channel service is not enabled.

It seems we have to patiently wait:)

On Jul 20, 10:36 am, Daniel Guermeur superco...@gmail.com wrote:
 Thanks for the tip about channel.js. This is what I needed.

 Now I get an error when pushing a message to a client. I get this:

 com.google.appengine.api.channel.ChannelFailureException: An
 unexpected error occurred.
 Caused by: com.google.apphosting.api.ApiProxy$ApplicationException:
 ApplicationError: 2:

 Here is the stack trace. Let me know of any ideas you might have.

 Thanks!
 Daniel

 SEVERE: Failed to push the message
 com.metadot.book.stalkrapp.shared.mess...@1010a3b to client channel-
 a4kt0t-stalkrappt...@example.com-1
 com.google.appengine.api.channel.ChannelFailureException: An
 unexpected error occurred.
         at

  com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServ 
  iceImpl.java:
 59)
         at

  com.metadot.book.stalkrapp.server.PushServer.sendMessageToOneUser(PushServe 
  r.java:
 82)
         at

  com.metadot.book.stalkrapp.server.FriendsServiceImpl.getFriend(FriendsServi 
  ceImpl.java:
 283)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
  Method)
         at

  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
 39)
         at

  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp 
  l.java:
 25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at

  com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime 
  .java:
 100)
         at
 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
 562)
         at

  com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServi 
  ceServlet.java:
 188)
         at

  com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServi 
  ceServlet.java:
 224)
         at

  com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Abstract 
  RemoteServiceServlet.java:
 62)
         at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
         at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
         at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
 511)
         at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1166)
         at

  com.metadot.book.stalkrapp.server.servlets.LoginFilter.doFilter(LoginFilter 
  .java:
 31)
         at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1157)
         at

  com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFi 
  lter.java:
 51)
         at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1157)
         at

  com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans 
  actionCleanupFilter.java:
 43

[appengine-java] Re: Channel api / Dance dance robot: what is ApplicationError: 2:

2010-07-28 Thread Daniel Guermeur
Thanks Don. Works perfectly.

Here is a recap to summarize all the steps so others can do it too:

1. Extract the apphosting/tools/dev-channel-js.js file from
appengine-api-1.0-sdk-1.3.5.jar
2. Create a directory _ah/channel in your war directory
3. Rename dev-channel-js.js to jsapi and place it in _ah/channel dir.
4. In your main html file include this jsapi file with script src=/
_ah/channel/jsapi.


Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Channel api / Dance dance robot: what is ApplicationError: 2:

2010-07-24 Thread Daniel Guermeur
Hello there,

I am trying out the Channel API with my own project and the Google
demo app Dance Dance Robot. In both cases I get ApplicationError 2
when trying to push a message.  There is no doc but all libraries are
available in the lastest GAE release. Here is the error:

com.google.appengine.api.channel.ChannelFailureException: An
unexpected error occurred.
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException:
ApplicationError: 2:

See trace below.

What is ApplicationError2, how to fix it?

Any help / pointer would be appreciated.

Thanks.
Daniel

SEVERE: Failed to push the message
com.metadot.book.stalkrapp.shared.mess...@1010a3b to client channel-
a4kt0t-stalkrappt...@example.com-1
com.google.appengine.api.channel.ChannelFailureException: An
unexpected error occurred.
at
com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServ
iceImpl.java:
59)
at
com.metadot.book.stalkrapp.server.PushServer.sendMessageToOneUser(PushServe
r.java:
82)
at
com.metadot.book.stalkrapp.server.FriendsServiceImpl.getFriend(FriendsServi
ceImpl.java:
283)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
l.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime 
.java:
100)
at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
562)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServi
ceServlet.java:
188)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServi
ceServlet.java:
224)
at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Abstract
RemoteServiceServlet.java:
62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
806)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.metadot.book.stalkrapp.server.servlets.LoginFilter.doFilter(LoginFilter 
.java:
31)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFi
lter.java:
51)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans
actionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFile
Filter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEn
gineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at
com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:
755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:
218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:
404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException:
ApplicationError: 2:
at
com.google.appengine.api.channel.dev.LocalChannelService.sendChannelMessage
(LocalChannelService.java:
91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at

[appengine-java] Re: Dance Dance Robot error / Channel API

2010-07-19 Thread Daniel Guermeur
Thanks for the tip about channel.js. This is what I needed.

Now I get an error when pushing a message to a client. I get this:

com.google.appengine.api.channel.ChannelFailureException: An
unexpected error occurred.
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException:
ApplicationError: 2:

Here is the stack trace. Let me know of any ideas you might have.

Thanks!
Daniel


SEVERE: Failed to push the message
com.metadot.book.stalkrapp.shared.mess...@1010a3b to client channel-
a4kt0t-stalkrappt...@example.com-1
com.google.appengine.api.channel.ChannelFailureException: An
unexpected error occurred.
at
com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServiceImpl.java:
59)
at
com.metadot.book.stalkrapp.server.PushServer.sendMessageToOneUser(PushServer.java:
82)
at
com.metadot.book.stalkrapp.server.FriendsServiceImpl.getFriend(FriendsServiceImpl.java:
283)
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:597)
at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
100)
at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
562)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
188)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
224)
at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.metadot.book.stalkrapp.server.servlets.LoginFilter.doFilter(LoginFilter.java:
31)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException:
ApplicationError: 2:
at
com.google.appengine.api.channel.dev.LocalChannelService.sendChannelMessage(LocalChannelService.java:
91)
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:597)
at com.google.appengine.tools.development.ApiProxyLocalImpl

[appengine-java] Re: Dance Dance Robot error / Channel API

2010-07-17 Thread Daniel Guermeur
Yes it is in App Engine 1.3.5. Look in the jar. I've got the backend
working already. There is no doc, just classes.

Among other things here is what there is:

import com.google.appengine.api.channel.ChannelMessage;
import com.google.appengine.api.channel.ChannelService;
import com.google.appengine.api.channel.ChannelServiceFactory;

and it all works.

Daniel

On Jul 16, 6:42 pm, Rahul Ravikumar tikura...@gmail.com wrote:
 The Channel API for Google App Engine is not out yet!

 On Jul 15, 6:11 pm, Daniel Guermeur superco...@gmail.com wrote:



  Hello there,

  I am building a GWT+ GAE app based on Dance Dance Robot app, the demo
  Google IO demo app showcased at Google IO.

  I am using the Channel API (Java AppEngine 1.3.5) . I am almost there
  but there is one hick up on the GWT client side (Java):

  When running the app I get an error:
  ==
  - Uncaught exception escaped.
  com.google.core.client.JavaScriptException: (TypeError): $wnd.goog is
  undefined.
  ==

  This comes from the ChannelFactory.java on the client side. Here it
  is:

  public class ChannelFactory {
      public static final native Channel createChannel(String
  channelId) /*-{
        return new $wnd.goog.appengine.Channel(channelId);
      }-*/;

  }

  Again this is straight from the Dance Dance Robot demo app.

  I am pretty sure it is a stupid mistake on my part but can't find it.

  Any suggestion would be greatly appreciated.

  Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Dance Dance Robot error / Channel API

2010-07-15 Thread Daniel Guermeur
Hello there,

I am building a GWT+ GAE app based on Dance Dance Robot app, the demo
Google IO demo app showcased at Google IO.

I am using the Channel API (Java AppEngine 1.3.5) . I am almost there
but there is one hick up on the GWT client side (Java):

When running the app I get an error:
==
- Uncaught exception escaped.
com.google.core.client.JavaScriptException: (TypeError): $wnd.goog is
undefined.
==

This comes from the ChannelFactory.java on the client side. Here it
is:

public class ChannelFactory {
public static final native Channel createChannel(String
channelId) /*-{
  return new $wnd.goog.appengine.Channel(channelId);
}-*/;
}

Again this is straight from the Dance Dance Robot demo app.

I am pretty sure it is a stupid mistake on my part but can't find it.

Any suggestion would be greatly appreciated.


Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] TO GOOGLE GAE Java team: Book author looking for early access to next release (java)

2010-07-01 Thread Daniel Guermeur
Hello there

I am finishing a book on GWT + GAE with Packtpub. I would like to
include a chapter on **Browser Push (Comet) communication** feature.
This feature is 'on deck' as indicated on the GAE roadmap (http://
code.google.com/appengine/docs/roadmap.html). To write this chapter, I
would like to have an early access to the upcoming GAE Java release.

Could someone at Google help me with this?

Thank you so much.

Daniel

-- 
You received this message because you are subscribed to the Google Groups 
Google App Engine for Java group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.