stefano 00/08/21 10:38:00
Modified: src/org/apache/cocoon/generation Tag: xml-cocoon2
DirectoryGenerator.java PhpGenerator.java
ServerPagesGenerator.java StatusGenerator.java
Added: src/org/apache/cocoon/generation Tag: xml-cocoon2
ErrorGenerator.java
Log:
cleaned up a bunch of generators
Revision Changes Path
No revision
No revision
1.1.2.6 +117 -126
xml-cocoon/src/org/apache/cocoon/generation/Attic/DirectoryGenerator.java
Index: DirectoryGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/generation/Attic/DirectoryGenerator.java,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -r1.1.2.5 -r1.1.2.6
--- DirectoryGenerator.java 2000/08/04 21:11:42 1.1.2.5
+++ DirectoryGenerator.java 2000/08/21 17:37:47 1.1.2.6
@@ -5,6 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
*
* the LICENSE file.
*
*****************************************************************************/
+
package org.apache.cocoon.generation;
import java.io.File;
@@ -13,10 +14,12 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Dictionary;
+
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
+
import org.apache.avalon.utils.Parameters;
/**
@@ -52,20 +55,24 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
- * @version CVS $Revision: 1.1.2.5 $ $Date: 2000/08/04 21:11:42 $ */
+ * @version CVS $Revision: 1.1.2.6 $ $Date: 2000/08/21 17:37:47 $ */
+
public class DirectoryGenerator extends ComposerGenerator {
/** The URI of the namespace of this generator. */
protected static final String URI =
- "http://apache.org/cocoon/2.0/DirectoryGenerator";
+ "http://apache.org/cocoon/2.0/directory";
+ /** The namespace prefix for this namespace. */
+ protected static final String PREFIX = "dir";
+
/* Node and attribute names */
- protected static final String DIR_NODE_NAME = "directory";
- protected static final String FILE_NODE_NAME = "file";
+ protected static final String DIR_NODE_NAME = "directory";
+ protected static final String FILE_NODE_NAME = "file";
- protected static final String FILENAME_ATTR_NAME = "name";
- protected static final String LASTMOD_ATTR_NAME = "lastModified";
- protected static final String DATE_ATTR_NAME = "date";
+ protected static final String FILENAME_ATTR_NAME = "name";
+ protected static final String LASTMOD_ATTR_NAME = "lastModified";
+ protected static final String DATE_ATTR_NAME = "date";
/*
* Variables set per-request
@@ -81,63 +88,61 @@
* Set the request parameters. Must be called before the generate
* method.
*
- * @param resolver
- * the EntityResolver object
- * @param objectModel
- * a <code>Dictionary</code> containing model object
- * @param src
- * the URI for this request (?)
- * @param par
- * configuration parameters
+ * @param resolver
+ * the EntityResolver object
+ * @param objectModel
+ * a <code>Dictionary</code> containing model object
+ * @param src
+ * the URI for this request (?)
+ * @param par
+ * configuration parameters
*/
public void setup(EntityResolver resolver, Dictionary objectModel,
String src, Parameters par) {
- super.setup(resolver, objectModel, src, par);
-
- String dateFormatString = par.getParameter("dateFormat", null);
-
- if (dateFormatString != null) {
- this.dateFormatter = new SimpleDateFormat(dateFormatString);
- } else {
- this.dateFormatter = new SimpleDateFormat();
- }
-
- this.depth = par.getParameterAsInteger("depth", 1);
-
- /* Create a reusable attributes for creating nodes */
- AttributesImpl attributes = new AttributesImpl();
+ super.setup(resolver, objectModel, src, par);
+
+ String dateFormatString = par.getParameter("dateFormat", null);
+
+ if (dateFormatString != null) {
+ this.dateFormatter = new SimpleDateFormat(dateFormatString);
+ } else {
+ this.dateFormatter = new SimpleDateFormat();
+ }
+
+ this.depth = par.getParameterAsInteger("depth", 1);
+
+ /* Create a reusable attributes for creating nodes */
+ AttributesImpl attributes = new AttributesImpl();
}
-
/**
* Generate XML data.
*
- * @throws SAXException
- * if an error occurs while outputting the document
- * @throws IOException
- * if the requsted URI isn't a directory on the local
- * filesystem
+ * @throws SAXException
+ * if an error occurs while outputting the document
+ * @throws IOException
+ * if the requsted URI isn't a directory on the local
+ * filesystem
*/
public void generate()
throws SAXException, IOException {
InputSource input;
+ URL url;
+ File path;
+
+ input = resolver.resolveEntity(null,super.source);
+ url = new URL(input.getSystemId());
+ path = new File(url.getFile());
+
+ if (!path.isDirectory()) {
+ throw new IOException("Cannot read directory from "
+ + url.toString() + "\"");
+ }
- URL url;
- File path;
-
- input = resolver.resolveEntity(null,super.source);
- url = new URL(input.getSystemId());
- path = new File(url.getFile());
-
- if (!path.isDirectory()) {
- throw new IOException("Cannot read directory from "
- + url.toString() + "\"");
- }
-
this.contentHandler.startDocument();
- this.contentHandler.startPrefixMapping("",URI);
- addPath(path, depth);
- this.contentHandler.endPrefixMapping("");
+ this.contentHandler.startPrefixMapping(PREFIX,URI);
+ addPath(path, depth);
+ this.contentHandler.endPrefixMapping(PREFIX);
this.contentHandler.endDocument();
}
@@ -147,104 +152,90 @@
* directory, and depth is greater than zero, then recursive calls
* are made to add nodes for the directory's children.
*
- * @param path
- * the file/directory to process
- * @param depth
- * how deep to scan the directory
+ * @param path
+ * the file/directory to process
+ * @param depth
+ * how deep to scan the directory
*
- * @throws SAXException
- * if an error occurs while constructing nodes
+ * @throws SAXException
+ * if an error occurs while constructing nodes
*/
protected void addPath(File path, int depth)
throws SAXException {
-
- if (path.isDirectory()) {
-
- startNode(DIR_NODE_NAME, path);
-
- if (depth>0) {
- File contents[] = path.listFiles();
-
- for (int i=0; i<contents.length; i++) {
- addPath(contents[i], depth-1);
- }
- }
-
- endNode(DIR_NODE_NAME);
-
- } else {
-
- startNode(FILE_NODE_NAME, path);
- endNode(FILE_NODE_NAME);
-
- }
-
+ if (path.isDirectory()) {
+ startNode(DIR_NODE_NAME, path);
+ if (depth>0) {
+ File contents[] = path.listFiles();
+ for (int i=0; i<contents.length; i++) {
+ addPath(contents[i], depth-1);
+ }
+ }
+ endNode(DIR_NODE_NAME);
+ } else {
+ startNode(FILE_NODE_NAME, path);
+ endNode(FILE_NODE_NAME);
+ }
}
/**
* Begins a named node, and calls setNodeAttributes to set its
- * attributes.
+ * attributes.
*
- * @param nodeName
- * the name of the new node
- * @param path
- * the file/directory to use when setting attributes
+ * @param nodeName
+ * the name of the new node
+ * @param path
+ * the file/directory to use when setting attributes
*
- * @throws SAXException
- * if an error occurs while creating the node
+ * @throws SAXException
+ * if an error occurs while creating the node
*/
protected void startNode(String nodeName, File path)
throws SAXException {
-
- setNodeAttributes(path);
- super.contentHandler.startElement(URI, nodeName, nodeName, attributes);
+ setNodeAttributes(path);
+ super.contentHandler.startElement(URI, nodeName, nodeName,
attributes);
}
-
- /**
- * Sets the attributes for a given path. The default method sets
attributes
- * for the name of thefile/directory and for the last modification time
- * of the path.
- *
- * @param path
- * the file/directory to use when setting attributes
- *
- * @throws SAXException
- * if an error occurs while setting the attributes
- */
- protected void setNodeAttributes(File path) throws SAXException {
-
- long lastModified = path.lastModified();
- attributes.clear();
- attributes.addAttribute("", FILENAME_ATTR_NAME,
- FILENAME_ATTR_NAME, "CDATA",
- path.getName());
- attributes.addAttribute("", LASTMOD_ATTR_NAME,
- LASTMOD_ATTR_NAME, "CDATA",
- Long.toString(path.lastModified()));
- attributes.addAttribute("", LASTMOD_ATTR_NAME,
- LASTMOD_ATTR_NAME, "CDATA",
- Long.toString(lastModified));
- attributes.addAttribute("", DATE_ATTR_NAME,
- DATE_ATTR_NAME, "CDATA",
- dateFormatter.format(new Date(lastModified)));
-
- }
+ /**
+ * Sets the attributes for a given path. The default method sets
attributes
+ * for the name of thefile/directory and for the last modification time
+ * of the path.
+ *
+ * @param path
+ * the file/directory to use when setting attributes
+ *
+ * @throws SAXException
+ * if an error occurs while setting the attributes
+ */
+ protected void setNodeAttributes(File path) throws SAXException {
+ long lastModified = path.lastModified();
+ attributes.clear();
+ attributes.addAttribute("", FILENAME_ATTR_NAME,
+ FILENAME_ATTR_NAME, "CDATA",
+ path.getName());
+ attributes.addAttribute("", LASTMOD_ATTR_NAME,
+ LASTMOD_ATTR_NAME, "CDATA",
+ Long.toString(path.lastModified()));
+ attributes.addAttribute("", LASTMOD_ATTR_NAME,
+ LASTMOD_ATTR_NAME, "CDATA",
+ Long.toString(lastModified));
+ attributes.addAttribute("", DATE_ATTR_NAME,
+ DATE_ATTR_NAME, "CDATA",
+ dateFormatter.format(new Date(lastModified)));
+ }
/**
* Ends the named node.
*
- * @param nodeName
- * the name of the new node
- * @param path
- * the file/directory to use when setting attributes
+ * @param nodeName
+ * the name of the new node
+ * @param path
+ * the file/directory to use when setting attributes
*
- * @throws SAXException
- * if an error occurs while closing the node
+ * @throws SAXException
+ * if an error occurs while closing the node
*/
protected void endNode(String nodeName)
throws SAXException {
- super.contentHandler.endElement(URI, nodeName, nodeName);
+ super.contentHandler.endElement(URI, nodeName, nodeName);
}
-
}
1.1.2.7 +2 -2
xml-cocoon/src/org/apache/cocoon/generation/Attic/PhpGenerator.java
Index: PhpGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/generation/Attic/PhpGenerator.java,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- PhpGenerator.java 2000/08/04 21:11:45 1.1.2.6
+++ PhpGenerator.java 2000/08/21 17:37:52 1.1.2.7
@@ -26,7 +26,7 @@
* results into SAX events.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Sam Ruby</a>
- * @version CVS $Revision: 1.1.2.6 $ $Date: 2000/08/04 21:11:45 $
+ * @version CVS $Revision: 1.1.2.7 $ $Date: 2000/08/21 17:37:52 $
*/
public class PhpGenerator extends ServletGenerator {
@@ -76,7 +76,7 @@
try {
output.write(data.getBytes());
} catch (IOException e) {
- e.printStackTrace(System.err);
+ throw new RuntimeException(e.getMessage());
}
}
1.1.2.5 +1 -2
xml-cocoon/src/org/apache/cocoon/generation/Attic/ServerPagesGenerator.java
Index: ServerPagesGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/generation/Attic/ServerPagesGenerator.java,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- ServerPagesGenerator.java 2000/08/04 21:11:46 1.1.2.4
+++ ServerPagesGenerator.java 2000/08/21 17:37:52 1.1.2.5
@@ -33,7 +33,7 @@
* delegating actual SAX event generation.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Revision: 1.1.2.4 $ $Date: 2000/08/04 21:11:46 $
+ * @version CVS $Revision: 1.1.2.5 $ $Date: 2000/08/21 17:37:52 $
*/
public class ServerPagesGenerator
extends ServletGenerator
@@ -120,7 +120,6 @@
generator = (Generator)
programGenerator.load(file, markupLanguage, programmingLanguage,
resolver);
} catch (Exception e) {
-e.printStackTrace();
throw new ProcessingException(e.getMessage());
}
1.1.2.4 +51 -5
xml-cocoon/src/org/apache/cocoon/generation/Attic/StatusGenerator.java
Index: StatusGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/generation/Attic/StatusGenerator.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -r1.1.2.3 -r1.1.2.4
--- StatusGenerator.java 2000/07/29 18:30:34 1.1.2.3
+++ StatusGenerator.java 2000/08/21 17:37:53 1.1.2.4
@@ -8,8 +8,12 @@
package org.apache.cocoon.generation;
+import java.io.File;
import java.util.Calendar;
import java.util.Date;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
import java.text.DateFormat;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -36,21 +40,24 @@
* name CDATA #IMPLIED
* >
*
- * <!ELEMENT value (#PCDATA)>
+ * <!ELEMENT value (line)+>
* <!ATTLIST value
* name CDATA #REQUIRED
+ *
+ * <!ELEMENT line (#PCDATA)+>
* >
* </code>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Paul Russell</a> (Luminas
Limited)
- * @version CVS $Revision: 1.1.2.3 $ $Date: 2000/07/29 18:30:34 $
+ * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
+ * @version CVS $Revision: 1.1.2.4 $ $Date: 2000/08/21 17:37:53 $
*/
public class StatusGenerator extends ComposerGenerator {
/** The XML namespace for the output document.
*/
protected static final String namespace =
- "http://apache.org/cocoon/status";
+ "http://apache.org/cocoon/2.0/status";
/** The XML namespace for xlink
*/
@@ -137,7 +144,13 @@
endGroup(ch);
// END operating system
- addValue(ch, "classpath",
System.getProperty("java.class.path"));
+ String classpath = System.getProperty("java.class.path");
+ List paths = new ArrayList();
+ StringTokenizer tokenizer = new StringTokenizer(classpath,
System.getProperty("path.separator"));
+ while (tokenizer.hasMoreTokens()) {
+ paths.add(tokenizer.nextToken());
+ }
+ addMultilineValue(ch, "classpath", paths);
// BEGIN OS info
endGroup(ch);
@@ -180,10 +193,43 @@
}
ai.addAttribute(namespace, "name", "name", "CDATA", name);
ch.startElement(namespace, "value", "value", ai);
- if ( value != null ) {
+ ch.startElement(namespace, "line", "line", new
AttributesImpl());
+
+ if ( value != null ) {
ch.characters(value.toCharArray(), 0, value.length());
}
+
+ ch.endElement(namespace, "line", "line");
+ ch.endElement(namespace, "value", "value");
+ }
+
+ /** Utility function to begin and end a <code>value</code> tag pair. */
+ private void addMultilineValue(ContentHandler ch, String name, List
values) throws SAXException {
+ addMultilineValue(ch, name, values, null);
+ }
+
+ /** Utility function to begin and end a <code>value</code> tag pair
with added attributes. */
+ private void addMultilineValue(ContentHandler ch, String name, List
values, Attributes atts) throws SAXException {
+ AttributesImpl ai;
+ if ( atts == null ) {
+ ai = new AttributesImpl();
+ } else {
+ ai = new AttributesImpl(atts);
+ }
+ ai.addAttribute(namespace, "name", "name", "CDATA", name);
+ ch.startElement(namespace, "value", "value", ai);
+
+ for (int i = 0; i < values.size(); i++) {
+ String value = (String) values.get(i);
+ if ( value != null ) {
+ ch.startElement(namespace, "line", "line", new
AttributesImpl());
+ ch.characters(value.toCharArray(), 0,
value.length());
+ ch.endElement(namespace, "line", "line");
+ }
+ }
+
ch.endElement(namespace, "value", "value");
+
}
}
No revision
No revision
1.1.2.1 +245 -0
xml-cocoon/src/org/apache/cocoon/generation/Attic/ErrorGenerator.java