⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlettest.java

📁 Guice是轻量级的依赖注入框架。简而言之
💻 JAVA
字号:
/** * Copyright (C) 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.google.inject.servlet;import com.google.inject.AbstractModule;import com.google.inject.CreationException;import com.google.inject.Guice;import com.google.inject.Injector;import com.google.inject.Key;import java.io.IOException;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import junit.framework.TestCase;import static org.easymock.EasyMock.createMock;import static org.easymock.EasyMock.eq;import static org.easymock.EasyMock.expect;import static org.easymock.EasyMock.isA;import static org.easymock.EasyMock.replay;import static org.easymock.EasyMock.verify;/** * @author crazybob@google.com (Bob Lee) */public class ServletTest extends TestCase {  public void testNewRequestObject()      throws CreationException, IOException, ServletException {    final Injector injector = createInjector();    GuiceFilter filter = new GuiceFilter();    final HttpServletRequest request = createMock(HttpServletRequest.class);    String name = Key.get(InRequest.class).toString();    expect(request.getAttribute(name)).andReturn(null);    request.setAttribute(eq(name), isA(InRequest.class));    final boolean[] invoked = new boolean[1];    FilterChain filterChain = new FilterChain() {      public void doFilter(ServletRequest servletRequest,          ServletResponse servletResponse) {        invoked[0] = true;        assertSame(request, servletRequest);        assertNotNull(injector.getInstance(InRequest.class));      }    };    replay(request);    filter.doFilter(request, null, filterChain);    verify(request);    assertTrue(invoked[0]);  }  public void testExistingRequestObject()      throws CreationException, IOException, ServletException {    final Injector injector = createInjector();    GuiceFilter filter = new GuiceFilter();    final HttpServletRequest request = createMock(HttpServletRequest.class);    final InRequest inRequest = new InRequest();    String name = Key.get(InRequest.class).toString();    expect(request.getAttribute(name)).andReturn(inRequest).times(2);    final boolean[] invoked = new boolean[1];    FilterChain filterChain = new FilterChain() {      public void doFilter(ServletRequest servletRequest,          ServletResponse servletResponse) {        invoked[0] = true;        assertSame(request, servletRequest);        assertSame(inRequest, injector.getInstance(InRequest.class));        assertSame(inRequest, injector.getInstance(InRequest.class));      }    };    replay(request);    filter.doFilter(request, null, filterChain);    verify(request);    assertTrue(invoked[0]);  }  public void testNewSessionObject()      throws CreationException, IOException, ServletException {    final Injector injector = createInjector();    GuiceFilter filter = new GuiceFilter();    final HttpServletRequest request = createMock(HttpServletRequest.class);    final HttpSession session = createMock(HttpSession.class);    String name = Key.get(InSession.class).toString();    expect(request.getSession()).andReturn(session);    expect(session.getAttribute(name)).andReturn(null);    session.setAttribute(eq(name), isA(InSession.class));    final boolean[] invoked = new boolean[1];    FilterChain filterChain = new FilterChain() {      public void doFilter(ServletRequest servletRequest,          ServletResponse servletResponse) {        invoked[0] = true;        assertSame(request, servletRequest);        assertNotNull(injector.getInstance(InSession.class));      }    };    replay(request, session);    filter.doFilter(request, null, filterChain);    verify(request, session);    assertTrue(invoked[0]);  }  public void testExistingSessionObject()      throws CreationException, IOException, ServletException {    final Injector injector = createInjector();    GuiceFilter filter = new GuiceFilter();    final HttpServletRequest request = createMock(HttpServletRequest.class);    final HttpSession session = createMock(HttpSession.class);    String name = Key.get(InSession.class).toString();    final InSession inSession = new InSession();    expect(request.getSession()).andReturn(session).times(2);    expect(session.getAttribute(name)).andReturn(inSession).times(2);    final boolean[] invoked = new boolean[1];    FilterChain filterChain = new FilterChain() {      public void doFilter(ServletRequest servletRequest,          ServletResponse servletResponse) {        invoked[0] = true;        assertSame(request, servletRequest);        assertSame(inSession, injector.getInstance(InSession.class));        assertSame(inSession, injector.getInstance(InSession.class));      }    };    replay(request, session);    filter.doFilter(request, null, filterChain);    verify(request, session);    assertTrue(invoked[0]);  }  private Injector createInjector() throws CreationException {    return Guice.createInjector(new AbstractModule() {      protected void configure() {        install(new ServletModule());        bind(InSession.class);        bind(InRequest.class);      }    });  }  @SessionScoped  static class InSession {}  @RequestScoped  static class InRequest {}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -