523 * if and only if they are equal. A simple pathname never implies
524 * a wildcard pathname. A wildcard pathname implies another wildcard
525 * pathname if and only if all simple pathnames implied by the latter
526 * are implied by the former. A wildcard pathname implies a simple
527 * pathname if and only if
528 * <ul>
529 * <li>if the wildcard flag is "*", the simple pathname's path
530 * must be right inside the wildcard pathname's path.
531 * <li>if the wildcard flag is "-", the simple pathname's path
532 * must be recursively inside the wildcard pathname's path.
533 * </ul>
534 * <P>
535 * {@literal "<<ALL FILES>>"} implies every other pathname. No pathname,
536 * except for {@literal "<<ALL FILES>>"} itself, implies
537 * {@literal "<<ALL FILES>>"}.
538 *
539 * @implNote
540 * If {@code jdk.io.permissionsUseCanonicalPath} is {@code true}, a
541 * simple {@code cpath} is inside a wildcard {@code cpath} if and only if
542 * after removing the base name (the last name in the pathname's name
543 * sequence) from the former the remaining part equals to the latter,
544 * a simple {@code cpath} is recursively inside a wildcard {@code cpath}
545 * if and only if the former starts with the latter.
546 * <p>
547 * If {@code jdk.io.permissionsUseCanonicalPath} is {@code false}, a
548 * simple {@code npath} is inside a wildcard {@code npath} if and only if
549 * {@code simple_npath.relativize(wildcard_npath)} is exactly "..",
550 * a simple {@code npath} is recursively inside a wildcard {@code npath}
551 * if and only if {@code simple_npath.relativize(wildcard_npath)} is a
552 * series of one or more "..". This means "/-" implies "/foo" but not "foo".
553 * <p>
554 * An invalid {@code FilePermission} does not imply any object except for
555 * itself. An invalid {@code FilePermission} is not implied by any object
556 * except for itself or a {@code FilePermission} on
557 * {@literal "<<ALL FILES>>"} whose actions is a superset of this
558 * invalid {@code FilePermission}. Even if two {@code FilePermission}
559 * are created with the same invalid path, one does not imply the other.
560 *
561 * @param p the permission to check against.
562 *
563 * @return {@code true} if the specified permission is not
|
523 * if and only if they are equal. A simple pathname never implies
524 * a wildcard pathname. A wildcard pathname implies another wildcard
525 * pathname if and only if all simple pathnames implied by the latter
526 * are implied by the former. A wildcard pathname implies a simple
527 * pathname if and only if
528 * <ul>
529 * <li>if the wildcard flag is "*", the simple pathname's path
530 * must be right inside the wildcard pathname's path.
531 * <li>if the wildcard flag is "-", the simple pathname's path
532 * must be recursively inside the wildcard pathname's path.
533 * </ul>
534 * <P>
535 * {@literal "<<ALL FILES>>"} implies every other pathname. No pathname,
536 * except for {@literal "<<ALL FILES>>"} itself, implies
537 * {@literal "<<ALL FILES>>"}.
538 *
539 * @implNote
540 * If {@code jdk.io.permissionsUseCanonicalPath} is {@code true}, a
541 * simple {@code cpath} is inside a wildcard {@code cpath} if and only if
542 * after removing the base name (the last name in the pathname's name
543 * sequence) from the former the remaining part is equal to the latter,
544 * a simple {@code cpath} is recursively inside a wildcard {@code cpath}
545 * if and only if the former starts with the latter.
546 * <p>
547 * If {@code jdk.io.permissionsUseCanonicalPath} is {@code false}, a
548 * simple {@code npath} is inside a wildcard {@code npath} if and only if
549 * {@code simple_npath.relativize(wildcard_npath)} is exactly "..",
550 * a simple {@code npath} is recursively inside a wildcard {@code npath}
551 * if and only if {@code simple_npath.relativize(wildcard_npath)} is a
552 * series of one or more "..". This means "/-" implies "/foo" but not "foo".
553 * <p>
554 * An invalid {@code FilePermission} does not imply any object except for
555 * itself. An invalid {@code FilePermission} is not implied by any object
556 * except for itself or a {@code FilePermission} on
557 * {@literal "<<ALL FILES>>"} whose actions is a superset of this
558 * invalid {@code FilePermission}. Even if two {@code FilePermission}
559 * are created with the same invalid path, one does not imply the other.
560 *
561 * @param p the permission to check against.
562 *
563 * @return {@code true} if the specified permission is not
|