You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2008/08/13 12:56:49 UTC

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

Author: gkossakowski
Date: Wed Aug 13 03:56:48 2008
New Revision: 685509

URL: http://svn.apache.org/viewvc?rev=685509&view=rev
Log:
Implemented exists() method so it tries to return more meaningful value.

Also, use exists() method in getInputStream, if it does not exist then SourceNotFound exception should be thrown.

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-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java?rev=685509&r1=685508&r2=685509&view=diff
==============================================================================
--- 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 Wed Aug 13 03:56:48 2008
@@ -37,6 +37,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceNotFoundException;
 import org.apache.excalibur.source.SourceValidity;
 import org.apache.excalibur.source.impl.AbstractSource;
 import org.apache.excalibur.store.Store;
@@ -77,6 +78,11 @@
     public InputStream getInputStream() throws IOException, SourceException {
         try {
             connect();
+            
+            if (!exists())
+                throw new SourceNotFoundException("Location " + this.getURI() + " cannot be found."
+                       + "The servlet returned " + servletConnection.getResponseCode() + " response code.");
+            
             // 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
@@ -203,7 +209,15 @@
      * @see org.apache.excalibur.source.Source#exists()
      */
     public boolean exists() {
-        return true;
+        try {
+            connect();
+            int rc = servletConnection.getResponseCode();
+            return rc == HttpServletResponse.SC_OK || rc == HttpServletResponse.SC_FOUND || rc == HttpServletResponse.SC_NOT_MODIFIED;
+        } catch (Exception e) {
+            if (logger.isDebugEnabled())
+                logger.debug("Exception occured while making servlet request", e);
+            return false;
+        }
     }
 
     /**