private void assertLibrary(@NotNull Collection<String> libUrls, String... exclusionUrls) { UIUtil.dispatchAllInvocationEvents(); GoModuleLibrariesInitializer initializer = myModule.getComponent(GoModuleLibrariesInitializer.class); ModuleRootManager model = ModuleRootManager.getInstance(myModule); LibraryOrderEntry libraryOrderEntry = OrderEntryUtil.findLibraryOrderEntry(model, initializer.getLibraryName()); if (libUrls.isEmpty()) { assertNull(libraryOrderEntry); return; } LibraryEx library = (LibraryEx)libraryOrderEntry.getLibrary(); assertNotNull(library); assertSameElements(Arrays.asList(library.getUrls(OrderRootType.CLASSES)), libUrls); assertSameElements(library.getExcludedRootUrls(), exclusionUrls); }
private static void updateModules(@NotNull Project project, @NotNull Library lib, boolean remove) { Module[] modules = ModuleManager.getInstance(project).getModules(); for (Module module : modules) { ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); if (!remove) { if (model.findLibraryOrderEntry(lib) == null) { LibraryOrderEntry entry = model.addLibraryEntry(lib); entry.setScope(DependencyScope.PROVIDED); } } else { LibraryOrderEntry entry = model.findLibraryOrderEntry(lib); if (entry != null) { model.removeOrderEntry(entry); } } model.commit(); } }
private void attachLibraries(@NotNull Collection<VirtualFile> libraryRoots, Set<VirtualFile> exclusions) { ApplicationManager.getApplication().assertIsDispatchThread(); if (!libraryRoots.isEmpty()) { ApplicationManager.getApplication().runWriteAction(() -> { ModuleRootManager model = ModuleRootManager.getInstance(myModule); LibraryOrderEntry goLibraryEntry = OrderEntryUtil.findLibraryOrderEntry(model, getLibraryName()); if (goLibraryEntry != null && goLibraryEntry.isValid()) { Library library = goLibraryEntry.getLibrary(); if (library != null && !((LibraryEx)library).isDisposed()) { fillLibrary(library, libraryRoots, exclusions); } } else { LibraryTable libraryTable = LibraryTablesRegistrar.getInstance().getLibraryTable(myModule.getProject()); Library library = libraryTable.createLibrary(getLibraryName()); fillLibrary(library, libraryRoots, exclusions); ModuleRootModificationUtil.addDependency(myModule, library); } }); showNotification(myModule.getProject()); } else { removeLibraryIfNeeded(); } }
private void setLibraryEntryExported( @NotNull final ModifiableRootModel modifiableRootModel, @NotNull final Library library ) { final LibraryOrderEntry libraryOrderEntry = findOrderEntryForLibrary(modifiableRootModel, library); if (libraryOrderEntry != null) { libraryOrderEntry.setExported(true); } }
files.addAll(Arrays.asList(libraryOrderEntry.getRootFiles(OrderRootType.CLASSES))); } else {
private void removeLibraryIfNeeded() { ApplicationManager.getApplication().assertIsDispatchThread(); ModifiableModelsProvider modelsProvider = ModifiableModelsProvider.SERVICE.getInstance(); ModifiableRootModel model = modelsProvider.getModuleModifiableModel(myModule); LibraryOrderEntry goLibraryEntry = OrderEntryUtil.findLibraryOrderEntry(model, getLibraryName()); if (goLibraryEntry != null) { ApplicationManager.getApplication().runWriteAction(() -> { Library library = goLibraryEntry.getLibrary(); if (library != null) { LibraryTable table = library.getTable(); if (table != null) { table.removeLibrary(library); model.removeOrderEntry(goLibraryEntry); modelsProvider.commitModuleModifiableModel(model); } } else { modelsProvider.disposeModuleModifiableModel(model); } }); } else { ApplicationManager.getApplication().runWriteAction(() -> modelsProvider.disposeModuleModifiableModel(model)); } }
private static void updateModules(@NotNull Project project, @NotNull Library lib, boolean remove) { Module[] modules = ModuleManager.getInstance(project).getModules(); for (Module module : modules) { ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); if (!remove) { if (model.findLibraryOrderEntry(lib) == null) { LibraryOrderEntry entry = model.addLibraryEntry(lib); entry.setScope(DependencyScope.PROVIDED); } } else { LibraryOrderEntry entry = model.findLibraryOrderEntry(lib); if (entry != null) { model.removeOrderEntry(entry); } } model.commit(); } }
private void attachLibraries(@NotNull Collection<VirtualFile> libraryRoots, Set<VirtualFile> exclusions) { ApplicationManager.getApplication().assertIsDispatchThread(); if (!libraryRoots.isEmpty()) { ApplicationManager.getApplication().runWriteAction(() -> { ModuleRootManager model = ModuleRootManager.getInstance(myModule); LibraryOrderEntry ballerinaLibraryEntry = OrderEntryUtil.findLibraryOrderEntry(model, getLibraryName()); if (ballerinaLibraryEntry != null && ballerinaLibraryEntry.isValid()) { Library library = ballerinaLibraryEntry.getLibrary(); if (library != null && !((LibraryEx) library).isDisposed()) { fillLibrary(library, libraryRoots, exclusions); } } else { LibraryTable libraryTable = LibraryTablesRegistrar.getInstance().getLibraryTable(myModule .getProject()); Library library = libraryTable.createLibrary(getLibraryName()); fillLibrary(library, libraryRoots, exclusions); ModuleRootModificationUtil.addDependency(myModule, library); } }); showNotification(myModule.getProject()); } else { removeLibraryIfNeeded(); } }
private void removeLibraryIfNeeded() { ApplicationManager.getApplication().assertIsDispatchThread(); ModifiableModelsProvider modelsProvider = ModifiableModelsProvider.SERVICE.getInstance(); ModifiableRootModel model = modelsProvider.getModuleModifiableModel(myModule); LibraryOrderEntry ballerinaLibraryEntry = OrderEntryUtil.findLibraryOrderEntry(model, getLibraryName()); if (ballerinaLibraryEntry != null) { ApplicationManager.getApplication().runWriteAction(() -> { Library library = ballerinaLibraryEntry.getLibrary(); if (library != null) { LibraryTable table = library.getTable(); if (table != null) { table.removeLibrary(library); model.removeOrderEntry(ballerinaLibraryEntry); modelsProvider.commitModuleModifiableModel(model); } } else { modelsProvider.disposeModuleModifiableModel(model); } }); } else { ApplicationManager.getApplication().runWriteAction(() -> modelsProvider.disposeModuleModifiableModel(model)); } }
private void setLibraryEntryScope( @NotNull final ModifiableRootModel modifiableRootModel, @NotNull final Library library, @NotNull DependencyScope scope ) { final LibraryOrderEntry entry = findOrderEntryForLibrary(modifiableRootModel, library); if (entry != null) { entry.setScope(scope); } }
private static LibraryOrderEntry findOrderEntryForLibrary( final @NotNull ModifiableRootModel modifiableRootModel, final @NotNull Library library ) { // Workaround of using Library.equals in findLibraryOrderEntry, which doesn't work here, because all empty libs are equal. Use == instead. return (LibraryOrderEntry) Arrays .stream(modifiableRootModel.getOrderEntries()) .filter(entry -> entry instanceof LibraryOrderEntry && ((LibraryOrderEntry) entry).getLibrary() == library) .findFirst() .orElse(modifiableRootModel.findLibraryOrderEntry(library)); } }
@Override public void addDevServerToModuleDependencies(@NotNull ModifiableRootModel rootModel) { final ApplicationServer appServer = getOrCreateAppServer(); if (appServer != null && !appServer.isDisposed()) { rootModel.addLibraryEntry(appServer.getLibrary()).setScope(DependencyScope.PROVIDED); } }
private static List<VirtualFile> getProjectClasspath(@Nullable final Module module) { if (module == null) { return Collections.emptyList(); } final List<VirtualFile> found = new ArrayList<>(); final ModuleRootManager mrm = ModuleRootManager.getInstance(module); final OrderEntry[] orderEntries = mrm.getOrderEntries(); for (final OrderEntry entry : orderEntries) { if (entry instanceof ModuleOrderEntry) { // Add dependent module output dir as library Module dependentModule = ((ModuleOrderEntry) entry).getModule(); found.addAll(getModuleEntries(dependentModule)); } else if (entry instanceof LibraryOrderEntry) { Library lib = ((LibraryOrderEntry) entry).getLibrary(); found.addAll(getLibraryEntries(lib)); } } return found; }
@Override protected void run(@NotNull Result result) throws Throwable { if (librariesToAdd != null && !librariesToAdd.isEmpty()) { for (AppEngineStandardMavenLibrary libraryToAdd : librariesToAdd) { Library mavenLibrary = MavenRepositoryLibraryDownloader.getInstance() .downloadLibrary(module, libraryToAdd); if (mavenLibrary != null) { rootModel.addLibraryEntry(mavenLibrary).setScope(libraryToAdd.getScope()); AppEngineStandardWebIntegration.getInstance() .addLibraryToArtifact(mavenLibrary, webArtifact, module.getProject()); UsageTrackerService.getInstance() .trackEvent(GctTracking.APP_ENGINE_ADD_LIBRARY) .addMetadata(GctTracking.METADATA_LABEL_KEY, libraryToAdd.name()) .ping(); } else { LOG.warn("Failed to load library: " + libraryToAdd.getDisplayName()); } } } } }.execute();