Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #39 from mrspandex/master
Support deferred tasks in dev
  • Loading branch information
Pascal Voitot committed Feb 27, 2012
2 parents 4e66332 + bee9f17 commit baa08c8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 28 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Expand Up @@ -19,3 +19,7 @@ samples-and-tests/lists-with-gae/true
/.classpath
/.project
/.settings
/.idea
*.iml

play-framework
14 changes: 2 additions & 12 deletions src/play/modules/gae/GAEPlugin.java
@@ -1,19 +1,17 @@
package play.modules.gae;

import com.google.apphosting.api.ApiProxy;
import play.Logger;
import play.Play;
import play.PlayPlugin;
import play.cache.Cache;
import play.jobs.JobsPlugin;
import play.libs.IO;
import play.libs.Mail;
import play.mvc.Router;

import javax.mail.Session;
import java.io.File;
import java.util.*;

import com.google.apphosting.api.ApiProxy;
import java.util.Properties;

public class GAEPlugin extends PlayPlugin {

Expand All @@ -23,14 +21,6 @@ public class GAEPlugin extends PlayPlugin {
@Override
public void onLoad() {
// Remove Jobs from plugin list
/*
* OLD WAY TO DISABLE PLUGINS
for (ListIterator<PlayPlugin> it = Play.plugins.listIterator(); it.hasNext();) {
PlayPlugin p = it.next();
if (p instanceof JobsPlugin) {
it.remove();
}
}*/
Play.pluginCollection.disablePlugin(play.jobs.JobsPlugin.class);

// Create a fake development environment if not run in the Google SDK
Expand Down
45 changes: 29 additions & 16 deletions src/play/modules/gae/PlayDevEnvironment.java
@@ -1,31 +1,42 @@
package play.modules.gae;

import com.google.appengine.api.datastore.dev.LocalDatastoreService;
import com.google.appengine.tools.development.ApiProxyLocal;
import com.google.appengine.tools.development.ApiProxyLocalFactory;
import com.google.appengine.tools.development.LocalServerEnvironment;
import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalTaskQueueTestConfig;
import com.google.apphosting.api.ApiProxy;
import com.google.apphosting.api.ApiProxy.Environment;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import play.Play;
import play.mvc.Http;
import play.mvc.Scope.Session;
import play.server.Server;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class PlayDevEnvironment implements Environment, LocalServerEnvironment {

public static PlayDevEnvironment create() {
PlayDevEnvironment instance = new PlayDevEnvironment();
ApiProxyLocalFactory factory = new ApiProxyLocalFactory();
ApiProxyLocal proxy = factory.create(instance);
proxy.setProperty(
LocalDatastoreService.BACKING_STORE_PROPERTY,
Play.getFile("tmp/datastore").getAbsolutePath());
ApiProxy.setDelegate(proxy);
ApiProxy.setDelegate(proxy);

// Save datastore file in tmp/
LocalDatastoreServiceTestConfig datastoreConfig = new LocalDatastoreServiceTestConfig();
datastoreConfig.setNoStorage(false);
datastoreConfig.setBackingStoreLocation(Play.applicationPath + "/tmp/datastore");
datastoreConfig.setUp();

// Use local implementation for deferred queues
LocalTaskQueueTestConfig taskQueueConfig = new LocalTaskQueueTestConfig();
taskQueueConfig.setDisableAutoTaskExecution(false);
taskQueueConfig.setShouldCopyApiProxyEnvironment(true);
taskQueueConfig.setCallbackClass(LocalTaskQueueTestConfig.DeferredTaskCallback.class);
taskQueueConfig.setUp();

return instance;
}

Expand All @@ -41,21 +52,25 @@ public String getVersionId() {

@Override
public String getEmail() {
return Session.current().get("__GAE_EMAIL");
if(Session.current() != null) {
return Session.current().get("__GAE_EMAIL");
} else {
return "no-session@gmail.com";
}
}

@Override
public boolean isLoggedIn() {
return Session.current().contains("__GAE_EMAIL");
return Session.current() != null && Session.current().contains("__GAE_EMAIL");
}

@Override
public boolean isAdmin() {
return Session.current().contains("__GAE_ISADMIN") && Session.current().get("__GAE_ISADMIN").equals("true");
return Session.current() != null && Session.current().contains("__GAE_ISADMIN") && Session.current().get("__GAE_ISADMIN").equals("true");
}

@Override
public String getAuthDomain() {
public String getAuthDomain() {
return "gmail.com";
}

Expand Down Expand Up @@ -97,13 +112,11 @@ public String getAddress() {

@Override
public boolean enforceApiDeadlines() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean simulateProductionLatencies() {
// TODO Auto-generated method stub
return false;
}

Expand Down

0 comments on commit baa08c8

Please sign in to comment.