From c5f008aa3b909f8986ad42b3deb0fe1534a73b63 Mon Sep 17 00:00:00 2001
From: Rick Herrick <jrherrick@wustl.edu>
Date: Tue, 13 Sep 2016 14:56:21 -0500
Subject: [PATCH] XNAT-4382 Moved HTTP message converters to separate bean
 instantiations so they can be picked up by plugins. Moved plugin
 configuration instantiation to servlet mapping.

---
 .../org/nrg/xnat/configuration/WebConfig.java | 26 ++++++++++++++-----
 .../initialization/XnatWebAppInitializer.java |  9 +++----
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/nrg/xnat/configuration/WebConfig.java b/src/main/java/org/nrg/xnat/configuration/WebConfig.java
index b560e3b5..7d39bc1f 100644
--- a/src/main/java/org/nrg/xnat/configuration/WebConfig.java
+++ b/src/main/java/org/nrg/xnat/configuration/WebConfig.java
@@ -37,10 +37,7 @@ import springfox.documentation.spring.web.plugins.Docket;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 import javax.xml.bind.Marshaller;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
+import java.util.*;
 
 @Configuration
 @EnableWebMvc
@@ -61,9 +58,24 @@ public class WebConfig extends WebMvcConfigurerAdapter {
 
     @Override
     public void configureMessageConverters(final List<HttpMessageConverter<?>> converters) {
-        converters.add(new MappingJackson2HttpMessageConverter(_objectMapperBuilder.build()));
-        converters.add(new MarshallingHttpMessageConverter(_marshaller, _marshaller));
-        converters.add(new StringHttpMessageConverter());
+        converters.add(mappingJackson2HttpMessageConverter());
+        converters.add(marshallingHttpMessageConverter());
+        converters.add(stringHttpMessageConverter());
+    }
+
+    @Bean
+    public HttpMessageConverter<?> mappingJackson2HttpMessageConverter() {
+        return new MappingJackson2HttpMessageConverter(_objectMapperBuilder.build());
+    }
+
+    @Bean
+    public HttpMessageConverter<?> marshallingHttpMessageConverter() {
+        return new MarshallingHttpMessageConverter(_marshaller, _marshaller);
+    }
+
+    @Bean
+    public HttpMessageConverter<?> stringHttpMessageConverter() {
+        return new StringHttpMessageConverter();
     }
 
     @Bean
diff --git a/src/main/java/org/nrg/xnat/initialization/XnatWebAppInitializer.java b/src/main/java/org/nrg/xnat/initialization/XnatWebAppInitializer.java
index 31da8016..b073f426 100644
--- a/src/main/java/org/nrg/xnat/initialization/XnatWebAppInitializer.java
+++ b/src/main/java/org/nrg/xnat/initialization/XnatWebAppInitializer.java
@@ -69,15 +69,14 @@ public class XnatWebAppInitializer extends AbstractAnnotationConfigDispatcherSer
 
     @Override
     protected Class<?>[] getRootConfigClasses() {
-        final List<Class<?>> configClasses = new ArrayList<>();
-        configClasses.add(RootConfig.class);
-        configClasses.addAll(getPluginConfigs());
-        return configClasses.toArray(new Class[configClasses.size()]);
+        return new Class<?>[] { RootConfig.class };
     }
 
     @Override
     protected Class<?>[] getServletConfigClasses() {
-        return new Class[0];
+        final List<Class<?>> configClasses = new ArrayList<>();
+        configClasses.addAll(getPluginConfigs());
+        return configClasses.toArray(new Class[configClasses.size()]);
     }
 
     @Override
-- 
GitLab