1 16 17 package com.google.inject.servlet; 18 19 import com.google.inject.Scope; 20 import com.google.inject.Provider; 21 import com.google.inject.Key; 22 23 import javax.servlet.http.HttpServletRequest ; 24 import javax.servlet.http.HttpSession ; 25 26 31 public class ServletScopes { 32 33 private ServletScopes() {} 34 35 38 public static final Scope REQUEST = new Scope() { 39 public <T> Provider<T> scope(Key<T> key, final Provider<T> creator) { 40 final String name = key.toString(); 41 return new Provider<T>() { 42 public T get() { 43 HttpServletRequest request = GuiceFilter.getRequest(); 44 synchronized (request) { 45 @SuppressWarnings ("unchecked") 46 T t = (T) request.getAttribute(name); 47 if (t == null) { 48 t = creator.get(); 49 request.setAttribute(name, t); 50 } 51 return t; 52 } 53 } 54 }; 55 } 56 57 public String toString() { 58 return "ServletScopes.REQUEST"; 59 } 60 }; 61 62 65 public static final Scope SESSION = new Scope() { 66 public <T> Provider<T> scope(Key<T> key, final Provider<T> creator) { 67 final String name = key.toString(); 68 return new Provider<T>() { 69 public T get() { 70 HttpSession session = GuiceFilter.getRequest().getSession(); 71 synchronized (session) { 72 @SuppressWarnings ("unchecked") 73 T t = (T) session.getAttribute(name); 74 if (t == null) { 75 t = creator.get(); 76 session.setAttribute(name, t); 77 } 78 return t; 79 } 80 } 81 }; 82 } 83 84 public String toString() { 85 return "ServletScopes.SESSION"; 86 } 87 }; 88 } 89 | Popular Tags |