List of usage examples for org.eclipse.jdt.core IAccessRule IGNORE_IF_BETTER
int IGNORE_IF_BETTER
To view the source code for org.eclipse.jdt.core IAccessRule IGNORE_IF_BETTER.
Click Source Link
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.
From source file:com.codenvy.ide.ext.java.server.core.launching.environments.DefaultAccessRuleParticipant.java
License:Open Source License
public IAccessRule[][] getAccessRules(IExecutionEnvironment environment, IVMInstallType vm, LibraryLocation[] libraries, IJavaProject project) { IAccessRule[][] allRules = null;/*from w w w . ja v a 2s .co m*/ allRules = fgRules.get(environment.getId()); if (allRules == null || allRules.length != libraries.length) { // if a different number of libraries, create a new set of rules String[] packages = retrieveSystemPackages(environment); IAccessRule[] packageRules = null; if (packages.length > 0) { packageRules = new IAccessRule[packages.length + 1]; for (int i = 0; i < packages.length; i++) { packageRules[i] = JavaCore.newAccessRule(new Path(packages[i].replace('.', IPath.SEPARATOR)), IAccessRule.K_ACCESSIBLE); } // add IGNORE_IF_BETTER flag in case another explicit entry allows access (see bug 228488) packageRules[packages.length] = JavaCore.newAccessRule(new Path("**/*"), IAccessRule.K_NON_ACCESSIBLE | IAccessRule.IGNORE_IF_BETTER); //$NON-NLS-1$ } else { packageRules = new IAccessRule[0]; } allRules = new IAccessRule[libraries.length][]; for (int i = 0; i < allRules.length; i++) { allRules[i] = packageRules; } fgRules.put(environment.getId(), allRules); } return allRules; }
From source file:com.codenvy.ide.ext.java.server.internal.core.ClasspathEntry.java
License:Open Source License
static IAccessRule[] decodeAccessRules(NodeList list) { if (list == null) return null; int length = list.getLength(); if (length == 0) return null; IAccessRule[] result = new IAccessRule[length]; int index = 0; for (int i = 0; i < length; i++) { Node accessRule = list.item(i); if (accessRule.getNodeType() == Node.ELEMENT_NODE) { Element elementAccessRule = (Element) accessRule; String pattern = elementAccessRule.getAttribute(TAG_PATTERN); if (pattern == null) continue; String tagKind = elementAccessRule.getAttribute(TAG_KIND); int kind; if (TAG_ACCESSIBLE.equals(tagKind)) kind = IAccessRule.K_ACCESSIBLE; else if (TAG_NON_ACCESSIBLE.equals(tagKind)) kind = IAccessRule.K_NON_ACCESSIBLE; else if (TAG_DISCOURAGED.equals(tagKind)) kind = IAccessRule.K_DISCOURAGED; else/*from w w w . j a v a 2 s. com*/ continue; boolean ignoreIfBetter = "true".equals(elementAccessRule.getAttribute(TAG_IGNORE_IF_BETTER)); //$NON-NLS-1$ result[index++] = new ClasspathAccessRule(new Path(pattern), ignoreIfBetter ? kind | IAccessRule.IGNORE_IF_BETTER : kind); } } if (index != length) System.arraycopy(result, 0, result = new IAccessRule[index], 0, index); return result; }
From source file:io.sarl.eclipse.util.JavaClasspathParser.java
License:Apache License
@SuppressWarnings({ "checkstyle:npathcomplexity", "checkstyle:innerassignment" })
private static IAccessRule[] decodeAccessRules(NodeList list) {
if (list == null) {
return null;
}/*from www. ja va2 s .c o m*/
final int length = list.getLength();
if (length == 0) {
return null;
}
IAccessRule[] result = new IAccessRule[length];
int index = 0;
for (int i = 0; i < length; i++) {
final Node accessRule = list.item(i);
if (accessRule.getNodeType() == Node.ELEMENT_NODE) {
final Element elementAccessRule = (Element) accessRule;
final String pattern = elementAccessRule.getAttribute(ClasspathEntry.TAG_PATTERN);
if (pattern == null) {
continue;
}
final String tagKind = elementAccessRule.getAttribute(ClasspathEntry.TAG_KIND);
final int kind;
if (ClasspathEntry.TAG_ACCESSIBLE.equals(tagKind)) {
kind = IAccessRule.K_ACCESSIBLE;
} else if (ClasspathEntry.TAG_NON_ACCESSIBLE.equals(tagKind)) {
kind = IAccessRule.K_NON_ACCESSIBLE;
} else if (ClasspathEntry.TAG_DISCOURAGED.equals(tagKind)) {
kind = IAccessRule.K_DISCOURAGED;
} else {
continue;
}
final boolean ignoreIfBetter = "true" //$NON-NLS-1$
.equals(elementAccessRule.getAttribute(ClasspathEntry.TAG_IGNORE_IF_BETTER));
result[index++] = new ClasspathAccessRule(new Path(pattern),
ignoreIfBetter ? kind | IAccessRule.IGNORE_IF_BETTER : kind);
}
}
if (index != length) {
System.arraycopy(result, 0, result = new IAccessRule[index], 0, index);
}
return result;
}
From source file:io.takari.m2e.jdt.core.internal.JavaConfigurator.java
License:Open Source License
private void configureClasspathAccessRules(IMavenProjectFacade facade, IClasspathDescriptor classpath, boolean transitiveDependencyReference, boolean privatePackageReference, IProgressMonitor monitor) throws CoreException { MavenProject mavenProject = facade.getMavenProject(monitor); Map<ArtifactKey, Artifact> dependencies = new HashMap<>(); Set<ArtifactKey> directDependencies = new HashSet<>(); for (Artifact artifact : mavenProject.getArtifacts()) { dependencies.put(toArtifactKey(artifact), artifact); }/*from ww w. j av a 2s. c o m*/ for (Dependency artifact : mavenProject.getDependencies()) { directDependencies.add(toArtifactKey(artifact)); } for (IClasspathEntryDescriptor entry : classpath.getEntryDescriptors()) { ArtifactKey artifactKey = entry.getArtifactKey(); if (!dependencies.containsKey(artifactKey)) { continue; // ignore custom classpath entries } if (transitiveDependencyReference && !directDependencies.contains(artifactKey)) { entry.addAccessRule(JavaCore.newAccessRule(new Path("**"), IAccessRule.K_NON_ACCESSIBLE | IAccessRule.IGNORE_IF_BETTER)); } else if (privatePackageReference) { Collection<String> exportedPackages = getExportedPackages(dependencies.get(artifactKey)); if (exportedPackages != null) { for (String exportedPackage : exportedPackages) { IPath pattern = new Path(exportedPackage).append("/*"); entry.addAccessRule(JavaCore.newAccessRule(pattern, IAccessRule.K_ACCESSIBLE)); } entry.addAccessRule(JavaCore.newAccessRule(new Path("**"), IAccessRule.K_NON_ACCESSIBLE | IAccessRule.IGNORE_IF_BETTER)); } } } }
From source file:org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerMapper.java
License:Apache License
private IAccessRule[] getAccessRules(BundleInfo bundleInfo) { if (bundleInfo == null || !classpathSetup.isReadOSGiMetadata()) { return null; }/* w w w . j av a 2 s .c o m*/ IAccessRule[] rules = new IAccessRule[bundleInfo.getExports().size() + 1]; int i = 0; for (ExportPackage exportPackage : bundleInfo.getExports()) { rules[i++] = JavaCore.newAccessRule( new Path(exportPackage.getName().replace('.', IPath.SEPARATOR) + "/*"), IAccessRule.K_ACCESSIBLE); } rules[i++] = JavaCore.newAccessRule(new Path("**/*"), IAccessRule.K_NON_ACCESSIBLE | IAccessRule.IGNORE_IF_BETTER); return rules; }