Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Interpose a context containing common beans
iay committed May 11, 2018
1 parent b33de98 commit 514b9d2
Showing 4 changed files with 37 additions and 2 deletions.
@@ -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);
@@ -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);
3 changes: 3 additions & 0 deletions 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
17 changes: 17 additions & 0 deletions 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>

0 comments on commit 514b9d2

Please sign in to comment.