Interface IAccessRule
-
public interface IAccessRule
Describes an access rule to source and class files on a classpath entry. An access rule is composed of a file pattern and a kind (accessible, non accessible, or discouraged).On a given classpath entry, the access rules are considered in the order given when the entry was created. When a source or class file matches an access rule's pattern, the access rule's kind defines whether the file is considered accessible, non-accessible, or whether its access is discouraged. If the source or class file doesn't match any access rule, it is considered accessible. A source or class file that is not accessible or discouraged can still be referred to, but it is tagged as being not accessible - the Java builder will create a problem marker, for example. The severity of the marker created from a non-accessible rule is controlled through the
JavaCore.COMPILER_PB_FORBIDDEN_REFERENCE
compiler option. The severity of the marker created from a discouraged rule is controlled through theJavaCore.COMPILER_PB_DISCOURAGED_REFERENCE
compiler option. Note this is different from inclusion and exclusion patterns on source classpath entries, where a source file that is excluded is not even compiled.Files patterns look like relative file paths with wildcards and are interpreted relative to each entry's path. File patterns are case-sensitive and they can contain '**', '*' or '?' wildcards (see
IClasspathEntry.getExclusionPatterns()
for the full description of their syntax and semantics). Note that file patterns must not include the file extension.com/xyz/tests/MyClass
is a valid file pattern, whereascom/xyz/tests/MyClass.class
is not valid.For example, if a classpath entry path is
/Project/someLib.jar
, there are no accessible rules, and there is one non-accessible rule with patterncom/xyz/tests/**
, then class files like/Project/someLib.jar/com/xyz/Foo.class
and/Project/someLib.jar/com/xyz/utils/Bar.class
would be accessible, whereas/Project/someLib.jar/com/xyz/tests/T1.class
and/Project/someLib.jar/com/xyz/tests/quick/T2.class
would not be accessible.- Since:
- 3.1
- See Also:
JavaCore.newAccessRule(IPath, int)
,IClasspathEntry.getExclusionPatterns()
- Restriction:
- This interface is not intended to be implemented by clients.
-
-
Field Summary
Fields Modifier and Type Field Description static int
IGNORE_IF_BETTER
Flag indicating that whether a type matching this rule should be ignored iff a type with the same qualified name can be found on a later classpath entry with a better accessibility.static int
K_ACCESSIBLE
Constant indicating that files matching the rule's pattern are accessible.static int
K_DISCOURAGED
Constant indicating that access to the files matching the rule's pattern is discouraged.static int
K_NON_ACCESSIBLE
Constant indicating that files matching the rule's pattern are non-accessible.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description int
getKind()
IPath
getPattern()
Returns the file pattern for this access rule.boolean
ignoreIfBetter()
Returns whether a type matching this rule should be ignored iff a type with the same qualified name can be found on a later classpath entry with a better accessibility.
-
-
-
Field Detail
-
K_ACCESSIBLE
static final int K_ACCESSIBLE
Constant indicating that files matching the rule's pattern are accessible.- See Also:
- Constant Field Values
-
K_NON_ACCESSIBLE
static final int K_NON_ACCESSIBLE
Constant indicating that files matching the rule's pattern are non-accessible.- See Also:
- Constant Field Values
-
K_DISCOURAGED
static final int K_DISCOURAGED
Constant indicating that access to the files matching the rule's pattern is discouraged.- See Also:
- Constant Field Values
-
IGNORE_IF_BETTER
static final int IGNORE_IF_BETTER
Flag indicating that whether a type matching this rule should be ignored iff a type with the same qualified name can be found on a later classpath entry with a better accessibility.
E.g. if a type p.X matches a rule K_NON_ACCESSIBLE | IGNORE_IF_BETTER on a library entry 'lib1' and another type p.X also matches a rule K_DISCOURAGED on library entry 'lib2' ('lib2' being after 'lib1' on the classpath), then p.X from 'lib2' will be used and reported as discouraged.
- Since:
- 3.2
- See Also:
- Constant Field Values
-
-
Method Detail
-
getPattern
IPath getPattern()
Returns the file pattern for this access rule.- Returns:
- the file pattern for this access rule
- See Also:
IClasspathEntry.getExclusionPatterns()
-
getKind
int getKind()
- Returns:
- the kind of this access rule
-
ignoreIfBetter
boolean ignoreIfBetter()
Returns whether a type matching this rule should be ignored iff a type with the same qualified name can be found on a later classpath entry with a better accessibility.
E.g. if a type p.X matches a rule K_NON_ACCESSIBLE | IGNORE_IF_BETTER on a library entry 'lib1' and another type p.X also matches a rule K_DISCOURAGED on library entry 'lib2' ('lib2' being after 'lib1' on the classpath), then p.X from 'lib2' will be used and reported as discouraged.
- Returns:
- whether a type matching this rule should be ignored iff a type with the same qualified name can be found on a later classpath entry with a better accessibility
- Since:
- 3.2
-
-