Search in sources :

Example 1 with JpsLibraryReference

use of org.jetbrains.jps.model.library.JpsLibraryReference in project intellij-community by JetBrains.

the class JpsModuleRootModelSerializer method saveRootModel.

public static void saveRootModel(JpsModule module, Element rootModelElement) {
    List<JpsModuleSourceRoot> sourceRoots = module.getSourceRoots();
    List<String> excludedUrls = getSortedList(module.getExcludeRootsList().getUrls());
    for (String url : getSortedList(module.getContentRootsList().getUrls())) {
        Element contentElement = new Element(CONTENT_TAG);
        contentElement.setAttribute(URL_ATTRIBUTE, url);
        rootModelElement.addContent(contentElement);
        for (JpsModuleSourceRoot root : sourceRoots) {
            if (FileUtil.startsWith(root.getUrl(), url)) {
                saveSourceRoot(contentElement, root.asTyped().getUrl(), root.asTyped());
            }
        }
        for (String excludedUrl : excludedUrls) {
            if (FileUtil.startsWith(excludedUrl, url)) {
                Element element = new Element(EXCLUDE_FOLDER_TAG).setAttribute(URL_ATTRIBUTE, excludedUrl);
                contentElement.addContent(element);
            }
        }
    }
    for (JpsDependencyElement dependency : module.getDependenciesList().getDependencies()) {
        if (dependency instanceof JpsModuleSourceDependency) {
            rootModelElement.addContent(createDependencyElement(SOURCE_FOLDER_TYPE).setAttribute("forTests", "false"));
        } else if (dependency instanceof JpsSdkDependency) {
            JpsSdkType<?> sdkType = ((JpsSdkDependency) dependency).getSdkType();
            JpsSdkReferencesTable table = module.getSdkReferencesTable();
            JpsSdkReference<?> reference = table.getSdkReference(sdkType);
            if (reference == null) {
                rootModelElement.addContent(createDependencyElement(INHERITED_JDK_TYPE));
            } else {
                Element element = createDependencyElement(JDK_TYPE);
                element.setAttribute(JDK_NAME_ATTRIBUTE, reference.getSdkName());
                element.setAttribute(JDK_TYPE_ATTRIBUTE, JpsSdkTableSerializer.getLoader(sdkType).getTypeId());
                rootModelElement.addContent(element);
            }
        } else if (dependency instanceof JpsLibraryDependency) {
            JpsLibraryReference reference = ((JpsLibraryDependency) dependency).getLibraryReference();
            JpsElementReference<? extends JpsCompositeElement> parentReference = reference.getParentReference();
            Element element;
            if (parentReference instanceof JpsModuleReference) {
                element = createDependencyElement(MODULE_LIBRARY_TYPE);
                saveModuleDependencyProperties(dependency, element);
                Element libraryElement = new Element(LIBRARY_TAG);
                JpsLibrary library = reference.resolve();
                String libraryName = library.getName();
                JpsLibraryTableSerializer.saveLibrary(library, libraryElement, isGeneratedName(libraryName) ? null : libraryName);
                element.addContent(libraryElement);
            } else {
                element = createDependencyElement(LIBRARY_TYPE);
                saveModuleDependencyProperties(dependency, element);
                element.setAttribute(NAME_ATTRIBUTE, reference.getLibraryName());
                element.setAttribute(LEVEL_ATTRIBUTE, JpsLibraryTableSerializer.getLevelId(parentReference));
            }
            rootModelElement.addContent(element);
        } else if (dependency instanceof JpsModuleDependency) {
            Element element = createDependencyElement(MODULE_TYPE);
            element.setAttribute(MODULE_NAME_ATTRIBUTE, ((JpsModuleDependency) dependency).getModuleReference().getModuleName());
            saveModuleDependencyProperties(dependency, element);
            rootModelElement.addContent(element);
        }
    }
    for (JpsModelSerializerExtension extension : JpsModelSerializerExtension.getExtensions()) {
        extension.saveRootModel(module, rootModelElement);
    }
}
Also used : JpsSdkReference(org.jetbrains.jps.model.library.sdk.JpsSdkReference) JpsLibraryReference(org.jetbrains.jps.model.library.JpsLibraryReference) JpsElement(org.jetbrains.jps.model.JpsElement) JpsCompositeElement(org.jetbrains.jps.model.JpsCompositeElement) Element(org.jdom.Element) JpsSdkType(org.jetbrains.jps.model.library.sdk.JpsSdkType) JpsModelSerializerExtension(org.jetbrains.jps.model.serialization.JpsModelSerializerExtension) JpsLibrary(org.jetbrains.jps.model.library.JpsLibrary)

Example 2 with JpsLibraryReference

use of org.jetbrains.jps.model.library.JpsLibraryReference in project intellij-community by JetBrains.

the class JpsEclipseClasspathReader method addNamedLibrary.

@Override
protected void addNamedLibrary(JpsModule rootModel, Collection<String> unknownLibraries, boolean exported, String name, boolean applicationLevel) {
    if (LOG.isDebugEnabled()) {
        LOG.debug("loading " + rootModel.getName() + ": adding " + (applicationLevel ? "application" : "project") + " library '" + name + "'");
    }
    JpsElementFactory factory = JpsElementFactory.getInstance();
    JpsLibraryReference libraryReference;
    final String level = myLibLevels.get(name);
    libraryReference = level != null ? factory.createLibraryReference(name, JpsLibraryTableSerializer.createLibraryTableReference(level)) : factory.createLibraryReference(name, factory.createGlobalReference());
    final JpsLibraryDependency dependency = rootModel.getDependenciesList().addLibraryDependency(libraryReference);
    setLibraryEntryExported(dependency, exported);
}
Also used : JpsLibraryReference(org.jetbrains.jps.model.library.JpsLibraryReference) JpsElementFactory(org.jetbrains.jps.model.JpsElementFactory)

Aggregations

JpsLibraryReference (org.jetbrains.jps.model.library.JpsLibraryReference)2 Element (org.jdom.Element)1 JpsCompositeElement (org.jetbrains.jps.model.JpsCompositeElement)1 JpsElement (org.jetbrains.jps.model.JpsElement)1 JpsElementFactory (org.jetbrains.jps.model.JpsElementFactory)1 JpsLibrary (org.jetbrains.jps.model.library.JpsLibrary)1 JpsSdkReference (org.jetbrains.jps.model.library.sdk.JpsSdkReference)1 JpsSdkType (org.jetbrains.jps.model.library.sdk.JpsSdkType)1 JpsModelSerializerExtension (org.jetbrains.jps.model.serialization.JpsModelSerializerExtension)1