org.springframework.http.codec.EncoderHttpMessageWriter#org.springframework.web.reactive.accept.RequestedContentTypeResolverBuilder源码实例Demo

下面列出了org.springframework.http.codec.EncoderHttpMessageWriter#org.springframework.web.reactive.accept.RequestedContentTypeResolverBuilder 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Test // gh-22853
public void matchAndCompare() {
	RequestedContentTypeResolverBuilder builder = new RequestedContentTypeResolverBuilder();
	builder.headerResolver();
	builder.fixedResolver(MediaType.TEXT_HTML);
	RequestedContentTypeResolver resolver = builder.build();

	ProducesRequestCondition none = new ProducesRequestCondition(new String[0], null, resolver);
	ProducesRequestCondition html = new ProducesRequestCondition(new String[] {"text/html"}, null, resolver);

	MockServerWebExchange exchange = MockServerWebExchange.from(get("/").header("Accept", "*/*"));

	ProducesRequestCondition noneMatch = none.getMatchingCondition(exchange);
	ProducesRequestCondition htmlMatch = html.getMatchingCondition(exchange);

	assertEquals(1, noneMatch.compareTo(htmlMatch, exchange));
}
 
private ResponseEntityResultHandler createHandler(HttpMessageWriter<?>... writers) {
	List<HttpMessageWriter<?>> writerList;
	if (ObjectUtils.isEmpty(writers)) {
		writerList = new ArrayList<>();
		writerList.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.textPlainOnly()));
		writerList.add(new ResourceHttpMessageWriter());
		writerList.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
	}
	else {
		writerList = Arrays.asList(writers);
	}
	RequestedContentTypeResolver resolver = new RequestedContentTypeResolverBuilder().build();
	return new ResponseEntityResultHandler(writerList, resolver);
}
 
private AbstractMessageWriterResultHandler initResultHandler(HttpMessageWriter<?>... writers) {
	List<HttpMessageWriter<?>> writerList;
	if (ObjectUtils.isEmpty(writers)) {
		writerList = new ArrayList<>();
		writerList.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
		writerList.add(new ResourceHttpMessageWriter());
		writerList.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder()));
	}
	else {
		writerList = Arrays.asList(writers);
	}
	RequestedContentTypeResolver resolver = new RequestedContentTypeResolverBuilder().build();
	return new AbstractMessageWriterResultHandler(writerList, resolver) {};
}
 
private ResponseEntityResultHandler createHandler(HttpMessageWriter<?>... writers) {
	List<HttpMessageWriter<?>> writerList;
	if (ObjectUtils.isEmpty(writers)) {
		writerList = new ArrayList<>();
		writerList.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.textPlainOnly()));
		writerList.add(new ResourceHttpMessageWriter());
		writerList.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
	}
	else {
		writerList = Arrays.asList(writers);
	}
	RequestedContentTypeResolver resolver = new RequestedContentTypeResolverBuilder().build();
	return new ResponseEntityResultHandler(writerList, resolver);
}
 
private AbstractMessageWriterResultHandler initResultHandler(HttpMessageWriter<?>... writers) {
	List<HttpMessageWriter<?>> writerList;
	if (ObjectUtils.isEmpty(writers)) {
		writerList = new ArrayList<>();
		writerList.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
		writerList.add(new ResourceHttpMessageWriter());
		writerList.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
		writerList.add(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder()));
	}
	else {
		writerList = Arrays.asList(writers);
	}
	RequestedContentTypeResolver resolver = new RequestedContentTypeResolverBuilder().build();
	return new AbstractMessageWriterResultHandler(writerList, resolver) {};
}
 
@Test
public void requestMappingHandlerMapping() throws Exception {
	delegatingConfig.setConfigurers(Collections.singletonList(webFluxConfigurer));
	delegatingConfig.requestMappingHandlerMapping(delegatingConfig.webFluxContentTypeResolver());

	verify(webFluxConfigurer).configureContentTypeResolver(any(RequestedContentTypeResolverBuilder.class));
	verify(webFluxConfigurer).addCorsMappings(any(CorsRegistry.class));
	verify(webFluxConfigurer).configurePathMatching(any(PathMatchConfigurer.class));
}
 
@Test
public void responseBodyResultHandler() throws Exception {
	delegatingConfig.setConfigurers(Collections.singletonList(webFluxConfigurer));
	delegatingConfig.responseBodyResultHandler(
			delegatingConfig.webFluxAdapterRegistry(),
			delegatingConfig.serverCodecConfigurer(),
			delegatingConfig.webFluxContentTypeResolver());

	verify(webFluxConfigurer).configureHttpMessageCodecs(codecsConfigurer.capture());
	verify(webFluxConfigurer).configureContentTypeResolver(any(RequestedContentTypeResolverBuilder.class));
}
 
@Before
public void setup() throws Exception {
	List<HttpMessageWriter<?>> writerList = new ArrayList<>(5);
	writerList.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
	writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
	writerList.add(new ResourceHttpMessageWriter());
	writerList.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
	writerList.add(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder()));
	RequestedContentTypeResolver resolver = new RequestedContentTypeResolverBuilder().build();
	this.resultHandler = new ResponseBodyResultHandler(writerList, resolver);
}
 
@Test
public void configurerConsumers() {
	TestConsumer<ArgumentResolverConfigurer> argumentResolverConsumer = new TestConsumer<>();
	TestConsumer<RequestedContentTypeResolverBuilder> contenTypeResolverConsumer = new TestConsumer<>();
	TestConsumer<CorsRegistry> corsRegistryConsumer = new TestConsumer<>();
	TestConsumer<FormatterRegistry> formatterConsumer = new TestConsumer<>();
	TestConsumer<ServerCodecConfigurer> codecsConsumer = new TestConsumer<>();
	TestConsumer<PathMatchConfigurer> pathMatchingConsumer = new TestConsumer<>();
	TestConsumer<ViewResolverRegistry> viewResolverConsumer = new TestConsumer<>();

	new DefaultControllerSpec(new MyController())
			.argumentResolvers(argumentResolverConsumer)
			.contentTypeResolver(contenTypeResolverConsumer)
			.corsMappings(corsRegistryConsumer)
			.formatters(formatterConsumer)
			.httpMessageCodecs(codecsConsumer)
			.pathMatching(pathMatchingConsumer)
			.viewResolvers(viewResolverConsumer)
			.build();

	assertNotNull(argumentResolverConsumer.getValue());
	assertNotNull(contenTypeResolverConsumer.getValue());
	assertNotNull(corsRegistryConsumer.getValue());
	assertNotNull(formatterConsumer.getValue());
	assertNotNull(codecsConsumer.getValue());
	assertNotNull(pathMatchingConsumer.getValue());
	assertNotNull(viewResolverConsumer.getValue());

}
 
/**
 * Private constructor with already parsed media type expressions.
 */
private ProducesRequestCondition(Collection<ProduceMediaTypeExpression> expressions,
		RequestedContentTypeResolver resolver) {

	this.expressions = new ArrayList<>(expressions);
	Collections.sort(this.expressions);
	this.contentTypeResolver = (resolver != null ? resolver : new RequestedContentTypeResolverBuilder().build());
}
 
@Test
public void requestMappingHandlerMapping() throws Exception {
	delegatingConfig.setConfigurers(Collections.singletonList(webFluxConfigurer));
	delegatingConfig.requestMappingHandlerMapping();

	verify(webFluxConfigurer).configureContentTypeResolver(any(RequestedContentTypeResolverBuilder.class));
	verify(webFluxConfigurer).addCorsMappings(any(CorsRegistry.class));
	verify(webFluxConfigurer).configurePathMatching(any(PathMatchConfigurer.class));
}
 
@Test
public void responseBodyResultHandler() throws Exception {
	delegatingConfig.setConfigurers(Collections.singletonList(webFluxConfigurer));
	delegatingConfig.responseBodyResultHandler();

	verify(webFluxConfigurer).configureHttpMessageCodecs(codecsConfigurer.capture());
	verify(webFluxConfigurer).configureContentTypeResolver(any(RequestedContentTypeResolverBuilder.class));
}
 
@Before
public void setup() throws Exception {
	List<HttpMessageWriter<?>> writerList = new ArrayList<>(5);
	writerList.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
	writerList.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
	writerList.add(new ResourceHttpMessageWriter());
	writerList.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
	writerList.add(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder()));
	RequestedContentTypeResolver resolver = new RequestedContentTypeResolverBuilder().build();
	this.resultHandler = new ResponseBodyResultHandler(writerList, resolver);
}
 
@Test
public void configurerConsumers() {
	TestConsumer<ArgumentResolverConfigurer> argumentResolverConsumer = new TestConsumer<>();
	TestConsumer<RequestedContentTypeResolverBuilder> contenTypeResolverConsumer = new TestConsumer<>();
	TestConsumer<CorsRegistry> corsRegistryConsumer = new TestConsumer<>();
	TestConsumer<FormatterRegistry> formatterConsumer = new TestConsumer<>();
	TestConsumer<ServerCodecConfigurer> codecsConsumer = new TestConsumer<>();
	TestConsumer<PathMatchConfigurer> pathMatchingConsumer = new TestConsumer<>();
	TestConsumer<ViewResolverRegistry> viewResolverConsumer = new TestConsumer<>();

	new DefaultControllerSpec(new MyController())
			.argumentResolvers(argumentResolverConsumer)
			.contentTypeResolver(contenTypeResolverConsumer)
			.corsMappings(corsRegistryConsumer)
			.formatters(formatterConsumer)
			.httpMessageCodecs(codecsConsumer)
			.pathMatching(pathMatchingConsumer)
			.viewResolvers(viewResolverConsumer)
			.build();

	assertNotNull(argumentResolverConsumer.getValue());
	assertNotNull(contenTypeResolverConsumer.getValue());
	assertNotNull(corsRegistryConsumer.getValue());
	assertNotNull(formatterConsumer.getValue());
	assertNotNull(codecsConsumer.getValue());
	assertNotNull(pathMatchingConsumer.getValue());
	assertNotNull(viewResolverConsumer.getValue());

}
 
@Override
public void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
	this.delegates.forEach(delegate -> delegate.configureContentTypeResolver(builder));
}
 
@Bean
public RequestedContentTypeResolver webFluxContentTypeResolver() {
	RequestedContentTypeResolverBuilder builder = new RequestedContentTypeResolverBuilder();
	configureContentTypeResolver(builder);
	return builder.build();
}
 
@Override
protected void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
	this.configurers.configureContentTypeResolver(builder);
}
 
@Override
public DefaultControllerSpec contentTypeResolver(Consumer<RequestedContentTypeResolverBuilder> consumer) {
	this.configurer.contentTypeResolverConsumer = consumer;
	return this;
}
 
@Override
public void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
	if (this.contentTypeResolverConsumer != null) {
		this.contentTypeResolverConsumer.accept(builder);
	}
}
 
@Override
public void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
	this.delegates.forEach(delegate -> delegate.configureContentTypeResolver(builder));
}
 
@Bean
public RequestedContentTypeResolver webFluxContentTypeResolver() {
	RequestedContentTypeResolverBuilder builder = new RequestedContentTypeResolverBuilder();
	configureContentTypeResolver(builder);
	return builder.build();
}
 
@Override
protected void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
	this.configurers.configureContentTypeResolver(builder);
}
 
@Override
public DefaultControllerSpec contentTypeResolver(Consumer<RequestedContentTypeResolverBuilder> consumer) {
	this.configurer.contentTypeResolverConsumer = consumer;
	return this;
}
 
@Override
public void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
	if (this.contentTypeResolverConsumer != null) {
		this.contentTypeResolverConsumer.accept(builder);
	}
}
 
源代码25 项目: spring-analysis-note   文件: WebFluxConfigurer.java
/**
 * Configure how the content type requested for the response is resolved
 * when handling requests with annotated controllers.
 * @param builder for configuring the resolvers to use
 */
default void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
}
 
/**
 * Override to configure how the requested content type is resolved.
 */
protected void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
}
 
源代码27 项目: spring-analysis-note   文件: WebTestClient.java
/**
 * Customize content type resolution.
 * @see WebFluxConfigurer#configureContentTypeResolver
 */
ControllerSpec contentTypeResolver(Consumer<RequestedContentTypeResolverBuilder> consumer);
 
源代码28 项目: java-technology-stack   文件: WebFluxConfigurer.java
/**
 * Configure how the content type requested for the response is resolved
 * when handling requests with annotated controllers.
 * @param builder for configuring the resolvers to use
 */
default void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
}
 
/**
 * Override to configure how the requested content type is resolved.
 */
protected void configureContentTypeResolver(RequestedContentTypeResolverBuilder builder) {
}
 
源代码30 项目: java-technology-stack   文件: WebTestClient.java
/**
 * Customize content type resolution.
 * @see WebFluxConfigurer#configureContentTypeResolver
 */
ControllerSpec contentTypeResolver(Consumer<RequestedContentTypeResolverBuilder> consumer);