package de.twenty11.skysail.server.ext.facebook;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.twenty11.skysail.server.core.restlet.RouteBuilder;
import de.twenty11.skysail.server.ext.facebook.resources.FacebookRootResource;
import de.twenty11.skysail.server.ext.facebook.resources.FriendsResource;
import de.twenty11.skysail.server.ext.facebook.resources.MeResource;
import de.twenty11.skysail.server.restlet.SkysailApplication;
import de.twenty11.skysail.server.services.ApplicationProvider;
/**
* The restlet application defined in this bundle.
*
*/
public class FacebookApplication extends SkysailApplication implements ApplicationProvider {
private EntityManagerFactory emf;
private Map<String, String> facebookLogins = new HashMap<String, String>();
private static Logger logger = LoggerFactory.getLogger(FacebookApplication.class);
public FacebookApplication() {
super();
setDescription("RESTful skysail.server.ext.facebook bundle");
setOwner("twentyeleven");
setName("facebook");
}
protected void attach() {
// @formatter:off
router.attach(new RouteBuilder("", FacebookRootResource.class).setVisible(false));
router.attach(new RouteBuilder("/me", MeResource.class).setText("Me").setVisible(true));
router.attach(new RouteBuilder("/me/friends", FriendsResource.class).setVisible(false));
// @formatter:on
}
public EntityManager getEntityManager() {
return this.emf != null ? this.emf.createEntityManager() : null;
}
public synchronized void setEntityManager(EntityManagerFactory emf) {
this.emf = emf;
}
public void setAccessToken(String identifier, String token) {
facebookLogins.put(identifier, token);
}
public String getAccessToken(String identifier) {
return facebookLogins.get(identifier);
}
public void logoutUser(String currentUser) {
facebookLogins.remove(currentUser);
}
}