Package org.xmlBlaster.test.classtest.key

Source Code of org.xmlBlaster.test.classtest.key.QueryKeyFactoryTest

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();
      }
   }
}
TOP

Related Classes of org.xmlBlaster.test.classtest.key.QueryKeyFactoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.