Package net.cloudcodex.server.rpc

Source Code of net.cloudcodex.server.rpc.AbstractRPC

package net.cloudcodex.server.rpc;

import net.cloudcodex.server.Context;
import net.cloudcodex.server.data.AdvancedDAO;
import net.cloudcodex.server.data.Data;
import net.cloudcodex.server.service.CampaignService;
import net.cloudcodex.server.service.HomeService;
import net.cloudcodex.server.service.MessageService;
import net.cloudcodex.shared.dto.Result;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

/**
* Abstract RPC class, to provide utility methods.
*
* @author Thomas.
*/
public class AbstractRPC extends RemoteServiceServlet {

  protected final DatastoreService datastore =
    DatastoreServiceFactory.getDatastoreService();

  protected final AdvancedDAO dao = new AdvancedDAO(datastore);

  protected final HomeService homeService = new HomeService(datastore);

  protected final CampaignService campaignService = new CampaignService(datastore);

  protected final MessageService messageService = new MessageService(datastore);

  /**
   * Try to find the current user in datastore.
   * @return
   */
  protected Data.User findCurrentUser() {
   
    // use appengine USerService.
    final UserService userService = UserServiceFactory.getUserService();
    final User guser = userService.getCurrentUser();

    if(guser == null) {
      return null;
    }
   
    final String userId = guser.getUserId();
    if(userId == null) {
      return null;
    }
   
    // Search the user with its google id.
    Data.User user = homeService.getUserByGoogleId(null, userId);

    if(user == null) {
      final String email = guser.getEmail();
      if(email == null) {
        return null;
      }
     
      // Search the user with its email.
      user = homeService.getUserByEmail(null, email);
    }
   
    return user;
  }
 
  /**
   * Utility method to create a Context object.
   * @return the context or null.
   */
  protected Context createContext() {
   
    final Data.User user = findCurrentUser();
    return new Context(user);
  }
 
  protected <T> Result<T> createResult(Context context, T data) {
    return new Result<T>(!context.hasErrors(), context.getErrors(), data);
  }
}
TOP

Related Classes of net.cloudcodex.server.rpc.AbstractRPC

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.