package com.github.windbender.auth;
import java.lang.reflect.Type;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import com.github.windbender.domain.Project;
import com.github.windbender.domain.User;
import com.sun.jersey.api.core.HttpContext;
import com.sun.jersey.core.spi.component.ComponentContext;
import com.sun.jersey.core.spi.component.ComponentScope;
import com.sun.jersey.server.impl.inject.AbstractHttpContextInjectable;
import com.sun.jersey.spi.inject.Injectable;
import com.sun.jersey.spi.inject.InjectableProvider;
@Provider
public class SessionCurProjProvider implements InjectableProvider<SessionCurProj, Type>{
private static class CurrentProjectInjectable extends AbstractHttpContextInjectable<Project> {
HttpServletRequest request;
private CurrentProjectInjectable(HttpServletRequest request) {
this.request = request;
}
@Override
public Project getValue(HttpContext c) {
final Project project = (Project) request.getSession().getAttribute("current_project");
return project;
}
}
private final HttpServletRequest request;
public SessionCurProjProvider(@Context HttpServletRequest request) {
this.request = request;
}
@Override
public Injectable<Project> getInjectable(ComponentContext cc, SessionCurProj a, Type c) {
if (c.equals(Project.class)) {
return new CurrentProjectInjectable(request);
}
return null;
}
@Override
public ComponentScope getScope() {
return ComponentScope.PerRequest;
}
}