Package org.springframework.issues.config

Source Code of org.springframework.issues.config.WebConfig

package org.springframework.issues.config;

import com.google.protobuf.ExtensionRegistry;
import com.google.protobuf.Message;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.converter.protobuf.ExtensionRegistryInitializer;
import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import java.io.IOException;
import java.util.List;

@EnableWebMvc
@ComponentScan(basePackages = "org.springframework.issues")
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        if (System.getProperty("fixed") == null) {
            System.err.println("==== Problem sample! ====");
            converters.add(new ProtobufHttpMessageConverter(new ExtensionRegistryInitializer() {
                @Override
                public void initializeExtensionRegistry(ExtensionRegistry registry) {

                }
            }));
        } else {
            System.err.println("==== Fixed sample! ====");
            converters.add(new ProtobufHttpMessageConverter(new ExtensionRegistryInitializer() {
                @Override
                public void initializeExtensionRegistry(ExtensionRegistry registry) {

                }
            }) {
                @Override
                protected void writeInternal(Message message, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
                    outputMessage.getHeaders().set(X_PROTOBUF_SCHEMA_HEADER, message.getDescriptorForType().getFile().getName());
                    outputMessage.getHeaders().set(X_PROTOBUF_MESSAGE_HEADER, message.getDescriptorForType().getFullName());
                    FileCopyUtils.copy(message.toByteArray(), outputMessage.getBody());
                }
            });
        }
    }
}
TOP

Related Classes of org.springframework.issues.config.WebConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.