You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Thorsten Scherler <sc...@gmail.com> on 2011/07/20 15:32:28 UTC
Re: svn commit: r1142136 - in
/cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation:
./ DirectoryGenerator.java
I am not sure why but since today I need to patch the optional pom when
using the optional module in our project.
thorsten@mcKenny:~/src/apache/cocoon3/cocoon-optional$ svnd
Index: pom.xml
===================================================================
--- pom.xml (revision 1148748)
+++ pom.xml (working copy)
@@ -128,6 +128,11 @@
<version>2.2</version>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>jakarta-regexp</groupId>
+ <artifactId>jakarta-regexp</artifactId>
+ <version>1.4</version>
+ </dependency>
<!-- Test libraries -->
<dependency>
Should I commit this or should I add the dep in our custom project?
WDYT?
salu2
On Sat, 2011-07-02 at 00:53 +0000, thorsten@apache.org wrote:
> Author: thorsten
> Date: Sat Jul 2 00:53:50 2011
> New Revision: 1142136
>
> URL: http://svn.apache.org/viewvc?rev=1142136&view=rev
> Log:
> Preparing migration from c2.2 based directory generator and applying only formating changes
>
> Added:
> cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation/
> cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java
> - copied, changed from r1142135, cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-components/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java
>
> Copied: cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java (from r1142135, cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-components/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java)
> URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java?p2=cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java&p1=cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-components/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java&r1=1142135&r2=1142136&rev=1142136&view=diff
> ==============================================================================
> --- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-components/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java (original)
> +++ cocoon/cocoon3/trunk/cocoon-optional/src/main/java/org/apache/cocoon/generation/DirectoryGenerator.java Sat Jul 2 00:53:50 2011
> @@ -46,22 +46,25 @@ import org.xml.sax.SAXException;
> import org.xml.sax.helpers.AttributesImpl;
>
> /**
> - * Generates an XML directory listing.
> - * A more general approach is implemented by the {@link TraversableGenerator}.
> - *
> - * @cocoon.sitemap.component.documentation
> - * Generates an XML directory listing.
> - * A more general approach is implemented by the {@link TraversableGenerator}.
> - * @cocoon.sitemap.component.name directory
> - * @cocoon.sitemap.component.label content
> - * @cocoon.sitemap.component.documentation.caching Yes.
> - * Uses the last modification date of the directory and the contained files.
> - * @cocoon.sitemap.component.pooling.max 16
> - *
> - * @version $Id$
> + * Generates an XML directory listing. A more general approach is implemented by
> + * the {@link TraversableGenerator}.
> + *
> + * @cocoon.sitemap.component.documentation Generates an XML directory listing. A
> + * more general approach is implemented
> + * by the {@link TraversableGenerator}.
> + * @cocoon.sitemap.component.name directory
> + * @cocoon.sitemap.component.label content
> + * @cocoon.sitemap.component.documentation.caching Yes. Uses the last
> + * modification date of the
> + * directory and the contained
> + * files.
> + * @cocoon.sitemap.component.pooling.max 16
> + *
> + * @version $Id: DirectoryGenerator.java 605689 2007-12-19 20:48:43Z vgritsenko
> + * $
> */
> -public class DirectoryGenerator extends ServiceableGenerator
> - implements CacheableProcessingComponent {
> +public class DirectoryGenerator extends ServiceableGenerator implements
> + CacheableProcessingComponent {
>
> /** Constant for the file protocol. */
> private static final String FILE = "file:";
> @@ -84,25 +87,30 @@ public class DirectoryGenerator extends
> /** The validity that is being built */
> protected DirValidity validity;
>
> - /** Convenience object, so we don't need to create an AttributesImpl for every element. */
> + /**
> + * Convenience object, so we don't need to create an AttributesImpl for
> + * every element.
> + */
> protected AttributesImpl attributes;
>
> /**
> * The cache key needs to be generated for the configuration of this
> - * generator, so storing the parameters for generateKey().
> - * Using the member variables after setup() would not work I guess. I don't
> - * know a way from the regular expressions back to the pattern or at least
> - * a useful string.
> + * generator, so storing the parameters for generateKey(). Using the member
> + * variables after setup() would not work I guess. I don't know a way from
> + * the regular expressions back to the pattern or at least a useful string.
> */
> protected List cacheKeyParList;
>
> - /** The depth parameter determines how deep the DirectoryGenerator should delve. */
> + /**
> + * The depth parameter determines how deep the DirectoryGenerator should
> + * delve.
> + */
> protected int depth;
>
> /**
> - * The dateFormatter determines into which date format the lastModified
> - * time should be converted.
> - * FIXME: SimpleDateFormat is not supported by all locales!
> + * The dateFormatter determines into which date format the lastModified time
> + * should be converted. FIXME: SimpleDateFormat is not supported by all
> + * locales!
> */
> protected SimpleDateFormat dateFormatter;
>
> @@ -111,13 +119,16 @@ public class DirectoryGenerator extends
>
> /**
> * The sort parameter determines by which attribute the content of one
> - * directory should be sorted. Possible values are "name", "size", "lastmodified"
> - * and "directory", where "directory" is the same as "name", except that
> - * directory entries are listed first.
> + * directory should be sorted. Possible values are "name", "size",
> + * "lastmodified" and "directory", where "directory" is the same as "name",
> + * except that directory entries are listed first.
> */
> protected String sort;
>
> - /** The reverse parameter reverses the sort order. <code>false</code> is default. */
> + /**
> + * The reverse parameter reverses the sort order. <code>false</code> is
> + * default.
> + */
> protected boolean reverse;
>
> /** The regular expression for the root pattern. */
> @@ -138,19 +149,25 @@ public class DirectoryGenerator extends
> /** The source object for the directory. */
> protected Source directorySource;
>
> -
> /**
> * Set the request parameters. Must be called before the generate method.
> - *
> - * @param resolver the SourceResolver object
> - * @param objectModel a <code>Map</code> containing model object
> - * @param src the directory to be XMLized specified as src attribute on <map:generate/>
> - * @param par configuration parameters
> - */
> - public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
> - throws ProcessingException, SAXException, IOException {
> + *
> + * @param resolver
> + * the SourceResolver object
> + * @param objectModel
> + * a <code>Map</code> containing model object
> + * @param src
> + * the directory to be XMLized specified as src attribute on
> + * <map:generate/>
> + * @param par
> + * configuration parameters
> + */
> + public void setup(SourceResolver resolver, Map objectModel, String src,
> + Parameters par) throws ProcessingException, SAXException,
> + IOException {
> if (src == null) {
> - throw new ProcessingException("No src attribute pointing to a directory to be XMLized specified.");
> + throw new ProcessingException(
> + "No src attribute pointing to a directory to be XMLized specified.");
> }
> super.setup(resolver, objectModel, src, par);
>
> @@ -185,7 +202,8 @@ public class DirectoryGenerator extends
>
> if (this.getLogger().isDebugEnabled()) {
> this.getLogger().debug("depth: " + this.depth);
> - this.getLogger().debug("dateFormat: " + this.dateFormatter.toPattern());
> + this.getLogger().debug(
> + "dateFormat: " + this.dateFormatter.toPattern());
> this.getLogger().debug("sort: " + this.sort);
> this.getLogger().debug("reverse: " + this.reverse);
> this.getLogger().debug("refreshDelay: " + this.refreshDelay);
> @@ -215,14 +233,16 @@ public class DirectoryGenerator extends
> }
> } catch (RESyntaxException rese) {
> throw new ProcessingException("Syntax error in regexp pattern '"
> - + rePattern + "'", rese);
> + + rePattern + "'", rese);
> }
>
> this.isRequestedDirectory = false;
> this.attributes = new AttributesImpl();
> }
>
> - /* (non-Javadoc)
> + /*
> + * (non-Javadoc)
> + *
> * @see org.apache.cocoon.caching.CacheableProcessingComponent#getKey()
> */
> public Serializable getKey() {
> @@ -252,19 +272,23 @@ public class DirectoryGenerator extends
> /**
> * Generate XML data.
> *
> - * @throws SAXException if an error occurs while outputting the document
> - * @throws ProcessingException if the requsted URI isn't a directory on the local filesystem
> + * @throws SAXException
> + * if an error occurs while outputting the document
> + * @throws ProcessingException
> + * if the requsted URI isn't a directory on the local filesystem
> */
> public void generate() throws SAXException, ProcessingException {
> try {
> String systemId = this.directorySource.getURI();
> if (!systemId.startsWith(FILE)) {
> - throw new ResourceNotFoundException(systemId + " does not denote a directory");
> + throw new ResourceNotFoundException(systemId
> + + " does not denote a directory");
> }
> // This relies on systemId being of the form "file://..."
> File directoryFile = new File(new URL(systemId).getFile());
> if (!directoryFile.isDirectory()) {
> - throw new ResourceNotFoundException(super.source + " is not a directory.");
> + throw new ResourceNotFoundException(super.source
> + + " is not a directory.");
> }
>
> this.contentHandler.startDocument();
> @@ -276,14 +300,17 @@ public class DirectoryGenerator extends
> this.contentHandler.endPrefixMapping(PREFIX);
> this.contentHandler.endDocument();
> } catch (IOException ioe) {
> - throw new ResourceNotFoundException("Could not read directory " + super.source, ioe);
> + throw new ResourceNotFoundException("Could not read directory "
> + + super.source, ioe);
> }
> }
>
> /**
> - * Creates a stack containing the ancestors of File up to specified directory.
> + * Creates a stack containing the ancestors of File up to specified
> + * directory.
> *
> - * @param path the File whose ancestors shall be retrieved
> + * @param path
> + * the File whose ancestors shall be retrieved
> * @return a Stack containing the ancestors.
> */
> protected Stack getAncestors(File path) {
> @@ -307,29 +334,35 @@ public class DirectoryGenerator extends
> * Adds recursively the path from the directory matched by the root pattern
> * down to the requested directory.
> *
> - * @param path the requested directory.
> - * @param ancestors the stack of the ancestors.
> + * @param path
> + * the requested directory.
> + * @param ancestors
> + * the stack of the ancestors.
> * @throws SAXException
> */
> - protected void addAncestorPath(File path, Stack ancestors) throws SAXException {
> + protected void addAncestorPath(File path, Stack ancestors)
> + throws SAXException {
> if (ancestors.empty()) {
> this.isRequestedDirectory = true;
> addPath(path, depth);
> } else {
> - startNode(DIR_NODE_NAME, (File)ancestors.pop());
> + startNode(DIR_NODE_NAME, (File) ancestors.pop());
> addAncestorPath(path, ancestors);
> endNode(DIR_NODE_NAME);
> }
> }
>
> /**
> - * Adds a single node to the generated document. If the path is a
> - * 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
> - * @throws SAXException if an error occurs while constructing nodes
> + * Adds a single node to the generated document. If the path is a 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
> + * @throws SAXException
> + * if an error occurs while constructing nodes
> */
> protected void addPath(File path, int depth) throws SAXException {
> if (path.isDirectory()) {
> @@ -341,38 +374,43 @@ public class DirectoryGenerator extends
> Arrays.sort(contents, new Comparator() {
> public int compare(Object o1, Object o2) {
> if (reverse) {
> - return ((File)o2).getName().compareTo(((File)o1).getName());
> + return ((File) o2).getName().compareTo(
> + ((File) o1).getName());
> }
> - return ((File)o1).getName().compareTo(((File)o2).getName());
> + return ((File) o1).getName().compareTo(
> + ((File) o2).getName());
> }
> });
> } else if (sort.equals("size")) {
> Arrays.sort(contents, new Comparator() {
> public int compare(Object o1, Object o2) {
> if (reverse) {
> - return new Long(((File)o2).length()).compareTo(
> - new Long(((File)o1).length()));
> + return new Long(((File) o2).length())
> + .compareTo(new Long(((File) o1)
> + .length()));
> }
> - return new Long(((File)o1).length()).compareTo(
> - new Long(((File)o2).length()));
> + return new Long(((File) o1).length())
> + .compareTo(new Long(((File) o2).length()));
> }
> });
> } else if (sort.equals("lastmodified")) {
> Arrays.sort(contents, new Comparator() {
> public int compare(Object o1, Object o2) {
> if (reverse) {
> - return new Long(((File)o2).lastModified()).compareTo(
> - new Long(((File)o1).lastModified()));
> + return new Long(((File) o2).lastModified())
> + .compareTo(new Long(((File) o1)
> + .lastModified()));
> }
> - return new Long(((File)o1).lastModified()).compareTo(
> - new Long(((File)o2).lastModified()));
> + return new Long(((File) o1).lastModified())
> + .compareTo(new Long(((File) o2)
> + .lastModified()));
> }
> });
> } else if (sort.equals("directory")) {
> Arrays.sort(contents, new Comparator() {
> public int compare(Object o1, Object o2) {
> - File f1 = (File)o1;
> - File f2 = (File)o2;
> + File f1 = (File) o1;
> + File f2 = (File) o2;
>
> if (reverse) {
> if (f2.isDirectory() && f1.isFile())
> @@ -408,42 +446,49 @@ public class DirectoryGenerator extends
> /**
> * Begins a named node and calls setNodeAttributes to set its 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
> + * @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
> */
> protected void startNode(String nodeName, File path) throws SAXException {
> if (this.validity != null) {
> this.validity.addFile(path);
> }
> setNodeAttributes(path);
> - super.contentHandler.startElement(URI, nodeName, PREFIX + ':' + nodeName, attributes);
> + super.contentHandler.startElement(URI, nodeName, PREFIX + ':'
> + + 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.
> + * 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
> + * @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());
> + "CDATA", path.getName());
> attributes.addAttribute("", LASTMOD_ATTR_NAME, LASTMOD_ATTR_NAME,
> - "CDATA", Long.toString(path.lastModified()));
> - attributes.addAttribute("", DATE_ATTR_NAME, DATE_ATTR_NAME,
> - "CDATA", dateFormatter.format(new Date(lastModified)));
> - attributes.addAttribute("", SIZE_ATTR_NAME, SIZE_ATTR_NAME,
> - "CDATA", Long.toString(path.length()));
> + "CDATA", Long.toString(path.lastModified()));
> + attributes.addAttribute("", DATE_ATTR_NAME, DATE_ATTR_NAME, "CDATA",
> + dateFormatter.format(new Date(lastModified)));
> + attributes.addAttribute("", SIZE_ATTR_NAME, SIZE_ATTR_NAME, "CDATA",
> + Long.toString(path.length()));
> if (this.isRequestedDirectory) {
> attributes.addAttribute("", "sort", "sort", "CDATA", this.sort);
> attributes.addAttribute("", "reverse", "reverse", "CDATA",
> - String.valueOf(this.reverse));
> - attributes.addAttribute("", "requested", "requested", "CDATA", "true");
> + String.valueOf(this.reverse));
> + attributes.addAttribute("", "requested", "requested", "CDATA",
> + "true");
> this.isRequestedDirectory = false;
> }
> }
> @@ -451,8 +496,10 @@ public class DirectoryGenerator extends
> /**
> * Ends the named node.
> *
> - * @param nodeName the name of the new node
> - * @throws SAXException if an error occurs while closing the node
> + * @param nodeName
> + * the name of the new node
> + * @throws SAXException
> + * if an error occurs while closing the node
> */
> protected void endNode(String nodeName) throws SAXException {
> super.contentHandler.endElement(URI, nodeName, PREFIX + ':' + nodeName);
> @@ -461,7 +508,8 @@ public class DirectoryGenerator extends
> /**
> * Determines if a given File is the defined root.
> *
> - * @param path the File to check
> + * @param path
> + * the File to check
> * @return true if the File is the root or the root pattern is not set,
> * false otherwise.
> */
> @@ -472,9 +520,10 @@ public class DirectoryGenerator extends
> /**
> * Determines if a given File shall be visible.
> *
> - * @param path the File to check
> - * @return true if the File shall be visible or the include Pattern is <code>null</code>,
> - * false otherwise.
> + * @param path
> + * the File to check
> + * @return true if the File shall be visible or the include Pattern is
> + * <code>null</code>, false otherwise.
> */
> protected boolean isIncluded(File path) {
> return this.includeRE == null || this.includeRE.match(path.getName());
> @@ -483,9 +532,10 @@ public class DirectoryGenerator extends
> /**
> * Determines if a given File shall be excluded from viewing.
> *
> - * @param path the File to check
> - * @return false if the given File shall not be excluded or the exclude Pattern is <code>null</code>,
> - * true otherwise.
> + * @param path
> + * the File to check
> + * @return false if the given File shall not be excluded or the exclude
> + * Pattern is <code>null</code>, true otherwise.
> */
> protected boolean isExcluded(File path) {
> return this.excludeRE != null && this.excludeRE.match(path.getName());
> @@ -529,17 +579,18 @@ public class DirectoryGenerator extends
>
> int len = files.size();
> for (int i = 0; i < len; i++) {
> - File f = (File)files.get(i);
> + File f = (File) files.get(i);
> if (!f.exists()) {
> return SourceValidity.INVALID; // File was removed
> }
>
> - long oldDate = ((Long)fileDates.get(i)).longValue();
> + long oldDate = ((Long) fileDates.get(i)).longValue();
> long newDate = f.lastModified();
>
> if (oldDate != newDate) {
> // File's last modified date has changed since last check
> - // NOTE: this occurs on directories as well when a file is added
> + // NOTE: this occurs on directories as well when a file is
> + // added
> return SourceValidity.INVALID;
> }
> }
>
>
--
Thorsten Scherler <thorsten.at.apache.org>
codeBusters S.L. - web based systems
<consulting, training and solutions>
http://www.codebusters.es/