commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Created] (JCI-67) Dubious use of mkdirs() return code
Date Mon, 15 Aug 2011 21:15:27 GMT
Dubious use of mkdirs() return code
-----------------------------------

                 Key: JCI-67
                 URL: https://issues.apache.org/jira/browse/JCI-67
             Project: Commons JCI
          Issue Type: Bug
            Reporter: Sebb
            Priority: Minor


FileRestoreStore.java uses mkdirs() as follows:

{code}
final File parent = file.getParentFile();
if (!parent.exists()) {
    if (!parent.mkdirs()) {
        throw new IOException("could not create" + parent);
    }
}
{code}

Now mkdirs() returns true *only* if the method actually created the directories; it's theoretically
possible for the directory to be created in the window between the exists() and mkdirs() invocations.

Also, the initial exists() call is redundant, because that's what mkdirs() does anyway (in
the RI implementation, at least).

I suggest the following instead:

{code}
final File parent = file.getParentFile();
if (!parent.mkdirs() && !parent.exists()) {
        throw new IOException("could not create" + parent);
    }
}
{code}

If mkdirs() returns false, the code then checks to see if the directory exists, so the throws
clause will only be invoked if the parent really cannot be created.

The same code also appears in AbstractTestCase and FilesystemAlterationMonitorTestCase.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message