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 afterLibraryAdded(final Library addedLibrary) { Optional<AppEngineStandardMavenLibrary> libraryOptional = AppEngineStandardMavenLibrary.getLibraryByMavenDisplayName(addedLibrary.getName()); libraryOptional.ifPresent( library -> { final DependencyScope scope = library.getScope(); ApplicationManager.getApplication() .runWriteAction( () -> { ModifiableRootModel model = ModuleRootManager.getInstance(context.getModule()).getModifiableModel(); model.addLibraryEntry(addedLibrary); Arrays.stream(model.getOrderEntries()) .filter( orderEntry -> orderEntry.getPresentableName().equals(addedLibrary.getName())) .forEach( orderEntry -> ((ExportableOrderEntry) orderEntry).setScope(scope)); model.commit(); }); Artifact artifact = AppEngineStandardSupportProvider.findOrCreateWebArtifact( (AppEngineStandardFacet) context.getFacet()); AppEngineStandardWebIntegration.getInstance() .addLibraryToArtifact(addedLibrary, artifact, context.getProject()); appEngineStandardLibraryPanel.toggleLibrary(library, true /* select */); }); }