[jira] [Commented] (OFBIZ-12063) Replace java.io.File::renameTo by java.nio.file.Files::move

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (OFBIZ-12063) Replace java.io.File::renameTo by java.nio.file.Files::move

Nicolas Malin (Jira)

    [ https://issues.apache.org/jira/browse/OFBIZ-12063?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17238289#comment-17238289 ]

ASF subversion and git services commented on OFBIZ-12063:
---------------------------------------------------------

Commit 1be480b68c52b8c8403b7c935b35981e943f5057 in ofbiz-framework's branch refs/heads/trunk from Jacques Le Roux
[ https://gitbox.apache.org/repos/asf?p=ofbiz-framework.git;h=1be480b ]

Fixed: Replace java.io.File::renameTo by java.nio.file.Files::move (OFBIZ-12063)

This is a bug because the behaviour is not assured on Windows for instance. So
it's impossible to correctly develop and test.

As explained at
https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-

<<Many aspects of the behavior of this method are inherently platform-dependent:
The rename operation might not be able to move a file from one filesystem to
another, it might not be atomic, and it might not succeed if a file with the
destination abstract pathname already exists. The return value should always be
checked to make sure that the rename operation was successful.
Note that the Files class defines the move method to move or rename a file in a
platform independent manner.>>

So the expression
  file.renameTo(file1)
used in 5 Application Product Groovy scripts can be easily replaced by
  Path source = file.toPath()
  Files.move(source, source.resolveSibling(filenameToUse))
that is working on all platforms as explained at
https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#
move-java.nio.file.Path-java.nio.file.Path-java.nio.file.CopyOption...-


> Replace java.io.File::renameTo by java.nio.file.Files::move
> -----------------------------------------------------------
>
>                 Key: OFBIZ-12063
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-12063
>             Project: OFBiz
>          Issue Type: Bug
>          Components: product/catalog
>    Affects Versions: Trunk
>            Reporter: Jacques Le Roux
>            Assignee: Jacques Le Roux
>            Priority: Major
>
> This is a bug because the behaviour is not assured on Windows for instance. So it's impossible to correctly develop and test.
> As explained at https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-
> {quote}
> Renames the file denoted by this abstract pathname.
> Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.
> Note that the Files class defines the move method to move or rename a file in a platform independent manner.
> {quote}
> So the expression
> {code:java}
> file.renameTo(file1)
> {code}
> used in 5 Application Product Groovy scripts, can be easily replaced by
> {code:java}
> Path source = file.toPath()
> Files.move(source, source.resolveSibling(filenameToUse))
> {code}
> that is working on all platforms as explained at https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#move-java.nio.file.Path-java.nio.file.Path-java.nio.file.CopyOption...-



--
This message was sent by Atlassian Jira
(v8.3.4#803005)