Maybe you should have a look at forrest. They provide an ant buildfile to start the site generation.
Jan > -----Original Message----- > From: Upayavira [mailto:[EMAIL PROTECTED] > Sent: Thursday, October 09, 2003 11:24 AM > To: Ant Developers List > Subject: Re: Questions: A Cocoon Ant task > > > Dominique et al, > > Thanks for that. That's really helpful. I've got a version coded, and > I'm almost there... > > I've got it reading my XML and parsing it successfully. > > And I've managed to create my own class loader, and have that load my > Cocoon classes, directly from the cocoon/WEB-INF/lib folder. > Great too. > > However, when it starts to dig deeper into Cocoon, I find that it is > using the Ant classloader in preference to mine - i.e. when asked for > org.apache.log.Hierarchy, it presents the one from within > velocity-dep-1.3-dev.jar, which is an Ant jar, not the one > provided by > Cocoon. > > Any ideas how I can force all classloading between > loader.setThreadContextLoader() and > loader.resetThreadContextLoader() to use _my_ classloader, and ignore > completely Ant's one? > > Thanks for your help - I never thought I'd get this far with it - > *complete* reuse of my configuration code! > > Regards, Upayavira > > Dominique Devienne wrote: > > >You can use DynamicConfigurator to intercept > attribute/elements, and build > >the DOM tree yourself, which you can then feed to Cocoon's > CLI I guess. > > > >The code below should get you a leg up. Provided with no warranties > >whatsoever ;-) I wrote this a long time ago, on a weekend, > with little Ant > >experience. --DD > > > >package com.lgc.buildmagic; > > > >import java.io.IOException; > >import java.io.ByteArrayOutputStream; > > > >import org.w3c.dom.Node; > >import org.w3c.dom.Element; > >import org.w3c.dom.Document; > >import org.w3c.dom.DocumentFragment; > >import org.w3c.dom.NodeList; > >import org.w3c.dom.DOMException; > > > >import javax.xml.parsers.DocumentBuilder; > >import javax.xml.parsers.DocumentBuilderFactory; > >import javax.xml.parsers.ParserConfigurationException; > > > >import org.apache.tools.ant.Project; > >import org.apache.tools.ant.BuildException; > >import org.apache.tools.ant.DynamicConfigurator; > > > >import org.apache.tools.ant.types.DataType; > >//import org.apache.tools.ant.util.DOMElementWriter; > > > >/** > > * Base class for those classes that can appear inside the build file > > * as stand alone data types. > > * > > * <p><em>My very first data type ;-)</em></p> > > * > > * @author <a href="mailto:[EMAIL PROTECTED]">Dominique Devienne</a> > > */ > >public class XmlFragment > > extends DataType > > implements DynamicConfigurator { > > > > /** > > * A dyna'tor for each element. > > */ > > private static class ElementWrapper > > implements DynamicConfigurator { > > > > /** The XML DOM node */ > > private Node _node; > > > > /** Instantiate a root wrapper */ > > private ElementWrapper(Node node) { > > _node = node; // Could be a Document or DocumentFragment > > } > > > > /** Instantiate a child wrapper */ > > private ElementWrapper(Node parent, String childName) { > > Document document = parent.getOwnerDocument(); > > if (document == null) { > > document = (Document)parent; // Node is the document! > > } > > _node = document.createElement(childName); > > parent.appendChild(_node); > > } > > > > public String toString() { > > ByteArrayOutputStream ostream = new > ByteArrayOutputStream(); > > // This will fail, since the DocFragment is not > an Element! > > // DOMElementWriter needs to be fixed to take a > node, not an > >Element. > > try { > > new DOMElementWriter().write(_node, ostream); > > return ostream.toString(); > > } > > catch (IOException e) { > > throw new BuildException(e); > > } > > } > > > > > > // > > // interface DynamicConfigurator > > // > > > > public void setDynamicAttribute(String name, String value) > > throws BuildException { > > // Never called for anything by Element wrappers > > Element element = (Element)_node; > > element.setAttribute(name, value); > > } > > > > public Object createDynamicElement(String name) > > throws BuildException { > > return new ElementWrapper(_node, name); > > } > > > > } // END class XmlFragment.ElementWrapper > > > > > > private DocumentFragment _fragment; > > private ElementWrapper _wrapper; > > > > /** > > * Instanciate a new DOM document fragment wrapped in an > Ant data type. > > */ > > public XmlFragment() { > > try { > > DocumentBuilder builder = > >DocumentBuilderFactory.newInstance().newDocumentBuilder(); > > _fragment = > builder.newDocument().createDocumentFragment(); > > _wrapper = new ElementWrapper(_fragment); > > } > > catch (ParserConfigurationException e) { > > throw new BuildException(e); > > } > > } > > > > /** > > * Sets the name of the top-level DOM node, the xml > fragment, to use. > > * > > * @param name the xml fragment node name. Defaults to > "xmlfragment". > > public void setName(String name) { > > _wrapper._tagname = name; > > } > > */ > > > > public String toString() { > > return _wrapper.toString(); > > } > > > > > > // > > // interface DynamicConfigurator > > // > > > > public void setDynamicAttribute(String name, String value) > > throws BuildException { > > // The root only supports explicit 'normal' attributes! > > throw new BuildException("attribute "+name+" not > supported!"); > > } > > > > public Object createDynamicElement(String name) > > throws BuildException { > > return _wrapper.createDynamicElement(name); > > } > > > >} // END class XmlFragment > > > > > > > >>-----Original Message----- > >>From: Upayavira [mailto:[EMAIL PROTECTED] > >>Sent: Wednesday, October 08, 2003 1:49 PM > >>To: [EMAIL PROTECTED] > >>Subject: Questions: A Cocoon Ant task > >> > >>I am attempting to craft an Ant task for Apache Cocoon's > command line > >>interface. > >> > >>Cocoon's CLI can be configured with an XML xconf file. I > want to move > >>this configuration information into the Ant build script itself. > >> > >>Is there any way I can share the code to interpret this XML > >>configuration information between Cocoon and Ant? In > Cocoon's CLI I use > >>a DOM to parse the XML, but in Ant I seem to have to create > objects for > >>nested elements, and have Ant handle it using introspection. > >> > >>Is there any other way, or do I just have to accept that I've got to > >>maintain two sets of code - one for use from the command > line, and one > >>from Ant? > >> > >>I hope I'm clear enough. > >> > >>Thanks for any help. > >> > >>Regards, > >> > >>Upayavira > >> > >> > > > >--------------------------------------------------------------------- > >To unsubscribe, e-mail: [EMAIL PROTECTED] > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >