use of org.springframework.web.bind.WebDataBinder in project thymeleaf-tests by thymeleaf.
the class DecoupledSTSMTest method test.
private static void test(final String templateName, final String expectedResultLocation, final Map<String, Object> vars) throws Exception {
final Map<String, Object> requestAttributes = new LinkedHashMap<String, Object>();
final Map<String, Object[]> requestParameters = new LinkedHashMap<String, Object[]>();
final HttpServletRequest mockRequest = TestMockServletUtil.createHttpServletRequest("WebVariablesMap", null, requestAttributes, requestParameters, Locale.US);
final HttpServletResponse mockResponse = TestMockServletUtil.createHttpServletResponse();
final Map<String, Object> servletContextAttributes = new LinkedHashMap<String, Object>();
final ServletContext mockServletContext = TestMockServletUtil.createServletContext(servletContextAttributes);
final XmlWebApplicationContext appCtx = new XmlWebApplicationContext();
appCtx.setServletContext(mockServletContext);
appCtx.setConfigLocation("classpath:templateparser/decoupled/stsm/applicationContext.xml");
appCtx.refresh();
mockServletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, appCtx);
// can be null!
final ConversionService conversionService = getConversionService(appCtx);
mockRequest.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, appCtx);
final ServletWebRequest servletWebRequest = new ServletWebRequest(mockRequest, mockResponse);
RequestContextHolder.setRequestAttributes(servletWebRequest);
final RequestContext requestContext = new RequestContext(mockRequest, mockResponse, mockServletContext, vars);
vars.put(AbstractTemplateView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE, requestContext);
vars.put(SpringContextVariableNames.SPRING_REQUEST_CONTEXT, requestContext);
vars.put(SpringContextVariableNames.THYMELEAF_REQUEST_CONTEXT, new SpringWebMvcThymeleafRequestContext(requestContext, mockRequest));
final List<String> variableNames = new ArrayList<String>(vars.keySet());
for (final String variableName : variableNames) {
final Object bindingObject = vars.get(variableName);
if (isBindingCandidate(variableName, bindingObject)) {
final String bindingVariableName = BindingResult.MODEL_KEY_PREFIX + variableName;
if (!vars.containsKey(bindingVariableName)) {
final WebDataBinder dataBinder = new WebDataBinder(bindingObject, bindingVariableName);
dataBinder.setConversionService(conversionService);
vars.put(bindingVariableName, dataBinder.getBindingResult());
}
}
}
final WebContext ctx = new WebContext(mockRequest, mockResponse, mockServletContext, Locale.US);
for (final Map.Entry<String, Object> entry : vars.entrySet()) {
ctx.setVariable(entry.getKey(), entry.getValue());
}
final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setTemplateMode("HTML");
templateResolver.setPrefix("templateparser/decoupled/stsm/templates/");
templateResolver.setSuffix(".html");
templateResolver.setUseDecoupledLogic(true);
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
templateEngine.setLinkBuilder(new StandardLinkBuilder() {
@Override
protected String computeContextPath(final IExpressionContext context, final String base, final Map<String, Object> parameters) {
return "";
}
});
appCtx.getAutowireCapableBeanFactory().initializeBean(templateEngine, "templateEngine");
final String result = templateEngine.process(templateName, ctx);
final String expected = ResourceUtils.read(ClassLoaderUtils.getClassLoader(DecoupledSTSMTest.class).getResourceAsStream(expectedResultLocation), "ISO-8859-1", true);
Assert.assertEquals(ResourceUtils.normalize(expected), ResourceUtils.normalize(result));
}
use of org.springframework.web.bind.WebDataBinder in project spring-framework by spring-projects.
the class AbstractRequestAttributesArgumentResolverTests method resolveOptional.
@Test
public void resolveOptional() throws Exception {
WebDataBinder dataBinder = new WebRequestDataBinder(null);
dataBinder.setConversionService(new DefaultConversionService());
WebDataBinderFactory factory = mock(WebDataBinderFactory.class);
given(factory.createBinder(this.webRequest, null, "foo")).willReturn(dataBinder);
MethodParameter param = initMethodParameter(3);
Object actual = testResolveArgument(param, factory);
assertThat(actual).isNotNull();
assertThat(actual.getClass()).isEqualTo(Optional.class);
assertThat(((Optional<?>) actual).isPresent()).isFalse();
Foo foo = new Foo();
this.webRequest.setAttribute("foo", foo, getScope());
actual = testResolveArgument(param, factory);
assertThat(actual).isNotNull();
assertThat(actual.getClass()).isEqualTo(Optional.class);
assertThat(((Optional<?>) actual).isPresent()).isTrue();
assertThat(((Optional<?>) actual).get()).isSameAs(foo);
}
use of org.springframework.web.bind.WebDataBinder in project spring-framework by spring-projects.
the class InitBinderBindingContextTests method createBinderWithAttrName.
@Test
public void createBinderWithAttrName() throws Exception {
MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/"));
BindingContext context = createBindingContext("initBinderWithAttributeName", WebDataBinder.class);
WebDataBinder dataBinder = context.createDataBinder(exchange, null, "foo");
assertThat(dataBinder.getDisallowedFields()).isNotNull();
assertThat(dataBinder.getDisallowedFields()[0]).isEqualTo("id");
}
use of org.springframework.web.bind.WebDataBinder in project spring-framework by spring-projects.
the class InitBinderBindingContextTests method createBinder.
@Test
public void createBinder() throws Exception {
MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/"));
BindingContext context = createBindingContext("initBinder", WebDataBinder.class);
WebDataBinder dataBinder = context.createDataBinder(exchange, null, null);
assertThat(dataBinder.getDisallowedFields()).isNotNull();
assertThat(dataBinder.getDisallowedFields()[0]).isEqualTo("id");
}
use of org.springframework.web.bind.WebDataBinder in project spring-framework by spring-projects.
the class InitBinderDataBinderFactoryTests method createBinderWithAttrNameNoMatch.
@Test
public void createBinderWithAttrNameNoMatch() throws Exception {
WebDataBinderFactory factory = createFactory("initBinderWithAttributeName", WebDataBinder.class);
WebDataBinder dataBinder = factory.createBinder(this.webRequest, null, "invalidName");
assertThat(dataBinder.getDisallowedFields()).isNull();
}
Aggregations