----- Original Message ----- 
From: "Vincent Massol" <[EMAIL PROTECTED]>
To: "'Maven Developers List'" <[EMAIL PROTECTED]>
Sent: Wednesday, April 21, 2004 4:14 PM
Subject: RE: cvs commit: maven/src/java/org/apache/maven/util HttpUtils.java


> Hi Emmanuel,
>
> That's cool. Would it be possible to add some comments to explain why
> this additional check is required?
>
> Is it to support web servers that do not support ifModifiedSince HTTP
> headers?

Yes and no. In some case, UrlConnection download files that aren't modified.
I'll think it's a problem with some JDKs.
Before commit it, I tested my changes with some trace, and I saw that files
was downloaded all the time even if the server (IBiblio in my tests) send
last modified date.
With this patch, I fix this two problems.

>
> Thanks
> -Vincent
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > Sent: 21 April 2004 15:54
> > To: [EMAIL PROTECTED]
> > Subject: cvs commit: maven/src/java/org/apache/maven/util
> HttpUtils.java
> >
> > evenisse    2004/04/21 06:53:53
> >
> >   Modified:    src/java/org/apache/maven/util Tag: MAVEN-1_0-BRANCH
> >                         HttpUtils.java
> >   Log:
> >   Fix MAVEN-1226. Snapshot is download only if the remote version is
> more
> > recent than local version.
> >
> >   Revision  Changes    Path
> >   No                   revision
> >   No                   revision
> >   1.28.4.6  +13 -8
> maven/src/java/org/apache/maven/util/HttpUtils.java
> >
> >   Index: HttpUtils.java
> >   ===================================================================
> >   RCS file:
> > /home/cvs/maven/src/java/org/apache/maven/util/HttpUtils.java,v
> >   retrieving revision 1.28.4.5
> >   retrieving revision 1.28.4.6
> >   diff -u -r1.28.4.5 -r1.28.4.6
> >   --- HttpUtils.java 15 Apr 2004 06:05:51 -0000 1.28.4.5
> >   +++ HttpUtils.java 21 Apr 2004 13:53:53 -0000 1.28.4.6
> >   @@ -28,7 +28,6 @@
> >    import java.net.PasswordAuthentication;
> >    import java.net.URL;
> >    import java.net.URLConnection;
> >   -import java.util.Date;
> >
> >    /**
> >     * Http utils for retrieving files.
> >   @@ -170,10 +169,10 @@
> >            throws IOException
> >        {
> >            //set the timestamp to the file date.
> >   -        Date timestamp = null;
> >   +        long timestamp = -1;
> >            if ( useTimestamp && destinationFile.exists() )
> >            {
> >   -            timestamp = new Date( destinationFile.lastModified() );
> >   +            timestamp = destinationFile.lastModified();
> >            }
> >
> >            try
> >   @@ -201,7 +200,7 @@
> >         * @param url the URL of the file to retrieve
> >         * @param destinationFile where to store it
> >         * @param timestamp if provided, the remote URL is only
> retrieved
> > if it was
> >   -     * modified more recently than timestamp. Otherwise, null
> indicates
> > that
> >   +     * modified more recently than timestamp. Otherwise, negative
> value
> > indicates that
> >         * the remote URL should be retrieved unconditionally.
> >         * @param proxyHost Proxy Host (if proxy is required), or null
> >         * @param proxyPort Proxy Port (if proxy is required), or null
> >   @@ -213,7 +212,7 @@
> >         */
> >        public static void getFile( String url,
> >                                    File destinationFile,
> >   -                                Date timestamp,
> >   +                                long timestamp,
> >                                    String proxyHost,
> >                                    String proxyPort,
> >                                    String proxyUserName,
> >   @@ -234,9 +233,9 @@
> >            URLConnection connection = source.openConnection();
> >
> >            //modify the headers
> >   -        if ( timestamp != null )
> >   +        if ( timestamp >= 0 )
> >            {
> >   -            connection.setIfModifiedSince( timestamp.getTime() );
> >   +            connection.setIfModifiedSince( timestamp );
> >            }
> >            // prepare Java 1.1 style credentials
> >            if ( username != null || password != null )
> >   @@ -315,6 +314,12 @@
> >                throw isException;
> >            }
> >
> >   +        if ( connection.getLastModified() <= timestamp &&
> >   +             connection.getLastModified() != 0 )
> >   +        {
> >   +            return;
> >   +        }
> >   +
> >            FileOutputStream fos = new FileOutputStream(
> destinationFile );
> >
> >            byte[] buffer = new byte[100 * 1024];
> >   @@ -333,7 +338,7 @@
> >            // if (and only if) the use file time option is set, then
> the
> >            // saved file now has its timestamp set to that of the
> > downloaded
> >            // file
> >   -        if ( timestamp != null )
> >   +        if ( timestamp >= 0 )
> >            {
> >                long remoteTimestamp = connection.getLastModified();
> >                if ( remoteTimestamp != 0 )
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


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

Reply via email to