[jira] [Commented] (IO-719) PathUtils.copyDirectory() does not work when source and dest belong to different filesystems

2021-02-09 Thread Andrew Shcheglov (Jira)


[ 
https://issues.apache.org/jira/browse/IO-719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17281956#comment-17281956
 ] 

Andrew Shcheglov commented on IO-719:
-

[https://github.com/apache/commons-io/pull/203]

There are CI errors, but nothing related to my changes

> PathUtils.copyDirectory() does not work when source and dest belong to 
> different filesystems
> 
>
> Key: IO-719
> URL: https://issues.apache.org/jira/browse/IO-719
> Project: Commons IO
>  Issue Type: Bug
>  Components: Utilities
>Affects Versions: 2.8.0
> Environment: Java 8, Linux
>Reporter: Andrew Shcheglov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> This code:
> {code:java}
> @Test
> public void pathUtilsCopyDirFailure() throws IOException {
>   FileSystem fs1 = Jimfs.newFileSystem();
>   Path srcDir = fs1.getPath("srcDir");
>   // Create files/dirs in srcDir
>   Path targetDir = Paths.get("targetDir");
>   PathUtils.copyDirectory(srcDir, targetDir);
> }
> {code}
> throws exception:
> {noformat}
> java.nio.file.ProviderMismatchException
>   at java.base/sun.nio.fs.UnixPath.toUnixPath(UnixPath.java:198)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:410)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:43)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:130)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:36)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2731)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2796)
>   at 
> org.apache.commons.io.file.PathUtils.visitFileTree(PathUtils.java:687)
>   at 
> org.apache.commons.io.file.PathUtils.copyDirectory(PathUtils.java:196)
> {noformat}



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


[jira] [Commented] (IO-719) PathUtils.copyDirectory() does not work when source and dest belong to different filesystems

2021-02-08 Thread Andrew Shcheglov (Jira)


[ 
https://issues.apache.org/jira/browse/IO-719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17281390#comment-17281390
 ] 

Andrew Shcheglov commented on IO-719:
-

Jimfs uses a much more "light" approach and does not require access to the 
disk, as the zipfs does.

Ok, I will add jar file to resources then

> PathUtils.copyDirectory() does not work when source and dest belong to 
> different filesystems
> 
>
> Key: IO-719
> URL: https://issues.apache.org/jira/browse/IO-719
> Project: Commons IO
>  Issue Type: Bug
>  Components: Utilities
>Affects Versions: 2.8.0
> Environment: Java 8, Linux
>Reporter: Andrew Shcheglov
>Priority: Major
>
> This code:
> {code:java}
> @Test
> public void pathUtilsCopyDirFailure() throws IOException {
>   FileSystem fs1 = Jimfs.newFileSystem();
>   Path srcDir = fs1.getPath("srcDir");
>   // Create files/dirs in srcDir
>   Path targetDir = Paths.get("targetDir");
>   PathUtils.copyDirectory(srcDir, targetDir);
> }
> {code}
> throws exception:
> {noformat}
> java.nio.file.ProviderMismatchException
>   at java.base/sun.nio.fs.UnixPath.toUnixPath(UnixPath.java:198)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:410)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:43)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:130)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:36)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2731)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2796)
>   at 
> org.apache.commons.io.file.PathUtils.visitFileTree(PathUtils.java:687)
>   at 
> org.apache.commons.io.file.PathUtils.copyDirectory(PathUtils.java:196)
> {noformat}



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


[jira] [Commented] (IO-719) PathUtils.copyDirectory() does not work when source and dest belong to different filesystems

2021-02-08 Thread Andrew Shcheglov (Jira)


[ 
https://issues.apache.org/jira/browse/IO-719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17281339#comment-17281339
 ] 

Andrew Shcheglov commented on IO-719:
-

[~ggregory], is it ok if I add 
[Jimfs|https://search.maven.org/artifact/com.google.jimfs/jimfs/1.2/bundle] as 
test dependency to use it in unit tests? Or PR without tests is also acceptable?

> PathUtils.copyDirectory() does not work when source and dest belong to 
> different filesystems
> 
>
> Key: IO-719
> URL: https://issues.apache.org/jira/browse/IO-719
> Project: Commons IO
>  Issue Type: Bug
>  Components: Utilities
>Affects Versions: 2.8.0
> Environment: Java 8, Linux
>Reporter: Andrew Shcheglov
>Priority: Major
>
> This code:
> {code:java}
> @Test
> public void pathUtilsCopyDirFailure() throws IOException {
>   FileSystem fs1 = Jimfs.newFileSystem();
>   Path srcDir = fs1.getPath("srcDir");
>   // Create files/dirs in srcDir
>   Path targetDir = Paths.get("targetDir");
>   PathUtils.copyDirectory(srcDir, targetDir);
> }
> {code}
> throws exception:
> {noformat}
> java.nio.file.ProviderMismatchException
>   at java.base/sun.nio.fs.UnixPath.toUnixPath(UnixPath.java:198)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:410)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:43)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:130)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:36)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2731)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2796)
>   at 
> org.apache.commons.io.file.PathUtils.visitFileTree(PathUtils.java:687)
>   at 
> org.apache.commons.io.file.PathUtils.copyDirectory(PathUtils.java:196)
> {noformat}



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


[jira] [Comment Edited] (IO-719) PathUtils.copyDirectory() does not work when source and dest belong to different filesystems

2021-02-08 Thread Andrew Shcheglov (Jira)


[ 
https://issues.apache.org/jira/browse/IO-719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17280257#comment-17280257
 ] 

Andrew Shcheglov edited comment on IO-719 at 2/8/21, 5:13 PM:
--

Possible solution: stringize relative path inside"resolve()" in 
"CopyDirectoryVizitor.preVisitDirectory()" and 
"CopyDirectoryVisitor.vizitFile()", like here:

{code:java}
@Override
public FileVisitResult preVisitDirectory(final Path directory, final 
BasicFileAttributes attributes)
throws IOException {
final Path newTargetDir = 
targetDirectory.resolve(sourceDirectory.relativize(directory).toString());
if (Files.notExists(newTargetDir)) {
Files.createDirectory(newTargetDir);
}
return super.preVisitDirectory(directory, attributes);
}

@Override
public FileVisitResult visitFile(final Path sourceFile, final 
BasicFileAttributes attributes) throws IOException {
final Path targetFile = 
targetDirectory.resolve(sourceDirectory.relativize(sourceFile).toString());
copy(sourceFile, targetFile);
return super.visitFile(targetFile, attributes);
}
{code}



was (Author: ashcheglov):
Possible solution: stringize relative path inside"resolve()" in 
"CopyDirectoryVizitor.preVizitDirectory()" and 
"CopyDirectoryVizitor.vizitFile()", like here:

{code:java}
@Override
public FileVisitResult preVisitDirectory(final Path directory, final 
BasicFileAttributes attributes)
throws IOException {
final Path newTargetDir = 
targetDirectory.resolve(sourceDirectory.relativize(directory).toString());
if (Files.notExists(newTargetDir)) {
Files.createDirectory(newTargetDir);
}
return super.preVisitDirectory(directory, attributes);
}

@Override
public FileVisitResult visitFile(final Path sourceFile, final 
BasicFileAttributes attributes) throws IOException {
final Path targetFile = 
targetDirectory.resolve(sourceDirectory.relativize(sourceFile).toString());
copy(sourceFile, targetFile);
return super.visitFile(targetFile, attributes);
}
{code}


> PathUtils.copyDirectory() does not work when source and dest belong to 
> different filesystems
> 
>
> Key: IO-719
> URL: https://issues.apache.org/jira/browse/IO-719
> Project: Commons IO
>  Issue Type: Bug
>  Components: Utilities
>Affects Versions: 2.8.0
> Environment: Java 8, Linux
>Reporter: Andrew Shcheglov
>Priority: Major
>
> This code:
> {code:java}
> @Test
> public void pathUtilsCopyDirFailure() throws IOException {
>   FileSystem fs1 = Jimfs.newFileSystem();
>   Path srcDir = fs1.getPath("srcDir");
>   // Create files/dirs in srcDir
>   Path targetDir = Paths.get("targetDir");
>   PathUtils.copyDirectory(srcDir, targetDir);
> }
> {code}
> throws exception:
> {noformat}
> java.nio.file.ProviderMismatchException
>   at java.base/sun.nio.fs.UnixPath.toUnixPath(UnixPath.java:198)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:410)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:43)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:130)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:36)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2731)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2796)
>   at 
> org.apache.commons.io.file.PathUtils.visitFileTree(PathUtils.java:687)
>   at 
> org.apache.commons.io.file.PathUtils.copyDirectory(PathUtils.java:196)
> {noformat}



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


[jira] [Commented] (IO-719) PathUtils.copyDirectory() does not work when source and dest belong to different filesystems

2021-02-06 Thread Andrew Shcheglov (Jira)


[ 
https://issues.apache.org/jira/browse/IO-719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17280257#comment-17280257
 ] 

Andrew Shcheglov commented on IO-719:
-

Possible solution: stringize relative path inside"resolve()" in 
"CopyDirectoryVizitor.preVizitDirectory()" and 
"CopyDirectoryVizitor.vizitFile()", like here:

{code:java}
@Override
public FileVisitResult preVisitDirectory(final Path directory, final 
BasicFileAttributes attributes)
throws IOException {
final Path newTargetDir = 
targetDirectory.resolve(sourceDirectory.relativize(directory).toString());
if (Files.notExists(newTargetDir)) {
Files.createDirectory(newTargetDir);
}
return super.preVisitDirectory(directory, attributes);
}

@Override
public FileVisitResult visitFile(final Path sourceFile, final 
BasicFileAttributes attributes) throws IOException {
final Path targetFile = 
targetDirectory.resolve(sourceDirectory.relativize(sourceFile).toString());
copy(sourceFile, targetFile);
return super.visitFile(targetFile, attributes);
}
{code}


> PathUtils.copyDirectory() does not work when source and dest belong to 
> different filesystems
> 
>
> Key: IO-719
> URL: https://issues.apache.org/jira/browse/IO-719
> Project: Commons IO
>  Issue Type: Bug
>  Components: Utilities
>Affects Versions: 2.8.0
> Environment: Java 8, Linux
>Reporter: Andrew Shcheglov
>Priority: Major
>
> This code:
> {code:java}
> @Test
> public void pathUtilsCopyDirFailure() throws IOException {
>   FileSystem fs1 = Jimfs.newFileSystem();
>   Path srcDir = fs1.getPath("srcDir");
>   // Create files/dirs in srcDir
>   Path targetDir = Paths.get("targetDir");
>   PathUtils.copyDirectory(srcDir, targetDir);
> }
> {code}
> throws exception:
> {noformat}
> java.nio.file.ProviderMismatchException
>   at java.base/sun.nio.fs.UnixPath.toUnixPath(UnixPath.java:198)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:410)
>   at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:43)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:130)
>   at 
> org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:36)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2731)
>   at java.base/java.nio.file.Files.walkFileTree(Files.java:2796)
>   at 
> org.apache.commons.io.file.PathUtils.visitFileTree(PathUtils.java:687)
>   at 
> org.apache.commons.io.file.PathUtils.copyDirectory(PathUtils.java:196)
> {noformat}



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


[jira] [Created] (IO-719) PathUtils.copyDirectory() does not work when source and dest belong to different filesystems

2021-02-06 Thread Andrew Shcheglov (Jira)
Andrew Shcheglov created IO-719:
---

 Summary: PathUtils.copyDirectory() does not work when source and 
dest belong to different filesystems
 Key: IO-719
 URL: https://issues.apache.org/jira/browse/IO-719
 Project: Commons IO
  Issue Type: Bug
  Components: Utilities
Affects Versions: 2.8.0
 Environment: Java 8, Linux
Reporter: Andrew Shcheglov


This code:
{code:java}
@Test
public void pathUtilsCopyDirFailure() throws IOException {
FileSystem fs1 = Jimfs.newFileSystem();
Path srcDir = fs1.getPath("srcDir");
// Create files/dirs in srcDir
Path targetDir = Paths.get("targetDir");
PathUtils.copyDirectory(srcDir, targetDir);
}
{code}
throws exception:

{noformat}
java.nio.file.ProviderMismatchException
at java.base/sun.nio.fs.UnixPath.toUnixPath(UnixPath.java:198)
at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:410)
at java.base/sun.nio.fs.UnixPath.resolve(UnixPath.java:43)
at 
org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:130)
at 
org.apache.commons.io.file.CopyDirectoryVisitor.preVisitDirectory(CopyDirectoryVisitor.java:36)
at java.base/java.nio.file.Files.walkFileTree(Files.java:2731)
at java.base/java.nio.file.Files.walkFileTree(Files.java:2796)
at 
org.apache.commons.io.file.PathUtils.visitFileTree(PathUtils.java:687)
at 
org.apache.commons.io.file.PathUtils.copyDirectory(PathUtils.java:196)
{noformat}




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