bodewig 2003/01/16 09:04:46
Modified: . gen.bat gen.sh
java Jenny.java
stylesheet bash.xsl win2k.xsl
Added: stylesheet move.xsl
Log:
Going with the "good idead, crappy code" mantra 8-)
Cache files that are external to Gump in a new cache directory, use
cached files if we cannot reach the external resource.
How it works:
* gen.* creates a cache directoy.
* Jenny
o adds cache-as attributes to external nodes.
o uses a cached version (if present) for external nodes that cannot
get expanded
* gen.* creates move.xml (because I wanted to abuse the move template
from bash.xsl and win2k.xsl)
* gen.* creates move.(sh|bat) via (bash|win2k).xsl
* gen.* calls move.* after publishing the files, thus saving the
cached stuff.
Please note that I'm doing the .bat stuff in blind flight.
Revision Changes Path
1.25 +12 -0 jakarta-gump/gen.bat
Index: gen.bat
===================================================================
RCS file: /home/cvs/jakarta-gump/gen.bat,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- gen.bat 1 Jan 2003 06:46:43 -0000 1.24
+++ gen.bat 16 Jan 2003 17:04:45 -0000 1.25
@@ -19,6 +19,7 @@
if exist work rmdir /s /q work
mkdir work
+if not exist cache mkdir cache
@REM ********************************************************************
@@ -101,12 +102,23 @@
java org.apache.xalan.xslt.Process -text -in work\merge.xml -xsl stylesheet\nag.xsl
-out work\naglist
if not errorlevel 0 goto fail
+echo Generate move instructions for cached files
+java org.apache.xalan.xslt.Process -xml -in work\merge.xml -xsl stylesheet\move.xsl
-out work\move.xml
+if not errorlevel 0 goto fail
+
+echo Generate move script for cached files
+java org.apache.xalan.xslt.Process -text -in work\move.xml -xsl
stylesheet\win2k.xsl -out work\move.bat
+if not errorlevel 0 goto fail
+
@REM ********************************************************************
echo Publishing
cd work
call puball ..\%SOURCE%
cd ..
+
+echo saving cached files
+call work\move.bat
goto eof
:fail
1.37 +14 -0 jakarta-gump/gen.sh
Index: gen.sh
===================================================================
RCS file: /home/cvs/jakarta-gump/gen.sh,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- gen.sh 13 Jul 2002 23:41:37 -0000 1.36
+++ gen.sh 16 Jan 2003 17:04:46 -0000 1.37
@@ -43,6 +43,7 @@
test -d work && rm -rf work
mkdir work
+test -d cache || mkdir cache
# ********************************************************************
@@ -147,6 +148,16 @@
java org.apache.xalan.xslt.Process -text -in work/merge.xml -xsl stylesheet/nag.xsl
-out work/naglist || \
export FAIL=1
+echo Generate move instructions for cached files
+test -n "$FAIL" || \
+java org.apache.xalan.xslt.Process -xml -in work/merge.xml -xsl stylesheet/move.xsl
-out work/move.xml || \
+export FAIL=1
+
+echo Generate move script for cached files
+test -n "$FAIL" || \
+java org.apache.xalan.xslt.Process -text -in work/move.xml -xsl stylesheet/bash.xsl
-out work/move.sh || \
+export FAIL=1
+
# **** publish ***
if test -z "$FAIL"; then
echo
@@ -156,6 +167,9 @@
bash puball.sh ../$SOURCE
cd ..
fi
+
+echo saving cached files
+test -n "$FAIL" || bash work/move.sh
test -z "$FAIL" || echo "*** FAILED ***"
1.21 +47 -5 jakarta-gump/java/Jenny.java
Index: Jenny.java
===================================================================
RCS file: /home/cvs/jakarta-gump/java/Jenny.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- Jenny.java 12 Dec 2002 03:17:23 -0000 1.20
+++ Jenny.java 16 Jan 2003 17:04:46 -0000 1.21
@@ -7,7 +7,7 @@
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 1999-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -171,7 +171,7 @@
Attr href = node.getAttributeNode("href");
if (href != null && !node.getNodeName().equals("url")) {
- String source=href.getValue();
+ String source = href.getValue();
if (source.startsWith("http://") && !online) {
throw new ConnectException("Not online");
}
@@ -189,6 +189,7 @@
source=source.substring(source.lastIndexOf("/")+1);
}
+ String cacheName = getCachedNodeName(node);
node.removeAttribute("href");
node.setAttribute("defined-in", source);
@@ -220,6 +221,7 @@
output (sub, "work/" + prefix + source + ".xml");
node.setAttribute("defined-in", source);
node.setAttribute("extern-prefix",prefix);
+ node.setAttribute("cache-as", cacheName);
}
}
}
@@ -258,6 +260,35 @@
System.err.println("Failed to expand "
+ name.toString());
System.err.println(" - " + t);
+
+ String cache = getCachedNodeName(elem);
+ File f = new File(cache);
+ if (f.exists()) {
+ Node sub = parse(cache);
+ Document doc = elem.getOwnerDocument();
+ Element copy = null;
+ Node firstNode = sub.getFirstChild();
+ for (Node childNode = firstNode; childNode != null;
+ childNode = childNode.getNextSibling()) {
+ if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+ copy = (Element)doc.importNode(childNode, true);
+ break;
+ }
+ }
+
+ moveChildren(elem, copy);
+
+ elem.getParentNode().replaceChild(copy, elem);
+
+ cache = cache.substring(6 /* "cache/".length() */,
+ cache.length()
+ - 4 /* ".xml".length() */);
+
+ copy.setAttribute("defined-in", cache);
+ copy.setAttribute("extern-prefix", "../cache/");
+
+ child = copy;
+ }
}
}
}
@@ -397,5 +428,16 @@
e.printStackTrace();
System.exit(99);
}
+ }
+
+ /**
+ * Name of the cache file.
+ */
+ private String getCachedNodeName(Element node) {
+ String hrefAttribute = node.getAttribute("href");
+ return "cache/"
+ + hrefAttribute.replace('/', '_').replace(':', '_')
+ .replace('*', '_').replace('~', '_')
+ + ".xml";
}
}
1.85 +9 -0 jakarta-gump/stylesheet/bash.xsl
Index: bash.xsl
===================================================================
RCS file: /home/cvs/jakarta-gump/stylesheet/bash.xsl,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- bash.xsl 14 Jan 2003 15:49:52 -0000 1.84
+++ bash.xsl 16 Jan 2003 17:04:46 -0000 1.85
@@ -926,4 +926,13 @@
</xsl:choose>
</xsl:template>
+ <!-- =================================================================== -->
+ <!-- Generate the move script for the cached files -->
+ <!-- =================================================================== -->
+
+ <xsl:template match="movefiles">
+ <xsl:text>#!/bin/bash </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
</xsl:stylesheet>
1.44 +9 -0 jakarta-gump/stylesheet/win2k.xsl
Index: win2k.xsl
===================================================================
RCS file: /home/cvs/jakarta-gump/stylesheet/win2k.xsl,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- win2k.xsl 14 Jan 2003 15:49:52 -0000 1.43
+++ win2k.xsl 16 Jan 2003 17:04:46 -0000 1.44
@@ -816,4 +816,13 @@
</xsl:choose>
</xsl:template>
+ <!-- =================================================================== -->
+ <!-- Generate the move script for the cached files -->
+ <!-- =================================================================== -->
+
+ <xsl:template match="movefiles">
+ <xsl:text>@echo off </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
</xsl:stylesheet>
1.1 jakarta-gump/stylesheet/move.xsl
Index: move.xsl
===================================================================
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="text()|@*" />
<xsl:template match="workspace">
<movefiles>
<xsl:apply-templates/>
</movefiles>
</xsl:template>
<xsl:template match="*[@cache-as]">
<move todir="{@cache-as}" file="work/{@extern-prefix}{@name}.xml"/>
</xsl:template>
</xsl:stylesheet>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>