Java 类org.springframework.web.servlet.support.RequestDataValueProcessor 实例源码

项目:spring4-understanding    文件:RedirectView.java   
/**
 * Find the registered {@link RequestDataValueProcessor}, if any, and allow
 * it to update the redirect target URL.
 * @param targetUrl the given redirect URL
 * @return the updated URL or the same as URL as the one passed in
 */
protected String updateTargetUrl(String targetUrl, Map<String, Object> model,
        HttpServletRequest request, HttpServletResponse response) {

    WebApplicationContext wac = getWebApplicationContext();
    if (wac == null) {
        wac = RequestContextUtils.findWebApplicationContext(request, getServletContext());
    }

    if (wac != null && wac.containsBean(RequestContextUtils.REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME)) {
        RequestDataValueProcessor processor = wac.getBean(
                RequestContextUtils.REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME, RequestDataValueProcessor.class);
        return processor.processUrl(request, targetUrl);
    }

    return targetUrl;
}
项目:spring4-understanding    文件:UrlTag.java   
@Override
public int doEndTag() throws JspException {
    String url = createUrl();

    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if ((processor != null) && (request instanceof HttpServletRequest)) {
        url = processor.processUrl((HttpServletRequest) request, url);
    }

    if (this.var == null) {
        // print the url to the writer
        try {
            pageContext.getOut().print(url);
        }
        catch (IOException e) {
            throw new JspException(e);
        }
    }
    else {
        // store the url as a variable
        pageContext.setAttribute(var, url, scope);
    }
    return EVAL_PAGE;
}
项目:spring4-understanding    文件:RedirectViewTests.java   
@Test
public void updateTargetUrl() throws Exception {
    StaticWebApplicationContext wac = new StaticWebApplicationContext();
    wac.registerSingleton("requestDataValueProcessor", RequestDataValueProcessorWrapper.class);
    wac.setServletContext(new MockServletContext());
    wac.refresh();

    RequestDataValueProcessor mockProcessor = mock(RequestDataValueProcessor.class);
    wac.getBean(RequestDataValueProcessorWrapper.class).setRequestDataValueProcessor(mockProcessor);

    RedirectView rv = new RedirectView();
    rv.setApplicationContext(wac);  // Init RedirectView with WebAppCxt
    rv.setUrl("/path");

    MockHttpServletRequest request = createRequest();
    request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);
    HttpServletResponse response = new MockHttpServletResponse();

    given(mockProcessor.processUrl(request, "/path")).willReturn("/path?key=123");

    rv.render(new ModelMap(), request, response);

    verify(mockProcessor).processUrl(request, "/path");
}
项目:spring4-understanding    文件:FormTagTests.java   
@Test
public void requestDataValueProcessorHooks() throws Exception {
    String action = "/my/form?foo=bar";
    RequestDataValueProcessor processor = getMockRequestDataValueProcessor();
    given(processor.processAction(this.request, action, "post")).willReturn(action);
    given(processor.getExtraHiddenFields(this.request)).willReturn(Collections.singletonMap("key", "value"));

    this.tag.doStartTag();
    this.tag.doEndTag();
    this.tag.doFinally();

    String output = getOutput();

    assertEquals("<div>\n<input type=\"hidden\" name=\"key\" value=\"value\" />\n</div>", getInputTag(output));
    assertFormTagOpened(output);
    assertFormTagClosed(output);
}
项目:class-guard    文件:UrlTag.java   
@Override
public int doEndTag() throws JspException {
    String url = createUrl();

    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if ((processor != null) && (request instanceof HttpServletRequest)) {
        url = processor.processUrl((HttpServletRequest) request, url);
    }

    if (this.var == null) {
        // print the url to the writer
        try {
            pageContext.getOut().print(url);
        }
        catch (IOException e) {
            throw new JspException(e);
        }
    }
    else {
        // store the url as a variable
        pageContext.setAttribute(var, url, scope);
    }
    return EVAL_PAGE;
}
项目:class-guard    文件:RedirectViewTests.java   
@Test
public void updateTargetUrl() throws Exception {
    StaticWebApplicationContext wac = new StaticWebApplicationContext();
    wac.registerSingleton("requestDataValueProcessor", RequestDataValueProcessorWrapper.class);
    wac.setServletContext(new MockServletContext());
    wac.refresh();

    RequestDataValueProcessor mockProcessor = mock(RequestDataValueProcessor.class);
    wac.getBean(RequestDataValueProcessorWrapper.class).setRequestDataValueProcessor(mockProcessor);

    RedirectView rv = new RedirectView();
    rv.setApplicationContext(wac);  // Init RedirectView with WebAppCxt
    rv.setUrl("/path");

    MockHttpServletRequest request = createRequest();
    request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);
    HttpServletResponse response = new MockHttpServletResponse();

    given(mockProcessor.processUrl(request, "/path")).willReturn("/path?key=123");

    rv.render(new ModelMap(), request, response);

    verify(mockProcessor).processUrl(request, "/path");
}
项目:class-guard    文件:FormTagTests.java   
public void testRequestDataValueProcessorHooks() throws Exception {
    String action = "/my/form?foo=bar";
    RequestDataValueProcessor processor = getMockRequestDataValueProcessor();
    given(processor.processAction(this.request, action)).willReturn(action);
    given(processor.getExtraHiddenFields(this.request)).willReturn(Collections.singletonMap("key", "value"));

    this.tag.doStartTag();
    this.tag.doEndTag();
    this.tag.doFinally();

    String output = getOutput();

    assertEquals("<input type=\"hidden\" name=\"key\" value=\"value\" />", getInputTag(output));
    assertFormTagOpened(output);
    assertFormTagClosed(output);
}
项目:spring4-understanding    文件:FormTag.java   
/**
 * Process the action through a {@link RequestDataValueProcessor} instance
 * if one is configured or otherwise returns the action unmodified.
 */
private String processAction(String action) {
    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if (processor != null && request instanceof HttpServletRequest) {
        action = processor.processAction((HttpServletRequest) request, action, getHttpMethod());
    }
    return action;
}
项目:spring4-understanding    文件:FormTag.java   
/**
 * Closes the '{@code form}' block tag and removes the form object name
 * from the {@link javax.servlet.jsp.PageContext}.
 */
@Override
public int doEndTag() throws JspException {
    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if ((processor != null) && (request instanceof HttpServletRequest)) {
        writeHiddenFields(processor.getExtraHiddenFields((HttpServletRequest) request));
    }
    this.tagWriter.endTag();
    return EVAL_PAGE;
}
项目:spring4-understanding    文件:AbstractDataBoundFormElementTag.java   
/**
 * Process the given form field through a {@link RequestDataValueProcessor}
 * instance if one is configured or otherwise returns the same value.
 */
protected final String processFieldValue(String name, String value, String type) {
    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if (processor != null && (request instanceof HttpServletRequest)) {
        value = processor.processFormFieldValue((HttpServletRequest) request, name, value, type);
    }
    return value;
}
项目:spring4-understanding    文件:RedirectViewTests.java   
@Test
public void updateTargetUrlWithContextLoader() throws Exception {
    StaticWebApplicationContext wac = new StaticWebApplicationContext();
    wac.registerSingleton("requestDataValueProcessor", RequestDataValueProcessorWrapper.class);

    MockServletContext servletContext = new MockServletContext();
    ContextLoader contextLoader = new ContextLoader(wac);
    contextLoader.initWebApplicationContext(servletContext);

    try {
        RequestDataValueProcessor mockProcessor = mock(RequestDataValueProcessor.class);
        wac.getBean(RequestDataValueProcessorWrapper.class).setRequestDataValueProcessor(mockProcessor);

        RedirectView rv = new RedirectView();
        rv.setUrl("/path");

        MockHttpServletRequest request = createRequest();
        HttpServletResponse response = new MockHttpServletResponse();

        given(mockProcessor.processUrl(request, "/path")).willReturn("/path?key=123");

        rv.render(new ModelMap(), request, response);

        verify(mockProcessor).processUrl(request, "/path");
    }
    finally {
        contextLoader.closeWebApplicationContext(servletContext);
    }
}
项目:spring4-understanding    文件:AbstractHtmlElementTagTests.java   
@SuppressWarnings("deprecation")
protected RequestDataValueProcessor getMockRequestDataValueProcessor() {
    RequestDataValueProcessor mockProcessor = mock(RequestDataValueProcessor.class);
    ServletRequest request = getPageContext().getRequest();
    StaticWebApplicationContext wac = (StaticWebApplicationContext) RequestContextUtils.getWebApplicationContext(request);
    wac.getBean(RequestDataValueProcessorWrapper.class).setRequestDataValueProcessor(mockProcessor);
    return mockProcessor;
}
项目:class-guard    文件:FormTag.java   
/**
 * Process the action through a {@link RequestDataValueProcessor} instance
 * if one is configured or otherwise returns the action unmodified.
 */
private String processAction(String action) {
    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if (processor != null && request instanceof HttpServletRequest) {
        action = processor.processAction((HttpServletRequest) request, action);
    }
    return action;
}
项目:class-guard    文件:FormTag.java   
/**
 * Closes the '{@code form}' block tag and removes the form object name
 * from the {@link javax.servlet.jsp.PageContext}.
 */
@Override
public int doEndTag() throws JspException {
    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if ((processor != null) && (request instanceof HttpServletRequest)) {
        writeHiddenFields(processor.getExtraHiddenFields((HttpServletRequest) request));
    }
    this.tagWriter.endTag();
    return EVAL_PAGE;
}
项目:class-guard    文件:AbstractDataBoundFormElementTag.java   
/**
 * Process the given form field through a {@link RequestDataValueProcessor}
 * instance if one is configured or otherwise returns the same value.
 */
protected final String processFieldValue(String name, String value, String type) {
    RequestDataValueProcessor processor = getRequestContext().getRequestDataValueProcessor();
    ServletRequest request = this.pageContext.getRequest();
    if (processor != null && (request instanceof HttpServletRequest)) {
        value = processor.processFormFieldValue((HttpServletRequest) request, name, value, type);
    }
    return value;
}
项目:class-guard    文件:RedirectViewTests.java   
@Test
public void updateTargetUrlWithContextLoader() throws Exception {
    StaticWebApplicationContext wac = new StaticWebApplicationContext();
    wac.registerSingleton("requestDataValueProcessor", RequestDataValueProcessorWrapper.class);

    MockServletContext servletContext = new MockServletContext();
    ContextLoader contextLoader = new ContextLoader(wac);
    contextLoader.initWebApplicationContext(servletContext);

    try {
        RequestDataValueProcessor mockProcessor = mock(RequestDataValueProcessor.class);
        wac.getBean(RequestDataValueProcessorWrapper.class).setRequestDataValueProcessor(mockProcessor);

        RedirectView rv = new RedirectView();
        rv.setUrl("/path");

        MockHttpServletRequest request = createRequest();
        HttpServletResponse response = new MockHttpServletResponse();

        given(mockProcessor.processUrl(request, "/path")).willReturn("/path?key=123");

        rv.render(new ModelMap(), request, response);

        verify(mockProcessor).processUrl(request, "/path");
    }
    finally {
        contextLoader.closeWebApplicationContext(servletContext);
    }
}
项目:class-guard    文件:AbstractHtmlElementTagTests.java   
protected RequestDataValueProcessor getMockRequestDataValueProcessor() {
    RequestDataValueProcessor mockProcessor = mock(RequestDataValueProcessor.class);
    ServletRequest request = getPageContext().getRequest();
    StaticWebApplicationContext wac = (StaticWebApplicationContext) RequestContextUtils.getWebApplicationContext(request);
    wac.getBean(RequestDataValueProcessorWrapper.class).setRequestDataValueProcessor(mockProcessor);
    return mockProcessor;
}
项目:sinavi-jfw    文件:TagUtils.java   
/**
     * <p>
     * {@code Spring MVC} のパス修飾機構によって指定されたURLパスを修飾します。<br/>
     * </p>
     * @param action パス
     * @param requestContext {@link RequestContext} インスタンス
     * @param pageContext {@link PageContext} インスタンス
     * @return 修飾されたパス
     */
    public static String processAction(String action, RequestContext requestContext, PageContext pageContext) {
        RequestDataValueProcessor processor = requestContext.getRequestDataValueProcessor();
        ServletRequest request = pageContext.getRequest();
        if ((processor != null) && (request instanceof HttpServletRequest)) {
//            return processor.processAction((HttpServletRequest) request, action);
            return processor.processAction((HttpServletRequest) request, action, ((HttpServletRequest) request).getMethod());
        }
        return action;
    }
项目:sinavi-jfw    文件:JseRequestDataValueProcessor.java   
/**
 * {@inheritDoc}
 */
@Override
public Map<String, String> getExtraHiddenFields(HttpServletRequest request) {
    Map<String, String> extraHiddenFields = new HashMap<String, String>();
    for (RequestDataValueProcessor requestDataValueProcessor : requestDataValueProcessors) {
        Map<String, String> m = requestDataValueProcessor.getExtraHiddenFields(request);
        if (m != null) {
            extraHiddenFields.putAll(m);
        }
    }
    return extraHiddenFields;
}
项目:sinavi-jfw    文件:JseRequestDataValueProcessor.java   
/**
 * {@inheritDoc}
 */
@Override
public String processUrl(HttpServletRequest request, String url) {
    for (RequestDataValueProcessor requestDataValueProcessor : requestDataValueProcessors) {
        url = requestDataValueProcessor.processUrl(request, url);
    }
    return url;
}
项目:spring4-understanding    文件:VelocityViewTests.java   
/**
 * @param mergeTemplateFailureException may be null in which case mergeTemplate override will succeed.
 * If it's non null it will be checked
 */
private void testValidTemplateName(final Exception mergeTemplateFailureException) throws Exception {
    Map<String, Object> model = new HashMap<String, Object>();
    model.put("foo", "bar");

    final String templateName = "test.vm";

    WebApplicationContext wac = mock(WebApplicationContext.class);
    MockServletContext sc = new MockServletContext();
    sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);

    final Template expectedTemplate = new Template();
    VelocityConfig vc = new VelocityConfig() {
        @Override
        public VelocityEngine getVelocityEngine() {
            return new TestVelocityEngine(templateName, expectedTemplate);
        }
    };
    Map<String, VelocityConfig> configurers = new HashMap<String, VelocityConfig>();
    configurers.put("velocityConfigurer", vc);
    given(wac.getBeansOfType(VelocityConfig.class, true, false)).willReturn(configurers);
    given(wac.getServletContext()).willReturn(sc);
    given(wac.getBean("requestDataValueProcessor",
            RequestDataValueProcessor.class)).willReturn(null);

    HttpServletRequest request = new MockHttpServletRequest();
    final HttpServletResponse expectedResponse = new MockHttpServletResponse();

    VelocityView vv = new VelocityView() {
        @Override
        protected void mergeTemplate(Template template, Context context, HttpServletResponse response) throws Exception {
            assertTrue(template == expectedTemplate);
            assertTrue(context.getKeys().length >= 1);
            assertTrue(context.get("foo").equals("bar"));
            assertTrue(response == expectedResponse);
            if (mergeTemplateFailureException != null) {
                throw mergeTemplateFailureException;
            }
        }
    };
    vv.setUrl(templateName);
    vv.setApplicationContext(wac);

    try {
        vv.render(model, request, expectedResponse);
        if (mergeTemplateFailureException != null) {
            fail();
        }
    }
    catch (Exception ex) {
        assertNotNull(mergeTemplateFailureException);
        assertEquals(ex, mergeTemplateFailureException);
    }
}
项目:notedown    文件:WebSecurityConfiguration.java   
@Bean
public RequestDataValueProcessor requestDataValueProcessor() {
    return new CsrfRequestDataValueProcessor();
}
项目:notedown    文件:WebSecurityConfiguration.java   
@Bean
public RequestDataValueProcessor requestDataValueProcessor() {
    return new CsrfRequestDataValueProcessor();
}
项目:class-guard    文件:VelocityViewTests.java   
/**
 * @param mergeTemplateFailureException may be null in which case mergeTemplate override will succeed.
 * If it's non null it will be checked
 */
private void testValidTemplateName(final Exception mergeTemplateFailureException) throws Exception {
    Map<String, Object> model = new HashMap<String, Object>();
    model.put("foo", "bar");

    final String templateName = "test.vm";

    WebApplicationContext wac = mock(WebApplicationContext.class);
    MockServletContext sc = new MockServletContext();
    sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);

    final Template expectedTemplate = new Template();
    VelocityConfig vc = new VelocityConfig() {
        @Override
        public VelocityEngine getVelocityEngine() {
            return new TestVelocityEngine(templateName, expectedTemplate);
        }
    };
    Map<String, VelocityConfig> configurers = new HashMap<String, VelocityConfig>();
    configurers.put("velocityConfigurer", vc);
    given(wac.getBeansOfType(VelocityConfig.class, true, false)).willReturn(configurers);
    given(wac.getServletContext()).willReturn(sc);
    given(wac.getBean("requestDataValueProcessor",
            RequestDataValueProcessor.class)).willReturn(null);

    HttpServletRequest request = new MockHttpServletRequest();
    final HttpServletResponse expectedResponse = new MockHttpServletResponse();

    VelocityView vv = new VelocityView() {
        @Override
        protected void mergeTemplate(Template template, Context context, HttpServletResponse response) throws Exception {
            assertTrue(template == expectedTemplate);
            assertTrue(context.getKeys().length >= 1);
            assertTrue(context.get("foo").equals("bar"));
            assertTrue(response == expectedResponse);
            if (mergeTemplateFailureException != null) {
                throw mergeTemplateFailureException;
            }
        }
    };
    vv.setUrl(templateName);
    vv.setApplicationContext(wac);

    try {
        vv.render(model, request, expectedResponse);
        if (mergeTemplateFailureException != null) {
            fail();
        }
    }
    catch (Exception ex) {
        assertNotNull(mergeTemplateFailureException);
        assertEquals(ex, mergeTemplateFailureException);
    }
}
项目:class-guard    文件:RequestDataValueProcessorWrapper.java   
public void setRequestDataValueProcessor(RequestDataValueProcessor processor) {
    this.processor = processor;
}
项目:sinavi-jfw    文件:TagUtils.java   
/**
 * <p>
 * {@code Spring MVC} のパス修飾機構によって指定されたURLパスを修飾します。<br/>
 * </p>
 * @param url パス
 * @param requestContext {@link RequestContext} インスタンス
 * @param pageContext {@link PageContext} インスタンス
 * @return 修飾されたパス
 */
public static String processUrl(String url, RequestContext requestContext, PageContext pageContext) {
    RequestDataValueProcessor processor = requestContext.getRequestDataValueProcessor();
    ServletRequest request = pageContext.getRequest();
    if ((processor != null) && (request instanceof HttpServletRequest)) {
        return processor.processUrl((HttpServletRequest) request, url);
    }
    return url;
}
项目:sinavi-jfw    文件:JseRequestDataValueProcessor.java   
/**
 * {@link RequestDataValueProcesso} インスタンスのリストを設定します。
 * @param requestDataValueProcessors {@link RequestDataValueProcesso} インスタンスのリスト
 */
public void setRequestDataValueProcessors(List<RequestDataValueProcessor> requestDataValueProcessors) {
    this.requestDataValueProcessors = requestDataValueProcessors;
}
项目:sinavi-jfw    文件:JseRequestDataValueProcessor.java   
/**
 * {@link RequestDataValueProcesso} インスタンスのリストを返却します。
 * @return {@link RequestDataValueProcesso} インスタンスのリスト
 */
protected List<RequestDataValueProcessor> getDefaultRequestDataValueProcessors() {
    return requestDataValueProcessors;
}