bodewig 02/03/20 04:42:37
Modified: proposal/gump/java Jenny.java Project.java Workspace.java
proposal/gump/profile gump.xml
proposal/gump/stylesheet bash.xsl
proposal/gump/project jakarta-ant.xml
Added: proposal/gump/java Server.java
proposal/gump/server daedalus.apache.org.xml
icarus.apache.org.xml
Log:
first cut at nightly build definitions.
Revision Changes Path
1.15 +1 -0 jakarta-alexandria/proposal/gump/java/Jenny.java
Index: Jenny.java
===================================================================
RCS file: /home/cvs/jakarta-alexandria/proposal/gump/java/Jenny.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Jenny.java 4 Mar 2002 14:34:16 -0000 1.14
+++ Jenny.java 20 Mar 2002 12:42:37 -0000 1.15
@@ -240,6 +240,7 @@
expand(workspace);
replaceDate(workspace, dstamp);
Repository.load(merge("repository", workspace).elements());
+ Server.load(merge("server", workspace).elements());
Module.load(merge("module",workspace).elements());
Project.load(merge("project",workspace).elements());
output (doc, "work/merge.xml");
1.36 +23 -0 jakarta-alexandria/proposal/gump/java/Project.java
Index: Project.java
===================================================================
RCS file: /home/cvs/jakarta-alexandria/proposal/gump/java/Project.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- Project.java 15 Mar 2002 09:12:40 -0000 1.35
+++ Project.java 20 Mar 2002 12:42:37 -0000 1.36
@@ -25,6 +25,7 @@
private Hashtable jars = new Hashtable();
private Element description;
private Element url;
+ private Vector deliver = new Vector();
/**
* Create a set of Project definitions based on XML nodes.
@@ -104,6 +105,8 @@
javadoc = (Element)child;
} else if (child.getNodeName().equals("jar")) {
jars.put(((Element)child).getAttribute("id"), child);
+ } else if (child.getNodeName().equals("deliver")) {
+ deliver.add(child);
}
}
@@ -118,6 +121,7 @@
}
resolveJavadoc(javadoc);
+ handleDeliver();
// if only one jar is found, make sure that it can be accessed without
// specifying an id.
@@ -674,5 +678,24 @@
private void remove() {
projects.remove(name);
element.getParentNode().removeChild(element);
+ }
+
+ /**
+ * For alle deliver elements, add them to the corresponding site
+ * elements, if these are defined.
+ */
+ private void handleDeliver() {
+ Enumeration elements = deliver.elements();
+ String srcdir = element.getAttribute("srcdir");
+ while (elements.hasMoreElements()) {
+ Element deliver = (Element) elements.nextElement();
+ String siteName = deliver.getAttribute("tosite");
+ Element site = Server.getSite(siteName);
+ if (site != null) {
+ String fromdir = deliver.getAttribute("fromdir");
+ deliver.setAttribute("fromdir", srcdir + "/" + fromdir);
+ site.appendChild(deliver);
+ }
+ }
}
}
1.4 +71 -0 jakarta-alexandria/proposal/gump/java/Workspace.java
Index: Workspace.java
===================================================================
RCS file: /home/cvs/jakarta-alexandria/proposal/gump/java/Workspace.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Workspace.java 14 Jan 2002 13:29:34 -0000 1.3
+++ Workspace.java 20 Mar 2002 12:42:37 -0000 1.4
@@ -1,6 +1,8 @@
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import java.util.HashMap;
+
public class Workspace {
static final String GUMP_VERSION = "0.3";
@@ -8,6 +10,9 @@
private static Element element;
private static String basedir;
private static Element javadoc;
+ private static Element deliver;
+ private static HashMap servers = new HashMap();
+ private static HashMap sites = new HashMap();
/**
* Static property accessor for basedir attribute.
@@ -42,6 +47,33 @@
}
/**
+ * Static accessor - do we deliver to the given site?
+ * @return true if a server of the given name is defined in the workspace.
+ */
+ public static boolean isSiteDefined(String name) {
+ return sites.containsKey(name);
+ }
+
+ /**
+ * Static accessor for deliver's scratchdir attribute.
+ * @return Deliver scratchdir associated with this workspace.
+ */
+ public static String getScratchDir() {
+ if (deliver != null) {
+ return deliver.getAttribute("scratchdir");
+ }
+ return null;
+ }
+
+ /**
+ * Static accessor for deliver's named server child.
+ * @return null if server is not defined, the server element otherwise.
+ */
+ public static Element getServer(String name) {
+ return (Element) servers.get(name);
+ }
+
+ /**
* Default and verify various workspace attributes.
* If not specified:
* banner-image="http://jakarta.apache.org/images/jakarta-logo.gif"
@@ -86,7 +118,46 @@
for (; child != null; child=child.getNextSibling()) {
if (child.getNodeName().equals("javadoc")) {
javadoc = (Element) child;
+ } else if (child.getNodeName().equals("deliver")) {
+ handleDeliver((Element) child);
+ }
+ }
+
+ if (deliver != null) {
+ element.removeChild(deliver);
+ String scratchdir = deliver.getAttribute("scratchdir");
+ if (scratchdir.equals("")) {
+ deliver.setAttribute("scratchdir", basedir+"/scratch");
}
}
+
}
+
+ /**
+ * Fill map of servers.
+ */
+ private static void handleDeliver(Element element) {
+ deliver = element;
+ Node child=element.getFirstChild();
+ for (; child != null; child=child.getNextSibling()) {
+ if (child.getNodeName().equals("server")) {
+ Element server = (Element) child;
+ servers.put(server.getAttribute("name"), server);
+ handleSites(server);
+ }
+ }
+ }
+
+ /**
+ * Fill map of sites.
+ */
+ private static void handleSites(Element element) {
+ Node child=element.getFirstChild();
+ for (; child != null; child=child.getNextSibling()) {
+ if (child.getNodeName().equals("site")) {
+ Element site = (Element) child;
+ sites.put(site.getAttribute("name"), site);
+ }
+ }
+ }
}
1.1 jakarta-alexandria/proposal/gump/java/Server.java
Index: Server.java
===================================================================
// DOM classes
import org.w3c.dom.Element;
import org.w3c.dom.Node;
// Java classes
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
public class Server {
private static HashMap sites = new HashMap();
/**
* Create a set of site definitions based on XML nodes.
* @param elements list of <server> elements
*/
public static void load(Enumeration elements) throws Exception {
Element element = null;
while (elements.hasMoreElements()) {
try {
element = (Element)elements.nextElement();
new Server(element);
} catch (Throwable t) {
System.err.println("Dropping server "
+ element.getAttribute("name")
+ " because of Exception " + t);
}
}
}
/**
* Static accessor for the named site
* @return the element corresponding to the site, if it is defined
* in a server document as well as in the workspace.
*/
public static Element getSite(String name) {
return (Element) sites.get(name);
}
/**
* Constructor
*
* <p>Promotes all <site> children to workspace, if the site
* is defined in the workspace's deliver element. Otherwise,
* simply remove the site child element.</p>
*/
private Server(Element element) {
String name = element.getAttribute("name");
ArrayList children = new ArrayList();
Node child = element.getFirstChild();
for (; child != null; child=child.getNextSibling()) {
if (child.getNodeName().equals("site")) {
Element site = (Element) child;
site.setAttribute("server", name);
String siteName = site.getAttribute("name");
if (Workspace.getServer(name) != null
&& Workspace.isSiteDefined(siteName)) {
sites.put(siteName, site);
}
children.add(site);
}
}
Iterator iter = children.iterator();
Node parent = element.getParentNode();
while (iter.hasNext()) {
Element site = (Element) iter.next();
element.removeChild(site);
Element server = Workspace.getServer(name);
if (server != null
&& Workspace.isSiteDefined(site.getAttribute("name"))) {
addServerAttributes(server, site);
parent.appendChild(site);
}
}
}
/**
* Adds attributes defined in Workspace to the site element.
*
* @param server server element from workspace
* @param site site element from server
*/
private void addServerAttributes(Element server, Element site) {
site.setAttribute("scratchdir", Workspace.getScratchDir());
site.setAttribute("username",
server.getAttribute("username"));
String drop = server.getAttribute("dropdir");
if (drop.equals("")) {
drop = "/tmp";
}
site.setAttribute("dropdir", drop);
}
}
1.72 +4 -0 jakarta-alexandria/proposal/gump/profile/gump.xml
Index: gump.xml
===================================================================
RCS file: /home/cvs/jakarta-alexandria/proposal/gump/profile/gump.xml,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -r1.71 -r1.72
--- gump.xml 15 Mar 2002 09:29:26 -0000 1.71
+++ gump.xml 20 Mar 2002 12:42:37 -0000 1.72
@@ -163,4 +163,8 @@
<repository href="repository/whichever.xml"/>
<repository href="repository/xml.xml"/>
+ <!-- server definitions -->
+ <server href="server/daedalus.apache.org.xml"/>
+ <server href="server/icarus.apache.org.xml"/>
+
</profile>
1.75 +15 -1 jakarta-alexandria/proposal/gump/stylesheet/bash.xsl
Index: bash.xsl
===================================================================
RCS file: /home/cvs/jakarta-alexandria/proposal/gump/stylesheet/bash.xsl,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -r1.74 -r1.75
--- bash.xsl 17 Mar 2002 00:36:04 -0000 1.74
+++ bash.xsl 20 Mar 2002 12:42:37 -0000 1.75
@@ -217,7 +217,7 @@
<xsl:for-each select="repository">
<xsl:sort select="defined-in"/>
<xsl:variable name="defined-in" select="@defined-in"/>
- <xsl:if test="not(preceding::project[@defined-in=$defined-in])">
+ <xsl:if test="not(preceding::repository[@defined-in=$defined-in])">
<xsl:text>bash publish.sh repository/</xsl:text>
<xsl:value-of select="@defined-in"/>
<xsl:text>.xml </xsl:text>
@@ -238,6 +238,20 @@
<xsl:text>/profile_</xsl:text>
<xsl:value-of select="@defined-in"/>
<xsl:text>.html </xsl:text>
+ </xsl:for-each>
+
+ <xsl:for-each select="server">
+ <xsl:sort select="defined-in"/>
+ <xsl:variable name="defined-in" select="@defined-in"/>
+ <xsl:if test="not(preceding::server[@defined-in=$defined-in])">
+ <xsl:text>bash publish.sh server/</xsl:text>
+ <xsl:value-of select="@defined-in"/>
+ <xsl:text>.xml </xsl:text>
+ <xsl:value-of select="$logdir"/>
+ <xsl:text>/server_</xsl:text>
+ <xsl:value-of select="@defined-in"/>
+ <xsl:text>.html </xsl:text>
+ </xsl:if>
</xsl:for-each>
<xsl:text>for i in ../stylesheet/*.xsl; do </xsl:text>
1.43 +10 -0 jakarta-alexandria/proposal/gump/project/jakarta-ant.xml
Index: jakarta-ant.xml
===================================================================
RCS file: /home/cvs/jakarta-alexandria/proposal/gump/project/jakarta-ant.xml,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- jakarta-ant.xml 15 Mar 2002 09:29:26 -0000 1.42
+++ jakarta-ant.xml 20 Mar 2002 12:42:37 -0000 1.43
@@ -42,6 +42,16 @@
<jar name="lib/ant.jar"/>
<jar name="lib/optional.jar"/>
<javadoc nested="build/javadocs" project="jakarta-ant"/>
+
+ <deliver fromdir="distribution/src" tosite="stefans-test"
+ todir="ant/nightly/@@DATE@@/" />
+ <deliver fromdir="distribution/bin" tosite="stefans-test"
+ todir="ant/nightly/@@DATE@@/" />
+
+ <deliver fromdir="distribution/src" tosite="jakarta.apache.org"
+ todir="builds/jakarta-ant/nightly/@@DATE@@/" />
+ <deliver fromdir="distribution/bin" tosite="jakarta.apache.org"
+ todir="builds/jakarta-ant/nightly/@@DATE@@/" />
</project>
<project name="test-ant">
1.1 jakarta-alexandria/proposal/gump/server/daedalus.apache.org.xml
Index: daedalus.apache.org.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<server name="daedalus.apache.org">
<site name="xml.apache.org">
<description>The Apache XML Project</description>
<docroot>/www/xml.apache.org</docroot>
<groupid>xml</groupid>
</site>
<site name="jakarta.apache.org">
<description>The Apache Jakarta Project</description>
<docroot>/www/jakarta.apache.org</docroot>
<groupid>jakarta</groupid>
</site>
</server>
1.1 jakarta-alexandria/proposal/gump/server/icarus.apache.org.xml
Index: icarus.apache.org.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<server name="icarus.apache.org">
<site name="stefans-test">
<description>Testsite for Stefan</description>
<docroot>/x1/home/bodewig/public_html/gump</docroot>
<groupid>jakarta</groupid>
</site>
</server>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>