1 24 package org.riotfamily.revolt.test; 25 26 import java.io.IOException ; 27 28 import javax.sql.DataSource ; 29 30 import org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver; 31 import org.springframework.beans.factory.xml.NamespaceHandlerResolver; 32 import org.springframework.beans.factory.xml.PluggableSchemaResolver; 33 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; 34 import org.springframework.context.ConfigurableApplicationContext; 35 import org.springframework.context.support.GenericApplicationContext; 36 import org.springframework.core.io.ClassPathResource; 37 import org.springframework.core.io.Resource; 38 import org.springframework.jdbc.core.JdbcTemplate; 39 import org.springframework.test.AbstractDependencyInjectionSpringContextTests; 40 import org.xml.sax.InputSource ; 41 42 46 public abstract class AbstractRevoltTest 47 extends AbstractDependencyInjectionSpringContextTests { 48 49 protected JdbcTemplate jdbcTemplate; 50 51 54 public void setDataSource(DataSource dataSource) { 55 this.jdbcTemplate = new JdbcTemplate(dataSource); 56 } 57 58 protected ConfigurableApplicationContext createApplicationContext(String [] locations) { 59 GenericApplicationContext context = new GenericApplicationContext(); 60 customizeBeanFactory(context.getDefaultListableBeanFactory()); 61 XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context); 62 63 String location = "org/riotfamily/revolt/test/namespace.properties"; 64 NamespaceHandlerResolver resolver = new DefaultNamespaceHandlerResolver(getClass().getClassLoader(), location); 65 reader.setNamespaceHandlerResolver(resolver); 66 reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD); 67 reader.setEntityResolver(new DummySchemaResolver()); 68 reader.loadBeanDefinitions(locations); 69 context.refresh(); 70 return context; 71 } 72 73 private final class DummySchemaResolver extends PluggableSchemaResolver { 74 75 public DummySchemaResolver() { 76 super(AbstractRevoltTest.this.getClass().getClassLoader()); 77 } 78 79 public InputSource resolveEntity(String publicId, String systemId) throws IOException { 80 InputSource source = super.resolveEntity(publicId, systemId); 81 if (source == null) { 82 Resource resource = new ClassPathResource("org/riotfamily/revolt/config/revolt.xsd"); 83 source = new InputSource (resource.getInputStream()); 84 source.setPublicId(publicId); 85 source.setSystemId(systemId); 86 } 87 return source; 88 } 89 } 90 } 91 | Popular Tags |