/** * */ package com.androidrocks.bex.server.servlet.test; import com.androidrocks.bex.client.json.Book; import com.androidrocks.bex.client.json.Friend; import com.androidrocks.bex.client.json.TwitterId; import com.androidrocks.bex.server.manager.PMF; import com.androidrocks.bex.server.manager.TypeFactory; import com.androidrocks.bex.server.manager.UserManager; import com.androidrocks.bex.server.manager.test.DataMockFactory; import com.androidrocks.bex.server.persistent.BEXFriend; import com.androidrocks.bex.server.persistent.TradeBook; import com.androidrocks.bex.server.persistent.TwitFriend; import com.androidrocks.bex.server.persistent.User; import com.androidrocks.bex.server.persistent.WishBook; import com.androidrocks.bex.server.persistent.WishMatch; import com.androidrocks.bex.server.servlet.ServletHelper; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Key; import com.google.gson.Gson; import twitter4j.TwitterException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Logger; /** * @author muthu */ public class TestServlet extends HttpServlet { private static final Logger log = Logger.getLogger(TestServlet.class .getName()); /* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } /* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String action = getServletConfig().getInitParameter("action"); String name = "mobeegal"; String token = "14281625-NkNfzTWZ5yNTEP1rddHM7NHTQ1V7i6xG3ECAF9l84"; if ("user_insert".equalsIgnoreCase(action)) { List<User> users = DataMockFactory.saveMockUsers(); resp.getWriter().print(new Gson().toJson(users)); } else if ("twit_friends".equalsIgnoreCase(action)) { List<TwitFriend> friends = DataMockFactory.saveTwitFriends(); assert PMF.loadObjectById(TwitFriend.class, friends.get(0).getKey()) != null; } else if ("friends_update".equalsIgnoreCase(action)) { // dealing with friends.. so retrieve the friends collection in advance User user = UserManager.loadUserWithFriends(name, token); try { UserManager.fetchTwitterFriends(user); // UserManager.loadUserWithTwitFriends(user); /* Set<Key> keys1 = user.getTwitFriends(); for (Key key : keys1) { log.info("Twit Friends: "+key); log.info(PMF.get().getPersistenceManager().getObjectById(TwitFriend.class, key).toString()); } Extent extent = PMF.get().getPersistenceManager().getExtent(TwitFriend.class); for (Object o : extent) { log.info("Twit Friends by Extent: "+((TwitFriend)o).getKey()); log.info(PMF.get().getPersistenceManager().getObjectById(TwitFriend.class, ((TwitFriend)o).getKey()).toString()); } extent.closeAll(); */ Map<Key, Entity> entities = PMF.get(user.getTwitFriends()); // List<Friend> jsonFriends = FriendManager.fetchTwitFriends (user.getTwitFriends()); // prepare the output List<com.androidrocks.bex.client.json.Friend> jsonFriends = TypeFactory.entitiesToJsonFriends(entities); resp.getWriter().print(TypeFactory.toJson(jsonFriends, TypeFactory.FRIEND_LIST_TYPE)); } catch (TwitterException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. ServletHelper.onRequestFailure(req, resp, e); } } else if ("friends".equalsIgnoreCase(action)) { User user = UserManager.loadUserWithTwitFriends(name, token); User user2 = UserManager.loadUserWithBEXFriends(name, token); // UserManager.loadUserFriends(user2); Map<Key, Entity> entities = PMF.get(user.getTwitFriends()); List<com.androidrocks.bex.client.json.Friend> jsonFriends = TypeFactory.entitiesToJsonFriends(entities); resp.getWriter().print(TypeFactory.toJson(jsonFriends, TypeFactory.FRIEND_LIST_TYPE)); List<Friend> friends2 = UserManager.fetchBEXFriends (user); resp.getWriter().print(TypeFactory.toJson(friends2, TypeFactory.FRIEND_LIST_TYPE)); resp.getWriter().println(""); resp.getWriter().println("========================================================"); // resp.getWriter().print(TypeFactory.toJson(user2.getTwitFriends(), TypeFactory.FRIEND_LIST_DATA_TYPE)); } else if ("friends_delete".equalsIgnoreCase(action)) { User user = UserManager.loadUser(name, token); if (null == user) { ServletHelper.onRequestFailure(req, resp, new NullPointerException("User is NULL")); } else { user.getBexFriends().clear(); user.getTwitFriends().clear(); // user.getFriends().clear(); PMF.makePersistent(user); resp.getWriter().print(user); } } else if ("bexfriends_insert".equalsIgnoreCase(action)) { Set<Key> friends = DataMockFactory.saveMockBEXFriends(); for (Key friend : friends) { resp.getWriter().println("Friend: "+PMF.get().getPersistenceManager().getObjectById(BEXFriend.class, friend)); } // prepare the output // resp.getWriter().print(books); } else if ("wishlist_insert".equalsIgnoreCase(action)) { Set<Key> books = DataMockFactory.saveMockWishList(); for (Key book : books) { resp.getWriter().println("Book: "+PMF.get().getPersistenceManager().getObjectById(WishBook.class, book)); } // prepare the output // resp.getWriter().print(books); } else if ("wishmatch_insert".equalsIgnoreCase(action)) { WishMatch wishMatch = DataMockFactory.saveMockWishMatch(); // prepare the output resp.getWriter().print(wishMatch); } else if ("wishmatch_delete".equalsIgnoreCase(action)) { WishMatch wishMatch = DataMockFactory.saveMockWishMatch(); PMF.delete (wishMatch); // prepare the output resp.getWriter().print(wishMatch); } else if ("tradelist_insert".equalsIgnoreCase(action)) { User user = UserManager.loadUser(name, token); if (null == user) { ServletHelper.onRequestFailure(req, resp, new NullPointerException("User is NULL")); } else { List<TradeBook> books = DataMockFactory.mockTradeList(); // user.setTradeList(books); PMF.makePersistent(user); // books = user.getTradeList(); // prepare the output resp.getWriter().print(books); } } else { Gson gson = new Gson(); TwitterId twitterId = new TwitterId(); twitterId.setScreenName("Testing TwitterId Screename with GSON"); String json = gson.toJson(twitterId); resp.getWriter().print(json); twitterId = gson.fromJson(json, TwitterId.class); json = gson.toJson(twitterId); resp.getWriter().print(json); Book book = DataMockFactory.mockClientBook(); json = gson.toJson(book, Book.class); log.info("Book Json: " + json); resp.getWriter().print(json); book = gson.fromJson(json, Book.class); json = gson.toJson(book, Book.class); resp.getWriter().print(json); com.androidrocks.bex.client.json.Friend friend = new com.androidrocks.bex.client.json.Friend(); json = gson.toJson(friend, com.androidrocks.bex.client.json.Friend.class); } } }