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 2001/10/16 15:29:49 UTC
cvs commit: xml-cocoon2/src/org/apache/cocoon/environment/commandline AbstractCommandLineEnvironment.java
cziegeler 01/10/16 06:29:49
Modified: src/org/apache/cocoon/environment/commandline
AbstractCommandLineEnvironment.java
Log:
First version for redirects in cli; this includes a little hack for making the links-view work
Revision Changes Path
1.9 +57 -3 xml-cocoon2/src/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java
Index: AbstractCommandLineEnvironment.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/commandline/AbstractCommandLineEnvironment.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AbstractCommandLineEnvironment.java 2001/10/11 07:28:20 1.8
+++ AbstractCommandLineEnvironment.java 2001/10/16 13:29:49 1.9
@@ -8,11 +8,17 @@
package org.apache.cocoon.environment.commandline;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.AbstractEnvironment;
import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.Source;
import org.apache.log.Logger;
+import org.xml.sax.SAXException;
import java.io.File;
+import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.MalformedURLException;
@@ -21,7 +27,7 @@
* This environment is used to save the requested file to disk.
*
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.8 $ $Date: 2001/10/11 07:28:20 $
+ * @version CVS $Revision: 1.9 $ $Date: 2001/10/16 13:29:49 $
*/
public abstract class AbstractCommandLineEnvironment
@@ -46,8 +52,56 @@
/**
* Redirect the client to a new URL
*/
- public void redirect(boolean sessionmode, String newURL) throws IOException {
- throw new RuntimeException (this.getClass().getName() + ".redirect(String url) method not yet implemented!");
+ public void redirect(boolean sessionmode, String newURL)
+ throws IOException {
+ if (sessionmode == true) {
+ CommandLineSession.getSession(true);
+ }
+ // fix all urls created with request.getScheme()+... etc.
+ if (newURL.startsWith("cli:/") == true) {
+ int pos = newURL.indexOf('/', 6);
+ newURL = newURL.substring(pos+1);
+ }
+ // fix all relative urls to use to cocoon: protocol
+ if (newURL.indexOf(":") == -1) {
+ newURL = "cocoon:/" + newURL;
+ }
+ // FIXME: this is a hack for the links view
+ if (newURL.startsWith("cocoon:") == true
+ && this.getView() != null
+ && this.getView().equals(Constants.LINK_VIEW) == true) {
+
+ // as the internal cocoon protocol is used the last
+ // serializer is removed from it! And therefore
+ // the LinkSerializer is not used.
+ // so we create one without Avalon...
+ org.apache.cocoon.serialization.LinkSerializer ls =
+ new org.apache.cocoon.serialization.LinkSerializer();
+ ls.setOutputStream(this.stream);
+ try {
+ final Source redirectSource = this.resolve(newURL);
+ redirectSource.toSAX(ls);
+ } catch (SAXException se) {
+ throw new IOException("SAXException: " + se);
+ } catch (ProcessingException pe) {
+ throw new IOException("ProcessingException: " + pe);
+ }
+ } else {
+ try {
+ final Source redirectSource = this.resolve(newURL);
+ InputStream is = redirectSource.getInputStream();
+ byte[] buffer = new byte[8192];
+ int length = -1;
+
+ while ((length = is.read(buffer)) > -1) {
+ this.stream.write(buffer, 0, length);
+ }
+ } catch (SAXException se) {
+ throw new IOException("SAXException: " + se);
+ } catch (ProcessingException pe) {
+ throw new IOException("ProcessingException: " + pe);
+ }
+ }
}
/**
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org