rubys       02/04/23 10:45:32

  Modified:    proposal/gump/java Jenny.java Module.java
               proposal/gump/stylesheet bash.xsl win2k.xsl
  Log:
  1) Gump will make a local copy of external href's, so they can be
  published successfully.  It works for href's that begin with "http://";
  and "file://".  I made similar changes in bash.xsl that I made in
  win2k.xsl.  So far, I have only tested the changes with Win2k.
  
  2) A "remove" attribute on a project (or a module, repository, or
  server) will cause it to be ignored.  This allows me remove
  unnecessary projects in a module file and avoid introducing their
  dependencies into the workspace.  This lets me get the Gump cycle
  time down for dealing with jakarta-tomcat-xxx Gump problems.
  Feel free to use a different name than "remove" if there is something
  more consistent.
  
  Submitted by: Larry Isaacs <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  1.17      +45 -1     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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Jenny.java        25 Mar 2002 09:23:10 -0000      1.16
  +++ Jenny.java        23 Apr 2002 17:45:32 -0000      1.17
  @@ -21,6 +21,7 @@
   import java.util.Date;
   import java.util.Enumeration;
   import java.util.Hashtable;
  +import java.util.Vector;
   
   public class Jenny {
   
  @@ -107,6 +108,9 @@
              String source=href.getValue();
              Node sub = parse(source);
   
  +           boolean isExtern = source.startsWith("http://";)
  +                       || source.startsWith("file://");
  +
              if (sub != null) {
                  if (source.lastIndexOf(".")>0) {
                      source=source.substring(0,source.lastIndexOf("."));
  @@ -134,6 +138,20 @@
   
                  node.getParentNode().replaceChild(copy,node);
                  node = copy;
  +
  +               // if expanded xml is not local to gump, make a local copy
  +               // and "redirect" location using extern-prefix attribute
  +               if (isExtern) {
  +                   String prefix = node.getNodeName() + "_";
  +                   // try to use name attribute as source, otherwise cross
  +                   // fingers and hope the current source is unique
  +                   if (node.getAttribute("name") != null) {
  +                       source = node.getAttribute("name");
  +                   }
  +                   output (sub, "work/" + prefix + source + ".xml");
  +                   node.setAttribute("defined-in", source);
  +                   node.setAttribute("extern-prefix",prefix);
  +               }
              }
          }
   
  @@ -182,7 +200,8 @@
       /**
        * Merge the contents of nodes with the same value for the name attribute.
        * Attributes from later definitions get added (or overlay) prior
  -     * definitions.  Elements get appended.
  +     * definitions.  Elements get appended.  Elements marked for removal are
  +     * removed.
        * @param type Element localname.  Typically project or repository.
        * @param document Starting point for search.
        * @return hashtable of resulting elements
  @@ -190,6 +209,7 @@
       private Hashtable merge(String type, Node document)
           throws Exception
       {
  +        boolean needRemove = false;
           Hashtable list = new Hashtable();
   
           Node child=document.getFirstChild();
  @@ -198,6 +218,12 @@
               Element element = (Element) child;
               String name = element.getAttribute("name");
   
  +            // check for "removed" elements
  +            if (!needRemove
  +                    && !element.getAttribute("remove").equals("")) {
  +                needRemove = true;
  +            }
  +
               Element priorDefinition = (Element)list.get(name);
               if (priorDefinition != null && priorDefinition != element) {
                   Element parent  = (Element)priorDefinition.getParentNode();
  @@ -210,6 +236,24 @@
                   parent.removeChild(priorDefinition);
               }
               list.put(name, element);
  +        }
  +
  +        if (needRemove) {
  +            Vector removeThem = new Vector();
  +            Enumeration enum = list.elements();
  +            while (enum.hasMoreElements()) {
  +                Element element = (Element)enum.nextElement();
  +                if (!element.getAttribute("remove").equals("")) {
  +                    removeThem.addElement(element);
  +                }
  +            }
  +
  +            enum = removeThem.elements();
  +            while (enum.hasMoreElements()) {
  +                Element element = (Element)enum.nextElement();
  +                element.getParentNode().removeChild(element);
  +                list.remove(element.getAttribute("name"));
  +            }
           }
   
           return list;
  
  
  
  1.15      +3 -0      jakarta-alexandria/proposal/gump/java/Module.java
  
  Index: Module.java
  ===================================================================
  RCS file: /home/cvs/jakarta-alexandria/proposal/gump/java/Module.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Module.java       15 Mar 2002 07:41:58 -0000      1.14
  +++ Module.java       23 Apr 2002 17:45:32 -0000      1.15
  @@ -171,10 +171,13 @@
           // Move each project from the module to the workspace
           Node parent = element.getParentNode();
           String definedIn = element.getAttribute("defined-in");
  +        String prefix = element.getAttribute("extern-prefix");
           for (Enumeration e=projects.elements(); e.hasMoreElements(); ) {
               Element project = (Element) e.nextElement();
               if (project.getAttributeNode("defined-in") == null) {
                  project.setAttribute("defined-in", definedIn);
  +               if (!prefix.equals(""))
  +                   project.setAttribute("extern-prefix",prefix);
               }
               element.removeChild(project);
               parent.appendChild(project);
  
  
  
  1.76      +27 -6     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.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- bash.xsl  20 Mar 2002 12:42:37 -0000      1.75
  +++ bash.xsl  23 Apr 2002 17:45:32 -0000      1.76
  @@ -162,7 +162,7 @@
     <xsl:template match="sed">
       <xsl:text>eval "perl </xsl:text>
       <xsl:value-of select="@script"/>
  -    <xsl:text> ../$1 $OUT"&#10;</xsl:text>
  +    <xsl:text> $1 $OUT"&#10;</xsl:text>
     </xsl:template>
   
     <!-- =================================================================== -->
  @@ -203,7 +203,11 @@
         <xsl:if test="@defined-in">
           <xsl:variable name="defined-in" select="@defined-in"/>
           <xsl:if test="not(preceding::project[@defined-in=$defined-in])">
  -          <xsl:text>bash publish.sh project/</xsl:text>
  +          <xsl:text>bash publish.sh </xsl:text>
  +          <xsl:if test="not(@extern-prefix)">
  +            <xsl:text>../project/</xsl:text>
  +          </xsl:if>
  +          <xsl:value-of select="@extern-prefix"/>
             <xsl:value-of select="@defined-in"/>
             <xsl:text>.xml </xsl:text>
             <xsl:value-of select="$logdir"/>
  @@ -218,7 +222,11 @@
         <xsl:sort select="defined-in"/>
         <xsl:variable name="defined-in" select="@defined-in"/>
         <xsl:if test="not(preceding::repository[@defined-in=$defined-in])">
  -        <xsl:text>bash publish.sh repository/</xsl:text>
  +        <xsl:text>bash publish.sh </xsl:text>
  +        <xsl:if test="not(@extern-prefix)">
  +          <xsl:text>../repository/</xsl:text>
  +        </xsl:if>
  +        <xsl:value-of select="@extern-prefix"/>
           <xsl:value-of select="@defined-in"/>
           <xsl:text>.xml </xsl:text>
           <xsl:value-of select="$logdir"/>
  @@ -231,7 +239,11 @@
       <xsl:for-each select="profile">
         <xsl:sort select="defined-in"/>
   
  -      <xsl:text>bash publish.sh profile/</xsl:text>
  +      <xsl:text>bash publish.sh </xsl:text>
  +      <xsl:if test="not(@extern-prefix)">
  +        <xsl:text>../profile/</xsl:text>
  +      </xsl:if>
  +      <xsl:value-of select="@extern-prefix"/>
         <xsl:value-of select="@defined-in"/>
         <xsl:text>.xml </xsl:text>
         <xsl:value-of select="$logdir"/>
  @@ -244,7 +256,11 @@
         <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:text>bash publish.sh </xsl:text>
  +        <xsl:if test="not(@extern-prefix)">
  +          <xsl:text>../server/</xsl:text>
  +        </xsl:if>
  +        <xsl:value-of select="@extern-prefix"/>
           <xsl:value-of select="@defined-in"/>
           <xsl:text>.xml </xsl:text>
           <xsl:value-of select="$logdir"/>
  @@ -255,7 +271,12 @@
       </xsl:for-each>
   
       <xsl:text>for i in ../stylesheet/*.xsl; do&#10;</xsl:text>
  -    <xsl:text>  bash publish.sh stylesheet/`basename $i` </xsl:text>
  +    <xsl:text>  bash publish.sh </xsl:text>
  +    <xsl:if test="not(@extern-prefix)">
  +      <xsl:text>../stylesheet/</xsl:text>
  +    </xsl:if>
  +    <xsl:value-of select="@extern-prefix"/>
  +    <xsl:text>`basename $i` </xsl:text>
       <xsl:value-of select="$logdir"/>
       <xsl:text>/code_`basename $i .xsl`.html&#10;</xsl:text>
       <xsl:text>done&#10;</xsl:text>
  
  
  
  1.38      +40 -5     jakarta-alexandria/proposal/gump/stylesheet/win2k.xsl
  
  Index: win2k.xsl
  ===================================================================
  RCS file: /home/cvs/jakarta-alexandria/proposal/gump/stylesheet/win2k.xsl,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- win2k.xsl 16 Mar 2002 16:11:52 -0000      1.37
  +++ win2k.xsl 23 Apr 2002 17:45:32 -0000      1.38
  @@ -131,7 +131,7 @@
     <xsl:template match="sed">
       <xsl:text>perl </xsl:text>
       <xsl:value-of select="@script"/>
  -    <xsl:text> ..\%1 %OUT%&#10;</xsl:text>
  +    <xsl:text> %1 %OUT%&#10;</xsl:text>
     </xsl:template>
   
     <!-- =================================================================== -->
  @@ -172,7 +172,11 @@
         <xsl:if test="@defined-in">
           <xsl:variable name="defined-in" select="@defined-in"/>
           <xsl:if test="not(preceding::project[@defined-in=$defined-in])">
  -          <xsl:text>call publish project\</xsl:text>
  +          <xsl:text>call publish </xsl:text>
  +          <xsl:if test="not(@extern-prefix)">
  +            <xsl:text>..\project\</xsl:text>
  +          </xsl:if>
  +          <xsl:value-of select="@extern-prefix"/>
             <xsl:value-of select="@defined-in"/>
             <xsl:text>.xml </xsl:text>
             <xsl:value-of select="$logdir"/>
  @@ -187,7 +191,11 @@
         <xsl:sort select="defined-in"/>
         <xsl:variable name="defined-in" select="@defined-in"/>
         <xsl:if test="not(preceding::project[@defined-in=$defined-in])">
  -        <xsl:text>call publish repository\</xsl:text>
  +        <xsl:text>call publish </xsl:text>
  +        <xsl:if test="not(@extern-prefix)">
  +          <xsl:text>..\repository\</xsl:text>
  +        </xsl:if>
  +        <xsl:value-of select="@extern-prefix"/>
           <xsl:value-of select="@defined-in"/>
           <xsl:text>.xml </xsl:text>
           <xsl:value-of select="$logdir"/>
  @@ -200,7 +208,11 @@
       <xsl:for-each select="profile">
         <xsl:sort select="defined-in"/>
   
  -      <xsl:text>call publish profile\</xsl:text>
  +      <xsl:text>call publish </xsl:text>
  +      <xsl:if test="not(@extern-prefix)">
  +        <xsl:text>..\profile\</xsl:text>
  +      </xsl:if>
  +      <xsl:value-of select="@extern-prefix"/>
         <xsl:value-of select="@defined-in"/>
         <xsl:text>.xml </xsl:text>
         <xsl:value-of select="$logdir"/>
  @@ -209,8 +221,31 @@
         <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>call publish </xsl:text>
  +        <xsl:if test="not(@extern-prefix)">
  +        <xsl:text>..\server\</xsl:text>
  +        </xsl:if>
  +        <xsl:value-of select="@extern-prefix"/>
  +        <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 </xsl:text>
  -    <xsl:text>call publish stylesheet\%%~nxi </xsl:text>
  +    <xsl:text>call publish </xsl:text>
  +    <xsl:if test="not(@extern-prefix)">
  +      <xsl:text>..\stylesheet\</xsl:text>
  +    </xsl:if>
  +    <xsl:value-of select="@extern-prefix"/>
  +    <xsl:text>%%~nxi </xsl:text>
       <xsl:value-of select="$logdir"/>
       <xsl:text>\code_%%~ni.html&#10;</xsl:text>
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to