-
Notifications
You must be signed in to change notification settings - Fork 0
How to compare spring xml configuration
kimi edited this page Nov 17, 2015
·
1 revision
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry;
import org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver;
import org.springframework.beans.factory.xml.ResourceEntityResolver;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.Resource;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class CompareSpringXmlConfiguration {
SimpleBeanDefinitionRegistry origin;
SimpleBeanDefinitionRegistry refactor;
@Before
public void before() throws Throwable {
origin = new SimpleBeanDefinitionRegistry();
refactor = new SimpleBeanDefinitionRegistry();
}
@Test
public void test_compare() throws Throwable {
Resource[] originResources = new Resource[]{ /* TODO */ };
Resource[] refactorResources = new Resource[]{ /* TODO */ };
for (Resource r : originResources) {
load(r, origin, true);
}
for (Resource r : refactorResources) {
load(r, refactor, true)
}
String[] originNames = origin.getBeanDefinitionNames();
String[] refactorNames = refactor.getBeanDefinitionNames();
assertEquals(originNames.length, refactorNames.length);
System.out.println("Read " + originNames.length + " beans");
List<String> oriList = Arrays.asList(originNames);
List<String> refList = Arrays.asList(originNames);
Collections.sort(oriList);
Collections.sort(refList);
assertTrue(Arrays.equals(oriList.toArray(new String[0]),
refList.toArray(new String[0])));
for (String name : originNames) {
BeanDefinition originBean = origin.getBeanDefinition(name);
BeanDefinition refactorBean = refactor.getBeanDefinition(name);
try {
assertEquals(originBean, refactorBean);
} catch (Throwable t) {
System.out.println("Assert equals failed bean name [" + name + "]");
throw t;
}
}
}
int load(Resource resource, BeanDefinitionRegistry registry, boolean xsd) {
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(registry);
reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);
reader.setNamespaceAware(true);
reader.setEntityResolver(new ResourceEntityResolver(reader.getResourceLoader()));
reader.setNamespaceHandlerResolver(new DefaultNamespaceHandlerResolver());
if (xsd) {
reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD);
}
return reader.loadBeanDefinitions(resource);
}
}