add access rule customization
diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml
index d5d2938..65d7b9d 100644
--- a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml
+++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml
@@ -21,6 +21,11 @@
name="countBuildFiles"
class="org.eclipse.wtp.releng.tools.FileCounter">
</antTask>
+ <antTask
+ library="wtpRelengTools.jar"
+ name="customizeAccessRules"
+ class="org.eclipse.wtp.releng.tools.CustomizeAccessRules">
+ </antTask>
</extension>
diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/CustomizeAccessRules.java b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/CustomizeAccessRules.java
new file mode 100644
index 0000000..c82a7ef
--- /dev/null
+++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/CustomizeAccessRules.java
@@ -0,0 +1,397 @@
+package org.eclipse.wtp.releng.tools;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class CustomizeAccessRules extends Task {
+
+ private static final String LINE_SEPARATOR_PROPERTY_NAME = "line.separator";
+ private static final String PATH_SEPARATOR_PROPERTY_NAME = "path.separator";
+
+ static class JavaCompilerFilter implements FilenameFilter {
+
+ private static final String JAVA_COMPILER_FILENAME_EXTENSION = "args";
+ private static final String JAVA_COMPILER_FILENAME_PREFIX = "javaCompiler";
+
+ public boolean accept(File dir, String name) {
+ if (name.startsWith(JAVA_COMPILER_FILENAME_PREFIX) && name.endsWith(JAVA_COMPILER_FILENAME_EXTENSION)) {
+ return true;
+ }
+ return false;
+ }
+
+ }
+
+ private String bundleDirectory;
+ private String defaultRules;
+
+
+ private static final String FORBID_CHARACTER = "-";
+ private static final String DISCOURAGED_CHARACTER = "~";
+ private static final String ACCESSIBLE_CHARACTER = "+";
+ private static final String NONACCESSIBLE_RULE_VALUE = "nonaccessible";
+ private static final String DISCOURAGED_RULE_VALUE = "discouraged";
+ private static final String ACCESSIBLE_RULE_VALUE = "accessible";
+ private static final String PATTERN_ATTRIBUTE_NAME = "pattern";
+ private static final String KIND_ATTRIBUTE_NAME = "kind";
+ private static final String ACCESSRULE_ELEMENT_NAME = "accessrule";
+ private static final String ORG_ECLIPSE_PDE_CORE_REQUIRED_PLUGINS = "org.eclipse.pde.core.requiredPlugins";
+ private static final String PATH_ATTRIBUTE_NAME = "path";
+ private static final String CLASSPATHENTRY_ELEMENT_NAME = "classpathentry";
+ private static final String RBRACKET = "]";
+ private static final String LBRACKET = "[";
+ private static final String BACKUP_FILE_EXTENSION = ".bak";
+ private static final String CLASSPATH_FILENAME = ".classpath";
+ private static final String COMMA = ",";
+ private static final String ADAPTER_ACCESS = "#ADAPTER#ACCESS#";
+
+
+ private static String EOL = System.getProperty(LINE_SEPARATOR_PROPERTY_NAME);
+ private static String PATH_SEPERATOR = System.getProperty(PATH_SEPARATOR_PROPERTY_NAME);
+ private static FilenameFilter javaCompilerFilter = new JavaCompilerFilter();
+
+ private static Pattern adapterAccessLinePattern = Pattern.compile(ADAPTER_ACCESS + "(.*)\\[(.*)\\]");
+
+
+ private String computeCustomizedRules(File classpathFile) {
+ // first priority is to use any from classpath file.
+ String results = extractClassPathRules(classpathFile);
+ // if none, see if default rules have been specified in task element
+ if ((results == null) || (results.length() == 0)) {
+ if ((getDefaultRules() != null) && (getDefaultRules().length() > 0)) {
+ results = convertForm(getDefaultRules());
+ if ((results != null) && (results.length() > 0)) {
+ System.out.println(" Info: Using the provided default pattern: " + EOL + " " + results);
+ }
+ else {
+ System.out.println(" Info: Access Rules not customized" + EOL);
+ }
+ }
+ }
+ return results;
+ }
+
+ private boolean contains(String mainString, String toBeFound) {
+ return (-1 < mainString.indexOf(toBeFound));
+ }
+
+ private String convertForm(String commaSeperatedList) {
+ String result = commaSeperatedList;
+ result = result.replaceAll(COMMA, PATH_SEPERATOR);
+ result = removeSpace(result);
+ return result + PATH_SEPERATOR;
+ }
+
+ private void customizeAccess(File javaCompilerFile, File classpathFile) {
+ try {
+
+ String name = javaCompilerFile.getName();
+ String bakName = name + BACKUP_FILE_EXTENSION;
+ File bakFile = new File(javaCompilerFile.getParentFile(), bakName);
+ // if backup already exists, just keep adding '.bak' until doesn't
+ while (bakFile.exists()) {
+ bakName = bakName + BACKUP_FILE_EXTENSION;
+ bakFile = new File(javaCompilerFile.getParentFile(), bakName);
+ }
+
+ /*
+ * FYI. Seems like the javaCompiler file is recreated, from one
+ * compile/generate step to another, so we need to re-process
+ * (that is, the existence of the .bak file doesn't mean we are
+ * done).
+ */
+
+ FileReader fileReader = new FileReader(javaCompilerFile);
+ BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+ File newFile = new File(javaCompilerFile.getParentFile(), "tempnew" + javaCompilerFile.getName());
+ FileWriter newFileWriter = new FileWriter(newFile);
+
+ while (bufferedReader.ready()) {
+ String line = bufferedReader.readLine();
+ Matcher matcher = adapterAccessLinePattern.matcher(line);
+ if (matcher.matches()) {
+ String cp = matcher.group(1);
+ String ar = matcher.group(2);
+
+ String customizedRules = computeCustomizedRules(classpathFile);
+
+ if (contains(ar, customizedRules)) {
+ // simply re-write what we already have
+ newFileWriter.write(ADAPTER_ACCESS + cp + LBRACKET + ar + RBRACKET + EOL);
+ }
+ else {
+ // or, add if not already there
+ newFileWriter.write(ADAPTER_ACCESS + cp + LBRACKET + customizedRules + ar + RBRACKET + EOL);
+ }
+ }
+ else {
+ System.out.println("Debug: Line did not match grammar syntax expectations: " + line);
+ newFileWriter.write(line + EOL);
+ }
+
+ }
+
+ newFileWriter.close();
+ fileReader.close();
+
+ File holdFile = new File(javaCompilerFile.getParentFile(), javaCompilerFile.getName());
+ javaCompilerFile.renameTo(bakFile);
+ newFile.renameTo(holdFile);
+
+ }
+ catch (FileNotFoundException e) {
+ throw new BuildException(e);
+ }
+ catch (IOException e) {
+ System.out.println("Could not read/write javaCompilerFile");
+ e.printStackTrace();
+ }
+
+ }
+
+ public void execute() throws BuildException {
+
+ try {
+ System.out.println("bundleDirectory: " + getBundleDirectory());
+
+ if ((getBundleDirectory() != null) && (getBundleDirectory().length() > 0)) {
+ File directory = new File(getBundleDirectory());
+ if ((directory != null) && directory.exists() && directory.isDirectory()) {
+ processBundlesDirectory(directory);
+ }
+ else {
+ String msg = "the directory does not exist";
+ System.out.println(msg);
+ }
+ }
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ throw new BuildException(e);
+ }
+
+ }
+
+ private String extractClassPathRules(File classpathFile) {
+ StringBuffer patterns = new StringBuffer();
+ Document aDocument = getDOM(classpathFile);
+ Element element = getElementWithAttribute(aDocument, CLASSPATHENTRY_ELEMENT_NAME, PATH_ATTRIBUTE_NAME, ORG_ECLIPSE_PDE_CORE_REQUIRED_PLUGINS);
+ NodeList nodeList = element.getElementsByTagName(ACCESSRULE_ELEMENT_NAME);
+
+ int length = nodeList.getLength();
+ if (length > 0) {
+ ArrayList accessible = new ArrayList();
+ ArrayList discouraged = new ArrayList();
+ ArrayList forbidden = new ArrayList();
+ for (int i = 0; i < length; i++) {
+ Node node = nodeList.item(i);
+ NamedNodeMap aNamedNodeMap = node.getAttributes();
+ Node kindAttribute = aNamedNodeMap.getNamedItem(KIND_ATTRIBUTE_NAME);
+ String kindValue = kindAttribute.getNodeValue();
+ Node patternAttribute = aNamedNodeMap.getNamedItem(PATTERN_ATTRIBUTE_NAME);
+ String patternValue = patternAttribute.getNodeValue();
+
+ if (ACCESSIBLE_RULE_VALUE.equals(kindValue)) {
+ accessible.add(patternValue);
+ }
+ else if (DISCOURAGED_RULE_VALUE.equals(kindValue)) {
+ discouraged.add(patternValue);
+ }
+ else if (NONACCESSIBLE_RULE_VALUE.equals(kindValue)) {
+ forbidden.add(patternValue);
+ }
+ }
+
+ /*
+ * we store all the node/attribute values in arrayLists first,
+ * just to be positive we add them in order or acceessible,
+ * discouraged, and forbidden. (I'm not positive the
+ * getElementsByTagName gaurentees the order we want).
+ */
+ for (int j = 0; j < accessible.size(); j++) {
+ patterns.append(ACCESSIBLE_CHARACTER + (String) accessible.get(j) + PATH_SEPERATOR);
+ }
+ for (int j = 0; j < discouraged.size(); j++) {
+ patterns.append(DISCOURAGED_CHARACTER + (String) discouraged.get(j) + PATH_SEPERATOR);
+ }
+ for (int j = 0; j < forbidden.size(); j++) {
+ patterns.append(FORBID_CHARACTER + (String) forbidden.get(j) + PATH_SEPERATOR);
+ }
+ }
+ String result = patterns.toString();
+ if (result.length() > 0) {
+ System.out.println(" Info: Found pattern in classpath file: " + EOL + " " + result);
+ }
+ return result;
+ }
+
+ public String getBundleDirectory() {
+ return bundleDirectory;
+ }
+
+ public String getDefaultRules() {
+ return defaultRules;
+ }
+
+ private Document getDOM(File file) {
+
+ Document aDocument = null;
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new FileReader(file));
+ InputSource inputSource = new InputSource(reader);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ aDocument = builder.parse(inputSource);
+ }
+ catch (SAXException e) {
+ e.printStackTrace();
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ catch (ParserConfigurationException e) {
+ e.printStackTrace();
+ }
+ finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ }
+ catch (IOException e) {
+ // ignore this one
+ }
+ }
+ }
+
+ if (aDocument == null) {
+ String msg = "Error: could not parse xml in classpath file: " + file.getAbsolutePath();
+ throw new BuildException(msg);
+ }
+ return aDocument;
+
+ }
+
+ private Element getElementWithAttribute(Document aDocument, String elementName, String attributeName, String attributeValue) {
+ Element element = null;
+ NodeList nodeList = aDocument.getElementsByTagName(elementName);
+
+ int length = nodeList.getLength();
+ for (int i = 0; i < length; i++) {
+ Node node = nodeList.item(i);
+ NamedNodeMap aNamedNodeMap = node.getAttributes();
+ Node attribute = aNamedNodeMap.getNamedItem(attributeName);
+ if (attribute.getNodeValue().equals(attributeValue)) {
+ element = (Element) node;
+ break;
+ }
+ }
+ return element;
+ }
+
+ private boolean isSuitable(File file) {
+ return (file != null) && file.exists() && file.canRead() && file.canWrite();
+ }
+
+ private void processBundlesDirectory(File bundlesDirectory) {
+
+ if (bundlesDirectory == null) {
+ throw new BuildException("Error: bundlesDirectory can not be null");
+ }
+
+ String[] files = bundlesDirectory.list();
+ if ((files == null) || (files.length == 0)) {
+ throw new BuildException("Error: bundlesDirectory was empty");
+ }
+
+ for (int i = 0; i < files.length; i++) {
+ File file = new File(bundlesDirectory, files[i]);
+ if (file.isFile()) {
+ System.out.println("debug info: top level file ignored: " + file.getName());
+ }
+ else {
+ processDirectory(file);
+ }
+ }
+
+ }
+
+ private void processDirectory(File directory) {
+
+ String[] allFiles = directory.list();
+ if (allFiles == null) {
+ throw new BuildException("Error: bundlesDirectory was empty");
+ }
+
+ File classpathFile = new File(directory, CLASSPATH_FILENAME);
+ File[] javaCompilerFiles = directory.listFiles(javaCompilerFilter);
+
+ File javaCompilerFile = null;
+ if (javaCompilerFiles != null) {
+ for (int j = 0; j < javaCompilerFiles.length; j++) {
+ javaCompilerFile = javaCompilerFiles[j];
+ if (isSuitable(javaCompilerFile) && isSuitable(classpathFile)) {
+ System.out.println("Info: customizing access rules in " + directory.getName());
+ customizeAccess(javaCompilerFile, classpathFile);
+ }
+ }
+ }
+ }
+
+ /**
+ * Simply space remover (not for natural language)
+ *
+ * @param s
+ * @return String
+ */
+ private String removeSpace(String s) {
+ String results = null;
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (Character.isWhitespace(c)) {
+ // do not copy to buffer
+ }
+ else {
+ // add to buffer
+ sb.append(c);
+ }
+ }
+ if (sb.length() > 0) {
+ results = sb.toString();
+ }
+ return results;
+
+ }
+
+ public void setBundleDirectory(String bundleDirectory) {
+ this.bundleDirectory = bundleDirectory;
+ }
+
+ public void setDefaultRules(String defaultRules) {
+ this.defaultRules = defaultRules;
+ }
+}
diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java
index 4bac6c6..eb52fae 100644
--- a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java
+++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java
@@ -27,6 +27,7 @@
import javax.xml.transform.stream.StreamResult;
import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -108,7 +109,6 @@
// <descriptor, ie. OS name>,path to template file, path to output file
// public String platformSpecificTemplateList = "";
-
// Name of the generated index php file.
public String testResultsHtmlFileName;
@@ -162,14 +162,16 @@
public static void main(String[] args) {
ResultsSummaryGenerator test = new ResultsSummaryGenerator();
- test.setDropTokenList("%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%");
+ test
+ .setDropTokenList("%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%");
test.setPlatformIdentifierToken("%platform%");
test.getDropTokensFromList(test.dropTokenList);
test.setIsBuildTested(true);
test.setXmlDirectoryName("C:\\junk\\testresults\\xml");
test.setHtmlDirectoryName("C:\\junk\\testresults");
test.setDropDirectoryName("C:\\junk");
- test.setTestResultsTemplateFileName("C:\\junk\\templateFiles\\testResults.php.template");
+ test
+ .setTestResultsTemplateFileName("C:\\junk\\templateFiles\\testResults.php.template");
// test.setPlatformSpecificTemplateList("Windows,C:\\junk\\templateFiles\\platform.php.template,winPlatform.php;Linux,C:\\junk\\templateFiles\\platform.php.template,linPlatform.php;Solaris,C:\\junk\\templateFiles\\platform.php.template,solPlatform.php;AIX,C:\\junk\\templateFiles\\platform.php.template,aixPlatform.php;Macintosh,C:\\junk\\templateFiles\\platform.php.template,macPlatform.php;Source
// Build,C:\\junk\\templateFiles\\sourceBuilds.php.template,sourceBuilds.php");
test.setTestResultsHtmlFileName("testResults.php");
@@ -188,13 +190,13 @@
try {
getDropTokensFromList(dropTokenList);
testResultsTemplateString = readFile(testResultsTemplateFileName);
- //dropTemplateString = readFile(dropTemplateFileName);
+ // dropTemplateString = readFile(dropTemplateFileName);
// Specific to the platform build-page
/*
* if (platformSpecificTemplateList != "") { String description,
- * platformTemplateFile, platformDropFile; // Retrieve the
- * different platforms and their info
+ * platformTemplateFile, platformDropFile; // Retrieve the different
+ * platforms and their info
* getDifferentPlatformsFromList(platformSpecificTemplateList); //
* Parses the platform info and retrieves the platform name, //
* template file, and drop file for (int i = 0; i <
@@ -223,13 +225,14 @@
// }
// else {
// }
- }
- catch (Exception e) {
+ } catch (Exception e) {
throw new BuildException(e);
}
}
- private void parseCompileLogs() throws TransformerFactoryConfigurationError, IOException, TransformerException {
+ private void parseCompileLogs()
+ throws TransformerFactoryConfigurationError, IOException,
+ TransformerException {
totalErrors = 0;
totalAccess = 0;
totalWarnings = 0;
@@ -394,15 +397,18 @@
// System.out.println("totalErrors: " + totalErrors); // ,
// log("totalErrors: " + totalErrors, Project.MSG_INFO);
- buffer.append(
- "<tr CLASS=\"" + rowtype + " " + "bold" + "\">" + EOL + "<td>"
- + EOL).append("TOTALS (" + rowCount + ")").append(
- "</td><td CLASS=\"numeric\">").append(totalErrors).append(
- "</td><td CLASS=\"numeric\">").append(totalAccess).append("(")
- .append(totalforbiddenAccessWarningCount).append("/").append(
- totaldiscouragedAccessWarningCount).append(")").append(
- "</td><td CLASS=\"numeric\">").append(totalWarnings)
- .append("</td>" + EOL + "</tr>" + EOL);
+ buffer.append("<tr CLASS=\"" + rowtype + " " + "bold" + "\">" + EOL)
+ .append("<td>" + EOL)
+ .append("TOTALS (" + rowCount + ")")
+ .append("</td><td CLASS=\"numeric\">")
+ .append(totalErrors)
+ .append("</td><td CLASS=\"numeric\">")
+ .append(totalforbiddenAccessWarningCount)
+ .append("</td><td CLASS=\"numeric\">")
+ .append(totaldiscouragedAccessWarningCount)
+ .append("</td><td CLASS=\"numeric\">")
+ .append(totalWarnings)
+ .append("</td>" + EOL + "</tr>" + EOL);
}
@@ -413,16 +419,13 @@
int warningCount = countCompileWarnings(fileContents);
int forbiddenWarningCount = countForbiddenWarnings(fileContents);
int discouragedWarningCount = countDiscouragedWarnings(fileContents);
- if (errorCount != 0) {
- // use wildcard in place of version number on directory names
- String logName = log.substring(getCompileLogsDirectoryName()
- .length() + 1);
- StringBuffer stringBuffer = new StringBuffer(logName);
- stringBuffer.replace(logName.indexOf("_") + 1, logName.indexOf(
- File.separator, logName.indexOf("_") + 1), "*");
- logName = new String(stringBuffer);
-
- }
+ // use wildcard in place of version number on directory names
+ String logName = log
+ .substring(getCompileLogsDirectoryName().length() + 1);
+ StringBuffer stringBuffer = new StringBuffer(logName);
+ stringBuffer.replace(logName.indexOf("_") + 1, logName.indexOf(
+ File.separator, logName.indexOf("_") + 1), "*");
+ logName = new String(stringBuffer);
formatCompileErrorRow(log, errorCount, warningCount,
forbiddenWarningCount, discouragedWarningCount, buffer);
}
@@ -459,12 +462,14 @@
}
}
- if (aDocument == null)
+ if (aDocument == null) {
+ log("could not parse xml in log file: " + log, Project.MSG_ERR);
return;
- // Get summary of problems
+ }
+
+ // Get summary of problems.
+ // By API, nodeList should never be null.
NodeList nodeList = aDocument.getElementsByTagName("problem");
- if (nodeList == null || nodeList.getLength() == 0)
- return;
int length = nodeList.getLength();
for (int i = 0; i < length; i++) {
@@ -491,17 +496,16 @@
}
}
}
- if (errorCount != 0) {
- // use wildcard in place of version number on directory names
- // System.out.println(log + "/n");
- String logName = log.substring(getCompileLogsDirectoryName()
- .length() + 1);
- StringBuffer buffer = new StringBuffer(logName);
- buffer.replace(logName.indexOf("_") + 1, logName.indexOf(
- File.separator, logName.indexOf("_") + 1), "*");
- logName = new String(buffer);
- }
+ // use wildcard in place of version number on directory names
+ // System.out.println(log + "/n");
+ String logName = log
+ .substring(getCompileLogsDirectoryName().length() + 1);
+ StringBuffer buffer = new StringBuffer(logName);
+ buffer.replace(logName.indexOf("_") + 1, logName.indexOf(
+ File.separator, logName.indexOf("_") + 1), "*");
+ logName = new String(buffer);
+
formatCompileErrorRow(log.replaceAll(".xml", ".html"), errorCount,
warningCount, forbiddenWarningCount, discouragedWarningCount,
stringBuffer);
@@ -644,7 +648,6 @@
private int totaldiscouragedAccessWarningCount;
private int totalforbiddenAccessWarningCount;
-
private void parseUnitTestXml() throws IOException,
TransformerFactoryConfigurationError, TransformerException {
@@ -746,7 +749,6 @@
}
-
private void writeTestResultsFile() {
String outputFileName = dropDirectoryName + File.separator
@@ -871,38 +873,55 @@
}
String rowtype = "normaltable";
- if (errorCount > 0) {
+ if (errorCount > 0 || forbiddenAccessWarningCount > 0) {
rowtype = "errortable";
- } else if (warningCount > 0) {
+ } else if (warningCount > 0 || discouragedAccessWarningCount > 0) {
rowtype = "warningtable";
- if (warningCount > 15) {
+ if (warningCount > 15 || discouragedAccessWarningCount > 0) {
rowtype = "extraWarningTable";
}
}
- buffer.append("<tr CLASS=\"" + rowtype + "\">" + EOL + "<td>" + EOL)
- .append("<a href=").append("\"").append(
- getHrefCompileLogsTargetPath()).append(shortName)
- .append("\" type='text/plain' ").append(">")
- .append(displayName).append("</a>").append(
- "</td><td CLASS=\"numeric\">").append("<a href=")
- .append("\"").append(getHrefCompileLogsTargetPath()).append(
- shortName).append("#ERRORS").append(
- "\" type='text/plain' ").append(">").append(errorCount)
- .append("</a>").append("</td><td CLASS=\"numeric\">").append(
- "<a href=").append("\"").append(
- getHrefCompileLogsTargetPath()).append(shortName)
+ buffer.append("<tr CLASS=\"" + rowtype + "\">" + EOL)
+ .append("<td>" + EOL)
+ .append("<a href=\"").append(getHrefCompileLogsTargetPath()).append(shortName)
+ .append("\" type='text/plain' >")
+ .append(displayName)
+ .append("</a></td>")
+ .append(EOL)
+
+ .append("<td CLASS=\"numeric\">").append("<a href=\"")
+ .append(getHrefCompileLogsTargetPath()).append(shortName)
+ .append("#ERRORS")
+ .append("\" type='text/plain' >")
+ .append(errorCount)
+ .append("</a></td>")
+ .append(EOL)
+
+ .append("<td CLASS=\"numeric\">").append("<a href=\"")
+ .append(getHrefCompileLogsTargetPath()).append(shortName)
.append("#ACCESSRULES_WARNINGS")
- .append("\" type='text/plain' ").append(">").append(
- accessRuleWarningCount).append("</a>").append("(")
- .append(forbiddenAccessWarningCount).append("/").append(
- discouragedAccessWarningCount).append(")").append(
- "</td><td CLASS=\"numeric\">").append("<a href=")
- .append("\"").append(getHrefCompileLogsTargetPath()).append(
- shortName).append("#OTHER_WARNINGS").append(
- "\" type='text/plain' ").append(">").append(
- warningCount).append("</a>").append(
- "</td>" + EOL + "</tr>" + EOL);
+ .append("\" type='text/plain' >")
+ .append(forbiddenAccessWarningCount)
+ .append("</a></td>")
+ .append(EOL)
+
+ .append("<td CLASS=\"numeric\">").append("<a href=\"")
+ .append(getHrefCompileLogsTargetPath()).append(shortName)
+ .append("#ACCESSRULES_WARNINGS")
+ .append("\" type='text/plain' >")
+ .append(discouragedAccessWarningCount)
+ .append("</a></td>")
+ .append(EOL)
+
+
+ .append("<td CLASS=\"numeric\">").append("<a href=\"")
+ .append(getHrefCompileLogsTargetPath()).append(shortName).append("#OTHER_WARNINGS")
+ .append("\" type='text/plain' >")
+ .append(warningCount)
+ .append("</a></td>")
+
+ .append( EOL + "</tr>" + EOL);
}
/**
@@ -1135,8 +1154,6 @@
this.dropHtmlFileName = dropHtmlFileName;
}
-
-
private void getDropTokensFromList(String list) {
StringTokenizer tokenizer = new StringTokenizer(list, ",");
dropTokens = new Vector();
diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/TestResultsGenerator.java b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/TestResultsGenerator.java
deleted file mode 100644
index fd34228..0000000
--- a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/TestResultsGenerator.java
+++ /dev/null
@@ -1,1125 +0,0 @@
-package org.eclipse.wtp.releng.tools;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.tools.ant.Task;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * @version 1.0
- * @author Dean Roberts
- */
-public class TestResultsGenerator extends Task {
- private static final String WARNING_SEVERITY = "WARNING";
- private static final String ERROR_SEVERITY = "ERROR";
- private static final String ForbiddenReferenceID = "ForbiddenReference";
- private static final String DiscouragedReferenceID = "DiscouragedReference";
-
- private static final int DEFAULT_READING_SIZE = 8192;
-
- static final String elementName = "testsuite";
- static final String testResultsToken = "%testresults%";
- static final String compileLogsToken = "%compilelogs%";
- public Vector dropTokens;
- public Vector platformSpecs;
- public Vector differentPlatforms;
- public String testResultsWithProblems = "\n";
-
- private DocumentBuilder parser = null;
- public String testResultsTemplateString = "";
- public String dropTemplateString = "";
-
- public Vector platformDescription;
- public Vector platformTemplateString;
- public Vector platformDropFileName;
-
- // Status of tests results (pending, successful, failed), used to specify
- // the color
- // of the test Results link on the build pages (standard, green, red),
- // once failures
- // are encountered, this is set to failed
- protected String testResultsStatus = "successful";
- // assume tests ran. If no html files are found, this is set to false
- private boolean testsRan = true;
-
- // Parameters
- // build runs JUnit automated tests
- private boolean isBuildTested;
-
- // buildType, I, N
- public String buildType;
-
- // Comma separated list of drop tokens
- public String dropTokenList;
-
- // Token in platform.php.template to be replaced by the desired platform
- // ID
- public String platformIdentifierToken;
-
- // Location of the xml files
- public String xmlDirectoryName;
-
- // Location of the html files
- public String htmlDirectoryName;
-
- // Location of the resulting index.php file.
- public String dropDirectoryName;
-
- // Location and name of the template index.php file.
- public String testResultsTemplateFileName;
-
- // Platform specific template and output list (colon separated) in the
- // following format:
- // <descriptor, ie. OS name>,path to template file, path to output file
- public String platformSpecificTemplateList = "";
-
- // Name of the generated index php file.
- public String testResultsHtmlFileName;
-
- // Name of the generated drop index php file;
- public String dropHtmlFileName;
-
- // Arbitrary path used in the index.php page to href the
- // generated .html files.
- public String hrefTestResultsTargetPath;
-
- // Aritrary path used in the index.php page to reference the compileLogs
- public String hrefCompileLogsTargetPath;
-
- // Location of compile logs base directory
- public String compileLogsDirectoryName;
-
- // Location and name of test manifest file
- public String testManifestFileName;
-
- // Initialize the prefix to a default string
- private String prefix = "default";
- private String testShortName = "";
- private int counter = 0;
- // The four configurations, add new configurations to test results here +
- // update
- // testResults.php.template for changes
- private String[] testsConfig = { "linux.gtk.x86.xml",
- "linux.gtk.x86_5.0.xml", "macosx.carbon.ppc.xml",
- "win32.win32.x86.xml", "win32.win32.x86_5.0.xml" };
-
- public static void main(String[] args) {
- TestResultsGenerator test = new TestResultsGenerator();
- test
- .setDropTokenList("%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%");
- test.setPlatformIdentifierToken("%platform%");
- test.getDropTokensFromList(test.dropTokenList);
- test.setIsBuildTested(true);
- test.setXmlDirectoryName("C:\\junk\\testresults\\xml");
- test.setHtmlDirectoryName("C:\\junk\\testresults");
- test.setDropDirectoryName("C:\\junk");
- test
- .setTestResultsTemplateFileName("C:\\junk\\templateFiles\\testResults.php.template");
- test
- .setPlatformSpecificTemplateList("Windows,C:\\junk\\templateFiles\\platform.php.template,winPlatform.php;Linux,C:\\junk\\templateFiles\\platform.php.template,linPlatform.php;Solaris,C:\\junk\\templateFiles\\platform.php.template,solPlatform.php;AIX,C:\\junk\\templateFiles\\platform.php.template,aixPlatform.php;Macintosh,C:\\junk\\templateFiles\\platform.php.template,macPlatform.php;Source Build,C:\\junk\\templateFiles\\sourceBuilds.php.template,sourceBuilds.php");
- test.setTestResultsHtmlFileName("testResults.php");
- // test.setDropHtmlFileName("index.php");
- test.setDropHtmlFileName("index.html");
-
- test.setHrefTestResultsTargetPath("testresults");
- test.setCompileLogsDirectoryName("C:\\junk\\compilelogs\\plugins");
- test.setHrefCompileLogsTargetPath("compilelogs");
- test.setTestManifestFileName("C:\\junk\\testManifest.xml");
- test.execute();
- }
-
- public void execute() {
-
- platformDescription = new Vector();
- platformTemplateString = new Vector();
- platformDropFileName = new Vector();
- // anErrorTracker.loadFile(testManifestFileName);
- getDropTokensFromList(dropTokenList);
- testResultsTemplateString = readFile(testResultsTemplateFileName);
- // dropTemplateString = readFile(dropTemplateFileName);
-
- // Specific to the platform build-page
- if (platformSpecificTemplateList != "") {
- String description, platformTemplateFile, platformDropFile;
- // Retrieve the different platforms and their info
- getDifferentPlatformsFromList(platformSpecificTemplateList);
- // Parses the platform info and retrieves the platform name,
- // template file, and drop file
- for (int i = 0; i < differentPlatforms.size(); i++) {
- getPlatformSpecsFromList(differentPlatforms.get(i).toString());
- description = platformSpecs.get(0).toString();
- platformTemplateFile = platformSpecs.get(1).toString();
- platformDropFile = platformSpecs.get(2).toString();
- platformDescription.add(description);
- platformTemplateString.add(readFile(platformTemplateFile));
- platformDropFileName.add(platformDropFile);
-
- }
-
- }
-
- System.out.println("Begin: Generating test results index page");
- System.out.println("Parsing XML files");
- parseXml();
- System.out.println("Parsing compile logs");
- parseCompileLogs();
- System.out.println("End: Generating test results index page");
- writeTestResultsFile();
- // For the platform build-page, write platform files, in addition to
- // the index file
- if (platformSpecificTemplateList != "") {
- writeDropFiles();
- }
- }
-
- public void parseCompileLogs() {
-
- StringBuffer replaceString = new StringBuffer();
- processCompileLogsDirectory(compileLogsDirectoryName, replaceString);
- if (replaceString.length() == 0) {
- replaceString.append("None");
- }
- testResultsTemplateString = replace(testResultsTemplateString,
- compileLogsToken, String.valueOf(replaceString));
-
- }
-
- private void processCompileLogsDirectory(String directoryName,
- StringBuffer buffer) {
- File sourceDirectory = new File(directoryName);
- if (sourceDirectory.isFile()) {
- if (sourceDirectory.getName().endsWith(".log"))
- readCompileLog(sourceDirectory.getAbsolutePath(), buffer);
- if (sourceDirectory.getName().endsWith(".xml"))
- parseCompileLog(sourceDirectory.getAbsolutePath(), buffer);
- }
- if (sourceDirectory.isDirectory()) {
- File[] logFiles = sourceDirectory.listFiles();
- Arrays.sort(logFiles);
- for (int j = 0; j < logFiles.length; j++) {
- processCompileLogsDirectory(logFiles[j].getAbsolutePath(),
- buffer);
- }
- }
- }
-
- private void readCompileLog(String log, StringBuffer buffer) {
- String fileContents = readFile(log);
-
- int errorCount = countCompileErrors(fileContents);
- int warningCount = countCompileWarnings(fileContents);
- int forbiddenWarningCount = countForbiddenWarnings(fileContents);
- int discouragedWarningCount = countDiscouragedWarnings(fileContents);
- if (errorCount != 0) {
- // use wildcard in place of version number on directory names
- String logName = log.substring(getCompileLogsDirectoryName()
- .length() + 1);
- StringBuffer stringBuffer = new StringBuffer(logName);
- stringBuffer.replace(logName.indexOf("_") + 1, logName.indexOf(
- File.separator, logName.indexOf("_") + 1), "*");
- logName = new String(stringBuffer);
-
- }
- formatCompileErrorRow(log, errorCount, warningCount,
- forbiddenWarningCount, discouragedWarningCount, buffer);
- }
-
- private void parseCompileLog(String log, StringBuffer stringBuffer) {
- int errorCount = 0;
- int warningCount = 0;
- int forbiddenWarningCount = 0;
- int discouragedWarningCount = 0;
-
- File file = new File(log);
- Document aDocument = null;
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(file));
- InputSource inputSource = new InputSource(reader);
- DocumentBuilderFactory factory = DocumentBuilderFactory
- .newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- aDocument = builder.parse(inputSource);
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
-
- if (aDocument == null)
- return;
- // Get summary of problems
- NodeList nodeList = aDocument.getElementsByTagName("problem");
- if (nodeList == null || nodeList.getLength() == 0)
- return;
-
- int length = nodeList.getLength();
- for (int i = 0; i < length; i++) {
- Node problemNode = nodeList.item(i);
- NamedNodeMap aNamedNodeMap = problemNode.getAttributes();
- Node severityNode = aNamedNodeMap.getNamedItem("severity");
- Node idNode = aNamedNodeMap.getNamedItem("id");
- if (severityNode != null) {
- String severityNodeValue = severityNode.getNodeValue();
- if (WARNING_SEVERITY.equals(severityNodeValue)) {
- // this is a warning
- // need to check the id
- String nodeValue = idNode.getNodeValue();
- if (ForbiddenReferenceID.equals(nodeValue)) {
- forbiddenWarningCount++;
- } else if (DiscouragedReferenceID.equals(nodeValue)) {
- discouragedWarningCount++;
- } else {
- warningCount++;
- }
- } else if (ERROR_SEVERITY.equals(severityNodeValue)) {
- // this is an error
- errorCount++;
- }
- }
- }
- if (errorCount != 0) {
- // use wildcard in place of version number on directory names
- // System.out.println(log + "/n");
- String logName = log.substring(getCompileLogsDirectoryName()
- .length() + 1);
- StringBuffer buffer = new StringBuffer(logName);
- buffer.replace(logName.indexOf("_") + 1, logName.indexOf(
- File.separator, logName.indexOf("_") + 1), "*");
- logName = new String(buffer);
-
- }
- formatCompileErrorRow(log.replaceAll(".xml", ".html"), errorCount,
- warningCount, forbiddenWarningCount, discouragedWarningCount,
- stringBuffer);
- }
-
- public static byte[] getFileByteContent(String fileName) throws IOException {
- InputStream stream = null;
- try {
- File file = new File(fileName);
- stream = new FileInputStream(file);
- return getInputStreamAsByteArray(stream, (int) file.length());
- } finally {
- if (stream != null) {
- try {
- stream.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
-
- /**
- * Returns the given input stream's contents as a byte array. If a length is
- * specified (ie. if length != -1), only length bytes are returned.
- * Otherwise all bytes in the stream are returned. Note this doesn't close
- * the stream.
- *
- * @throws IOException
- * if a problem occured reading the stream.
- */
- public static byte[] getInputStreamAsByteArray(InputStream stream,
- int length) throws IOException {
- byte[] contents;
- if (length == -1) {
- contents = new byte[0];
- int contentsLength = 0;
- int amountRead = -1;
- do {
- int amountRequested = Math.max(stream.available(),
- DEFAULT_READING_SIZE); // read
- // at
- // least
- // 8K
-
- // resize contents if needed
- if (contentsLength + amountRequested > contents.length) {
- System.arraycopy(contents, 0,
- contents = new byte[contentsLength
- + amountRequested], 0, contentsLength);
- }
-
- // read as many bytes as possible
- amountRead = stream.read(contents, contentsLength,
- amountRequested);
-
- if (amountRead > 0) {
- // remember length of contents
- contentsLength += amountRead;
- }
- } while (amountRead != -1);
-
- // resize contents if necessary
- if (contentsLength < contents.length) {
- System.arraycopy(contents, 0,
- contents = new byte[contentsLength], 0, contentsLength);
- }
- } else {
- contents = new byte[length];
- int len = 0;
- int readSize = 0;
- while ((readSize != -1) && (len != length)) {
- // See PR 1FMS89U
- // We record first the read size. In this case len is the
- // actual read size.
- len += readSize;
- readSize = stream.read(contents, len, length - len);
- }
- }
-
- return contents;
- }
-
- public String readFile(String fileName) {
- byte[] aByteArray = null;
- try {
- aByteArray = getFileByteContent(fileName);
- } catch (IOException e) {
- e.printStackTrace();
- }
- if (aByteArray == null) {
- return "";
- }
- return new String(aByteArray);
- }
-
- private int countCompileErrors(String aString) {
- return extractNumber(aString, "error");
- }
-
- private int countCompileWarnings(String aString) {
- return extractNumber(aString, "warning");
- }
-
- private int countForbiddenWarnings(String aString) {
- return extractNumber(aString, "Access restriction:");
- }
-
- private int countDiscouragedWarnings(String aString) {
- return extractNumber(aString, "Discouraged access:");
- }
-
- private int extractNumber(String aString, String endToken) {
- int endIndex = aString.lastIndexOf(endToken);
- if (endIndex == -1) {
- return 0;
- }
-
- int startIndex = endIndex;
- while (startIndex >= 0 && aString.charAt(startIndex) != '('
- && aString.charAt(startIndex) != ',') {
- startIndex--;
- }
-
- String count = aString.substring(startIndex + 1, endIndex).trim();
- try {
- return Integer.parseInt(count);
- } catch (NumberFormatException e) {
- return 0;
- }
-
- }
-
- private boolean includeAll;
-
- public void parseXml() {
-
- File sourceDirectory = new File(xmlDirectoryName);
-
- if (sourceDirectory.exists()) {
-
- String replaceString = "";
-
- File[] xmlFileNames = sourceDirectory.listFiles();
- Arrays.sort(xmlFileNames);
-
- for (int i = 0; i < xmlFileNames.length; i++) {
- if (xmlFileNames[i].getPath().endsWith(".xml")) {
- String fullName = xmlFileNames[i].getPath();
- int errorCount = countErrors(fullName);
- if (errorCount != 0) {
- String testName = xmlFileNames[i].getName().substring(
- 0, xmlFileNames[i].getName().length() - 4);
- testResultsWithProblems = testResultsWithProblems
- .concat("\n" + testName);
- }
-
- String tmp = ((platformSpecificTemplateList == "") ? formatRow(
- xmlFileNames[i].getPath(), errorCount, true)
- : formatRowReleng(xmlFileNames[i].getPath(),
- errorCount, true));
- replaceString = replaceString + tmp;
-
- }
- }
-
- testResultsTemplateString = replace(testResultsTemplateString,
- testResultsToken, replaceString);
- testsRan = true;
-
- } else {
- testsRan = false;
- System.out.println("Test results not found in "
- + sourceDirectory.getAbsolutePath());
- }
-
- }
-
- private String replace(String source, String original, String replacement) {
-
- int replaceIndex = source.indexOf(original);
- if (replaceIndex > -1) {
- String resultString = source.substring(0, replaceIndex);
- resultString = resultString + replacement;
- resultString = resultString
- + source.substring(replaceIndex + original.length());
- return resultString;
- } else {
- System.out.println("Could not find token: " + original);
- return source;
- }
-
- }
-
- protected void writeDropFiles() {
- // Write all the platform files
- for (int i = 0; i < platformDescription.size(); i++) {
- writePlatformFile(platformDescription.get(i).toString(),
- platformTemplateString.get(i).toString(),
- platformDropFileName.get(i).toString());
- }
- }
-
- // Writes the platform file (dropFileName) specific to "desiredPlatform"
- private void writePlatformFile(String desiredPlatform,
- String templateString, String dropFileName) {
-
- templateString = replace(templateString, platformIdentifierToken,
- desiredPlatform);
- templateString = replace(templateString, "%testsStatus%",
- testResultsStatus);
- String outputFileName = dropDirectoryName + File.separator
- + dropFileName;
- writeFile(outputFileName, templateString);
- }
-
-
- public void writeTestResultsFile() {
-
- String outputFileName = dropDirectoryName + File.separator
- + testResultsHtmlFileName;
- writeFile(outputFileName, testResultsTemplateString);
- }
-
- private void writeFile(String outputFileName, String contents) {
- FileOutputStream outputStream = null;
- try {
- outputStream = new FileOutputStream(outputFileName);
- outputStream.write(contents.getBytes());
- } catch (FileNotFoundException e) {
- System.out.println("File not found exception writing: "
- + outputFileName);
- } catch (IOException e) {
- System.out.println("IOException writing: " + outputFileName);
- } finally {
- if (outputStream != null) {
- try {
- outputStream.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
-
- public void setTestResultsHtmlFileName(String aString) {
- testResultsHtmlFileName = aString;
- }
-
- public String getTestResultsHtmlFileName() {
- return testResultsHtmlFileName;
- }
-
- public void setTestResultsTemplateFileName(String aString) {
- testResultsTemplateFileName = aString;
- }
-
- public String getTestResultsTemplateFileName() {
- return testResultsTemplateFileName;
- }
-
- public void setXmlDirectoryName(String aString) {
- xmlDirectoryName = aString;
- }
-
- public String getXmlDirectoryName() {
- return xmlDirectoryName;
- }
-
- public void setHtmlDirectoryName(String aString) {
- htmlDirectoryName = aString;
- }
-
- public String getHtmlDirectoryName() {
- return htmlDirectoryName;
- }
-
- public void setDropDirectoryName(String aString) {
- dropDirectoryName = aString;
- }
-
- public String getDropDirectoryName() {
- return dropDirectoryName;
- }
-
- private void formatCompileErrorRow(String fileName, int errorCount,
- int warningCount, int forbiddenAccessWarningCount,
- int discouragedAccessWarningCount, StringBuffer buffer) {
-
- int accessRuleWarningCount = forbiddenAccessWarningCount
- + discouragedAccessWarningCount;
- if (!includeAll) {
- if (errorCount == 0 && warningCount == 0
- && accessRuleWarningCount == 0) {
- return;
- }
- }
-
- int i = fileName.indexOf(getHrefCompileLogsTargetPath());
-
- String shortName = fileName.substring(i
- + getHrefCompileLogsTargetPath().length());
-
- buffer.append("<tr>\n<td>\n").append("<a href=").append("\"").append(
- getHrefCompileLogsTargetPath()).append(shortName).append("\">")
- .append(shortName).append("</a>").append(
- "</td><td align=\"center\">").append("<a href=")
- .append("\"").append(getHrefCompileLogsTargetPath()).append(
- shortName).append("#ERRORS").append("\">").append(
- errorCount).append("</a>").append(
- "</td><td align=\"center\">").append("<a href=")
- .append("\"").append(getHrefCompileLogsTargetPath()).append(
- shortName).append("#ACCESSRULES_WARNINGS")
- .append("\">").append(accessRuleWarningCount).append("</a>")
- .append("(").append(forbiddenAccessWarningCount).append("/")
- .append(discouragedAccessWarningCount).append(")").append(
- "</td><td align=\"center\">").append("<a href=")
- .append("\"").append(getHrefCompileLogsTargetPath()).append(
- shortName).append("#OTHER_WARNINGS").append("\">")
- .append(warningCount).append("</a>").append("</td>\n</tr>\n");
- }
-
- private String formatRow(String fileName, int errorCount, boolean link) {
-
- // replace .xml with .html
-
- String aString = "";
- if (!link) {
- return "<tr><td>" + fileName + " (missing)" + "</td><td>" + "DNF";
- }
-
- if (fileName.endsWith(".xml")) {
-
- int begin = fileName.lastIndexOf(File.separatorChar);
- int end = fileName.lastIndexOf(".xml");
-
- String shortName = fileName.substring(begin + 1, end);
- String displayName = shortName;
- if (errorCount != 0)
- aString = aString + "<tr><td><b>";
- else
- aString = aString + "<tr><td>";
-
- if (errorCount != 0) {
- displayName = "<font color=\"#ff0000\">" + displayName
- + "</font>";
- }
- if (errorCount == -1) {
- aString = aString.concat(displayName);
- } else {
- aString = aString + "<a href=" + "\""
- + hrefTestResultsTargetPath + "/" + shortName + ".html"
- + "\">" + displayName + "</a>";
- }
- if (errorCount > 0)
- aString = aString + "</td><td><b>";
- else
- aString = aString + "</td><td>";
-
- if (errorCount == -1)
- aString = aString + "<font color=\"#ff0000\">DNF";
-
- else if (errorCount > 0)
- aString = aString + "<font color=\"#ff0000\">"
- + String.valueOf(errorCount);
- else
- aString = aString + String.valueOf(errorCount);
-
- if (errorCount != 0)
- aString = aString + "</font></b></td></tr>";
- else
- aString = aString + "</td></tr>";
- }
-
- return aString;
-
- }
-
- // Specific to the RelEng test results page
- private String formatRowReleng(String fileName, int errorCount, boolean link) {
-
- // If the file name doesn't end with any of the set test
- // configurations, do nothing
- boolean endsWithConfig = false;
- int card = testsConfig.length;
- for (int i = 0; i < card; i++) {
- if (fileName.endsWith(testsConfig[i]))
- endsWithConfig = true;
- }
- if (!endsWithConfig)
- return "";
-
- String aString = "";
- if (!link) {
- return "<tr><td>" + fileName + "</td><td align=\"center\">"
- + "DNF </tr>";
- }
-
- if (fileName.endsWith(".xml")) {
-
- int begin = fileName.lastIndexOf(File.separatorChar);
-
- // Get org.eclipse. out of the component name
- String shortName = fileName.substring(begin + 13, fileName
- .indexOf('_'));
- String displayName = shortName;
-
- // If the short name does not start with this prefix
- if (!shortName.startsWith(prefix)) {
- // If the prefix is not yet set
- if (prefix == "default") {
- // Set the testShortName variable to the current short
- // name
- testShortName = shortName;
- counter = 0;
- // Set new prefix
- prefix = shortName.substring(0,
- shortName.indexOf(".tests") + 6);
- aString = aString + "<tbody><tr><td><b>" + prefix + ".*"
- + "</b><td><td><td><td>";
- aString = aString + "<tr><td><P>" + shortName;
-
- // Loop until the matching string postfix(test config.) is
- // found
- while (counter < card
- && !fileName.endsWith(testsConfig[counter])) {
- aString = aString + "<td align=\"center\">-</td>";
- counter++;
- }
- } else {
- // Set new prefix
- prefix = shortName.substring(0,
- shortName.indexOf(".tests") + 6);
-
- // Loop until the matching string postfix(test config.) is
- // found
- while (counter < card
- && !fileName.endsWith(testsConfig[counter])) {
- aString = aString + "<td align=\"center\">-</td>";
- counter++;
- }
-
- // In this case, the new prefix should be set with the
- // short name under it,
- // since this would mean that the team has more than one
- // component test
- if (!shortName.endsWith("tests")) {
- aString = aString + "<tbody><tr><td><b>" + prefix
- + ".*" + "</b><td><td><td><td>";
- aString = aString + "<tr><td><P>" + shortName;
- }
- // The team has only one component test
- else
- aString = aString + "<tbody><tr><td><b>" + shortName;
- testShortName = shortName;
-
- counter = 0;
- }
- }
- // If the file's short name starts with the current prefix
- if (shortName.startsWith(prefix)) {
- // If the new file has a different short name than the current
- // one
- if (!shortName.equals(testShortName)) {
- // Fill the remaining cells with '-'. These files will
- // later be listed as
- // missing
- while (counter < card) {
- aString = aString + "<td align=\"center\">-</td>";
- counter++;
- }
- counter = 0;
- // Print the component name
- aString = aString + "<tr><td><P>" + shortName;
- // Loop until the matching string postfix(test config.) is
- // found
- while (counter < card
- && !fileName.endsWith(testsConfig[counter])) {
- aString = aString + "<td align=\"center\">-</td>";
- counter++;
- }
- } else {
- // Loop until the matching string postfix(test config.) is
- // found
- while (counter < card
- && !fileName.endsWith(testsConfig[counter])) {
- aString = aString + "<td align=\"center\">-</td>";
- counter++;
- }
- // If the previous component has no more test files left
- if (counter == card) {
- counter = 0;
- // Print the new component name
- aString = aString + "<tr><td><P>" + shortName;
- // Loop until the matching string postfix(test
- // config.) is found
- while (counter < card
- && !fileName.endsWith(testsConfig[counter])) {
- aString = aString + "<td align=\"center\">-</td>";
- counter++;
- }
- }
- }
-
- testShortName = shortName;
-
- if (errorCount != 0)
- aString = aString + "<td align=\"center\"><b>";
- else
- aString = aString + "<td align=\"center\">";
-
- // Print number of errors
- if (errorCount != 0) {
- displayName = "<font color=\"#ff0000\">" + "("
- + String.valueOf(errorCount) + ")" + "</font>";
- } else {
- displayName = "(0)";
- }
-
- // Reference
- if (errorCount == -1) {
- aString = aString.concat(displayName);
- } else {
- aString = aString
- + "<a href="
- + "\""
- + hrefTestResultsTargetPath
- + "/"
- + fileName.substring(begin + 1,
- fileName.length() - 4) + ".html" + "\">"
- + displayName + "</a>";
- }
-
- if (errorCount == -1)
- aString = aString + "<font color=\"#ff0000\">DNF";
-
- if (errorCount != 0)
- aString = aString + "</font></b></td>";
- else
- aString = aString + "</td>";
- counter++;
- }
- }
-
- return aString;
- }
-
- private int countErrors(String fileName) {
- int errorCount = 0;
-
- if (new File(fileName).length() == 0)
- return -1;
-
- try {
- DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
- .newInstance();
- parser = docBuilderFactory.newDocumentBuilder();
-
- Document document = parser.parse(fileName);
- NodeList elements = document.getElementsByTagName(elementName);
-
- int elementCount = elements.getLength();
- if (elementCount == 0)
- return -1;
- for (int i = 0; i < elementCount; i++) {
- Element element = (Element) elements.item(i);
- NamedNodeMap attributes = element.getAttributes();
- Node aNode = attributes.getNamedItem("errors");
- errorCount = errorCount
- + Integer.parseInt(aNode.getNodeValue());
- aNode = attributes.getNamedItem("failures");
- errorCount = errorCount
- + Integer.parseInt(aNode.getNodeValue());
-
- }
-
- } catch (IOException e) {
- System.out.println("IOException: " + fileName);
- // e.printStackTrace();
- return 0;
- } catch (SAXException e) {
- System.out.println("SAXException: " + fileName);
- // e.printStackTrace();
- return 0;
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- return errorCount;
- }
-
- /**
- * Gets the hrefTestResultsTargetPath.
- *
- * @return Returns a String
- */
- public String getHrefTestResultsTargetPath() {
- return hrefTestResultsTargetPath;
- }
-
- /**
- * Sets the hrefTestResultsTargetPath.
- *
- * @param hrefTestResultsTargetPath
- * The hrefTestResultsTargetPath to set
- */
- public void setHrefTestResultsTargetPath(String htmlTargetPath) {
- this.hrefTestResultsTargetPath = htmlTargetPath;
- }
-
- /**
- * Gets the compileLogsDirectoryName.
- *
- * @return Returns a String
- */
- public String getCompileLogsDirectoryName() {
- return compileLogsDirectoryName;
- }
-
- /**
- * Sets the compileLogsDirectoryName.
- *
- * @param compileLogsDirectoryName
- * The compileLogsDirectoryName to set
- */
- public void setCompileLogsDirectoryName(String compileLogsDirectoryName) {
- this.compileLogsDirectoryName = compileLogsDirectoryName;
- }
-
- /**
- * Gets the hrefCompileLogsTargetPath.
- *
- * @return Returns a String
- */
- public String getHrefCompileLogsTargetPath() {
- return hrefCompileLogsTargetPath;
- }
-
- /**
- * Sets the hrefCompileLogsTargetPath.
- *
- * @param hrefCompileLogsTargetPath
- * The hrefCompileLogsTargetPath to set
- */
- public void setHrefCompileLogsTargetPath(String hrefCompileLogsTargetPath) {
- this.hrefCompileLogsTargetPath = hrefCompileLogsTargetPath;
- }
-
- /**
- * Gets the testManifestFileName.
- *
- * @return Returns a String
- */
- public String getTestManifestFileName() {
- return testManifestFileName;
- }
-
- /**
- * Sets the testManifestFileName.
- *
- * @param testManifestFileName
- * The testManifestFileName to set
- */
- public void setTestManifestFileName(String testManifestFileName) {
- this.testManifestFileName = testManifestFileName;
- }
-
- /**
- * Gets the dropHtmlFileName.
- *
- * @return Returns a String
- */
- public String getDropHtmlFileName() {
- return dropHtmlFileName;
- }
-
- /**
- * Sets the dropHtmlFileName.
- *
- * @param dropHtmlFileName
- * The dropHtmlFileName to set
- */
- public void setDropHtmlFileName(String dropHtmlFileName) {
- this.dropHtmlFileName = dropHtmlFileName;
- }
-
- protected void getDropTokensFromList(String list) {
- StringTokenizer tokenizer = new StringTokenizer(list, ",");
- dropTokens = new Vector();
-
- while (tokenizer.hasMoreTokens()) {
- dropTokens.add(tokenizer.nextToken());
- }
- }
-
- protected void getDifferentPlatformsFromList(String list) {
- StringTokenizer tokenizer = new StringTokenizer(list, ";");
- differentPlatforms = new Vector();
-
- while (tokenizer.hasMoreTokens()) {
- differentPlatforms.add(tokenizer.nextToken());
- }
- }
-
- protected void getPlatformSpecsFromList(String list) {
- StringTokenizer tokenizer = new StringTokenizer(list, ",");
- platformSpecs = new Vector();
-
- while (tokenizer.hasMoreTokens()) {
- platformSpecs.add(tokenizer.nextToken());
- }
- }
-
- public String getDropTokenList() {
- return dropTokenList;
- }
-
- public void setDropTokenList(String dropTokenList) {
- this.dropTokenList = dropTokenList;
- }
-
- public boolean isBuildTested() {
- return isBuildTested;
- }
-
- public void setIsBuildTested(boolean isBuildTested) {
- this.isBuildTested = isBuildTested;
- }
-
- /**
- * @return
- */
- public boolean testsRan() {
- return testsRan;
- }
-
- /**
- * @param b
- */
- public void setTestsRan(boolean b) {
- testsRan = b;
- }
-
- /**
- * @return
- */
- public Vector getDropTokens() {
- return dropTokens;
- }
-
- /**
- * @param vector
- */
- public void setDropTokens(Vector vector) {
- dropTokens = vector;
- }
-
- /**
- * @return
- */
- public String getTestResultsWithProblems() {
- return testResultsWithProblems;
- }
-
- /**
- * @param string
- */
- public void setTestResultsWithProblems(String string) {
- testResultsWithProblems = string;
- }
-
- public String getBuildType() {
- return buildType;
- }
-
- public void setBuildType(String buildType) {
- this.buildType = buildType;
- }
-
- public String getPlatformSpecificTemplateList() {
- return platformSpecificTemplateList;
- }
-
- public void setPlatformSpecificTemplateList(
- String platformSpecificTemplateList) {
- this.platformSpecificTemplateList = platformSpecificTemplateList;
- }
-
- public void setPlatformIdentifierToken(String platformIdentifierToken) {
- this.platformIdentifierToken = platformIdentifierToken;
- }
-
- public String getPlatformIdentifierToken() {
- return platformIdentifierToken;
- }
-
- public boolean isIncludeAll() {
- return includeAll;
- }
-
- public void setIncludeAll(boolean includeAll) {
- this.includeAll = includeAll;
- }
-
-}
diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/handy.jpage b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/handy.jpage
new file mode 100644
index 0000000..ff164c5
--- /dev/null
+++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/handy.jpage
@@ -0,0 +1,17 @@
+System.getProperty("path.separator");
+
+System.getProperty("file.separator");
+
+System.getProperty("line.separator");
+
+void dumpAllProperties() {
+ java.util.Enumeration enumeration = System.getProperties().keys();
+ String key = null;
+ while (enumeration.hasMoreElements()) {
+ key = (String) enumeration.nextElement();
+ System.out.print(key);
+ for (int i = 0; i < (30 - key.length()); i++)
+ System.out.print(" ");
+ System.out.println("->" + System.getProperty(key));
+ }
+}