类org.springframework.http.codec.ServerSentEventHttpMessageWriter源码实例Demo

下面列出了怎么用org.springframework.http.codec.ServerSentEventHttpMessageWriter的API类实例代码及写法,或者点击链接到github查看源代码。


@Before
public void createContext() {
	final List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
	messageWriters.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
	messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.textPlainOnly()));
	messageWriters.add(new ResourceHttpMessageWriter());
	messageWriters.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
	Jackson2JsonEncoder jsonEncoder = new Jackson2JsonEncoder();
	messageWriters.add(new EncoderHttpMessageWriter<>(jsonEncoder));
	messageWriters.add(new ServerSentEventHttpMessageWriter(jsonEncoder));
	messageWriters.add(new FormHttpMessageWriter());
	messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
	messageWriters.add(new MultipartHttpMessageWriter(messageWriters));

	this.context = new BodyInserter.Context() {
		@Override
		public List<HttpMessageWriter<?>> messageWriters() {
			return messageWriters;
		}
		@Override
		public Optional<ServerHttpRequest> serverRequest() {
			return Optional.empty();
		}
		@Override
		public Map<String, Object> hints() {
			return hints;
		}
	};
	this.hints = new HashMap<>();
}
 

@Test
public void jackson2EncoderOverride() {
	Jackson2JsonEncoder encoder = new Jackson2JsonEncoder();
	this.configurer.defaultCodecs().jackson2JsonEncoder(encoder);

	assertSame(encoder, this.configurer.getWriters().stream()
			.filter(writer -> ServerSentEventHttpMessageWriter.class.equals(writer.getClass()))
			.map(writer -> (ServerSentEventHttpMessageWriter) writer)
			.findFirst()
			.map(ServerSentEventHttpMessageWriter::getEncoder)
			.filter(e -> e == encoder).orElse(null));
}
 

private void assertSseWriter(List<HttpMessageWriter<?>> writers) {
	HttpMessageWriter<?> writer = writers.get(this.index.getAndIncrement());
	assertEquals(ServerSentEventHttpMessageWriter.class, writer.getClass());
	Encoder<?> encoder = ((ServerSentEventHttpMessageWriter) writer).getEncoder();
	assertNotNull(encoder);
	assertEquals(Jackson2JsonEncoder.class, encoder.getClass());
}
 

@Before
public void createContext() {
	final List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
	messageWriters.add(new EncoderHttpMessageWriter<>(new ByteBufferEncoder()));
	messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.textPlainOnly()));
	messageWriters.add(new ResourceHttpMessageWriter());
	messageWriters.add(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder()));
	Jackson2JsonEncoder jsonEncoder = new Jackson2JsonEncoder();
	messageWriters.add(new EncoderHttpMessageWriter<>(jsonEncoder));
	messageWriters.add(new ServerSentEventHttpMessageWriter(jsonEncoder));
	messageWriters.add(new FormHttpMessageWriter());
	messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
	messageWriters.add(new MultipartHttpMessageWriter(messageWriters));

	this.context = new BodyInserter.Context() {
		@Override
		public List<HttpMessageWriter<?>> messageWriters() {
			return messageWriters;
		}
		@Override
		public Optional<ServerHttpRequest> serverRequest() {
			return Optional.empty();
		}
		@Override
		public Map<String, Object> hints() {
			return hints;
		}
	};
	this.hints = new HashMap<>();
}
 

@Test
public void jackson2EncoderOverride() {
	Jackson2JsonEncoder encoder = new Jackson2JsonEncoder();
	this.configurer.defaultCodecs().jackson2JsonEncoder(encoder);

	assertSame(encoder, this.configurer.getWriters().stream()
			.filter(writer -> ServerSentEventHttpMessageWriter.class.equals(writer.getClass()))
			.map(writer -> (ServerSentEventHttpMessageWriter) writer)
			.findFirst()
			.map(ServerSentEventHttpMessageWriter::getEncoder)
			.filter(e -> e == encoder).orElse(null));
}
 

private void assertSseWriter(List<HttpMessageWriter<?>> writers) {
	HttpMessageWriter<?> writer = writers.get(this.index.getAndIncrement());
	assertEquals(ServerSentEventHttpMessageWriter.class, writer.getClass());
	Encoder<?> encoder = ((ServerSentEventHttpMessageWriter) writer).getEncoder();
	assertNotNull(encoder);
	assertEquals(Jackson2JsonEncoder.class, encoder.getClass());
}
 

@Override
protected void register(GenericApplicationContext context, CodecConfigurer configurer) {
	ObjectMapper mapper = context.getBean(ObjectMapper.class);
	Jackson2JsonEncoder encoder = new Jackson2JsonEncoder(mapper);
	configurer.customCodecs().decoder(new Jackson2JsonDecoder(mapper));
	configurer.customCodecs().encoder(encoder);
	configurer.customCodecs().writer(new ServerSentEventHttpMessageWriter(encoder));
}
 

@Override
protected void extendObjectWriters(List<HttpMessageWriter<?>> objectWriters) {
	objectWriters.add(new ServerSentEventHttpMessageWriter(getSseEncoder()));
}
 

@Override
protected void extendObjectWriters(List<HttpMessageWriter<?>> objectWriters) {
	objectWriters.add(new ServerSentEventHttpMessageWriter(getSseEncoder()));
}
 
 类所在包
 同包方法