package org.dayatang.dsrouter.datasource.examples.test;
import org.dayatang.dsrouter.datasource.examples.CustomerContextHolder;
import org.dayatang.dsrouter.datasource.examples.CustomerType;
import org.dayatang.dsrouter.datasource.examples.Item;
import org.dayatang.dsrouter.datasource.examples.TestTable;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class Examples2Test extends AbstractJUnit4SpringContextTests {
private TestTable catalog;
public void setTestTable(TestTable catalog) {
this.catalog = catalog;
}
public void testDataSourceRouting() throws Exception {
CustomerContextHolder.setCustomerType(CustomerType.GOLD);
printConn();
List<Item> goldItems = catalog.getItems();
assertEquals(2, goldItems.size());
print(goldItems);
CustomerContextHolder.setCustomerType(CustomerType.SILVER);
printConn();
List<Item> silverItems = catalog.getItems();
assertEquals(2, silverItems.size());
print(silverItems);
CustomerContextHolder.clearCustomerType();
printConn();
List<Item> bronzeItems = catalog.getItems();
assertEquals(2, bronzeItems.size());
print(bronzeItems);
}
private void printConn() throws SQLException {
DataSource ds = (DataSource) applicationContext.getBean(
"dataSource");
Connection connection = ds.getConnection();
System.out.println(connection.getMetaData().getURL());
System.out.println(connection.getCatalog());
}
private void print(List<Item> goldItems) {
for (Item item : goldItems) {
System.out.println(item.getId() + " = " + item.getName());
}
}
protected String[] getConfigLocations() {
return new String[] { "/spring/examples/dataSourceContext.xml" };
}
}