Package qat.parser

Source Code of qat.parser.GenericTestFinder

package qat.parser;

// JDK imports
import java.io.File;
import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;

// qat imports
import qat.parser.TestFinderInterface;
import qat.parser.ParserInterface;
import qat.common.Common;

/**
* This class is responsible for mapping registered test finders to their corresponding
* parsers.
*/
public class GenericTestFinder extends Object implements TestFinderInterface {
    ArrayList testFinders;
    private Properties properties;

    /**
     * Creates a tesfinder and registers a list of testfinder classes.
     * The test finders are discovered from the property Common.DEFAULT_TESTFINDER_CLASSNAMES.
     */
    public GenericTestFinder(Properties properties) {
  this.properties = properties;
  testFinders = new ArrayList();
  String registeredTestFinders = properties.getProperty(Common.TESTFINDER_CLASSNAMES,
                    Common.DEFAULT_TESTFINDER_CLASSNAMES);
  StringTokenizer tokens = new StringTokenizer(registeredTestFinders," ");

  while (tokens.hasMoreTokens()) {
      try {
    Class c = (Class.forName(tokens.nextToken()));
    TestFinderInterface tfi = (TestFinderInterface)c.getConstructor(null).newInstance(null);
    tfi.setProperties(properties);
    testFinders.add(tfi);
      }
      catch (Throwable t) {
    t.printStackTrace();
      }
  }
  setProperties(properties);
    }
 
    public void setProjectRoot(String rootDirectory) {
  for (int i = 0; i < testFinders.size(); i++) {
      ((TestFinderInterface)testFinders.get(i)).setProjectRoot(rootDirectory);
      ((TestFinderInterface)testFinders.get(i)).setProperties(properties);
  }
    }

    /**
     * Return true if this file is a QASH file.
     */
    public boolean isTestFile(File file) {
  for (int i = 0; i < testFinders.size(); i++) {
      if (((TestFinderInterface)testFinders.get(i)).isTestFile(file))
    return true;
  }
  return false;
    }

    public ParserInterface getParser(File file) {
  ParserInterface parser;
  for (int i = 0; i < testFinders.size(); i++) {
      if ((parser=((TestFinderInterface)testFinders.get(i)).getParser(file))!=null) {
    parser.setProperties(getProperties());
    return parser;
      }
  }
  return null;
    }

    /**
     * This method sets any default properties which will be required
     * for parsing this file.
     */
    public void setProperties(java.util.Properties p) {
  this.properties = properties;
  for (int i = 0; i < testFinders.size(); i++) {
      ((TestFinderInterface)testFinders.get(i)).setProperties(p);
  }
    }
   
    /**
     * This method returns all the properties obtained by parsing this test file.
     */
    public java.util.Properties getProperties() {
  return properties;
    }

    public String getProperty(String name) {
  return properties.getProperty(name);
    }

    public String getProperty(String name, String defaultValue) {
  return properties.getProperty(name,defaultValue);
    }
}
TOP

Related Classes of qat.parser.GenericTestFinder

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.