package org.fastcatsearch.ir.config; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.JAXBException; import org.fastcatsearch.util.JAXBConfigs; import org.junit.Test; public class DataSourceConfigTest { String datasourceConfigXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + "<datasource>\n" + " <add-indexing>\n" + " <source id=\"db1\" active=\"false\">\n" + " <properties>\n" + " <property key=\"encoding\">utf-8</property>\n" + " <property key=\"jdbc-driver\">com.mysql.driver.Driver</property>\n" + " </properties>\n" + " <modifier>modifier</modifier>\n" + " <reader>com.abc.Reader</reader>\n" + " </source>\n" + " <source id=\"file1\" active=\"false\">\n" + " <properties>\n" + " <property key=\"encoding\">utf-8</property>\n" + " </properties>\n" + " <modifier>modifier2</modifier>\n" + " <reader>com.abc.Reader</reader>\n" + " </source>\n" + " </add-indexing>\n" + " <full-indexing>\n" + " <source id=\"db1\" active=\"false\">\n" + " <properties>\n" + " <property key=\"encoding\">utf-8</property>\n" + " <property key=\"jdbc-driver\">com.mysql.driver.Driver</property>\n" + " </properties>\n" + " <modifier>modifier</modifier>\n" + " <reader>com.abc.Reader</reader>\n" + " </source>\n" + " <source id=\"file1\" active=\"false\">\n" + " <properties>\n" + " <property key=\"encoding\">utf-8</property>\n" + " </properties>\n" + " <modifier>modifier2</modifier>\n" + " <reader>com.abc.Reader</reader>\n" + " </source>\n" + " </full-indexing>\n" + " <jdbc-sources>\n" + " <jdbc-source user=\"admin\" url=\"jdbc://localhost/test\" password=\"1234567\" name=\"name1\" id=\"id1\" driver=\"com.mysql.Driver\"/>\n" + " <jdbc-source user=\"sa\" url=\"jdbc://localhost/test\" password=\"sa1234567\" name=\"name2\" id=\"id2\" driver=\"com.oracle.Driver\"/>\n" + " </jdbc-sources>\n" + "</datasource>\n" + ""; @Test public void testRead() throws IOException, JAXBException { InputStream is = new ByteArrayInputStream(datasourceConfigXml.getBytes()); DataSourceConfig dataSourceConfig = JAXBConfigs.readConfig(is, DataSourceConfig.class); List<SingleSourceConfig> sourceList = dataSourceConfig.getFullIndexingSourceConfig(); for(SingleSourceConfig config : sourceList){ System.out.println(config); System.out.println(config.isActive()); } List<SingleSourceConfig> sourceList2 = dataSourceConfig.getAddIndexingSourceConfig(); for(SingleSourceConfig config : sourceList2){ System.out.println(config); System.out.println(config.isActive()); } // List<JDBCSourceInfo> sourceInfoList = dataSourceConfig.getJdbcSourceInfoList(); // for(JDBCSourceInfo jdbcSourceInfo : sourceInfoList){ // System.out.println(jdbcSourceInfo.getId()); // System.out.println(jdbcSourceInfo.getName()); // System.out.println(jdbcSourceInfo.getDriver()); // System.out.println(jdbcSourceInfo.getUrl()); // System.out.println(jdbcSourceInfo.getUser()); // System.out.println(jdbcSourceInfo.getPassword()); // } } @Test public void testSingleSourceConfigWrite() throws IOException, JAXBException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); SingleSourceConfig config = new SingleSourceConfig(); config.setSourceModifier("modifier"); config.setSourceReader("com.abc.Reader"); Map<String, String> properties = new HashMap<String, String>(); properties.put("encoding", "utf-8"); config.setProperties(properties); JAXBConfigs.writeRawConfig(baos, config, SingleSourceConfig.class); System.out.println(new String(baos.toByteArray())); } @Test public void testDataSourceConfigWrite() throws IOException, JAXBException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataSourceConfig dataSourceConfig = new DataSourceConfig(); List<SingleSourceConfig> fullSourceConfigList = new ArrayList<SingleSourceConfig>(); dataSourceConfig.setFullIndexingSourceConfig(fullSourceConfigList); List<SingleSourceConfig> addSourceConfigList = new ArrayList<SingleSourceConfig>(); dataSourceConfig.setAddIndexingSourceConfig(addSourceConfigList); { SingleSourceConfig config = new SingleSourceConfig(); config.setSourceModifier("modifier"); config.setSourceReader("com.abc.Reader"); Map<String, String> properties = new HashMap<String, String>(); properties.put("encoding", "utf-8"); properties.put("jdbc-driver", "com.mysql.driver.Driver"); config.setProperties(properties); fullSourceConfigList.add(config); addSourceConfigList.add(config); } { SingleSourceConfig config2 = new SingleSourceConfig(); config2.setSourceModifier("modifier2"); config2.setSourceReader("com.abc.Reader"); Map<String, String> properties = new HashMap<String, String>(); properties.put("encoding", "utf-8"); config2.setProperties(properties); fullSourceConfigList.add(config2); addSourceConfigList.add(config2); } { List<JDBCSourceInfo> jdbcSourceInfoList = new ArrayList<JDBCSourceInfo>(); JDBCSourceInfo jdbc1 = new JDBCSourceInfo(); jdbc1.setId("id1"); jdbc1.setName("name1"); jdbc1.setDriver("com.mysql.Driver"); jdbc1.setUrl("jdbc://localhost/test"); jdbc1.setUser("admin"); jdbc1.setPassword("1234567"); jdbcSourceInfoList.add(jdbc1); jdbc1 = new JDBCSourceInfo(); jdbc1.setId("id2"); jdbc1.setName("name2"); jdbc1.setDriver("com.oracle.Driver"); jdbc1.setUrl("jdbc://localhost/test"); jdbc1.setUser("sa"); jdbc1.setPassword("sa1234567"); jdbcSourceInfoList.add(jdbc1); // dataSourceConfig.setJdbcSourceInfoList(jdbcSourceInfoList); } JAXBConfigs.writeRawConfig(baos, dataSourceConfig, DataSourceConfig.class); System.out.println(new String(baos.toByteArray())); } }