Merge remote-tracking branch 'origin/master' into jetty-9.1

Conflicts:
	jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java
This commit is contained in:
Greg Wilkins 2013-10-23 11:51:19 +11:00
commit 323572708c
3 changed files with 48 additions and 14 deletions

View File

@ -108,10 +108,17 @@ public class FileResource extends Resource
{
File file=new File(uri);
_file=file;
URI file_uri=_file.toURI();
_uri=normalizeURI(_file,uri);
if (!_uri.equals(_file.toURI()) && !_uri.toString().equals(_file.toURI().toString()))
_alias=_file.toURI();
if (!_uri.equals(file_uri) && !_uri.toString().equals(file_uri.toString()))
{
// URI and File URI are different. Is it just an encoding difference?
if (!file_uri.toString().equals(URIUtil.decodePath(uri.toString())))
_alias=_file.toURI();
else
_alias=checkAlias(_file);
}
else
_alias=checkAlias(_file);
}

View File

@ -27,6 +27,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import org.eclipse.jetty.toolchain.test.OS;
import org.eclipse.jetty.toolchain.test.TestingDir;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.UrlEncoded;
@ -34,6 +35,7 @@ import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import static org.junit.Assume.assumeTrue;
public class FileResourceTest
{
@ -53,6 +55,19 @@ public class FileResourceTest
String decoded = UrlEncoded.decodeString(raw,0,raw.length(),StringUtil.__UTF8_CHARSET);
return new URL(decoded);
}
@Test
public void testSemicolon() throws Exception
{
assumeTrue(!OS.IS_WINDOWS);
createDummyFile("foo;");
try(Resource base = new FileResource(testdir.getDir());)
{
Resource res = base.addPath("foo;");
Assert.assertNull(res.getAlias());
}
}
@Test
public void testExist_Normal() throws Exception
@ -60,8 +75,10 @@ public class FileResourceTest
createDummyFile("a.jsp");
URI ref = testdir.getDir().toURI().resolve("a.jsp");
FileResource fileres = new FileResource(decode(ref.toURL()));
Assert.assertThat("FileResource: " + fileres,fileres.exists(),is(true));
try(FileResource fileres = new FileResource(decode(ref.toURL()));)
{
Assert.assertThat("FileResource: " + fileres,fileres.exists(),is(true));
}
}
@Ignore("Cannot get null to be seen by FileResource")
@ -70,12 +87,17 @@ public class FileResourceTest
{
createDummyFile("a.jsp");
try {
try
{
// request with null at end
URI ref = testdir.getDir().toURI().resolve("a.jsp%00");
FileResource fileres = new FileResource(decode(ref.toURL()));
Assert.assertThat("FileResource: " + fileres,fileres.exists(),is(false));
} catch(URISyntaxException e) {
try(FileResource fileres = new FileResource(decode(ref.toURL()));)
{
Assert.assertThat("FileResource: " + fileres,fileres.exists(),is(false));
}
}
catch(URISyntaxException e)
{
// Valid path
}
}
@ -86,12 +108,17 @@ public class FileResourceTest
{
createDummyFile("a.jsp");
try {
try
{
// request with null and x at end
URI ref = testdir.getDir().toURI().resolve("a.jsp%00x");
FileResource fileres = new FileResource(decode(ref.toURL()));
Assert.assertThat("FileResource: " + fileres,fileres.exists(),is(false));
} catch(URISyntaxException e) {
try(FileResource fileres = new FileResource(decode(ref.toURL()));)
{
Assert.assertThat("FileResource: " + fileres,fileres.exists(),is(false));
}
}
catch(URISyntaxException e)
{
// Valid path
}
}

View File

@ -493,10 +493,10 @@ public class ResourceTest
assumeTrue(OS.IS_WINDOWS);
String path = __userURL.toURI().getPath().replace('/','\\')+"resource.txt";
System.err.println(path);
//System.err.println(path);
Resource resource = Resource.newResource(path, false);
System.err.println(resource);
//System.err.println(resource);
assertTrue(resource.exists());
/*