Skip to content
This repository has been archived by the owner on Feb 9, 2021. It is now read-only.

Commit

Permalink
BZ-1019268: some additional fixes in order to avoid double encoding/d…
Browse files Browse the repository at this point in the history
…ecoding pointed by neus
  • Loading branch information
porcelli committed Jan 16, 2014
1 parent 532198c commit 7ef4fd3
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 30 deletions.
Expand Up @@ -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;
Expand All @@ -38,34 +36,18 @@ 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 ) {
if ( path == null ) {
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 ) {
Expand Down
@@ -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() );
}
}

}
Expand Up @@ -33,15 +33,15 @@ public abstract class AbstractBasicFileAttributeView<P extends Path>
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<String> PROPERTIES = new HashSet<String>() {{
add( IS_REGULAR_FILE );
Expand Down
@@ -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<String, Object> cleanup( final Map<String, Object> _attrs ) {
final Map<String, Object> attrs = new HashMap<String, Object>( _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;
}

}

0 comments on commit 7ef4fd3

Please sign in to comment.