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 &lt;site&gt; 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&#10;</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&#10;</xsl:text>
  +      </xsl:if>
       </xsl:for-each>
   
       <xsl:text>for i in ../stylesheet/*.xsl; do&#10;</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]>

Reply via email to