cziegeler 2003/06/24 09:44:35
Modified: src/java/org/apache/cocoon Main.java Cocoon.java
src/java/org/apache/cocoon/bean CocoonBean.java
Log:
Using ContainerUtil at some places
Formatting code
Removing unneeded code
Revision Changes Path
1.6 +1 -2 cocoon-2.1/src/java/org/apache/cocoon/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/Main.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Main.java 11 Jun 2003 02:59:36 -0000 1.5
+++ Main.java 24 Jun 2003 16:44:33 -0000 1.6
@@ -360,7 +360,6 @@
System.out.println(getProlog());
cocoon.initialize();
- cocoon.warmup();
cocoon.process();
cocoon.dispose();
1.9 +22 -48 cocoon-2.1/src/java/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Cocoon.java 4 Jun 2003 09:25:53 -0000 1.8
+++ Cocoon.java 24 Jun 2003 16:44:35 -0000 1.9
@@ -267,8 +267,8 @@
} else {
this.componentManager = new
CocoonComponentManager((ClassLoader)this.context.get(Constants.CONTEXT_CLASS_LOADER));
}
- this.componentManager.enableLogging(getLogger().getChildLogger("manager"));
- this.componentManager.contextualize(this.context);
+ ContainerUtil.enableLogging(this.componentManager,
getLogger().getChildLogger("manager"));
+ ContainerUtil.contextualize(this.componentManager, this.context);
this.componentManager.setInstrumentManager(this.instrumentManager);
if (getLogger().isDebugEnabled()) {
@@ -296,10 +296,13 @@
}
if (getLogger().isDebugEnabled()) {
getLogger().debug("Using parser: " + parser);
+ getLogger().debug("Classpath = " + classpath);
+ getLogger().debug("Work directory = " + workDir.getCanonicalPath());
}
+
ExcaliburComponentManager startupManager = new
ExcaliburComponentManager((ClassLoader)this.context.get(Constants.CONTEXT_CLASS_LOADER));
- startupManager.enableLogging(getLogger().getChildLogger("startup"));
- startupManager.contextualize(this.context);
+ ContainerUtil.enableLogging(startupManager,
getLogger().getChildLogger("startup"));
+ ContainerUtil.contextualize(startupManager, this.context);
startupManager.setLogKitManager(this.logKitManager);
try {
@@ -308,17 +311,14 @@
throw new ConfigurationException("Could not load parser " + parser, e);
}
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Classpath = " + classpath);
- getLogger().debug("Work directory = " + workDir.getCanonicalPath());
- }
- startupManager.initialize();
+ ContainerUtil.initialize(startupManager);
this.configure(startupManager);
- startupManager.dispose();
+
+ ContainerUtil.dispose(startupManager);
startupManager = null;
- this.componentManager.initialize();
+ ContainerUtil.initialize(this.componentManager);
// Get the Processor and keep it if it's ThreadSafe
Processor processor =
(Processor)this.componentManager.lookup(Processor.ROLE);
@@ -358,11 +358,10 @@
* Configure this <code>Cocoon</code> instance.
*
* @param startupManager an <code>ExcaliburComponentManager</code> value
- * @return a <code>Configuration</code> value
* @exception ConfigurationException if an error occurs
* @exception ContextException if an error occurs
*/
- public Configuration configure(ExcaliburComponentManager startupManager) throws
ConfigurationException, ContextException {
+ public void configure(ExcaliburComponentManager startupManager) throws
ConfigurationException, ContextException {
SAXParser p = null;
Configuration roleConfig = null;
@@ -382,8 +381,8 @@
}
DefaultRoleManager drm = new DefaultRoleManager();
- drm.enableLogging(getLogger().getChildLogger("roles"));
- drm.configure(roleConfig);
+ ContainerUtil.enableLogging(drm, getLogger().getChildLogger("roles"));
+ ContainerUtil.configure(drm, roleConfig);
roleConfig = null;
try {
@@ -434,8 +433,8 @@
}
DefaultRoleManager urm = new DefaultRoleManager(drm);
-
urm.enableLogging(getLogger().getChildLogger("roles").getChildLogger("user"));
- urm.configure(roleConfig);
+ ContainerUtil.enableLogging(urm,
getLogger().getChildLogger("roles").getChildLogger("user"));
+ ContainerUtil.configure(urm, roleConfig);
roleConfig = null;
drm = urm;
}
@@ -446,9 +445,7 @@
if (getLogger().isDebugEnabled()) {
getLogger().debug("Setting up components...");
}
- this.componentManager.configure(conf);
-
- return conf;
+ ContainerUtil.configure(this.componentManager, conf);
}
/**
@@ -493,7 +490,7 @@
public void dispose() {
this.componentManager.release(this.threadSafeProcessor);
ContainerUtil.dispose(threads);
- this.componentManager.dispose();
+ ContainerUtil.dispose(this.componentManager);
this.disposed = true;
}
@@ -593,9 +590,7 @@
}
}
- if (getLogger().isDebugEnabled()) {
- getLogger().debug(msg.toString());
- }
+ getLogger().debug(msg.toString());
}
/**
@@ -607,7 +602,7 @@
*/
public boolean process(Environment environment)
throws Exception {
- if (disposed) {
+ if (this.disposed) {
throw new IllegalStateException("You cannot process a Disposed Cocoon
engine.");
}
@@ -700,27 +695,6 @@
}
/**
- * Process the given <code>Environment</code> to generate the sitemap.
- * Delegated to the Processor component if it's a <code>SitemapManager</code>.
- *
- * @param environment an <code>Environment</code> value
- * @exception Exception if an error occurs
- */
- public void generateSitemap(Environment environment)
- throws Exception {
- /**
- Component processor = this.componentManager.lookup(Processor.ROLE);
- try {
- if (processor instanceof SitemapManager) {
- ((SitemapManager)processor).generateSitemap(environment);
- }
- } finally {
- this.componentManager.release(processor);
- }
- */
- }
-
- /**
* Process the given <code>Environment</code> to generate Java code for
specified XSP files.
*
* @param fileName a <code>String</code> value
@@ -746,7 +720,6 @@
if (getLogger().isDebugEnabled()) {
getLogger().debug("XSP generation complete:" + xsp);
}
- this.componentManager.release(programGenerator);
} finally {
this.componentManager.release(programGenerator);
}
@@ -758,6 +731,7 @@
public int getActiveRequestCount() {
return activeRequestCount;
}
+
public ExcaliburComponentManager getComponentManager() {
return this.componentManager;
}
1.12 +393 -237 cocoon-2.1/src/java/org/apache/cocoon/bean/CocoonBean.java
Index: CocoonBean.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/bean/CocoonBean.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- CocoonBean.java 21 Jun 2003 06:41:45 -0000 1.11
+++ CocoonBean.java 24 Jun 2003 16:44:35 -0000 1.12
@@ -73,6 +73,7 @@
import org.apache.excalibur.source.Source;
import org.apache.avalon.excalibur.logger.DefaultLogKitManager;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.context.DefaultContext;
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
import org.apache.avalon.framework.configuration.Configuration;
@@ -163,14 +164,16 @@
// @todo@ these should log then throw exceptions back to the caller, not
use system.exit()
if (contextDir.equals("")) {
- String error = "Careful, you must specify a configuration file when
using the -c/--contextDir argument";
+ String error =
+ "Careful, you must specify a configuration file when using the
-c/--contextDir argument";
log.fatalError(error);
System.out.println(error);
System.exit(1);
}
if (workDir.equals("")) {
- String error = "Careful, you must specify a destination dir when using
the -w/--workDir argument";
+ String error =
+ "Careful, you must specify a destination dir when using the
-w/--workDir argument";
log.fatalError(error);
System.out.println(error);
System.exit(1);
@@ -190,18 +193,23 @@
try {
DefaultContext appContext = new DefaultContext();
- appContext.put(Constants.CONTEXT_CLASS_LOADER,
CocoonBean.class.getClassLoader());
+ appContext.put(
+ Constants.CONTEXT_CLASS_LOADER,
+ CocoonBean.class.getClassLoader());
cliContext = new CommandLineContext(contextDir);
cliContext.enableLogging(new LogKitLogger(log));
appContext.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, cliContext);
DefaultLogKitManager logKitManager = null;
if (logKit != null) {
final FileInputStream fis = new FileInputStream(logKit);
- final DefaultConfigurationBuilder builder = new
DefaultConfigurationBuilder();
+ final DefaultConfigurationBuilder builder =
+ new DefaultConfigurationBuilder();
final Configuration logKitConf = builder.build(fis);
- logKitManager = new
DefaultLogKitManager(Hierarchy.getDefaultHierarchy());
+ logKitManager =
+ new DefaultLogKitManager(Hierarchy.getDefaultHierarchy());
logKitManager.setLogger(log);
- final DefaultContext subcontext = new DefaultContext(appContext);
+ final DefaultContext subcontext =
+ new DefaultContext(appContext);
subcontext.put("context-root", contextDir);
logKitManager.contextualize(subcontext);
logKitManager.configure(logKitConf);
@@ -211,33 +219,41 @@
log = logKitManager.getLogger("cocoon");
}
} else {
- logKitManager = new
DefaultLogKitManager(Hierarchy.getDefaultHierarchy());
+ logKitManager =
+ new DefaultLogKitManager(Hierarchy.getDefaultHierarchy());
logKitManager.setLogger(log);
}
- appContext.put(Constants.CONTEXT_CLASSPATH, getClassPath(contextDir));
+ appContext.put(
+ Constants.CONTEXT_CLASSPATH,
+ getClassPath(contextDir));
appContext.put(Constants.CONTEXT_WORK_DIR, work);
- appContext.put(Constants.CONTEXT_UPLOAD_DIR, contextDir + "upload-dir");
- File cacheDir = getDir(workDir + File.separator + "cache-dir", "cache");
+ appContext.put(
+ Constants.CONTEXT_UPLOAD_DIR,
+ contextDir + "upload-dir");
+ File cacheDir =
+ getDir(workDir + File.separator + "cache-dir", "cache");
appContext.put(Constants.CONTEXT_CACHE_DIR, cacheDir);
appContext.put(Constants.CONTEXT_CONFIG_URL, conf.toURL());
loadClasses(classList);
cocoon = new Cocoon();
- cocoon.enableLogging(new LogKitLogger(log));
- cocoon.contextualize(appContext);
+ ContainerUtil.enableLogging(cocoon, new LogKitLogger(log));
+ ContainerUtil.contextualize(cocoon, appContext);
cocoon.setLogKitManager(logKitManager);
- cocoon.initialize();
+ ContainerUtil.initialize(cocoon);
// I don't understand why not having an error file (on startup) is an
error (JT)
//if (brokenLinkReportFile!=null && !(new
File(brokenLinkReportFile).exists())) {
// log.error("Broken Link Report File does not exist: " +
brokenLinkReportFile);
//}
- if (brokenLinkReportFile!=null) {
- brokenLinks= new ArrayList();
+ if (brokenLinkReportFile != null) {
+ brokenLinks = new ArrayList();
}
- this.sourceResolver =
(SourceResolver)cocoon.getComponentManager().lookup(SourceResolver.ROLE);
+ this.sourceResolver =
+ (SourceResolver) cocoon.getComponentManager().lookup(
+ SourceResolver.ROLE);
} catch (Exception e) {
log.fatalError("Exception caught", e);
@@ -253,18 +269,27 @@
* @return a <code>File</code> representing the configuration
* @exception IOException if an error occurs
*/
- private static File getConfigurationFile(File dir, String configFile) throws
IOException {
+ private static File getConfigurationFile(File dir, String configFile)
+ throws IOException {
File conf;
if (configFile == null) {
conf = tryConfigurationFile(dir + File.separator +
Constants.DEFAULT_CONF_FILE);
if (conf == null) {
- conf = tryConfigurationFile(dir + File.separator + "WEB-INF" +
File.separator + Constants.DEFAULT_CONF_FILE);
+ conf = tryConfigurationFile(dir
+ + File.separator
+ + "WEB-INF"
+ + File.separator
+ + Constants.DEFAULT_CONF_FILE);
}
if (conf == null) {
- conf = tryConfigurationFile(System.getProperty("user.dir") +
File.separator + Constants.DEFAULT_CONF_FILE);
+ conf = tryConfigurationFile(
+ System.getProperty("user.dir")
+ + File.separator
+ + Constants.DEFAULT_CONF_FILE);
}
if (conf == null) {
- conf = tryConfigurationFile("/usr/local/etc/" +
Constants.DEFAULT_CONF_FILE);
+ conf = tryConfigurationFile(
+ "/usr/local/etc/" + Constants.DEFAULT_CONF_FILE);
}
} else {
conf = new File(configFile);
@@ -311,7 +336,8 @@
if (!d.exists()) {
if (!d.mkdirs()) {
log.error("Error creating " + type + " directory '" + d + "'");
- throw new IOException("Error creating " + type + " directory '" + d
+ "'");
+ throw new IOException(
+ "Error creating " + type + " directory '" + d + "'");
}
}
@@ -322,7 +348,8 @@
if (!(d.canRead() && d.canWrite())) {
log.error("Directory '" + d + "' is not readable/writable");
- throw new IOException("Directory '" + d + "' is not readable/writable");
+ throw new IOException(
+ "Directory '" + d + "' is not readable/writable");
}
return d;
@@ -335,7 +362,7 @@
protected void loadClasses(List classList) {
if (classList != null) {
- for (Iterator i = classList.iterator();i.hasNext();) {
+ for (Iterator i = classList.iterator(); i.hasNext();) {
String className = (String) i.next();
try {
if (log.isDebugEnabled()) {
@@ -422,7 +449,7 @@
this.confirmExtension = confirmExtension;
}
- public void setBrokenLinkReportFile(String filename){
+ public void setBrokenLinkReportFile(String filename) {
this.brokenLinkReportFile = filename;
}
@@ -438,12 +465,12 @@
this.brokenLinkExtension = brokenLinkExtension;
}
- public void setPrecompileOnly(boolean precompileOnly){
- this.precompileOnly = precompileOnly;
+ public void setPrecompileOnly(boolean precompileOnly) {
+ this.precompileOnly = precompileOnly;
}
- public void setVerbose(boolean verbose){
- this.verbose = verbose;
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
}
public void addLoadedClass(String className) {
@@ -463,26 +490,30 @@
* @param destURI URI specifying destination for the generated pages.
* @throws IllegalArgumentException if destURI is missing
*/
- public void addTarget(String type, String root, String sourceURI, String
destURI)
- throws IllegalArgumentException {
+ public void addTarget(
+ String type,
+ String root,
+ String sourceURI,
+ String destURI)
+ throws IllegalArgumentException {
targets.add(new Target(type, root, sourceURI, destURI));
}
public void addTarget(String type, String sourceURI, String destURI)
- throws IllegalArgumentException {
+ throws IllegalArgumentException {
targets.add(new Target(type, sourceURI, destURI));
}
public void addTarget(String sourceURI, String destURI)
- throws IllegalArgumentException {
+ throws IllegalArgumentException {
targets.add(new Target(sourceURI, destURI));
}
public void addTargets(List uris, String destURI)
- throws IllegalArgumentException {
+ throws IllegalArgumentException {
Iterator i = uris.iterator();
while (i.hasNext()) {
- Target target = new Target((String)i.next(), destURI);
+ Target target = new Target((String) i.next(), destURI);
targets.add(target);
}
}
@@ -493,7 +524,8 @@
* @param uri to process
* @param outputStream to write generated contents into
*/
- public void processURI(String uri, OutputStream outputStream) throws Exception {
+ public void processURI(String uri, OutputStream outputStream)
+ throws Exception {
if (!initialized) {
initialize();
@@ -502,8 +534,10 @@
// Get parameters, deparameterized URI and path from URI
final TreeMap parameters = new TreeMap();
- final String deparameterizedURI = NetUtils.deparameterize(uri, parameters);
- final String suri = NetUtils.parameterize(deparameterizedURI, parameters);
+ final String deparameterizedURI =
+ NetUtils.deparameterize(uri, parameters);
+ final String suri =
+ NetUtils.parameterize(deparameterizedURI, parameters);
parameters.put("user-agent", userAgent);
parameters.put("accept", accept);
@@ -518,7 +552,7 @@
String filename;
if (confirmExtension) {
- filename = (String)allTranslatedLinks.get(suri);
+ filename = (String) allTranslatedLinks.get(suri);
if (filename == null) {
filename = mangle(suri);
final String type = getType(deparameterizedURI, parameters);
@@ -536,29 +570,26 @@
return;
}
- int status = getPage(deparameterizedURI, parameters, null, null,
outputStream);
+ int status =
+ getPage(deparameterizedURI, parameters, null, null, outputStream);
- if (status >=400) {
- throw new ProcessingException("Resource not found: "+status);
+ if (status >= 400) {
+ throw new ProcessingException("Resource not found: " + status);
}
}
- /**
- * Warms up the engine by accessing the root.
- * @exception Exception if an error occurs
- */
- public void warmup() throws Exception {
- //log.info(" [Cocoon might need to compile the sitemaps, this might take a
while]");
- cocoon.generateSitemap(new LinkSamplingEnvironment("/", context,
attributes, null, cliContext,
- new LogKitLogger(log)));
- }
-
- public void dispose () {
- if (initialized) {
- cocoon.dispose();
- initialized = false;
- cocoon = null;
- log.debug("Disposed");
+ public void dispose() {
+ if (this.initialized) {
+ if (this.sourceResolver != null) {
+ this.cocoon.getComponentManager().release(this.sourceResolver);
+ this.sourceResolver = null;
+ }
+ this.initialized = false;
+ ContainerUtil.dispose(this.cocoon);
+ this.cocoon = null;
+ if (log.isDebugEnabled()) {
+ log.debug("Disposed");
+ }
}
}
@@ -568,8 +599,8 @@
*/
public void process() throws Exception {
- if (!initialized){
- initialize();
+ if (!this.initialized) {
+ this.initialize();
}
attributes = new HashMap();
@@ -580,13 +611,13 @@
Map targetMap = new HashMap();
Iterator i = targets.iterator();
while (i.hasNext()) {
- Target target = (Target)i.next();
+ Target target = (Target) i.next();
targetMap.put(target, target);
}
int nCount = 0;
while (targetMap.size() > 0) {
- Target target = (Target)targetMap.keySet().iterator().next();
+ Target target = (Target) targetMap.keySet().iterator().next();
try {
if (!allProcessedLinks.containsKey(target)) {
if (precompileOnly) {
@@ -594,7 +625,7 @@
} else if (this.followLinks) {
i = processTarget(target).iterator();
while (i.hasNext()) {
- target = (Target)i.next();
+ target = (Target) i.next();
targetMap.put(target, target);
}
} else {
@@ -602,15 +633,24 @@
}
}
} catch (ResourceNotFoundException rnfe) {
- printBroken (target.getSourceURI(), rnfe.getMessage());
+ printBroken(target.getSourceURI(), rnfe.getMessage());
}
targetMap.remove(target);
nCount++;
if (log.isInfoEnabled()) {
- log.info(" Memory used: " + (Runtime.getRuntime().totalMemory() -
Runtime.getRuntime().freeMemory()));
- log.info(" Processed, Translated & Left: " +
allProcessedLinks.size() + ", " + allTranslatedLinks.size() + ", " +
targetMap.size());
+ log.info(
+ " Memory used: "
+ + (Runtime.getRuntime().totalMemory()
+ - Runtime.getRuntime().freeMemory()));
+ log.info(
+ " Processed, Translated & Left: "
+ + allProcessedLinks.size()
+ + ", "
+ + allTranslatedLinks.size()
+ + ", "
+ + targetMap.size());
}
}
@@ -633,14 +673,20 @@
}
} else if (file.getName().toLowerCase().endsWith(".xmap")) {
try {
-
this.processXMAP(IOUtils.getContextFilePath(contextDir.getCanonicalPath(),file.getCanonicalPath()));
- } catch (Exception e){
+ this.processXMAP(
+ IOUtils.getContextFilePath(
+ contextDir.getCanonicalPath(),
+ file.getCanonicalPath()));
+ } catch (Exception e) {
//Ignore for now.
}
} else if (file.getName().toLowerCase().endsWith(".xsp")) {
try {
-
this.processXSP(IOUtils.getContextFilePath(contextDir.getCanonicalPath(),file.getCanonicalPath()));
- } catch (Exception e){
+ this.processXSP(
+ IOUtils.getContextFilePath(
+ contextDir.getCanonicalPath(),
+ file.getCanonicalPath()));
+ } catch (Exception e) {
//Ignore for now.
}
}
@@ -655,9 +701,15 @@
private void processXSP(String uri) throws Exception {
String markupLanguage = "xsp";
String programmingLanguage = "java";
- Environment env = new LinkSamplingEnvironment("/", context, attributes,
null, cliContext,
- new LogKitLogger(log));
- cocoon.precompile(uri, env, markupLanguage, programmingLanguage);
+ Environment env =
+ new LinkSamplingEnvironment(
+ "/",
+ context,
+ attributes,
+ null,
+ cliContext,
+ new LogKitLogger(log));
+ this.cocoon.precompile(uri, env, markupLanguage, programmingLanguage);
}
/**
@@ -669,9 +721,15 @@
private void processXMAP(String uri) throws Exception {
String markupLanguage = "sitemap";
String programmingLanguage = "java";
- Environment env = new LinkSamplingEnvironment("/", context, attributes,
null, cliContext,
- new LogKitLogger(log));
- cocoon.precompile(uri, env, markupLanguage, programmingLanguage);
+ Environment env =
+ new LinkSamplingEnvironment(
+ "/",
+ context,
+ attributes,
+ null,
+ cliContext,
+ new LogKitLogger(log));
+ this.cocoon.precompile(uri, env, markupLanguage, programmingLanguage);
}
/**
@@ -715,9 +773,11 @@
// Get parameters, deparameterized URI and path from URI
final TreeMap parameters = new TreeMap();
- final String deparameterizedURI = NetUtils.deparameterize(uri, parameters);
+ final String deparameterizedURI =
+ NetUtils.deparameterize(uri, parameters);
final String path = NetUtils.getPath(uri);
- final String suri = NetUtils.parameterize(deparameterizedURI, parameters);
+ final String suri =
+ NetUtils.parameterize(deparameterizedURI, parameters);
parameters.put("user-agent", userAgent);
parameters.put("accept", accept);
@@ -732,7 +792,7 @@
String filename;
if (confirmExtension) {
- filename = (String)allTranslatedLinks.get(suri);
+ filename = (String) allTranslatedLinks.get(suri);
if (filename == null) {
filename = mangle(suri);
final String type = getType(deparameterizedURI, parameters);
@@ -761,7 +821,8 @@
List gatheredLinks = new ArrayList();
if (followLinks && confirmExtension) {
- final Iterator i = this.getLinks(deparameterizedURI,
parameters).iterator();
+ final Iterator i =
+ this.getLinks(deparameterizedURI, parameters).iterator();
while (i.hasNext()) {
String link = (String) i.next();
@@ -771,17 +832,25 @@
relativeLink = pageURI + relativeLink;
}
- String absoluteLink = NetUtils.normalize(NetUtils.absolutize(path,
relativeLink));
+ String absoluteLink =
+ NetUtils.normalize(NetUtils.absolutize(path, relativeLink));
{
final TreeMap p = new TreeMap();
- absoluteLink =
NetUtils.parameterize(NetUtils.deparameterize(absoluteLink, p), p);
+ absoluteLink =
+ NetUtils.parameterize(
+ NetUtils.deparameterize(absoluteLink, p),
+ p);
}
- String translatedAbsoluteLink =
(String)allTranslatedLinks.get(absoluteLink);
+ String translatedAbsoluteLink =
+ (String) allTranslatedLinks.get(absoluteLink);
if (translatedAbsoluteLink == null) {
try {
- translatedAbsoluteLink = this.translateURI(absoluteLink);
+ translatedAbsoluteLink =
+ this.translateURI(absoluteLink);
log.info(" Link translated: " + absoluteLink);
- allTranslatedLinks.put(absoluteLink,
translatedAbsoluteLink);
+ allTranslatedLinks.put(
+ absoluteLink,
+ translatedAbsoluteLink);
absoluteLinks.add(absoluteLink);
} catch (ProcessingException pe) {
printBroken(absoluteLink, pe.getMessage());
@@ -791,81 +860,104 @@
// I have to add also broken links to the absolute links
// to be able to generate the "broken link" page
absoluteLinks.add(absoluteLink);
- final String translatedRelativeLink = NetUtils.relativize(path,
translatedAbsoluteLink);
+ final String translatedRelativeLink =
+ NetUtils.relativize(path, translatedAbsoluteLink);
translatedLinks.put(link, translatedRelativeLink);
}
- printInfo("["+translatedLinks.size()+"] ");
+ printInfo("[" + translatedLinks.size() + "] ");
}
try {
// Process URI
DelayedOutputStream output = new DelayedOutputStream();
- try{
- int status = getPage(deparameterizedURI, parameters,
confirmExtension ? translatedLinks : null, gatheredLinks, output);
-
- if (status >=400) {
- throw new ProcessingException("Resource not found: "+status);
+ try {
+ int status =
+ getPage(
+ deparameterizedURI,
+ parameters,
+ confirmExtension ? translatedLinks : null,
+ gatheredLinks,
+ output);
+
+ if (status >= 400) {
+ throw new ProcessingException(
+ "Resource not found: " + status);
}
if (followLinks && !confirmExtension) {
- for (Iterator it=gatheredLinks.iterator();it.hasNext();){
+ for (Iterator it = gatheredLinks.iterator();
+ it.hasNext();
+ ) {
String link = (String) it.next();
if (link.startsWith("?")) {
link = pageURI + link;
}
- String absoluteLink =
NetUtils.normalize(NetUtils.absolutize(path, link));
+ String absoluteLink =
+ NetUtils.normalize(NetUtils.absolutize(path, link));
{
final TreeMap p = new TreeMap();
- absoluteLink =
NetUtils.parameterize(NetUtils.deparameterize(absoluteLink, p), p);
+ absoluteLink =
+ NetUtils.parameterize(
+ NetUtils.deparameterize(absoluteLink, p),
+ p);
}
absoluteLinks.add(absoluteLink);
}
- printInfo("["+gatheredLinks.size()+"] ");
+ printInfo("[" + gatheredLinks.size() + "] ");
}
printlnInfo(uri); // (can also output type returned by getPage)
- } catch(ProcessingException pe) {
+ } catch (ProcessingException pe) {
output.close();
output = null;
if (brokenLinkGenerate) {
String brokenFile = NetUtils.decodePath(filename);
- if (brokenLinkExtension!=null){
- brokenFile = brokenFile+brokenLinkExtension;
+ if (brokenLinkExtension != null) {
+ brokenFile = brokenFile + brokenLinkExtension;
}
resourceUnavailable(target, uri);
}
- printBroken(filename,
DefaultNotifyingBuilder.getRootCause(pe).getMessage());
+ printBroken(
+ filename,
+ DefaultNotifyingBuilder.getRootCause(pe).getMessage());
} finally {
if (output != null) {
- OutputStream stream = target.getOutputStream(filename);
+ ModifiableSource source = target.getSource(filename);
+ try {
+ OutputStream stream = source.getOutputStream();
- output.setFileOutputStream(stream);
- output.flush();
+ output.setFileOutputStream(stream);
+ output.flush();
+ } finally {
+ target.releaseSource(source);
+ }
}
try {
if (output != null)
output.close();
- } catch(IOException ioex) {
+ } catch (IOException ioex) {
log.warn(ioex.toString());
}
}
} catch (Exception rnfe) {
System.out.println("XXX" + rnfe);
log.warn("Could not process URI: " + deparameterizedURI);
- if (verbose) System.out.println("Could not process URI: " +
deparameterizedURI);
+ if (verbose)
+ System.out.println(
+ "Could not process URI: " + deparameterizedURI);
}
- List targets = new ArrayList();
- for (Iterator i = absoluteLinks.iterator() ;i.hasNext();) {
- String link = (String)i.next();
- Target derivedTarget = target.getDerivedTarget(link);
- if (derivedTarget != null) {
- targets.add(target.getDerivedTarget(link));
- }
- }
- return targets;
+ List targets = new ArrayList();
+ for (Iterator i = absoluteLinks.iterator(); i.hasNext();) {
+ String link = (String) i.next();
+ Target derivedTarget = target.getDerivedTarget(link);
+ if (derivedTarget != null) {
+ targets.add(target.getDerivedTarget(link));
+ }
+ }
+ return targets;
}
/**
@@ -878,7 +970,8 @@
private String translateURI(String uri) throws Exception {
if (null == uri || "".equals(uri)) {
log.warn("translate empty uri");
- if (verbose) System.out.println("translate empty uri");
+ if (verbose)
+ System.out.println("translate empty uri");
return "";
}
HashMap parameters = new HashMap();
@@ -907,54 +1000,58 @@
* @param url the <code>URL</code> of the broken link
* @param cause of the broken link
*/
- private void printBroken(String url, String cause) {
- int screenWidth = 67;
- int causeWidth = screenWidth - 6;
-
- printlnInfo("");
- printlnInfo("-> [broken page] " + url +" <- ");
- printlnInfo("");
- printInfo(" ");
-
- int causeLength = cause.length(), currentStart = -causeWidth, currentEnd =
0;
- do {
- currentStart += causeWidth;
- currentEnd += causeWidth;
-
- if (currentEnd>causeLength) {
- currentEnd=causeLength;
- }
-
- printlnInfo(cause.substring(currentStart, currentEnd));
- printInfo(" ");
- } while(currentEnd < causeLength);
-
- printlnInfo("");
-
- if (null != this.brokenLinks) {
- brokenLinks.add(url);
- }
- }
+ private void printBroken(String url, String cause) {
+ int screenWidth = 67;
+ int causeWidth = screenWidth - 6;
- /**
- * Print an info message.
- *
- * @param message the message to print
- */
- private void printlnInfo (String message) {
- log.info(message);
- if (verbose) System.out.println(message);
- }
+ printlnInfo("");
+ printlnInfo("-> [broken page] " + url + " <- ");
+ printlnInfo("");
+ printInfo(" ");
- /**
- * Print an info message.
- *
- * @param message the message to print
- */
- private void printInfo (String message) {
- log.info(message);
- if (verbose) System.out.print(message);
- }
+ int causeLength = cause.length(),
+ currentStart = -causeWidth,
+ currentEnd = 0;
+ do {
+ currentStart += causeWidth;
+ currentEnd += causeWidth;
+
+ if (currentEnd > causeLength) {
+ currentEnd = causeLength;
+ }
+
+ printlnInfo(cause.substring(currentStart, currentEnd));
+ printInfo(" ");
+ } while (currentEnd < causeLength);
+
+ printlnInfo("");
+
+ if (null != this.brokenLinks) {
+ brokenLinks.add(url);
+ }
+ }
+
+ /**
+ * Print an info message.
+ *
+ * @param message the message to print
+ */
+ private void printlnInfo(String message) {
+ log.info(message);
+ if (verbose)
+ System.out.println(message);
+ }
+
+ /**
+ * Print an info message.
+ *
+ * @param message the message to print
+ */
+ private void printInfo(String message) {
+ log.info(message);
+ if (verbose)
+ System.out.print(message);
+ }
/**
* Generate a <code>resourceUnavailable</code> message.
@@ -962,7 +1059,8 @@
* @param target being unavailable
* @exception IOException if an error occurs
*/
- private void resourceUnavailable(Target target, String uri) throws IOException,
ProcessingException {
+ private void resourceUnavailable(Target target, String uri)
+ throws IOException, ProcessingException {
SimpleNotifyingBean n = new SimpleNotifyingBean(this);
n.setType("resource-not-found");
n.setTitle("Resource not Found");
@@ -972,14 +1070,21 @@
n.addExtraDescription(Notifying.EXTRA_REQUESTURI, uri);
n.addExtraDescription("missing-file", uri);
- PrintStream out = new PrintStream(target.getOutputStream(uri));
- Notifier.notify(n, out, "text/html");
- out.flush();
- out.close();
+ ModifiableSource source = target.getSource(uri);
+ try {
+ OutputStream stream = source.getOutputStream();
+
+ PrintStream out = new PrintStream(stream);
+ Notifier.notify(n, out, "text/html");
+ out.flush();
+ out.close();
+ } finally {
+ target.releaseSource(source);
+ }
}
private void outputBrokenLinks() {
- if (brokenLinkReportFile==null){
+ if (brokenLinkReportFile == null) {
return;
} else if ("text".equalsIgnoreCase(brokenLinkReportType)) {
outputBrokenLinksAsText();
@@ -987,25 +1092,31 @@
outputBrokenLinksAsXML();
}
}
- private void outputBrokenLinksAsText(){
+ private void outputBrokenLinksAsText() {
PrintWriter writer;
try {
- writer = new PrintWriter(new FileWriter(new
File(brokenLinkReportFile)), true);
- for (Iterator i=brokenLinks.iterator();i.hasNext();){
- writer.println((String)i.next());
+ writer =
+ new PrintWriter(
+ new FileWriter(new File(brokenLinkReportFile)),
+ true);
+ for (Iterator i = brokenLinks.iterator(); i.hasNext();) {
+ writer.println((String) i.next());
}
writer.close();
} catch (IOException ioe) {
log.error("File does not exist: " + brokenLinkReportFile);
}
}
- private void outputBrokenLinksAsXML(){
+ private void outputBrokenLinksAsXML() {
PrintWriter writer;
try {
- writer = new PrintWriter(new FileWriter(new
File(brokenLinkReportFile)), true);
+ writer =
+ new PrintWriter(
+ new FileWriter(new File(brokenLinkReportFile)),
+ true);
writer.println("<broken-links>");
- for (Iterator i=brokenLinks.iterator();i.hasNext();){
- writer.println(" <link>" + (String)i.next()+"</link>");
+ for (Iterator i = brokenLinks.iterator(); i.hasNext();) {
+ writer.println(" <link>" + (String) i.next() + "</link>");
}
writer.println("</broken-links>");
writer.close();
@@ -1043,13 +1154,16 @@
* @return a <code>Collection</code> of links
* @exception Exception if an error occurs
*/
- protected Collection getLinks(String deparameterizedURI, Map parameters) throws
Exception {
- LinkSamplingEnvironment env = new
LinkSamplingEnvironment(deparameterizedURI,
- context,
- attributes,
- parameters,
- cliContext,
- new
LogKitLogger(log));
+ protected Collection getLinks(String deparameterizedURI, Map parameters)
+ throws Exception {
+ LinkSamplingEnvironment env =
+ new LinkSamplingEnvironment(
+ deparameterizedURI,
+ context,
+ attributes,
+ parameters,
+ cliContext,
+ new LogKitLogger(log));
processLenient(env);
return env.getLinks();
}
@@ -1064,16 +1178,24 @@
* @return a <code>String</code> value for the content
* @exception Exception if an error occurs
*/
- protected int getPage(String deparameterizedURI, Map parameters, Map links,
List gatheredLinks, OutputStream stream) throws Exception {
- FileSavingEnvironment env = new FileSavingEnvironment(deparameterizedURI,
- context,
- attributes,
- parameters,
- links,
- gatheredLinks,
- cliContext,
- stream,
- new
LogKitLogger(log));
+ protected int getPage(
+ String deparameterizedURI,
+ Map parameters,
+ Map links,
+ List gatheredLinks,
+ OutputStream stream)
+ throws Exception {
+ FileSavingEnvironment env =
+ new FileSavingEnvironment(
+ deparameterizedURI,
+ context,
+ attributes,
+ parameters,
+ links,
+ gatheredLinks,
+ cliContext,
+ stream,
+ new LogKitLogger(log));
// Here Cocoon can throw an exception if there are errors in processing the
page
cocoon.process(env);
@@ -1083,11 +1205,13 @@
}
/** Class <code>NullOutputStream</code> here. */
- static class NullOutputStream extends OutputStream
- {
- public void write(int b) throws IOException { }
- public void write(byte b[]) throws IOException { }
- public void write(byte b[], int off, int len) throws IOException { }
+ static class NullOutputStream extends OutputStream {
+ public void write(int b) throws IOException {
+ }
+ public void write(byte b[]) throws IOException {
+ }
+ public void write(byte b[], int off, int len) throws IOException {
+ }
}
/**
@@ -1098,16 +1222,19 @@
* @return a <code>String</code> value denoting the type of content
* @exception Exception if an error occurs
*/
- protected String getType(String deparameterizedURI, Map parameters) throws
Exception {
- FileSavingEnvironment env = new FileSavingEnvironment(deparameterizedURI,
- context,
- attributes,
- parameters,
- empty,
- null,
- cliContext,
- new
NullOutputStream(),
- new
LogKitLogger(log));
+ protected String getType(String deparameterizedURI, Map parameters)
+ throws Exception {
+ FileSavingEnvironment env =
+ new FileSavingEnvironment(
+ deparameterizedURI,
+ context,
+ attributes,
+ parameters,
+ empty,
+ null,
+ cliContext,
+ new NullOutputStream(),
+ new LogKitLogger(log));
processLenient(env);
return env.getContentType();
}
@@ -1120,13 +1247,13 @@
* @exception Exception if an error occurs, except RNFE
*/
private boolean processLenient(Environment env) throws Exception {
- try{
- cocoon.process(env);
- } catch(ProcessingException pe) {
- return false;
- }
+ try {
+ this.cocoon.process(env);
+ } catch (ProcessingException pe) {
+ return false;
+ }
- return true;
+ return true;
}
/**
@@ -1154,18 +1281,18 @@
Arrays.sort(libraries);
for (int i = 0; i < libraries.length; i++) {
if (libraries[i].getAbsolutePath().endsWith(".jar")) {
- buildClassPath.append(File.pathSeparatorChar)
- .append(IOUtils.getFullFilename(libraries[i]));
+ buildClassPath.append(File.pathSeparatorChar).append(
+ IOUtils.getFullFilename(libraries[i]));
}
}
}
- buildClassPath.append(File.pathSeparatorChar)
- .append(System.getProperty("java.class.path"));
+ buildClassPath.append(File.pathSeparatorChar).append(
+ System.getProperty("java.class.path"));
// Extra class path is necessary for non-classloader-aware java compilers
to compile XSPs
-// buildClassPath.append(File.pathSeparatorChar)
-// .append(getExtraClassPath(context));
+ // buildClassPath.append(File.pathSeparatorChar)
+ // .append(getExtraClassPath(context));
if (log.isDebugEnabled()) {
log.debug("Context classpath: " + buildClassPath);
@@ -1187,7 +1314,12 @@
private transient int _hashCode;
private transient String _toString;
- public Target(String type, String root, String sourceURI, String destURI)
throws IllegalArgumentException {
+ public Target(
+ String type,
+ String root,
+ String sourceURI,
+ String destURI)
+ throws IllegalArgumentException {
this.type = type;
this.root = root;
this.sourceURI = NetUtils.normalize(sourceURI);
@@ -1200,15 +1332,18 @@
this.destURI = destURI;
}
- public Target(String type, String sourceURI, String destURI) throws
IllegalArgumentException {
+ public Target(String type, String sourceURI, String destURI)
+ throws IllegalArgumentException {
this(type, "", sourceURI, destURI);
}
- public Target(String sourceURI, String destURI) throws
IllegalArgumentException {
+ public Target(String sourceURI, String destURI)
+ throws IllegalArgumentException {
this(APPEND_TYPE, "", sourceURI, destURI);
}
- public Target getDerivedTarget(String newURI) throws
IllegalArgumentException {
+ public Target getDerivedTarget(String newURI)
+ throws IllegalArgumentException {
if (!newURI.startsWith(root)) {
return null;
}
@@ -1216,27 +1351,33 @@
return new Target(this.type, this.root, newURI, this.destURI);
}
- public String getFinalURI(String actualSourceURI) throws
ProcessingException {
+ public String getFinalURI(String actualSourceURI)
+ throws ProcessingException {
if (!actualSourceURI.startsWith(root)) {
- throw new ProcessingException("Derived target does not share same
root: " + actualSourceURI);
+ throw new ProcessingException(
+ "Derived target does not share same root: "
+ + actualSourceURI);
}
actualSourceURI = actualSourceURI.substring(root.length());
- if (APPEND_TYPE.equals(this.type)){
+ if (APPEND_TYPE.equals(this.type)) {
return destURI + actualSourceURI;
- } else if (REPLACE_TYPE.equals(this.type)){
+ } else if (REPLACE_TYPE.equals(this.type)) {
return destURI;
- } else if (INSERT_TYPE.equals(this.type)){
+ } else if (INSERT_TYPE.equals(this.type)) {
int starPos = destURI.indexOf("*");
if (starPos == -1) {
throw new ProcessingException("Missing * in replace mapper
uri");
- } else if (starPos == destURI.length()-1) {
- return destURI.substring(0,starPos) + actualSourceURI;
+ } else if (starPos == destURI.length() - 1) {
+ return destURI.substring(0, starPos) + actualSourceURI;
} else {
- return destURI.substring(0,starPos) + actualSourceURI +
destURI.substring(starPos+1);
+ return destURI.substring(0, starPos)
+ + actualSourceURI
+ + destURI.substring(starPos + 1);
}
} else {
- throw new ProcessingException("Unknown mapper type: " + this.type);
+ throw new ProcessingException(
+ "Unknown mapper type: " + this.type);
}
}
@@ -1244,14 +1385,20 @@
return root + sourceURI;
}
- public OutputStream getOutputStream(String filename) throws IOException,
ProcessingException {
+ public ModifiableSource getSource(String filename)
+ throws IOException, ProcessingException {
final String finalDestinationURI = this.getFinalURI(filename);
Source src = sourceResolver.resolveURI(finalDestinationURI);
if (!(src instanceof ModifiableSource)) {
- throw new ProcessingException("Source is not Modifiable: " +
finalDestinationURI);
+ sourceResolver.release(src);
+ throw new ProcessingException(
+ "Source is not Modifiable: " + finalDestinationURI);
}
- ModifiableSource outputSource = (ModifiableSource) src;
- return outputSource.getOutputStream();
+ return (ModifiableSource) src;
+ }
+
+ public void releaseSource(ModifiableSource source) {
+ sourceResolver.release(source);
}
public boolean equals(Object o) {
@@ -1267,7 +1414,16 @@
public String toString() {
if (_toString == null) {
- return _toString = "<" + type + "|" + root +"|" + sourceURI + "|" +
destURI + ">";
+ return _toString =
+ "<"
+ + type
+ + "|"
+ + root
+ + "|"
+ + sourceURI
+ + "|"
+ + destURI
+ + ">";
}
return _toString;
}