From 12cb879e4f256d36668a04ed828b5dfa27dbfd8e Mon Sep 17 00:00:00 2001
From: Ian Young <ian@iay.org.uk>
Date: Sat, 12 May 2018 20:18:02 +0100
Subject: [PATCH] Load root-beans.xml into the root context

---
 README.md                                       |  8 +++++---
 .../validator/ValidatorConfiguration.java       |  2 ++
 src/main/resources/root-beans.xml               | 17 +++++++++++++++++
 3 files changed, 24 insertions(+), 3 deletions(-)
 create mode 100644 src/main/resources/root-beans.xml

diff --git a/README.md b/README.md
index 5d8d38b..08f8e70 100644
--- a/README.md
+++ b/README.md
@@ -10,9 +10,11 @@ Built using:
 
 ## Spring Contexts
 
-The root `ApplicationContext` in the application is the one provided by
-Spring Boot. This is primarily configured using Java annotations, but
-it would be possible to extend that with XML configuration if needed.
+The root `ApplicationContext` in the application is the one provided by Spring
+Boot. This is primarily configured using Java and annotations, but the
+classpath resource `root-beans.xml` is also loaded into this context. This
+provides some convenience when importing XML configuration from other uses of
+the Shibboleth component framework.
 
 The classpath resource `common-beans.xml` is used to configure a
 `ClassPathXmlApplicationContext` which takes the root context as its
diff --git a/src/main/java/uk/org/iay/incommon/validator/ValidatorConfiguration.java b/src/main/java/uk/org/iay/incommon/validator/ValidatorConfiguration.java
index 573323f..81a9098 100644
--- a/src/main/java/uk/org/iay/incommon/validator/ValidatorConfiguration.java
+++ b/src/main/java/uk/org/iay/incommon/validator/ValidatorConfiguration.java
@@ -21,6 +21,7 @@
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 import uk.org.iay.incommon.validator.context.ValidatorCollection;
@@ -29,6 +30,7 @@
  * Validator configuration.
  */
 @Configuration
+@ImportResource("root-beans.xml")
 public class ValidatorConfiguration {
 
     /** Class logger. */
diff --git a/src/main/resources/root-beans.xml b/src/main/resources/root-beans.xml
new file mode 100644
index 0000000..55b6c22
--- /dev/null
+++ b/src/main/resources/root-beans.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Additional bean definitions for the root context.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    default-lazy-init="true"
+    xmlns:c="http://www.springframework.org/schema/c"
+    xmlns:context="http://www.springframework.org/schema/context"
+    xmlns:p="http://www.springframework.org/schema/p"
+    xmlns:util="http://www.springframework.org/schema/util"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="
+        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+</beans>