why not simply put whatever it is into the httpsession, and then write
a getter in wicket's session that retrieves it from there? seems
simpler.

-igor

On Sat, Jan 9, 2010 at 4:07 AM, smallufo <small...@gmail.com> wrote:
> 2010/1/9 smallufo <small...@gmail.com>
>
>> Hi all :
>>
>> I'm trying to inject something to the Wicket Session by a Generic Servlet
>> Filter :
>>
>> public class UserFilter implements Filter
>> {
>>   private UserDao UserDao;
>>
>>   @Override
>>   public void init(FilterConfig config) throws ServletException
>>   {
>>     WebApplicationContext wac =
>> WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
>>     UserDao = (UserDao) wac.getBean("userDao");
>>   }
>>
>>   @Override
>>   public void doFilter(ServletRequest req, ServletResponse res, FilterChain
>> chain) throws IOException, ServletException
>>   {
>>
>>     System.out.println(getClass().getName() + " : UserDao = " + UserDao);
>>     // ... blah...
>>     // do something , get user from cookie , authenticate cookie , and set
>> it to Session
>>     // ... blah...
>>     MySession s = MySession.get(); // error occurs !
>>     chain.doFilter(req, res);
>>   }
>>
>>
>> It seems I cannot get Wicket's session outside wicket's request cycle.
>> I searched and found WicketSessionFilter , but it seems it is for
>> "Retrieving" objects from wicket's session , not for Filter to inject
>> something to wicket's session...
>>
>>
>>
> I've almost solve this problem by looking into
>  org.apache.wicket.protocol.http.servlet.WicketSessionFilter , and
> implements my Filter :
>
>
> public class UserFilter implements Filter
> {
>  private String sessionKey;
>  private UserDao userDao;
>
> �...@override
>  public void init(FilterConfig config) throws ServletException
>  {
>    WebApplicationContext wac =
> WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
>    userDao = (UserDao) wac.getBean("userDao");
>  }
>
> �...@override
>  public void doFilter(ServletRequest req, ServletResponse res, FilterChain
> chain) throws IOException, ServletException
>  {
>    HttpServletRequest httpServletRequest = ((HttpServletRequest)req);
>    // create a httpSession if there is no session
>    HttpSession httpSession = httpServletRequest.getSession(true);
>    WebApplication application = (WebApplication)Application.get("MyApp");
>
>    if (application != null)
>    {
>      sessionKey = application.getSessionAttributePrefix(null, "MyApp") +
> Session.SESSION_ATTRIBUTE_NAME;
>
>      //MySession extends WebSession
>      MySession mySession = (MySession)httpSession.getAttribute(sessionKey);
>
>      if (mySession != null)
>        mySession.setUser(getUserFromCookies(httpServletRequest));
>      else
>      {
>        //No mySession , need to create a MySession and inject to
> httpSession
>
>        MySession newSession = new MySession(application , ????????????); //
> <----------------- How to get Request ?
>        newSession.setUser(getUserFromCookies(httpServletRequest));
>        httpSession.setAttribute(sessionKey, newSession);
>      }
>    }
>    chain.doFilter(req, res);
>  }
> }
>
>
> The problem is : when there is no Wicket's session , how do I create a
> Wicket's session outside wicket's request cycle ?
> WebSession needs a "org.apache.wicket.Request" to  construct  , how do I get
> this Request in the filter  ?
>
> Thanks a lot.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to