Example usage for org.eclipse.jdt.core IAccessRule IGNORE_IF_BETTER

List of usage examples for org.eclipse.jdt.core IAccessRule IGNORE_IF_BETTER

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IAccessRule IGNORE_IF_BETTER.

Prototype

int IGNORE_IF_BETTER

To view the source code for org.eclipse.jdt.core IAccessRule IGNORE_IF_BETTER.

Click Source Link

Document

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.

Usage

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;
}