Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 23164 invoked from network); 13 Aug 2008 10:57:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Aug 2008 10:57:42 -0000 Received: (qmail 22053 invoked by uid 500); 13 Aug 2008 10:57:41 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 21981 invoked by uid 500); 13 Aug 2008 10:57:41 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 21972 invoked by uid 99); 13 Aug 2008 10:57:41 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Aug 2008 03:57:41 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Aug 2008 10:56:53 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4C484238898F; Wed, 13 Aug 2008 03:56:50 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r685509 - /cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/components/ServletSource.java Date: Wed, 13 Aug 2008 10:56:49 -0000 To: cvs@cocoon.apache.org From: gkossakowski@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080813105650.4C484238898F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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; + } } /**