Example usage for org.eclipse.jdt.internal.core AbstractModule getRequiredModules

List of usage examples for org.eclipse.jdt.internal.core AbstractModule getRequiredModules

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core AbstractModule getRequiredModules.

Prototype

default IModuleReference[] getRequiredModules() throws JavaModelException 

Source Link

Usage

From source file:org.eclipse.m2e.jdt.internal.InternalModuleSupport.java

License:Open Source License

/**
 * Sets <code>module</code flag to <code>true</code> to classpath dependencies declared in module-info.java
 * /*from ww w . j  a  v a2  s . c om*/
 * @param facade a Maven facade project
 * @param classpath a classpath descriptor
 * @param monitor a progress monitor
 */
public static void configureClasspath(IMavenProjectFacade facade, IClasspathDescriptor classpath,
        IProgressMonitor monitor) throws CoreException {
    IJavaProject javaProject = JavaCore.create(facade.getProject());
    if (javaProject == null || !javaProject.exists()) {
        return;
    }
    IModuleDescription moduleDescription = javaProject.getModuleDescription();
    if (!(moduleDescription instanceof AbstractModule)) {
        return;
    }
    AbstractModule module = (AbstractModule) moduleDescription;
    Set<String> requiredModules = Stream.of(module.getRequiredModules()).map(m -> new String(m.name()))
            .collect(Collectors.toSet());
    for (IClasspathEntryDescriptor entry : classpath.getEntryDescriptors()) {
        String moduleName = getModuleName(entry, monitor);
        if (requiredModules.contains(moduleName)) {
            entry.setClasspathAttribute(IClasspathAttribute.MODULE, Boolean.TRUE.toString());
        }
    }
}