You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/04/30 09:20:38 UTC
cvs commit: cocoon-2.1/tools/lib qdox-1.3.jar
cziegeler 2004/04/30 00:20:37
Modified: tools/src/anttasks ManifestToolTask.java XConfToolTask.java
src/java/org/apache/cocoon/generation FileGenerator.java
tools/targets docs-build.xml init-build.xml webapp-build.xml
Added: tools/src/anttasks SitemapTask.java DocumentCache.java
tools/lib qdox-1.3.jar
Log:
First silly version of sitemap component doc generation
- uses file generator as sample
- unfortunately it has to run twice
- duplicate qdox jar
Updated Ant tasks: don't use deprecated methods
Revision Changes Path
1.4 +5 -5 cocoon-2.1/tools/src/anttasks/ManifestToolTask.java
Index: ManifestToolTask.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/tools/src/anttasks/ManifestToolTask.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ManifestToolTask.java 10 Mar 2004 09:11:50 -0000 1.3
+++ ManifestToolTask.java 30 Apr 2004 07:20:33 -0000 1.4
@@ -44,15 +44,15 @@
public void execute() throws BuildException {
if (this.manifest == null) {
- throw new BuildException("manifest attribute is required", location);
+ throw new BuildException("manifest attribute is required", this.getLocation());
}
if (this.directory == null) {
- throw new BuildException("directory attribute is required", location);
+ throw new BuildException("directory attribute is required", this.getLocation());
}
try {
// process recursive
- this.process(this.project.resolveFile(this.directory), this.manifest);
+ this.process(this.getProject().resolveFile(this.directory), this.manifest);
} catch (IOException ioe) {
throw new BuildException("IOException: " + ioe);
}
@@ -66,7 +66,7 @@
throws IOException, BuildException {
System.out.println("Writing: " + manifest);
- FileWriter w = new FileWriter(this.project.resolveFile(manifest));
+ FileWriter w = new FileWriter(this.getProject().resolveFile(manifest));
w.write("Manifest-Version: 1.0\n");
if (directoryFile.exists() && directoryFile.isDirectory() ) {
1.24 +20 -69 cocoon-2.1/tools/src/anttasks/XConfToolTask.java
Index: XConfToolTask.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/tools/src/anttasks/XConfToolTask.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- XConfToolTask.java 18 Mar 2004 10:56:53 -0000 1.23
+++ XConfToolTask.java 30 Apr 2004 07:20:34 -0000 1.24
@@ -14,38 +14,28 @@
* limitations under the License.
*/
+import java.io.File;
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.transform.TransformerException;
+
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.XMLCatalog;
import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import java.io.File;
-import java.io.IOException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
/**
* Ant task to patch xmlfiles.
*
@@ -73,17 +63,12 @@
private static final String NL=System.getProperty("line.separator");
private static final String FSEP=System.getProperty("file.separator");
- /** Cache the read configuration files (Documents) */
- private static Map fileCache = new HashMap();
-
private File file;
//private File directory;
private File srcdir;
private boolean addComments;
/** for resolving entities such as dtds */
private XMLCatalog xmlCatalog = new XMLCatalog();
- private DocumentBuilder builder;
- private Transformer transformer;
/**
* Set file, which should be patched.
@@ -125,22 +110,7 @@
*/
public void init() throws BuildException {
super.init();
- try {
- xmlCatalog.setProject(project);
- DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
- builderFactory.setValidating(false);
- builderFactory.setExpandEntityReferences(false);
- builderFactory.setNamespaceAware(false);
- builderFactory.setAttribute(
- "http://apache.org/xml/features/nonvalidating/load-external-dtd",
- Boolean.FALSE);
- builder = builderFactory.newDocumentBuilder();
- transformer = TransformerFactory.newInstance().newTransformer();
- } catch (TransformerException e) {
- throw new BuildException("TransformerException: "+e);
- } catch (ParserConfigurationException e) {
- throw new BuildException("ParserConfigurationException: "+e);
- }
+ xmlCatalog.setProject(this.getProject());
}
/**
@@ -148,23 +118,14 @@
*/
public void execute() throws BuildException {
if (this.file == null) {
- throw new BuildException("file attribute is required", location);
+ throw new BuildException("file attribute is required", this.getLocation());
}
try {
final String fileName = this.file.toURL().toExternalForm();
- Document document = (Document)this.fileCache.get(fileName);
- if ( document != null ) {
- log("Using file from cache: " + this.file, Project.MSG_DEBUG);
- this.fileCache.remove(fileName);
- } else {
-
- // load xml
- log("Reading: " + this.file, Project.MSG_DEBUG);
- document = builder.parse(fileName);
- }
+ Document document = DocumentCache.getDocument(fileName, this);
if (this.srcdir == null) {
- this.srcdir = project.resolveFile(".");
+ this.srcdir = this.getProject().resolveFile(".");
}
DirectoryScanner scanner = getDirectoryScanner(this.srcdir);
@@ -221,24 +182,15 @@
}
if (modified) {
- log("Writing: " + this.file);
- // Set the DOCTYPE output option on the transformer
- // if we have any DOCTYPE declaration in the input xml document
- final DocumentType doctype = document.getDoctype();
- if (null != doctype && null != doctype.getPublicId()) {
- transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, doctype.getPublicId());
- transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doctype.getSystemId());
- }
- transformer.transform(new DOMSource(document),
- new StreamResult(this.file));
+ DocumentCache.writeDocument(this.file, document, this);
} else {
log("No Changes: " + this.file, Project.MSG_DEBUG);
}
- this.fileCache.put(fileName, document);
+ DocumentCache.storeDocument(fileName, document, this);
} catch (TransformerException e) {
throw new BuildException("TransformerException: "+e);
} catch (SAXException e) {
- throw new BuildException("SAXException: "+e);
+ throw new BuildException("SAXException:" +e);
} catch (DOMException e) {
throw new BuildException("DOMException:" +e);
} catch (UnknownHostException e) {
@@ -264,7 +216,7 @@
final File file)
throws TransformerException, IOException, DOMException, SAXException {
- Document component = builder.parse(file.toURL().toExternalForm());
+ Document component = DocumentCache.getDocument(file.toURL().toExternalForm(), this);
String filename = file.toString();
// Check to see if Document is an xconf-tool document
@@ -305,7 +257,7 @@
String ifProp = getAttribute(elem, "if-prop", replaceProperties);
boolean ifValue = false;
if (ifProp != null && !ifProp.equals("")) {
- ifValue = Boolean.valueOf(project.getProperty(ifProp)).booleanValue();
+ ifValue = Boolean.valueOf(this.getProject().getProperty(ifProp)).booleanValue();
}
if (ifProp != null && ifProp.length() > 0 && !ifValue ) {
@@ -318,7 +270,6 @@
} else {
// Test if component wants us to remove a list of nodes first
xpath = getAttribute(elem, "remove", replaceProperties);
- Node remove = null;
if (xpath != null && xpath.length() > 0) {
nodes = XPathAPI.selectNodeList(configuration, xpath);
1.1 cocoon-2.1/tools/src/anttasks/SitemapTask.java
Index: SitemapTask.java
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.thoughtworks.qdox.ant.AbstractQdoxTask;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaClass;
/**
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2004/04/30 07:20:34 $
*/
public final class SitemapTask extends AbstractQdoxTask {
/** The name of the component in the sitemap (required) */
public static final String NAME_TAG = "cocoon.sitemap.component.name";
/** The logger category (optional) */
public static final String LOGGER_TAG = "cocoon.sitemap.component.logger";
/** The label for views (optional) */
public static final String LABEL_TAG = "cocoon.sitemap.component.label";
/** If this tag is specified, the component is not added to the sitemap (optional) */
public static final String HIDDEN_TAG = "cocoon.sitemap.component.hide";
/** If this tag is specified no documentation is generated (optional) */
public static final String NO_DOC_TAG = "cocoon.sitemap.component.documentation.disabled";
/** The documentation (optional) */
public static final String DOC_TAG = "cocoon.sitemap.component.documentation";
/** Pooling min (optional) */
public static final String POOL_MIN_TAG = "cocoon.sitemap.component.pooling.min";
/** Pooling max (optional) */
public static final String POOL_MAX_TAG = "cocoon.sitemap.component.pooling.max";
/** Pooling grow (optional) */
public static final String POOL_GROW_TAG = "cocoon.sitemap.component.pooling.grow";
private static final String LINE_SEPARATOR = "\n";//System.getProperty("line.separator");
/** The sitemap namespace. TODO - this has to be configurable for newer versions! */
private static final String SITEMAP_NS = "http://apache.org/cocoon/sitemap/1.0";
/** The sitemap */
private File sitemap;
/** The doc dir */
private File docDir;
/** The components */
private List components = new ArrayList();
public void setSitemap( final File sitemap ) {
this.sitemap = sitemap;
}
public void setDocDir( final File dir ) {
this.docDir = dir;
}
/**
* Execute generator task.
*
* @throws BuildException if there was a problem collecting the info
*/
public void execute()
throws BuildException {
validate();
// this does the hard work :)
super.execute();
try {
this.collectInfo();
if ( this.sitemap != null ) {
this.processSitemap();
}
if ( this.docDir != null ) {
this.processDocDir();
}
} catch ( final BuildException e ) {
throw e;
} catch ( final Exception e ) {
throw new BuildException( e.toString(), e );
}
}
/**
* Validate that the parameters are valid.
*/
private void validate() {
if ( this.sitemap == null && this.docDir == null ) {
throw new BuildException("Sitemap or DocDir is not specified.");
}
if ( this.sitemap != null && this.sitemap.isDirectory() ) {
throw new BuildException( "Sitemap (" + this.sitemap + ") is not a file." );
}
if ( this.docDir != null && !this.docDir.isDirectory() ) {
throw new BuildException( "DocDir (" + this.docDir + ") is not a directory." );
}
}
/**
* Collect the component infos
*/
private void collectInfo() {
log("Collection sitemap components info");
final Iterator it = super.allClasses.iterator();
while ( it.hasNext() ) {
final JavaClass javaClass = (JavaClass) it.next();
final DocletTag tag = javaClass.getTagByName( NAME_TAG );
if ( null != tag ) {
final SitemapComponent comp = new SitemapComponent( javaClass );
log("Found component: " + comp, Project.MSG_DEBUG);
this.components.add(comp);
}
}
}
/**
* Add components to sitemap
*/
private void processSitemap()
throws Exception {
log("Adding sitemap components");
final String fileName = this.sitemap.toURL().toExternalForm();
Document document;
document = DocumentCache.getDocument(fileName, this);
boolean changed = false;
Iterator iter = this.components.iterator();
while ( iter.hasNext() ) {
SitemapComponent component = (SitemapComponent)iter.next();
final String type = component.getType();
final String section = type + 's';
NodeList nodes = XPathAPI.selectNodeList(document, "/sitemap/components/" + section);
if (nodes.getLength() != 1 ) {
throw new BuildException("Unable to find section for component type " + type);
}
// remove old node!
NodeList oldNodes = XPathAPI.selectNodeList(document,
"/sitemap/components/" + section + '/' + type + "[@name='" + component.getName() + "']");
for(int i=0; i < oldNodes.getLength(); i++ ) {
final Node node = oldNodes.item(i);
node.getParentNode().removeChild(node);
}
// and add it again
if (component.append(nodes.item(0)) ) {
changed = true;
}
}
if ( changed ) {
DocumentCache.writeDocument(this.sitemap, document, this);
}
DocumentCache.storeDocument(fileName, document, this);
}
/**
* Add components to sitemap
*/
private void processDocDir()
throws Exception {
log("Generating documentation");
Iterator iter = this.components.iterator();
while ( iter.hasNext() ) {
final SitemapComponent component = (SitemapComponent)iter.next();
component.generateDocs(this.docDir);
}
}
static final class SitemapComponent {
final protected JavaClass javaClass;
final String name;
final String type;
public SitemapComponent(JavaClass javaClass) {
this.javaClass = javaClass;
this.name = javaClass.getTagByName( NAME_TAG ).getValue();
this.type = getType(this.javaClass);
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
return "Sitemap component: " + this.javaClass.getName();
}
public String getType() {
return this.type;
}
public String getName() {
return this.name;
}
public boolean append(Node parent) {
if ( this.getTagValue(HIDDEN_TAG, null) != null ) {
return false;
}
Document doc = parent.getOwnerDocument();
Node node;
StringBuffer buffer = new StringBuffer();
// first check: deprecated?
if ( this.getTagValue("deprecated", null) != null ) {
indent(parent, 3);
buffer.append("The ")
.append(this.type)
.append(" ")
.append(this.name)
.append(" is deprecated");
node = doc.createComment(buffer.toString());
parent.appendChild(node);
newLine(parent);
buffer = new StringBuffer();
}
indent(parent, 3);
node = doc.createElementNS(SITEMAP_NS, "map:" + this.type);
((Element)node).setAttribute("name", this.name);
((Element)node).setAttribute("src", this.javaClass.getFullyQualifiedName());
// test for logger
// TODO Default logger?
if ( this.javaClass.isA("org.apache.avalon.framework.logger.LogEnabled") ) {
this.addAttribute(node, LOGGER_TAG, "logger", null);
}
// test for label
this.addAttribute(node, LABEL_TAG, "label", null);
if ( this.javaClass.isA("org.apache.avalon.excalibur.pool.Poolable") ) {
// TODO - Think about default values
this.addAttribute(node, POOL_MIN_TAG, "pool-min", null);
this.addAttribute(node, POOL_MAX_TAG, "pool-max", null);
this.addAttribute(node, POOL_GROW_TAG, "pool-grow", null);
}
parent.appendChild(node);
newLine(parent);
// TODO Add configuration
return true;
}
private void addAttribute(Node node, String tag, String attributeName, String defaultValue) {
final String tagValue = this.getTagValue(tag, defaultValue);
if ( tagValue != null ) {
((Element)node).setAttribute(attributeName, tagValue);
}
}
private static void newLine(Node node) {
final Node n = node.getOwnerDocument().createTextNode(LINE_SEPARATOR);
node.appendChild(n);
}
private static void indent(Node node, int depth) {
final StringBuffer buffer = new StringBuffer();
for(int i=0; i < depth*2; i++ ) {
buffer.append(' ');
}
final Node n = node.getOwnerDocument().createTextNode(buffer.toString());
node.appendChild(n);
}
public void generateDocs(File parentDir) {
final String doc = this.getDocumentation();
if ( doc == null ) {
return;
}
try {
final File componentsDir = new File(parentDir, this.type+'s');
componentsDir.mkdir();
final File docFile = new File(componentsDir, this.name + ".txt");
docFile.createNewFile();
final FileWriter writer = new FileWriter(docFile);
writer.write(doc);
writer.close();
} catch (IOException ioe) {
throw new BuildException("Error writing doc.", ioe);
}
}
/**
* Return the documentation or null
* @return
*/
private String getDocumentation() {
if ( this.getTagValue(NO_DOC_TAG, null) != null ) {
return null;
}
return this.getTagValue(DOC_TAG, null);
}
private String getTagValue(String tagName, String defaultValue) {
final DocletTag tag = javaClass.getTagByName( tagName );
if ( tag != null ) {
return tag.getValue();
}
return defaultValue;
}
private static String getType(JavaClass clazz) {
if ( clazz.isA("org.apache.cocoon.generation.Generator") ) {
return "generator";
} else if ( clazz.isA("org.apache.cocoon.transformation.Transformer") ) {
return "transformer";
} else if ( clazz.isA("org.apache.cocoon.reading.Reader") ) {
return "reader";
} else if ( clazz.isA("org.apache.cocoon.serialization.Serializer") ) {
return "serializer";
} else if ( clazz.isA("org.apache.cocoon.acting.Action") ) {
return "action";
} else if ( clazz.isA("org.apache.cocoon.matching.Matcher") ) {
return "matcher";
} else if ( clazz.isA("org.apache.cocoon.selection.Selector") ) {
return "selector";
} else if ( clazz.isA("org.apache.cocoon.components.pipeline.ProcessingPipeline") ) {
return "pipe";
} else {
throw new BuildException("Sitemap component " + clazz.getName() + " does not implement a sitemap component interface.");
}
}
}
}
1.1 cocoon-2.1/tools/src/anttasks/DocumentCache.java
Index: DocumentCache.java
===================================================================
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2004/04/30 07:20:34 $
*/
public final class DocumentCache {
/** Cache the read configuration files (Documents) */
protected static Map fileCache = new HashMap();
/** The document builder */
private static DocumentBuilder builder;
private static Transformer transformer;
/**
* Initialize internal instance of XMLCatalog
*/
static {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setValidating(false);
builderFactory.setExpandEntityReferences(false);
builderFactory.setNamespaceAware(false);
builderFactory.setAttribute(
"http://apache.org/xml/features/nonvalidating/load-external-dtd",
Boolean.FALSE);
builder = builderFactory.newDocumentBuilder();
transformer = TransformerFactory.newInstance().newTransformer();
} catch (TransformerException e) {
throw new BuildException("TransformerException: "+e);
} catch (ParserConfigurationException e) {
throw new BuildException("ParserConfigurationException: "+e);
}
}
public static Document getDocument(String fileName, Task task)
throws SAXException {
Document document = (Document)fileCache.get(fileName);
if ( document != null ) {
task.log("Using file from cache: " + fileName, Project.MSG_DEBUG);
fileCache.remove(fileName);
} else {
try {
// load xml
task.log("Reading: " + fileName, Project.MSG_DEBUG);
document = builder.parse(fileName);
} catch (IOException e) {
throw new BuildException("IOException: "+e);
}
}
return document;
}
public static void storeDocument(String fileName, Document document, Task task) {
task.log("Storing file in cache: " + fileName, Project.MSG_DEBUG);
fileCache.put(fileName, document);
}
public static void writeDocument(File file, Document document, Task task) {
task.log("Writing: " + file);
// Set the DOCTYPE output option on the transformer
// if we have any DOCTYPE declaration in the input xml document
final DocumentType doctype = document.getDoctype();
if (null != doctype && null != doctype.getPublicId()) {
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, doctype.getPublicId());
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doctype.getSystemId());
}
try {
transformer.transform(new DOMSource(document),
new StreamResult(file));
} catch (TransformerException e) {
throw new BuildException("TransformerException: "+e);
}
}
}
1.7 +9 -2 cocoon-2.1/src/java/org/apache/cocoon/generation/FileGenerator.java
Index: FileGenerator.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/generation/FileGenerator.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FileGenerator.java 5 Mar 2004 13:02:55 -0000 1.6
+++ FileGenerator.java 30 Apr 2004 07:20:36 -0000 1.7
@@ -29,10 +29,17 @@
import java.util.Map;
/**
- *
+ * @cocoon.sitemap.component.documentation
* The <code>FileGenerator</code> is a class that reads XML from a source
* and generates SAX Events.
* The FileGenerator implements the <code>CacheableProcessingComponent</code> interface.
+ *
+ * @cocoon.sitemap.component.name file
+ * @cocoon.sitemap.component.label content
+ * @cocoon.sitemap.component.logger sitemap.generator.file
+ * @cocoon.sitemap.component.pooling.min 8
+ * @cocoon.sitemap.component.pooling.max 32
+ * @cocoon.sitemap.component.pooling.grow 4
*
* @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
* (Apache Software Foundation)
1.9 +7 -0 cocoon-2.1/tools/targets/docs-build.xml
Index: docs-build.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/tools/targets/docs-build.xml,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- docs-build.xml 2 Apr 2004 19:07:49 -0000 1.8
+++ docs-build.xml 30 Apr 2004 07:20:36 -0000 1.9
@@ -49,6 +49,13 @@
<copy file="status.xml"
tofile="${build.context}/xdocs/status.xml" filtering="on"/>
+ <!-- generate sitemap components docs -->
+ <sitemap-components docDir="${build.context}/xdocs/userdocs">
+ <fileset dir="${java}">
+ <include name="**/*.java"/>
+ </fileset>
+ </sitemap-components>
+
<!-- Forrest needs its own file at src/documentation/sitemap.xmap, so we
overwrite it with the old Cocoon-specific sitemap here -->
<move file="${build.context}/sitemap-localdocs.xmap"
1.14 +5 -0 cocoon-2.1/tools/targets/init-build.xml
Index: init-build.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/tools/targets/init-build.xml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- init-build.xml 2 Apr 2004 19:07:49 -0000 1.13
+++ init-build.xml 30 Apr 2004 07:20:36 -0000 1.14
@@ -162,6 +162,11 @@
<taskdef name="xpatch" classname="XConfToolTask"
classpath="${tools.tasks.dest}"/>
+ <!-- A task for sitemap components -->
+ <taskdef name="sitemap-components"
+ classname="SitemapTask"
+ classpathref="tasks.classpath"/>
+
<!-- Jing is used in various targets for XML validation with RELAX NG -->
<taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask"
classpathref="tasks.classpath"/>
1.16 +7 -0 cocoon-2.1/tools/targets/webapp-build.xml
Index: webapp-build.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/tools/targets/webapp-build.xml,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- webapp-build.xml 28 Apr 2004 21:29:08 -0000 1.15
+++ webapp-build.xml 30 Apr 2004 07:20:36 -0000 1.16
@@ -28,6 +28,13 @@
<copy file="${webapp}/welcome.xslt" tofile="${build.webapp}/welcome.xslt" filtering="on"/>
<copy file="${webapp}/sitemap.xmap" tofile="${build.webapp}/sitemap.xmap"/>
+ <!-- generate sitemap entries -->
+ <sitemap-components sitemap="${build.webapp}/sitemap.xmap">
+ <fileset dir="${java}">
+ <include name="**/*.java"/>
+ </fileset>
+ </sitemap-components>
+
<copy todir="${build.webapp}/stylesheets" filtering="on">
<fileset dir="${webapp}/stylesheets">
<include name="**/*.xslt"/>
1.1 cocoon-2.1/tools/lib/qdox-1.3.jar
<<Binary file>>