1.5.1 SDK Prerelease

487 views
Skip to first unread message

Johan Euphrosine

unread,
Jun 15, 2011, 5:19:32 AM6/15/11
to google-a...@googlegroups.com, google-appe...@googlegroups.com, google-app...@googlegroups.com
Hi everyone,

Prerelease SDK for 1.5.1 is ready for testing, feel free to download
and give it a try for local verification:
http://code.google.com/p/googleappengine/downloads/list

See release notes below: notice ProtoRPC, Channel API presence, WebP
support, X-AppEngine-Country header and a lot of bug fixes.

Happy testing!

Python
============================
- ProtoRPC is a new experimental library that provides a simple method for
creating a well-defined and easy-to-use web-based RPC service.
- The development server's datastore implementation now contains logic that
closely replicates the consistency guarantees of the High Replication
datastore. To use, run the dev_appserver with the flag --high_replication set
to True.
- All user request have an X-AppEngine-Country header which contains the
ISO-3166-1 alpha-2 country code for the user, based on the IP address of the
client request.
- The Channel API can now provide user presence, this can be configured by
adding channel_presence to the list of inbound services for your application.
- The Images API now supports the WebP format. Due to limitations in PIL, the
SDK does not support the WebP format.
- You can switch the timezone for App Engine logs in the Admin Console.
http://code.google.com/p/googleappengine/issues/detail?id=734
- Fixed an issue in the SDK where leased tasks had the POST method. They now
have a PULL method.
- Fixed an issue where the Channel API didn't work with non-default versions of
applications using the High Replication datastore.
- When displaying corrupt data in the Admin Console dataviewer, a useful error
will be displayed, instead of a 500.
http://code.google.com/p/googleappengine/issues/detail?id=4945

Java
=============
- The development server's datastore and testing service implementations now
contains logic that closely replicates the consistency guarantees of the High
Replication datastore. To use, run the dev_appserver with the flag
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20.
- All user request have an X-AppEngine-Country header which contains the
ISO-3166-1 alpha-2 country code for the user, based on the IP address of the
client request.
- The Channel API can now provide user presence, this can be configured by
adding channel_presence to the list of inbound services for your application.
- The Images API now supports the WebP format.
- You can switch the timezone for App Engine logs in the Admin Console.
http://code.google.com/p/googleappengine/issues/detail?id=734
- Added javax.xml.ws.Service$Mode to the whitelist.
http://code.google.com/p/googleappengine/issues/detail?id=4770
- You can configure your application to asynchronously write https session data
by adding <async-session-persistence enabled="true"/> to your
appengine-web.xml.
http://code.google.com/p/googleappengine/issues/detail?id=1692
- The local task queue unit testing API now supports Deferred Tasks.
- Fixed an issue where using reserved URLs did not cause an error in the SDK.
- Fixed an issue where having a backends.xml configuration file caused logging
to stdout to fail in the SDK.
- Fixed an issue where the Channel API didn't work with non-default versions of
applications using the High Replication datastore.
- Fixed an issue where the Remote API rtok comparison was broken for some users,
causing appfcg download data to fail.
- Fixed an issue with the SDK where you could not apply a transform to PNG
images.
http://code.google.com/p/googleappengine/issues/detail?id=3458
- When displaying corrupt data in the Admin Console dataviewer, a useful error
will be displayed, instead of a 500.
http://code.google.com/p/googleappengine/issues/detail?id=4945
- Fixed an issue with the SDK where non-string index names caused an error upon
upload.
http://code.google.com/p/googleappengine/issues/detail?id=5004
- Datanucleus now supports polymorphic relationships.
http://code.google.com/p/datanucleus-appengine/issues/detail?id=153
- Datanucleus now supports PreparedQuery#countEntities(FetchOptions).
http://code.google.com/p/datanucleus-appengine/issues/detail?id=225
- Fixed an issue with datanucleus where recursive relation did not work.
http://code.google.com/p/datanucleus-appengine/issues/detail?id=80
--
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

Dan Dubois

unread,
Jun 15, 2011, 10:36:01 AM6/15/11
to google-a...@googlegroups.com, google-appe...@googlegroups.com, google-app...@googlegroups.com
Great news!
 
Where can I find more information about the Channel API's user presence functionality?
 
Best wishes,
Dan

Nischal Shetty

unread,
Jun 15, 2011, 8:43:00 PM6/15/11
to google-a...@googlegroups.com, google-appe...@googlegroups.com, google-app...@googlegroups.com
You guys fixed the Struts 2 issue! Thank you so much :)

Greg

unread,
Jun 15, 2011, 11:16:51 PM6/15/11
to Google App Engine
Local times for logs... YESSSSS! You don't know how much half-baked
mental arithmetic this is going to save me!

And the client location header is going to be really useful too.

Thanks!
Greg.

Mike

unread,
Jun 16, 2011, 5:10:12 AM6/16/11
to Google App Engine
On Jun 15, 10:19 am, Johan Euphrosine <pro...@google.com> wrote:

> - You can switch the timezone for App Engine logs in the Admin Console.
>  http://code.google.com/p/googleappengine/issues/detail?id=734

Hi there,

Currently that post has no updates since Feb 11. Is there any
documentation on this feature?

Thanks.

Pankaj Chawla

unread,
Jun 16, 2011, 1:32:08 PM6/16/11
to google-a...@googlegroups.com
Now that Channel API also have user presence functionality, I wonder whats the differentiator between
the XMPP and Channel Service. I havent digged deep as I never used Channel API till now for lack of
user presence but now it seems that it would serve the same purpose as XMPP? Expert comments?

Thanks
Pankaj 

--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-appengine/-/qRDPueEkmCIJ.

To post to this group, send email to google-a...@googlegroups.com.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.

Calvin

unread,
Jun 16, 2011, 3:36:05 PM6/16/11
to google-a...@googlegroups.com
Channel API is for sending messages "downstream" to web browsers.  It can't be used to send messages "upstream," except for the message "I just left."

XMPP can be used for bi-directional messaging, and also doesn't have to be hosted in a browser.  But it does need the client to provide a Jabber ID, which can be problematic.

If your client is purely browser-based it will be much easier to set up the Channel API + some AJAX posting to create a bi-directional messaging system.

Heiko Roth

unread,
Jun 17, 2011, 2:06:45 AM6/17/11
to Google App Engine

Jay Young

unread,
Jun 19, 2011, 1:25:55 PM6/19/11
to google-a...@googlegroups.com, google-appe...@googlegroups.com, google-app...@googlegroups.com
Just downloaded the new "appengine-java-sdk-1.5.1_prerelease.zip" and ran the dev_appserver, only to receive the following exception.  The Jetty server starts up as expected, but will only serve 503s.

WARNING: Failed startup of context com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@4463a1ae{/,/devel/rblog/WAR}
java.lang.NullPointerException
at com.google.appengine.tools.appstats.Recorder.checkNotNull(Recorder.java:365)
at com.google.appengine.tools.appstats.Recorder.<init>(Recorder.java:207)
at com.google.appengine.tools.appstats.Recorder.<init>(Recorder.java:197)
at com.google.appengine.tools.appstats.AppstatsFilter.init(AppstatsFilter.java:183)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:186)
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:162)
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:164)
at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:164)
at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)

Sahid Orentino Ferdjaoui

unread,
Jun 20, 2011, 4:29:47 AM6/20/11
to google-a...@googlegroups.com, google-appe...@googlegroups.com, google-app...@googlegroups.com
- All user request have an X-AppEngine-Country header which contains the
  ISO-3166-1 alpha-2 country code for the user, based on the IP address of the

Hello,

Just a question about the new header "X-AppEngine-Country" it is avalaible only if the users are registered with User API?

Owen Powell

unread,
Jun 20, 2011, 10:05:43 AM6/20/11
to google-a...@googlegroups.com, google-appe...@googlegroups.com, google-app...@googlegroups.com

- Datanucleus now supports polymorphic relationships.
  http://code.google.com/p/datanucleus-appengine/issues/detail?id=153


Can anyone explain to me how to use this? I've got a simple example that doesn't work (see below). Sofa extends Furniture, but when I try to persist a collection of furniture in a House, I get the following:

"java.lang.UnsupportedOperationException: Received a child of type modeltest.server.Sofa for a field of type modeltest.server.Furniture.  Unfortunately polymorphism in relationships is not yet supported."

I'm using the 1.5.1 SDK.

// imports
@PersistenceCapable
public class House {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
String id;

@Persistent ArrayList<Furniture> furniture;
House() {
furniture = new ArrayList<Furniture>();
furniture.add(new Sofa());
}

}

// imports...
@PersistenceCapable
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class Furniture {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
String id;

}

// imports
@PersistenceCapable
public class Sofa extends Furniture {

}

Best,

~Owen
Reply all
Reply to author
Forward
0 new messages