void touchFile() should return the boolean result of the setLastModified

View: New views
3 Messages — Rating Filter:   Alert me  

void touchFile() should return the boolean result of the setLastModified

by Peter_Lenahan-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

This is an issue found by Findbugs.
In the file FSDirectory the method void touchFile() should return the boolean result of the setLastModified method call.


public abstract class FSDirectory extends Directory {


@Override
  public void touchFile(String name) {
    ensureOpen();
    File file = new File(directory, name);
    file.setLastModified(System.currentTimeMillis());
  }

Because this class is abstract this method may be overridden, and this may create an upward compatibility issue.


Suggested change

@Override
  public Boolean touchFile(String name) {
    ensureOpen();
    File file = new File(directory, name);
    Return file.setLastModified(System.currentTimeMillis());
  }



Re: void touchFile() should return the boolean result of the setLastModified

by Michael McCandless-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I agree it's not great that touchFile swallows the return status from
File.setLastModified, but, technically changing it would break our jar
drop-in back compat.

Actually, I think instead, we should deprecate the method?  As best I
can tell, Lucene does not use this anywhere.

I'll open an issue, but I think we have to wait for 3.1 (we're trying
not to add new deprecations in 3.0).

Mike

On Tue, Nov 3, 2009 at 8:05 PM,  <Peter_Lenahan@...> wrote:

> This is an issue found by Findbugs.
> In the file FSDirectory the method void touchFile() should return the boolean result of the setLastModified method call.
>
>
> public abstract class FSDirectory extends Directory {
>
>
> @Override
>  public void touchFile(String name) {
>    ensureOpen();
>    File file = new File(directory, name);
>    file.setLastModified(System.currentTimeMillis());
>  }
>
> Because this class is abstract this method may be overridden, and this may create an upward compatibility issue.
>
>
> Suggested change
>
> @Override
>  public Boolean touchFile(String name) {
>    ensureOpen();
>    File file = new File(directory, name);
>    Return file.setLastModified(System.currentTimeMillis());
>  }
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@...
For additional commands, e-mail: java-user-help@...


RE: void touchFile() should return the boolean result of the setLastModified

by Uwe Schindler :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

We discussed about this method yesterday in the evening. The abstract base
class defines the method as throwing an IOException. So the correct
behaviour would be to throw an IOException if setLastModified returns false
(which happens according to the docs, if the date cannot be changed because
of an IO/FS prob).

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@...


> -----Original Message-----
> From: Michael McCandless [mailto:lucene@...]
> Sent: Wednesday, November 04, 2009 2:09 AM
> To: java-user@...
> Subject: Re: void touchFile() should return the boolean result of the
> setLastModified
>
> I agree it's not great that touchFile swallows the return status from
> File.setLastModified, but, technically changing it would break our jar
> drop-in back compat.
>
> Actually, I think instead, we should deprecate the method?  As best I
> can tell, Lucene does not use this anywhere.
>
> I'll open an issue, but I think we have to wait for 3.1 (we're trying
> not to add new deprecations in 3.0).
>
> Mike
>
> On Tue, Nov 3, 2009 at 8:05 PM,  <Peter_Lenahan@...> wrote:
> > This is an issue found by Findbugs.
> > In the file FSDirectory the method void touchFile() should return the
> boolean result of the setLastModified method call.
> >
> >
> > public abstract class FSDirectory extends Directory {
> >
> >
> > @Override
> >  public void touchFile(String name) {
> >    ensureOpen();
> >    File file = new File(directory, name);
> >    file.setLastModified(System.currentTimeMillis());
> >  }
> >
> > Because this class is abstract this method may be overridden, and this
> may create an upward compatibility issue.
> >
> >
> > Suggested change
> >
> > @Override
> >  public Boolean touchFile(String name) {
> >    ensureOpen();
> >    File file = new File(directory, name);
> >    Return file.setLastModified(System.currentTimeMillis());
> >  }
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@...
> For additional commands, e-mail: java-user-help@...



---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@...
For additional commands, e-mail: java-user-help@...