diff --git a/uberfire-backend/uberfire-backend-server/src/main/java/org/uberfire/backend/server/util/Paths.java b/uberfire-backend/uberfire-backend-server/src/main/java/org/uberfire/backend/server/util/Paths.java index 76d2353a0f..767f398efc 100644 --- a/uberfire-backend/uberfire-backend-server/src/main/java/org/uberfire/backend/server/util/Paths.java +++ b/uberfire-backend/uberfire-backend-server/src/main/java/org/uberfire/backend/server/util/Paths.java @@ -20,8 +20,6 @@ import java.util.HashMap; import java.util.Map; -import org.apache.commons.httpclient.URIException; -import org.apache.commons.httpclient.util.URIUtil; import org.uberfire.backend.vfs.FileSystem; import org.uberfire.backend.vfs.FileSystemFactory; import org.uberfire.backend.vfs.Path; @@ -38,10 +36,10 @@ public static Path convert( final org.uberfire.java.nio.file.Path path ) { } if ( path.getFileName() == null ) { - return newPath( convert( path.getFileSystem() ), "/", encodePath( path.toUri().toString() ) ); + return newPath( convert( path.getFileSystem() ), "/", path.toUri().toString() ); } - return newPath( convert( path.getFileSystem() ), path.getFileName().toString(), encodePath( path.toUri().toString() ) ); + return newPath( convert( path.getFileSystem() ), path.getFileName().toString(), path.toUri().toString() ); } public static org.uberfire.java.nio.file.Path convert( final Path path ) { @@ -49,23 +47,7 @@ public static org.uberfire.java.nio.file.Path convert( final Path path ) { return null; } - return org.uberfire.java.nio.file.Paths.get( URI.create( decodePath( path.toURI() ) ) ); - } - - private static String encodePath( final String uriPath ) { - try { - return URIUtil.encodePath( uriPath ); - } catch ( final URIException e ) { - return null; - } - } - - private static String decodePath( final String uriPath ) { - try { - return URIUtil.decode( uriPath ); - } catch ( final URIException e ) { - return null; - } + return org.uberfire.java.nio.file.Paths.get( URI.create( path.toURI() ) ); } public static FileSystem convert( final org.uberfire.java.nio.file.FileSystem fs ) { diff --git a/uberfire-backend/uberfire-backend-server/src/test/java/org/uberfire/backend/server/util/TestPaths.java b/uberfire-backend/uberfire-backend-server/src/test/java/org/uberfire/backend/server/util/TestPaths.java new file mode 100644 index 0000000000..9fb74ea49a --- /dev/null +++ b/uberfire-backend/uberfire-backend-server/src/test/java/org/uberfire/backend/server/util/TestPaths.java @@ -0,0 +1,49 @@ +package org.uberfire.backend.server.util; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TestPaths { + + @Test + public void test() { + { + final String FILENAME = "file name.txt"; + final org.uberfire.java.nio.file.Path path = org.uberfire.java.nio.file.Paths.get( "file://reponame/path/to/" ).resolve( FILENAME ); + + assertEquals( FILENAME, path.getFileName().toString() ); + assertEquals( FILENAME, Paths.convert( path ).getFileName() ); + assertEquals( FILENAME, Paths.convert( Paths.convert( path ) ).getFileName().toString() ); + System.out.println( path.toUri().toString() ); + System.out.println( Paths.convert( path ).toURI() ); + System.out.println( Paths.convert( Paths.convert( path ) ).toUri().toString() ); + } + + { + final String FILENAME = "file_name.txt"; + final org.uberfire.java.nio.file.Path path = org.uberfire.java.nio.file.Paths.get( "file://reponame/path/to/" ).resolve( FILENAME ); + + assertEquals( FILENAME, path.getFileName().toString() ); + assertEquals( FILENAME, Paths.convert( path ).getFileName() ); + assertEquals( FILENAME, Paths.convert( Paths.convert( path ) ).getFileName().toString() ); + System.out.println( path.toUri().toString() ); + System.out.println( Paths.convert( path ).toURI() ); + System.out.println( Paths.convert( Paths.convert( path ) ).toUri().toString() ); + } + + { + final String FILENAME = "file+name.txt"; + final org.uberfire.java.nio.file.Path path = org.uberfire.java.nio.file.Paths.get( "file://reponame/path/to/" ).resolve( FILENAME ); + + assertEquals( FILENAME, path.getFileName().toString() ); + assertEquals( FILENAME, Paths.convert( path ).getFileName() ); + assertEquals( FILENAME, Paths.convert( Paths.convert( path ) ).getFileName().toString() ); + + System.out.println( path.toUri().toString() ); + System.out.println( Paths.convert( path ).toURI() ); + System.out.println( Paths.convert( Paths.convert( path ) ).toUri().toString() ); + } + } + +} diff --git a/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/AbstractBasicFileAttributeView.java b/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/AbstractBasicFileAttributeView.java index 0c8ad998db..4c1f4c6c74 100644 --- a/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/AbstractBasicFileAttributeView.java +++ b/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/AbstractBasicFileAttributeView.java @@ -33,15 +33,15 @@ public abstract class AbstractBasicFileAttributeView

implements BasicFileAttributeView, ExtendedAttributeView { - private static final String IS_REGULAR_FILE = "isRegularFile"; - private static final String IS_DIRECTORY = "isDirectory"; - private static final String IS_SYMBOLIC_LINK = "isSymbolicLink"; - private static final String IS_OTHER = "isOther"; - private static final String SIZE = "size"; - private static final String FILE_KEY = "fileKey"; - private static final String LAST_MODIFIED_TIME = "lastModifiedTime"; - private static final String LAST_ACCESS_TIME = "lastAccessTime"; - private static final String CREATION_TIME = "creationTime"; + static final String IS_REGULAR_FILE = "isRegularFile"; + static final String IS_DIRECTORY = "isDirectory"; + static final String IS_SYMBOLIC_LINK = "isSymbolicLink"; + static final String IS_OTHER = "isOther"; + static final String SIZE = "size"; + static final String FILE_KEY = "fileKey"; + static final String LAST_MODIFIED_TIME = "lastModifiedTime"; + static final String LAST_ACCESS_TIME = "lastAccessTime"; + static final String CREATION_TIME = "creationTime"; private static final Set PROPERTIES = new HashSet() {{ add( IS_REGULAR_FILE ); diff --git a/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/BasicFileAttributesUtil.java b/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/BasicFileAttributesUtil.java new file mode 100644 index 0000000000..4b72767749 --- /dev/null +++ b/uberfire-nio2-backport/uberfire-nio2-model/src/main/java/org/uberfire/java/nio/base/BasicFileAttributesUtil.java @@ -0,0 +1,26 @@ +package org.uberfire.java.nio.base; + +import java.util.HashMap; +import java.util.Map; + +import static org.uberfire.java.nio.base.AbstractBasicFileAttributeView.*; + +public class BasicFileAttributesUtil { + + public static Map cleanup( final Map _attrs ) { + final Map attrs = new HashMap( _attrs ); + + for ( final String key : _attrs.keySet() ) { + if ( key.startsWith( IS_REGULAR_FILE ) || key.startsWith( IS_DIRECTORY ) || + key.startsWith( IS_SYMBOLIC_LINK ) || key.startsWith( SIZE ) || + key.startsWith( FILE_KEY ) || key.startsWith( IS_OTHER ) || + key.startsWith( LAST_MODIFIED_TIME ) || key.startsWith( LAST_ACCESS_TIME ) || + key.startsWith( CREATION_TIME ) ) { + attrs.put( key, null ); + } + } + + return attrs; + } + +}