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 2005/07/26 10:02:12 UTC
svn commit: r225254 - in /cocoon/trunk:
src/java/org/apache/cocoon/generation/DirectoryGenerator.java
src/java/org/apache/cocoon/generation/MP3DirectoryGenerator.java status.xml
Author: cziegeler
Date: Tue Jul 26 01:02:05 2005
New Revision: 225254
URL: http://svn.apache.org/viewcvs?rev=225254&view=rev
Log:
Fix wrong caching behaviour in DirectoryGenerator.
Modified:
cocoon/trunk/src/java/org/apache/cocoon/generation/DirectoryGenerator.java
cocoon/trunk/src/java/org/apache/cocoon/generation/MP3DirectoryGenerator.java
cocoon/trunk/status.xml
Modified: cocoon/trunk/src/java/org/apache/cocoon/generation/DirectoryGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/generation/DirectoryGenerator.java?rev=225254&r1=225253&r2=225254&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/DirectoryGenerator.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/DirectoryGenerator.java Tue Jul 26 01:02:05 2005
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 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.
@@ -45,6 +45,7 @@
/**
* @cocoon.sitemap.component.documentation
* Generates an XML directory listing.
+ * A more general approach is implemented by the TraversableGenerator (src/blocks/repository/java/org/apache/cocoon/generation/TraversableGenerator.java)
*
* @cocoon.sitemap.component.name directory
* @cocoon.sitemap.component.label content
@@ -127,6 +128,9 @@
*/
protected boolean isRequestedDirectory;
+ /** The source object for the directory. */
+ protected Source directorySource;
+
/**
* Set the request parameters. Must be called before the generate method.
*
@@ -142,8 +146,14 @@
}
super.setup(resolver, objectModel, src, par);
+ try {
+ this.directorySource = this.resolver.resolveURI(src);
+ } catch (SourceException se) {
+ throw SourceUtil.handle(se);
+ }
+
this.cacheKeyParList = new ArrayList();
- this.cacheKeyParList.add(src);
+ this.cacheKeyParList.add(this.directorySource.getURI());
this.depth = par.getParameterAsInteger("depth", 1);
this.cacheKeyParList.add(String.valueOf(this.depth));
@@ -238,18 +248,15 @@
* @throws ProcessingException if the requsted URI isn't a directory on the local filesystem
*/
public void generate() throws SAXException, ProcessingException {
- String directory = super.source;
- Source inputSource = null;
try {
- inputSource = this.resolver.resolveURI(directory);
- String systemId = inputSource.getURI();
+ String systemId = this.directorySource.getURI();
if (!systemId.startsWith(FILE)) {
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(directory + " is not a directory.");
+ throw new ResourceNotFoundException(super.source + " is not a directory.");
}
this.contentHandler.startDocument();
@@ -260,12 +267,8 @@
this.contentHandler.endPrefixMapping(PREFIX);
this.contentHandler.endDocument();
- } catch (SourceException se) {
- throw SourceUtil.handle(se);
} catch (IOException ioe) {
- throw new ResourceNotFoundException("Could not read directory " + directory, ioe);
- } finally {
- this.resolver.release(inputSource);
+ throw new ResourceNotFoundException("Could not read directory " + super.source, ioe);
}
}
@@ -484,6 +487,10 @@
* Recycle resources
*/
public void recycle() {
+ if ( this.resolver != null ) {
+ this.resolver.release(this.directorySource);
+ this.directorySource = null;
+ }
this.cacheKeyParList = null;
this.attributes = null;
this.dateFormatter = null;
Modified: cocoon/trunk/src/java/org/apache/cocoon/generation/MP3DirectoryGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/generation/MP3DirectoryGenerator.java?rev=225254&r1=225253&r2=225254&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/MP3DirectoryGenerator.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/MP3DirectoryGenerator.java Tue Jul 26 01:02:05 2005
@@ -34,7 +34,7 @@
*
*
* @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: MP3DirectoryGenerator.java,v 1.6 2004/05/27 08:23:58 cziegeler Exp $
+ * @version CVS $Id$
*/
public class MP3DirectoryGenerator extends DirectoryGenerator
{
@@ -90,8 +90,7 @@
/**
* Read ID3 Tag
*/
- private void setID3TagAttributes(RandomAccessFile in) throws IOException
- {
+ private void setID3TagAttributes(RandomAccessFile in) throws IOException {
String s;
// TAG takes 128 bytes
@@ -135,8 +134,7 @@
return s.trim();
}
- private void setID3HeaderAttributes(RandomAccessFile in) throws IOException
- {
+ private void setID3HeaderAttributes(RandomAccessFile in) throws IOException {
byte[] buffer = new byte[4];
// http://floach.pimpin.net/grd/mp3info/frmheader/index.html
@@ -183,8 +181,7 @@
}
}
- private static boolean isSyncMark(int header)
- {
+ private static boolean isSyncMark(int header) {
boolean sync = ((header & 0xFFF00000) == 0xFFF00000);
// filter out invalid sample rate
if (sync) sync = ((header >>> 10) & 3) != 3;
@@ -195,8 +192,7 @@
return sync;
}
- private int getVBRHeaderFrames(RandomAccessFile in, int version, int mode) throws IOException
- {
+ private int getVBRHeaderFrames(RandomAccessFile in, int version, int mode) throws IOException {
byte[] buffer = new byte[12];
// Try to detect VBR header
@@ -242,9 +238,8 @@
}
// version - layer - bitrate index
- private static final String bitrates[][][] =
+ private static final String bitrates[][][] = {
{
- {
// MPEG2 - layer 1
{"free format", "32", "48", "56", "64", "80", "96", "112", "128", "144", "160", "176", "192", "224", "256", "forbidden"},
// MPEG2 - layer 2
@@ -262,13 +257,11 @@
}
};
- private static String bitrate(int version, int layer, int bitrate_index)
- {
+ private static String bitrate(int version, int layer, int bitrate_index) {
return bitrates[version & 1][layer - 1][bitrate_index];
}
- private static String mode(int mode)
- {
+ private static String mode(int mode) {
switch(mode)
{
case MODE_STEREO:
@@ -283,21 +276,18 @@
return null;
}
- private static final int frequencies[][] =
- {
+ private static final int frequencies[][] = {
{32000, 16000, 8000}, //MPEG 2.5
{ 0, 0, 0}, //reserved
{22050, 24000, 16000}, //MPEG 2
{44100, 48000, 32000} //MPEG 1
};
- private static int frequency(int version, int frequency)
- {
+ private static int frequency(int version, int frequency) {
return frequencies[version][frequency];
}
- private static String frequencyString(int version, int frequency)
- {
+ private static String frequencyString(int version, int frequency) {
return String.valueOf((float)frequency(version, frequency)/1000);
}
}
Modified: cocoon/trunk/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/status.xml?rev=225254&r1=225253&r2=225254&view=diff
==============================================================================
--- cocoon/trunk/status.xml (original)
+++ cocoon/trunk/status.xml Tue Jul 26 01:02:05 2005
@@ -509,6 +509,9 @@
</action>
</release>
<release version="2.1.8" date="TBD">
+ <action dev="CZ" type="fix" fixes-bug="29506" due-to-email="tobias@lentus.se">
+ Fix wrong caching behaviour in DirectoryGenerator.
+ </action>
<action dev="CZ" type="add">
Portal block: Add easier to use event handling mechanism by introducing the new Receiver interface.
Deprecated Publisher, Subscriber, Filter and Register.