leosimons 2003/04/06 00:54:32
Modified: java Project.java Workspace.java
stylesheet xref.xsl
Added: stylesheet pubreport.xsl
Log:
Adding support for Junit reports. Basically cloned the existing javadoc
functionality while giving things some different names.
Revision Changes Path
1.54 +80 -3 jakarta-gump/java/Project.java
Index: Project.java
===================================================================
RCS file: /home/cvs/jakarta-gump/java/Project.java,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- Project.java 5 Apr 2003 17:41:49 -0000 1.53
+++ Project.java 6 Apr 2003 08:54:32 -0000 1.54
@@ -149,6 +149,7 @@
Element home = null;
Element javadoc = null;
+ Element junitreport = null;
Node child=element.getFirstChild();
for (; child != null; child=child.getNextSibling()) {
@@ -171,6 +172,8 @@
url = (Element)child;
} else if (child.getNodeName().equals("javadoc")) {
javadoc = (Element)child;
+ } else if (child.getNodeName().equals("junitreport")) {
+ junitreport = (Element)child;
} else if (child.getNodeName().equals("jar")) {
jars.put(((Element)child).getAttribute("id"), child);
} else if (child.getNodeName().equals("deliver")) {
@@ -193,6 +196,7 @@
}
resolveJavadoc(javadoc);
+ resolveJunitreport(junitreport);
handleDeliver();
// if only one jar is found, make sure that it can be accessed without
@@ -752,6 +756,79 @@
// copy the entire result to the desired module
module.appendChild(javadoc);
+ }
+
+ /**
+ * If a junitreport child was found, add any missing project, module,
+ * or description information; resolve path; and copy the resulting
+ * node to the specified module.
+ * @param junitreport child XML element
+ */
+ private void resolveJunitreport(Element junitreport) throws Exception {
+ if (junitreport == null) return;
+
+ // retrieve url and dir of javadoc from the workspace
+ Element config = Workspace.getJUnitReport();
+ if (config == null) return;
+ String url = config.getAttribute("url");
+ String junitreportDir = config.getAttribute("dir");
+
+ // default project attribute to the name of this project
+ if (junitreport.getAttributeNode("project") == null)
+ junitreport.setAttribute("project", name);
+
+ // default module attribute to the module which this project belongs
+ String moduleName = junitreport.getAttribute("module");
+ if (moduleName.equals("")) moduleName = this.get("module");
+ Module module = Module.find(moduleName);
+ require (module, "module", moduleName);
+
+ if (!moduleName.equals(this.get("module"))) {
+ junitreport.setAttribute("defined-in", this.get("module"));
+ }
+
+ // if there are no child nodes, add this project's description
+ if (!junitreport.hasChildNodes() && description!=null) {
+ Element desc = (Element) description.cloneNode(true);
+ junitreport.appendChild(desc);
+ }
+
+ // resolve relative and full path to this javadoc entry
+ String path = junitreport.getAttribute("nested");
+ String fullpath;
+ if (!path.equals("")) {
+ fullpath = get("srcdir") + "/" + path;
+ } else {
+ path = junitreport.getAttribute("parent");
+ fullpath = Workspace.getBaseDir() + "/" + path;
+ }
+ path = moduleName + "/" + path;
+
+ // for each description entry, resolve source, url, and dest attrs.
+ Node child=junitreport.getFirstChild();
+ for (; child != null; child=child.getNextSibling()) {
+ if (child.getNodeName().equals("description")) {
+ Element desc = (Element) child;
+ String dir = desc.getAttribute("dir");
+ String append = "";
+ if (!dir.equals("")) append = "/" + dir;
+
+ desc.setAttribute("source", fullpath + append);
+
+ if (url.equals("")) {
+ desc.setAttribute("url", "file:///" + fullpath + append);
+ } else {
+ desc.setAttribute("url", url + path + append);
+ }
+
+ if (!junitreportDir.equals("")) {
+ desc.setAttribute("dest", junitreportDir + "/" + path + append);
+ }
+ }
+ }
+
+ // copy the entire result to the desired module
+ module.appendChild(junitreport);
}
/**
1.7 +18 -7 jakarta-gump/java/Workspace.java
Index: Workspace.java
===================================================================
RCS file: /home/cvs/jakarta-gump/java/Workspace.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Workspace.java 27 Aug 2002 14:54:09 -0000 1.6
+++ Workspace.java 6 Apr 2003 08:54:32 -0000 1.7
@@ -58,7 +58,7 @@
* <http://www.apache.org/>.
*
*/
-
+
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -71,6 +71,7 @@
private static Element element;
private static String basedir;
private static Element javadoc;
+ private static Element junitreport;
private static Element deliver;
private static Element nag;
private static HashMap servers = new HashMap();
@@ -109,6 +110,14 @@
}
/**
+ * Static property accessor for junitreport element.
+ * @return Junitreport element (if any) associated with this workspace
+ */
+ public static Element getJUnitReport() {
+ return junitreport;
+ }
+
+ /**
* Static property accessor for nag element.
* @return Javadoc element (if any) associated with this workspace
*/
@@ -188,13 +197,15 @@
for (; child != null; child=child.getNextSibling()) {
if (child.getNodeName().equals("javadoc")) {
javadoc = (Element) child;
+ } else if (child.getNodeName().equals("junitreport")) {
+ junitreport = (Element) child;
} else if (child.getNodeName().equals("nag")) {
nag = (Element) child;
} else if (child.getNodeName().equals("deliver")) {
handleDeliver((Element) child);
}
}
-
+
if (deliver != null) {
element.removeChild(deliver);
String scratchdir = deliver.getAttribute("scratchdir");
@@ -202,7 +213,7 @@
deliver.setAttribute("scratchdir", basedir+"/scratch");
}
}
-
+
}
/**
@@ -231,5 +242,5 @@
sites.put(site.getAttribute("name"), site);
}
}
- }
+ }
}
1.23 +84 -3 jakarta-gump/stylesheet/xref.xsl
Index: xref.xsl
===================================================================
RCS file: /home/cvs/jakarta-gump/stylesheet/xref.xsl,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- xref.xsl 3 Apr 2003 03:41:01 -0000 1.22
+++ xref.xsl 6 Apr 2003 08:54:32 -0000 1.23
@@ -95,7 +95,7 @@
<xsl:if test="not([EMAIL PROTECTED])">
<xsl:text>]</xsl:text>
</xsl:if>
-
+
<xsl:if test="[EMAIL PROTECTED] and @inherited] |
[EMAIL PROTECTED] and @inherited]">
<xsl:text>)</xsl:text>
@@ -179,7 +179,7 @@
<th class="content">Description</th>
</tr>
- <xsl:for-each
+ <xsl:for-each
select="/workspace/module[cvs/@repository=$r]">
<tr>
<td class="content">
@@ -527,7 +527,7 @@
<th class="content">Java Package Name</th>
<th class="content">Project</th>
</tr>
-
+
<xsl:for-each select="/workspace/project/package">
<xsl:sort select="."/>
<tr>
@@ -593,6 +593,87 @@
</content>
</html>
+
+ <!-- =============================================================== -->
+ <!-- Produce a listing of junit reports -->
+ <!-- =============================================================== -->
+
+ <html log="[EMAIL PROTECTED]/junitreports.html"
+ banner-image="[EMAIL PROTECTED]" banner-link="[EMAIL PROTECTED]">
+
+ <title>List of junitreports</title>
+
+ <sidebar>
+ <strong><a href="index.html">Build logs</a></strong>
+ <ul>
+ <xsl:for-each select="project[ant|script]">
+ <xsl:sort select="@name"/>
+ <li>
+ <a href="[EMAIL PROTECTED]"><xsl:value-of select="@name"/></a>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </sidebar>
+
+ <content>
+
+ <blockquote>
+ <xsl:for-each select="/workspace/module[junitreport]">
+ <xsl:sort select="@name"/>
+ <xsl:variable name="name" select="@name"/>
+
+ <!-- Choose from three basic styles -->
+ <xsl:choose>
+ <xsl:when test="count(junitreport/description)>1">
+ <b>
+ <xsl:value-of select="@name"/>
+ </b>
+ <xsl:text> - </xsl:text>
+ <xsl:value-of select="normalize-space(description)"/>
+ <blockquote>
+
+ <!-- Multiple reports from different projects -->
+ <xsl:if test="[EMAIL PROTECTED]">
+ <xsl:for-each select="junitreport/description">
+ <xsl:sort select="../@project"/>
+ <a href="[EMAIL PROTECTED]/index.html">
+ <xsl:value-of select="../@project"/>
+ </a>
+ <xsl:text> - </xsl:text>
+ <xsl:value-of select="normalize-space(.)"/>
+ <br/>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- Multiple javadocs all from the same project -->
+ <xsl:if test="not([EMAIL PROTECTED])">
+ <xsl:for-each select="junitreport/description">
+ <a href="[EMAIL PROTECTED]/index.html">
+ <xsl:value-of select="normalize-space(.)"/>
+ </a>
+ <br/>
+ </xsl:for-each>
+ </xsl:if>
+ </blockquote>
+ </xsl:when>
+ <xsl:otherwise>
+
+ <!-- Single javadoc -->
+ <a href="{junitreport/description/@url}/index.html">
+ <xsl:value-of select="junitreport/@project"/>
+ </a>
+ <xsl:text> - </xsl:text>
+ <xsl:value-of select="normalize-space(description)"/>
+ <p/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+
+ </blockquote>
+
+ </content>
+
+ </html>
</xref>
1.1 jakarta-gump/stylesheet/pubreport.xsl
Index: pubreport.xsl
===================================================================
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:template match="workspace">
<script>#!/usr/bin/perl
use File::Copy;
use File::Path;
my %map = (<xsl:apply-templates select="*"/>);
foreach $source (sort keys %map) {
if (-d $source) {
$dest = $map{$source};
rmtree $dest, 0, 0;
mkpath $dest, 0, 0775;
rmdir $dest;
system "cp -r $source $dest";
print "+ $source\n";
} else {
print "! $source\n";
}
}
</script>
</xsl:template>
<xsl:template match="junitreport/[EMAIL PROTECTED]">
<data>
"<xsl:value-of select="@source"/>" =>
"<xsl:value-of select="@dest"/>",</data>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]