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 dbcc250..573323f 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.support.ClassPathXmlApplicationContext; import uk.org.iay.incommon.validator.context.ValidatorCollection; @@ -37,6 +38,10 @@ public class ValidatorConfiguration { @Value("${validator.configurations}") private String configurations; + /** Property value telling us where the common configuration lives. */ + @Value("${validator.common}") + private String commonConfiguration; + /** * Build the validator configuration collection. * @@ -45,7 +50,17 @@ public class ValidatorConfiguration { */ @Bean public ValidatorCollection validatorCollection(final ApplicationContext webContext) { - final ValidatorCollection c = new ValidatorCollection(webContext); + // Build the common configuration. + LOG.info("loading common configuration from {}", commonConfiguration); + final ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(); + ctx.setConfigLocation(commonConfiguration); + ctx.setParent(webContext); + ctx.setDisplayName(commonConfiguration); + ctx.refresh(); + LOG.info("common configuration has {} bean definitions", ctx.getBeanDefinitionCount()); + + // Build the individual validators, with the common configuration as a parent. + final ValidatorCollection c = new ValidatorCollection(ctx); LOG.info("loading validator configurations: '{}'", configurations); for (final String configLocation : configurations.split("\\s+")) { c.add(configLocation); diff --git a/src/main/java/uk/org/iay/incommon/validator/context/ValidatorCollection.java b/src/main/java/uk/org/iay/incommon/validator/context/ValidatorCollection.java index 7dd355b..ab3c6c7 100644 --- a/src/main/java/uk/org/iay/incommon/validator/context/ValidatorCollection.java +++ b/src/main/java/uk/org/iay/incommon/validator/context/ValidatorCollection.java @@ -114,7 +114,7 @@ public void add(final String configLocation) { ctx.setParent(parentContext); ctx.setDisplayName(configLocation); ctx.refresh(); - LOG.info("refreshed {} has {} beans", configLocation, ctx.getBeanDefinitionCount()); + LOG.info("context {} has {} bean definitions", configLocation, ctx.getBeanDefinitionCount()); final Entry entry = new Entry(ctx); entries.add(entry); byId.put(entry.getId(), entry); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7b6c3fa..cb4d18e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,5 +4,8 @@ server.port=8080 spring.jackson.date-format=uk.org.iay.incommon.validator.RFC3339DateFormat spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false +# Common configuration shared across all validators. +validator.common = common-beans.xml + # Space-separated list of the validator configurations to load. validator.configurations = default-validator.xml second-validator.xml diff --git a/src/main/resources/common-beans.xml b/src/main/resources/common-beans.xml new file mode 100644 index 0000000..327989f --- /dev/null +++ b/src/main/resources/common-beans.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Common bean definitions. +--> +<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>