Author: upayavira
Date: Tue Feb 22 04:30:44 2005
New Revision: 154838
URL: http://svn.apache.org/viewcvs?view=rev&rev=154838
Log:
Adding ability for CocoonBean to process a URL to a content handler
with cocoonBean.process(uri, contentHandler), rather than to an
OutputStream (of course skipping the serializer).
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java?view=diff&r1=154837&r2=154838
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java
Tue Feb 22 04:30:44 2005
@@ -391,6 +391,36 @@
}
}
+ /**
+ * Process single URI into given content handler, skipping final
+ * serializer
+ *
+ * @param uri to process
+ * @param handler to write generated contents into
+ */
+ public void processURI(String uri, ContentHandler handler)
+ throws Exception {
+
+ if (!initialized) {
+ initialize();
+ }
+ log.info("Processing URI: " + uri);
+
+ // Get parameters, deparameterized URI and path from URI
+ final TreeMap parameters = new TreeMap();
+ final String deparameterizedURI =
+ NetUtils.deparameterize(uri, parameters);
+ parameters.put("user-agent", userAgent);
+ parameters.put("accept", accept);
+
+ int status =
+ getPage(deparameterizedURI, 0L, parameters, null, null, handler);
+
+ if (status >= 400) {
+ throw new ProcessingException("Resource not found: " + status);
+ }
+ }
+
public void dispose() {
if (this.initialized) {
this.initialized = false;
@@ -452,6 +482,47 @@
// Here Cocoon can throw an exception if there are errors in
processing the page
cocoon.process(env);
+
+ // if we get here, the page was created :-)
+ int status = env.getStatus();
+ if (!env.isModified()) {
+ status = -1;
+ }
+ return status;
+ }
+
+ /**
+ * Processes an URI for its content.
+ *
+ * @param deparameterizedURI a <code>String</code> value of an URI to
start sampling from
+ * @param parameters a <code>Map</code> value containing request parameters
+ * @param links a <code>Map</code> value
+ * @param stream an <code>OutputStream</code> to write the content to
+ * @return a <code>String</code> value for the content
+ * @exception Exception if an error occurs
+ */
+ protected int getPage(String deparameterizedURI,
+ long lastModified,
+ Map parameters,
+ Map links,
+ List gatheredLinks,
+ ContentHandler handler)
+ throws Exception {
+
+ parameters.put("user-agent", userAgent);
+ parameters.put("accept", accept);
+
+ FileSavingEnvironment env =
+ new FileSavingEnvironment(deparameterizedURI, lastModified,
context,
+ attributes, parameters, links,
+ gatheredLinks, cliContext, null, log);
+
+ XMLConsumer consumer = new ContentHandlerWrapper(handler);
+ ProcessingPipeline pipeline = cocoon.buildPipeline(env);
+ CocoonComponentManager.enterEnvironment(env,
cocoon.getComponentManager(), cocoon);
+ pipeline.prepareInternal(env);
+ CocoonComponentManager.leaveEnvironment();
+ pipeline.process(env, consumer);
// if we get here, the page was created :-)
int status = env.getStatus();
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java?view=diff&r1=154837&r2=154838
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java
Tue Feb 22 04:30:44 2005
@@ -36,7 +36,7 @@
* This environment is used to save the requested file to disk.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Id: AbstractCommandLineEnvironment.java,v 1.6 2004/03/05
13:02:54 bdelacretaz Exp $
+ * @version CVS $Id$
*/
public abstract class AbstractCommandLineEnvironment
@@ -179,4 +179,16 @@
return true;
}
+ /**
+ * Return an OutputStream, but allow it to be null for when
+ * the pipeline is being streamed to the provided SAX
+ * content handler (using CocoonBean)
+ */
+ public OutputStream getOutputStream(int bufferSize) throws IOException {
+ if (this.outputStream == null) {
+ return null;
+ } else {
+ return super.getOutputStream(bufferSize);
+ }
+ }
}