📄 querykeyfactorytest.java
字号:
package org.xmlBlaster.test.classtest.key;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.util.key.QueryKeyData;import org.xmlBlaster.util.key.I_QueryKeyFactory;import org.xmlBlaster.util.key.QueryKeySaxFactory;//import org.xmlBlaster.client.key.GetKey;//import org.xmlBlaster.client.key.EraseKey;import org.xmlBlaster.client.key.SubscribeKey;//import org.xmlBlaster.client.key.UnSubscribeKey;import org.xmlBlaster.util.def.Constants;import org.xmlBlaster.util.qos.AccessFilterQos;import org.xmlBlaster.util.key.KeyData;import junit.framework.*;/** * Test I_QueryKeyFactory implementations. * <p /> * <pre> * java -Djava.compiler= junit.textui.TestRunner -noloading org.xmlBlaster.test.classtest.key.QueryKeyFactoryTest * </pre> * @see org.xmlBlaster.util.key.QueryKeySaxFactory * @see <a href="http://www.xmlBlaster.org/xmlBlaster/doc/requirements/interface.html" target="others">the xmlBlaster access interface requirement</a> */public class QueryKeyFactoryTest extends TestCase { private String ME = "QueryKeyFactoryTest"; protected final Global glob; private static Logger log = Logger.getLogger(QueryKeyFactoryTest.class.getName()); private String currImpl; private I_QueryKeyFactory factory; static I_QueryKeyFactory[] IMPL = { new org.xmlBlaster.util.key.QueryKeySaxFactory(Global.instance()), }; public QueryKeyFactoryTest(Global glob, String name, int currImpl) { super(name); this.glob = glob; this.factory = IMPL[currImpl]; } protected void setUp() { log.info("Testing parser factory " + factory.getName()); } /** * Tries with all known tags */ public void testParse() { System.out.println("***QueryKeyFactoryTest: testParse ..."); try { String xml = "<key oid='HELLO' contentMime='image/gif' contentMimeExtended='1.0' domain='RUGBY' queryType='" + Constants.XPATH + "'>\n" + " <filter type='myPlugin' version='1.0'>a!=100</filter>\n" + " <filter type='anotherPlugin' version='1.1'><![CDATA[b<100|a[0]>10]]></filter>\n" + " //key\n" + "</key>\n"; QueryKeyData key = factory.readObject(xml); assertEquals("", "HELLO", key.getOid()); assertEquals("", Constants.XPATH, key.getQueryType()); assertEquals("Got '" + key.getQueryString() + "'", "//key", key.getQueryString().trim()); assertEquals("", "image/gif", key.getContentMime()); assertEquals("", "1.0", key.getContentMimeExtended()); assertEquals("", "RUGBY", key.getDomain()); AccessFilterQos[] filterArr = key.getAccessFilterArr(); assertEquals("", 2, filterArr.length); assertEquals("", "myPlugin", filterArr[0].getType()); assertEquals("", "1.0", filterArr[0].getVersion()); assertEquals("", "a!=100", filterArr[0].getQuery().toString()); assertEquals("", "anotherPlugin", filterArr[1].getType()); assertEquals("", "1.1", filterArr[1].getVersion()); assertEquals("", "b<100|a[0]>10", filterArr[1].getQuery().toString()); } catch (XmlBlasterException e) { fail("testParse failed: " + e.toString()); } System.out.println("***QueryKeyFactoryTest: testParse [SUCCESS]"); } /** * Tries with all known tags */ public void testCdata() { System.out.println("***QueryKeyFactoryTest: testCdata ..."); try { //String queryData = "<adapter>\n\n<![CDATA[\nHi\n \nworld\n\n]]>\n\n</adapter>"; String queryData = "<database:adapter xmlns:database='http://www.xmlBlaster.org/jdbc'>"+ "<database:url>jdbc:dbfFile:.</database:url>"+ "<database:username>joe</database:username>"+ "<database:password>secret</database:password>"+ "<database:interaction type='update'></database:interaction>"+ "<database:command><![CDATA[ DROP TABLE IF EXISTS cars < 100 ]]></database:command>"+ "<database:connectionlifespan ttl='1'></database:connectionlifespan>"+ "<database:rowlimit max='1'></database:rowlimit>"+ "<database:confirmation confirm='true'></database:confirmation>"+ "</database:adapter>"; String xml = "<key oid='__sys__jdbc'>\n" + queryData + "</key>\n"; QueryKeyData key = factory.readObject(xml); assertEquals("", "__sys__jdbc", key.getOid()); assertEquals("queryData expected:\n'"+queryData.trim()+"'\n but is\n'"+key.getQueryString().trim()+"'\n", queryData.trim(), key.getQueryString().trim()); log.info("Parsed and recreated successfully CDATA section:\n" + key.getQueryString().trim() + ""); } catch (XmlBlasterException e) { fail("testCdata failed: " + e.toString()); } System.out.println("***QueryKeyFactoryTest: testCdata [SUCCESS]"); } /** * Tests empty xml string */ public void testDefault() { System.out.println("***QueryKeyFactoryTest: testDefault ..."); try { QueryKeyData key = factory.readObject((String)null); assertEquals("", (String)null, key.getOid()); assertEquals("", QueryKeyData.QUERYTYPE_DEFAULT, key.getQueryType()); assertEquals("", (String)null, key.getQueryString()); assertEquals("", QueryKeyData.CONTENTMIME_DEFAULT, key.getContentMime()); assertEquals("", (String)null, key.getContentMimeExtended()); assertEquals("", (String)null, key.getDomain()); AccessFilterQos[] filterArr = key.getAccessFilterArr(); assertTrue("", null == filterArr); } catch (XmlBlasterException e) { fail("testDefault failed: " + e.toString()); } System.out.println("***QueryKeyFactoryTest: testDefault [SUCCESS]"); } /** * Test toXml (parse - createXml - parse again - test) */ public void testToXml() { System.out.println("***QueryKeyFactoryTest: testToXml ..."); try { String xml = "<key oid='HELLO' contentMime='image/gif' contentMimeExtended='1.0' domain='RUGBY' queryType='" + Constants.XPATH + "'>\n" + " //key\n" + " <filter type='myPlugin' version='1.0'>a!=100</filter>\n" + " <filter type='anotherPlugin' version='1.1'><![CDATA[b<100|a[0]>10]]></filter>\n" + "</key>\n"; QueryKeyData key = factory.readObject(xml); String newXml = key.toXml(); log.info("New XML=" + newXml); key = factory.readObject(newXml); assertEquals("", "HELLO", key.getOid()); assertEquals("", Constants.XPATH, key.getQueryType()); assertEquals("", "//key", key.getQueryString()); assertEquals("", "image/gif", key.getContentMime()); assertEquals("", "1.0", key.getContentMimeExtended()); assertEquals("", "RUGBY", key.getDomain()); AccessFilterQos[] filterArr = key.getAccessFilterArr(); assertEquals("", 2, filterArr.length); assertEquals("", "myPlugin", filterArr[0].getType()); assertEquals("", "1.0", filterArr[0].getVersion()); assertEquals("", "a!=100", filterArr[0].getQuery().toString()); assertEquals("", "anotherPlugin", filterArr[1].getType()); assertEquals("", "1.1", filterArr[1].getVersion()); assertEquals("", "b<100|a[0]>10", filterArr[1].getQuery().toString()); } catch (XmlBlasterException e) { fail("testToXml failed: " + e.toString()); } System.out.println("***QueryKeyFactoryTest: testToXml [SUCCESS]"); } /** * Tests client side SubscribeKey. */ public void testSubscribeKey() { System.out.println("***QueryKeyFactoryTest: SubscribeKey ..."); try { SubscribeKey subscribeKey = new SubscribeKey(glob, "oid"); subscribeKey.setDomain("domain"); subscribeKey.setQueryString("//query"); System.out.println("SubscribeKey: " + subscribeKey.toXml()); QueryKeyData key = factory.readObject(subscribeKey.toXml()); assertEquals("", "oid", key.getOid()); assertEquals("", "domain", key.getDomain()); assertEquals("", "//query", key.getQueryString()); assertEquals("", "XPATH", key.getQueryType()); // The last was setQueryString() so this is the used type } catch (Throwable e) { System.out.println("Test failed: " + e.toString()); } System.out.println("***QueryKeyFactoryTest: SubscribeKey [SUCCESS]"); } /** * Tests client side SubscribeKey. */ public void testExactSubscribeKey() { System.out.println("***QueryKeyFactoryTest: testExactSubscribeKey ..."); try { SubscribeKey subscribeKey = new SubscribeKey(glob, "myOid", "EXACT"); assertEquals("", "myOid", subscribeKey.getOid()); System.out.println("SubscribeKey: " + subscribeKey.toXml()); QueryKeyData key = factory.readObject(subscribeKey.toXml()); assertEquals("", "myOid", key.getOid()); assertEquals("", KeyData.CONTENTMIME_DEFAULT, key.getContentMime()); assertEquals("", KeyData.CONTENTMIMEEXTENDED_DEFAULT, key.getContentMimeExtended()); assertEquals("", (String)null, key.getDomain()); assertEquals("", "EXACT", key.getQueryType()); assertEquals("", (String)null, key.getQueryString()); } catch (Throwable e) { System.out.println("Test failed: " + e.toString()); } try { SubscribeKey subscribeKey = new SubscribeKey(glob, "//myTag", Constants.XPATH); subscribeKey.getData().setContentMime("AAA"); subscribeKey.getData().setContentMimeExtended("BBB"); subscribeKey.setDomain("CCC"); assertEquals("", "myOid", subscribeKey.getOid()); System.out.println("SubscribeKey: " + subscribeKey.toXml()); QueryKeyData key = factory.readObject(subscribeKey.toXml()); assertEquals("", (String)null, key.getOid()); assertEquals("", "AAA", key.getContentMime()); assertEquals("", "BBB", key.getContentMimeExtended()); assertEquals("", "CCC", key.getDomain()); assertEquals("", Constants.XPATH, key.getQueryType()); assertEquals("", "//myTag", key.getQueryString()); } catch (Throwable e) { System.out.println("Test failed: " + e.toString()); } System.out.println("***QueryKeyFactoryTest: testExactSubscribeKey [SUCCESS]"); } /** * Method is used by TestRunner to load these tests */ public static Test suite() { TestSuite suite= new TestSuite(); Global glob = new Global(); for (int i=0; i<IMPL.length; i++) { suite.addTest(new QueryKeyFactoryTest(glob, "testDefault", i)); suite.addTest(new QueryKeyFactoryTest(glob, "testParse", i)); suite.addTest(new QueryKeyFactoryTest(glob, "testCdata", i)); suite.addTest(new QueryKeyFactoryTest(glob, "testToXml", i)); suite.addTest(new QueryKeyFactoryTest(glob, "testSubscribeKey", i)); suite.addTest(new QueryKeyFactoryTest(glob, "testExactSubscribeKey", i)); /* TODO: suite.addTest(new QueryKeyFactoryTest(glob, "testEraseKey", i)); suite.addTest(new QueryKeyFactoryTest(glob, "testGetKey", i)); */ } return suite; } /** * <pre> * java org.xmlBlaster.test.classtest.key.QueryKeyFactoryTest * </pre> */ public static void main(String args[]) { Global glob = Global.instance(); glob.init(args); for (int i=0; i<IMPL.length; i++) { QueryKeyFactoryTest testSub = new QueryKeyFactoryTest(glob, "QueryKeyFactoryTest", i); testSub.setUp(); testSub.testDefault(); testSub.testParse(); testSub.testCdata(); testSub.testToXml(); testSub.testSubscribeKey(); testSub.testExactSubscribeKey(); /* TODO: testSub.testEraseKey(); testSub.testGetKey(); */ //testSub.tearDown(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -