All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.testng.xml.XmlPackage Maven / Gradle / Ivy

There is a newer version: 7.10.1
Show newest version
package org.testng.xml;

import java.io.IOException;
import java.util.List;
import java.util.Properties;

import org.testng.collections.Lists;
import org.testng.internal.PackageUtils;
import org.testng.internal.Utils;
import org.testng.reporters.XMLStringBuffer;

/**
 * This class describes the tag   in testng.xml.
 */
public class XmlPackage {

  private String m_name;
  private List m_include = Lists.newArrayList();
  private List m_exclude = Lists.newArrayList();
  private List m_xmlClasses= null;

  public XmlPackage() {
  }

  // For YAML
  public XmlPackage(String name) {
    m_name = name;
  }

  /**
   * @return the exclude
   */
  public List getExclude() {
    return m_exclude;
  }

  /**
   * @param exclude the exclude to set
   */
  public void setExclude(List exclude) {
    m_exclude = exclude;
  }

  /**
   * @return the include
   */
  public List getInclude() {
    return m_include;
  }

  /**
   * @param include the include to set
   */
  public void setInclude(List include) {
    m_include = include;
  }

  /**
   * @return the name
   */
  public String getName() {
    return m_name;
  }

  /**
   * @param name the name to set
   */
  public void setName(String name) {
    m_name = name;
  }

  public List getXmlClasses() {
    if(null == m_xmlClasses) {
      m_xmlClasses= initializeXmlClasses();
    }

    return m_xmlClasses;
  }

  private List initializeXmlClasses() {
    List result= Lists.newArrayList();
    try {
      String[] classes = PackageUtils.findClassesInPackage(m_name, m_include, m_exclude);

      int index = 0;
      for(String className: classes) {
        result.add(new XmlClass(className, index++, false /* don't load classes */));
      }
    }
    catch(IOException ioex) {
      Utils.log("XmlPackage", 1, ioex.getMessage());
    }

    return result;
  }

  public String toXml(String indent) {
    XMLStringBuffer xsb = new XMLStringBuffer(indent);
    Properties p = new Properties();
    p.setProperty("name", getName());

    if (getInclude().isEmpty() && getExclude().isEmpty()) {
      xsb.addEmptyElement("package", p);
    } else {
      xsb.push("package", p);

      for (String m : getInclude()) {
        Properties includeProp= new Properties();
        includeProp.setProperty("name", m);
        xsb.addEmptyElement("include", includeProp);
      }
      for (String m: getExclude()) {
        Properties excludeProp= new Properties();
        excludeProp.setProperty("name", m);
        xsb.addEmptyElement("exclude", excludeProp);
      }

      xsb.pop("package");
    }

    return xsb.toXML();
  }

  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((m_exclude == null) ? 0 : m_exclude.hashCode());
    result = prime * result + ((m_include == null) ? 0 : m_include.hashCode());
    result = prime * result + ((m_name == null) ? 0 : m_name.hashCode());
    result = prime * result
        + ((m_xmlClasses == null) ? 0 : m_xmlClasses.hashCode());
    return result;
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return XmlSuite.f();
    if (getClass() != obj.getClass())
      return XmlSuite.f();
    XmlPackage other = (XmlPackage) obj;
    if (m_exclude == null) {
      if (other.m_exclude != null)
        return XmlSuite.f();
    } else if (!m_exclude.equals(other.m_exclude))
      return XmlSuite.f();
    if (m_include == null) {
      if (other.m_include != null)
        return XmlSuite.f();
    } else if (!m_include.equals(other.m_include))
      return XmlSuite.f();
    if (m_name == null) {
      if (other.m_name != null)
        return XmlSuite.f();
    } else if (!m_name.equals(other.m_name))
      return XmlSuite.f();
    if (m_xmlClasses == null) {
      if (other.m_xmlClasses != null)
        return XmlSuite.f();
    } else if (!m_xmlClasses.equals(other.m_xmlClasses))
      return XmlSuite.f();
    return true;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy