cziegeler    02/05/24 02:09:29

  Modified:    sourceresolve/src/java/org/apache/excalibur/source/impl
                        URLSource.java
  Log:
  Throwing SourceNotFoundException when the file is not found.
  
  Revision  Changes    Path
  1.10      +65 -56    
jakarta-avalon-excalibur/sourceresolve/src/java/org/apache/excalibur/source/impl/URLSource.java
  
  Index: URLSource.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/sourceresolve/src/java/org/apache/excalibur/source/impl/URLSource.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- URLSource.java    13 May 2002 12:17:40 -0000      1.9
  +++ URLSource.java    24 May 2002 09:09:29 -0000      1.10
  @@ -9,6 +9,7 @@
   
   import java.io.File;
   import java.io.FileInputStream;
  +import java.io.FileNotFoundException;
   import java.io.IOException;
   import java.io.InputStream;
   import java.lang.reflect.Method;
  @@ -19,6 +20,7 @@
   import java.util.Map;
   import org.apache.excalibur.source.Source;
   import org.apache.excalibur.source.SourceException;
  +import org.apache.excalibur.source.SourceNotFoundException;
   import org.apache.excalibur.source.SourceParameters;
   import org.apache.excalibur.source.SourceUtil;
   import org.apache.excalibur.source.SourceValidity;
  @@ -28,7 +30,7 @@
    * Description of a source which is described by an URL.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.9 $ $Date: 2002/05/13 12:17:40 $
  + * @version CVS $Revision: 1.10 $ $Date: 2002/05/24 09:09:29 $
    */
   
   public class URLSource
  @@ -195,73 +197,80 @@
       public InputStream getInputStream()
           throws IOException, SourceException
       {
  -        getInfos();
  -        InputStream input = null;
  -        if( this.isFile == true )
  -        {
  -            input = new FileInputStream( this.systemId.substring( 
FILE.length() ) );
  -        }
  -        else
  +        try
           {
  -            if( this.connection == null )
  +            getInfos();
  +            InputStream input = null;
  +            if( this.isFile == true )
  +            {
  +                input = new FileInputStream( this.systemId.substring( 
FILE.length() ) );
  +            }
  +            else
               {
  -                this.connection = this.url.openConnection();
  -                /* The following requires a jdk 1.3 */
  -                String userInfo = this.getUserInfo();
  -                if( this.url.getProtocol().startsWith( "http" ) && userInfo 
!= null )
  +                if( this.connection == null )
                   {
  -                    this.connection.setRequestProperty( "Authorization", 
"Basic " + SourceUtil.encodeBASE64( userInfo ) );
  -                }
  +                    this.connection = this.url.openConnection();
  +                    /* The following requires a jdk 1.3 */
  +                    String userInfo = this.getUserInfo();
  +                    if( this.url.getProtocol().startsWith( "http" ) && 
userInfo != null )
  +                    {
  +                        this.connection.setRequestProperty( "Authorization", 
"Basic " + SourceUtil.encodeBASE64( userInfo ) );
  +                    }
   
  -                // do a post operation
  -                if( this.connection instanceof HttpURLConnection
  -                    && this.isPost )
  -                {
  -                    StringBuffer buffer = new StringBuffer( 2000 );
  -                    String key;
  -                    Iterator i = this.parameters.getParameterNames();
  -                    Iterator values;
  -                    String value;
  -                    boolean first = true;
  -                    while( i.hasNext() )
  +                    // do a post operation
  +                    if( this.connection instanceof HttpURLConnection
  +                        && this.isPost )
                       {
  -                        key = (String)i.next();
  -                        values = this.parameters.getParameterValues( key );
  -                        while( values.hasNext() == true )
  +                        StringBuffer buffer = new StringBuffer( 2000 );
  +                        String key;
  +                        Iterator i = this.parameters.getParameterNames();
  +                        Iterator values;
  +                        String value;
  +                        boolean first = true;
  +                        while( i.hasNext() )
                           {
  -                            value = SourceUtil.encode( (String)values.next() 
);
  -                            if( first == false ) buffer.append( '&' );
  -                            first = false;
  -                            buffer.append( key.toString() );
  -                            buffer.append( '=' );
  -                            buffer.append( value );
  +                            key = (String)i.next();
  +                            values = this.parameters.getParameterValues( key 
);
  +                            while( values.hasNext() == true )
  +                            {
  +                                value = SourceUtil.encode( 
(String)values.next() );
  +                                if( first == false ) buffer.append( '&' );
  +                                first = false;
  +                                buffer.append( key.toString() );
  +                                buffer.append( '=' );
  +                                buffer.append( value );
  +                            }
                           }
  -                    }
  -                    HttpURLConnection httpCon = 
(HttpURLConnection)connection;
  -                    httpCon.setDoInput( true );
  +                        HttpURLConnection httpCon = 
(HttpURLConnection)connection;
  +                        httpCon.setDoInput( true );
   
  -                    if( buffer.length() > 1 )
  -                    { // only post if we have parameters
  -                        String postString = buffer.toString();
  -                        httpCon.setRequestMethod( "POST" ); // this is POST
  -                        httpCon.setDoOutput( true );
  -                        httpCon.setRequestProperty( "Content-type", 
"application/x-www-form-urlencoded" );
  -
  -                        // A content-length header must be contained in a 
POST request
  -                        httpCon.setRequestProperty( "Content-length", 
Integer.toString( postString.length() ) );
  -                        java.io.OutputStream out = new 
java.io.BufferedOutputStream( httpCon.getOutputStream() );
  -                        out.write( postString.getBytes() );
  -                        out.close();
  +                        if( buffer.length() > 1 )
  +                        { // only post if we have parameters
  +                            String postString = buffer.toString();
  +                            httpCon.setRequestMethod( "POST" ); // this is 
POST
  +                            httpCon.setDoOutput( true );
  +                            httpCon.setRequestProperty( "Content-type", 
"application/x-www-form-urlencoded" );
  +
  +                            // A content-length header must be contained in 
a POST request
  +                            httpCon.setRequestProperty( "Content-length", 
Integer.toString( postString.length() ) );
  +                            java.io.OutputStream out = new 
java.io.BufferedOutputStream( httpCon.getOutputStream() );
  +                            out.write( postString.getBytes() );
  +                            out.close();
  +                        }
  +                        input = httpCon.getInputStream();
  +                        this.connection = null; // make sure a new 
connection is created next time
  +                        return input;
                       }
  -                    input = httpCon.getInputStream();
  -                    this.connection = null; // make sure a new connection is 
created next time
  -                    return input;
                   }
  +                input = this.connection.getInputStream();
  +                this.connection = null; // make sure a new connection is 
created next time
               }
  -            input = this.connection.getInputStream();
  -            this.connection = null; // make sure a new connection is created 
next time
  +            return input;
  +        }
  +        catch (FileNotFoundException fnfe)
  +        {
  +            throw new SourceNotFoundException("Resource not found " + 
this.systemId);
           }
  -        return input;
       }
   
       private static boolean checkedURLClass = false;
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to