[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xml-cocoon-cvs
Subject:    svn commit: r531498 -
From:       gkossakowski () apache ! org
Date:       2007-04-23 15:24:58
Message-ID: 20070423152500.0BEE31A9838 () eris ! apache ! org
[Download RAW message or body]

Author: gkossakowski
Date: Mon Apr 23 08:24:55 2007
New Revision: 531498

URL: http://svn.apache.org/viewvc?view=rev&rev=531498
Log:
If getInputStream() is called despite the fact cached content for the source is still \
valid return data by perform second request.

Modified:
    cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java


Modified: cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java
                
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-servlet-service/cocoon-serv \
let-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java?view=diff&rev=531498&r1=531497&r2=531498
 ==============================================================================
--- cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java \
                (original)
+++ cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java \
Mon Apr 23 08:24:55 2007 @@ -44,7 +44,8 @@
 	private transient Log logger = LogFactory.getLog(getClass());
 
 	private ServletConnection servletConnection;
-
+	private String location;
+	
 	/**
 	 * The store is used to store values of Last-Modified header (if it exists). This \
                store is required because in
 	 * {@link #getValidity()} we need value of Last-Modified header of previous \
response in order to perform conditional @@ -63,6 +64,7 @@
 		// whithin the current block, not globally
 		this.store = store;
 		setSystemId(location);
+		this.location = location;
 		this.servletConnection = new ServletConnection(location);
 		connected = false;
 	}
@@ -75,6 +77,12 @@
 	public InputStream getInputStream() throws IOException, SourceException {
 		try {
 			connect();
+			//FIXME: This is not the most elegant solution
+			if (servletConnection.getResponseCode() != HttpServletResponse.SC_OK) {
+				//most probably, servlet returned 304 (not modified) and we need to perform \
second request to get data +				servletConnection = new ServletConnection(location);
+				servletConnection.connect();
+			}
 			return this.servletConnection.getInputStream();
 		} catch (ServletException e) {
 			throw new CascadingIOException(e.getMessage(), e);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic