diff --git a/src/share/classes/java/nio/file/Path.java b/src/share/classes/java/nio/file/Path.java index 370c38dbac285e08608d515a35be1560ef0ce6c9..6e572684727ebb5f1cbfb93dacf7502c604bc102 100644 --- a/src/share/classes/java/nio/file/Path.java +++ b/src/share/classes/java/nio/file/Path.java @@ -460,15 +460,13 @@ public interface Path /** * Returns a URI to represent this path. * - *

This method constructs a hierarchical {@link URI} that is absolute - * with a non-empty path component. Its {@link URI#getScheme() scheme} is - * equal to the URI scheme that identifies the provider. The exact form of - * the other URI components is highly provider dependent. In particular, it - * is implementation dependent if its query, fragment, and authority - * components are defined or undefined. - * - *

For the default provider the {@link URI#getPath() path} component - * will represent the {@link #toAbsolutePath absolute} path; the query, + *

This method constructs an absolute {@link URI} with a {@link + * URI#getScheme() scheme} equal to the URI scheme that identifies the + * provider. The exact form of the scheme specific part is highly provider + * dependent. + * + *

In the case of the default provider, the URI is hierarchical with + * a {@link URI#getPath() path} component that is absolute. The query and * fragment components are undefined. Whether the authority component is * defined or not is implementation dependent. There is no guarantee that * the {@code URI} may be used to construct a {@link java.io.File java.io.File}. @@ -497,7 +495,7 @@ public interface Path * A format for compound URIs is not defined in this release; such a scheme * may be added in a future release. * - * @return an absolute, hierarchical URI with a non-empty path component + * @return the URI representing this path * * @throws java.io.IOError * if an I/O error occurs obtaining the absolute path, or where a diff --git a/test/java/security/Policy/GetPermissions/JarURL.java b/test/java/security/Policy/GetPermissions/JarURL.java index d81c04454a313a26434942cb41506cc6570eca4b..1d68225a6ec88df3be1d848609e90bb4239173e8 100644 --- a/test/java/security/Policy/GetPermissions/JarURL.java +++ b/test/java/security/Policy/GetPermissions/JarURL.java @@ -23,11 +23,13 @@ /* * @test - * @bug 7044443 + * @bug 7044443 7050329 + * @run main/othervm/policy=JarURL.policy JarURL * @summary Permissions resolved incorrectly for jar protocol */ import java.net.URL; +import java.io.File; import java.security.AllPermission; import java.security.CodeSource; import java.security.PermissionCollection; @@ -35,11 +37,11 @@ import java.security.Policy; import java.security.cert.Certificate; public class JarURL { + public static void main(String[] args) throws Exception { - URL codeSourceURL - = new URL("jar:file:" - + System.getProperty("java.ext.dirs").split(":")[0] - + "/foo.jar!/"); + String userDir = System.getProperty("user.dir"); + String jarURL = "jar:file:" + userDir + File.separator + "foo.jar!/"; + URL codeSourceURL = new URL(jarURL); CodeSource cs = new CodeSource(codeSourceURL, new Certificate[0]); PermissionCollection perms = Policy.getPolicy().getPermissions(cs); if (!perms.implies(new AllPermission())) diff --git a/test/java/security/Policy/GetPermissions/JarURL.policy b/test/java/security/Policy/GetPermissions/JarURL.policy new file mode 100644 index 0000000000000000000000000000000000000000..f568b91ea1aaf85d18b7dd973bd0170b5a18c0a2 --- /dev/null +++ b/test/java/security/Policy/GetPermissions/JarURL.policy @@ -0,0 +1,8 @@ +grant codeBase "file:${user.dir}/*" { + permission java.security.AllPermission; +}; + +grant { + permission java.util.PropertyPermission "user.dir", "read"; + permission java.security.SecurityPermission "getPolicy"; +};