cleanup (default interface methods, path)

This commit is contained in:
Vladimir Krivosheev
2017-02-14 16:41:38 +01:00
parent ed56e86337
commit be2945cbdd
23 changed files with 182 additions and 173 deletions
@@ -173,7 +173,7 @@ public class CaptureConfigurable implements SearchableConfigurable {
}
});
try {
JDOMUtil.writeDocument(new Document(rootElement), wrapper.getFile(), "\n");
JDOMUtil.write(rootElement, wrapper.getFile());
}
catch (Exception ex) {
final String msg = ex.getLocalizedMessage();
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -47,7 +47,6 @@ import com.intellij.util.io.HttpRequests;
import com.intellij.util.xmlb.XmlSerializer;
import com.intellij.util.xmlb.annotations.MapAnnotation;
import com.intellij.util.xmlb.annotations.Tag;
import org.jdom.Document;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -179,7 +178,7 @@ public class PluginsAdvertiser implements StartupActivity {
if (!plugins.isFile()) {
FileUtil.ensureCanCreateFile(plugins);
}
JDOMUtil.writeDocument(new Document(XmlSerializer.serialize(new KnownExtensions(extensions))), plugins, "\n");
JDOMUtil.write(XmlSerializer.serialize(new KnownExtensions(extensions)), plugins);
}
public static void openDownloadPage() {
@@ -18,21 +18,22 @@ package com.intellij.util
import com.intellij.openapi.util.JDOMUtil
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream
import com.intellij.reference.SoftReference
import com.intellij.util.io.inputStream
import com.intellij.util.io.outputStream
import com.intellij.util.text.CharSequenceReader
import com.sun.org.apache.xerces.internal.impl.Constants
import org.apache.xerces.util.SecurityManager
import org.jdom.Document
import org.jdom.Element
import org.jdom.JDOMException
import org.jdom.Parent
import org.jdom.filter.ElementFilter
import org.jdom.input.SAXBuilder
import org.jdom.input.SAXHandler
import org.xml.sax.EntityResolver
import org.xml.sax.InputSource
import org.xml.sax.XMLReader
import java.io.CharArrayReader
import java.io.InputStream
import java.io.Reader
import java.nio.file.Files
import java.io.*
import java.nio.file.Path
private val cachedSaxBuilder = ThreadLocal<SoftReference<SAXBuilder>>()
@@ -57,13 +58,22 @@ private fun getSaxBuilder(): SAXBuilder {
return saxBuilder
}
@JvmOverloads
@Throws(IOException::class)
fun write(element: Parent, file: Path, lineSeparator: String = "\n") {
BufferedOutputStream(file.outputStream()).use {
JDOMUtil.write(element, it, lineSeparator)
}
}
fun loadElement(chars: CharSequence) = loadElement(CharSequenceReader(chars))
fun loadElement(reader: Reader): Element = loadDocument(reader).detachRootElement()
fun loadElement(stream: InputStream): Element = loadDocument(stream.reader()).detachRootElement()
fun loadElement(path: Path): Element = loadDocument(Files.newInputStream(path).bufferedReader()).detachRootElement()
@Throws(IOException::class, JDOMException::class)
fun loadElement(path: Path): Element = loadDocument(path.inputStream().bufferedReader()).detachRootElement()
private fun loadDocument(reader: Reader): Document = reader.use { getSaxBuilder().build(it) }
@@ -16,6 +16,7 @@
package com.intellij.openapi.util;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.util.ArrayUtil;
@@ -368,7 +369,13 @@ public class JDOMUtil {
write(document, file, lineSeparator);
}
public static void write(@NotNull Parent element, @NotNull File file) throws IOException {
write(element, file, "\n");
}
public static void write(@NotNull Parent element, @NotNull File file, @NotNull String lineSeparator) throws IOException {
FileUtil.createParentDirs(file);
OutputStream stream = new BufferedOutputStream(new FileOutputStream(file));
try {
write(element, stream, lineSeparator);
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,12 +24,11 @@ import com.intellij.openapi.progress.BackgroundTaskQueue;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.JdomKt;
import com.intellij.util.io.PathKt;
import gnu.trove.THashSet;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
@@ -44,6 +43,7 @@ import org.jetbrains.idea.maven.utils.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.*;
public class MavenIndicesManager implements Disposable {
@@ -62,7 +62,7 @@ public class MavenIndicesManager implements Disposable {
IDLE, WAITING, UPDATING
}
private volatile File myTestIndicesDir;
private volatile Path myTestIndicesDir;
private volatile MavenIndexerWrapper myIndexer;
private volatile MavenIndices myIndices;
@@ -79,7 +79,7 @@ public class MavenIndicesManager implements Disposable {
}
@TestOnly
public void setTestIndexDir(File indicesDir) {
public void setTestIndexDir(Path indicesDir) {
myTestIndicesDir = indicesDir;
}
@@ -98,13 +98,15 @@ public class MavenIndicesManager implements Disposable {
myIndexer = MavenServerManager.getInstance().createIndexer();
myDownloadListener = new MavenServerDownloadListener() {
@Override
public void artifactDownloaded(File file, String relativePath) {
addArtifact(file, relativePath);
}
};
MavenServerManager.getInstance().addDownloadListener(myDownloadListener);
myIndices = new MavenIndices(myIndexer, getIndicesDir(), new MavenIndex.IndexListener() {
myIndices = new MavenIndices(myIndexer, getIndicesDir().toFile(), new MavenIndex.IndexListener() {
@Override
public void indexIsBroken(MavenIndex index) {
scheduleUpdate(null, Collections.singletonList(index), false);
}
@@ -113,16 +115,18 @@ public class MavenIndicesManager implements Disposable {
loadUserArchetypes();
}
private File getIndicesDir() {
@NotNull
private Path getIndicesDir() {
return myTestIndicesDir == null
? MavenUtil.getPluginSystemDir("Indices")
: myTestIndicesDir;
}
@Override
public void dispose() {
doShutdown();
if (ApplicationManager.getApplication().isUnitTestMode()) {
FileUtil.delete(getIndicesDir());
PathKt.delete(getIndicesDir());
}
}
@@ -226,6 +230,7 @@ public class MavenIndicesManager implements Disposable {
}
if (toSchedule.isEmpty()) return;
myUpdatingQueue.run(new Task.Backgroundable(projectOrNull, IndicesBundle.message("maven.indices.updating"), true) {
@Override
public void run(@NotNull ProgressIndicator indicator) {
try {
doUpdateIndices(projectOrNull, toSchedule, fullUpdate, new MavenProgressIndicator(indicator));
@@ -257,7 +262,7 @@ public class MavenIndicesManager implements Disposable {
}
try {
getIndicesObject().updateOrRepair(each, fullUpdate, fullUpdate ? getMavenSettings(projectOrNull, indicator) : null, indicator);
MavenIndices.updateOrRepair(each, fullUpdate, fullUpdate ? getMavenSettings(projectOrNull, indicator) : null, indicator);
if (projectOrNull != null) {
MavenRehighlighter.rehighlight(projectOrNull);
}
@@ -332,15 +337,15 @@ public class MavenIndicesManager implements Disposable {
private void loadUserArchetypes() {
try {
File file = getUserArchetypesFile();
if (!file.exists()) return;
Element root = JDOMUtil.load(file);
Path file = getUserArchetypesFile();
if (!PathKt.exists(file)) {
return;
}
// Store artifact to set to remove duplicate created by old IDEA (https://youtrack.jetbrains.com/issue/IDEA-72105)
Collection<MavenArchetype> result = new LinkedHashSet<>();
List<Element> children = root.getChildren(ELEMENT_ARCHETYPE);
List<Element> children = JdomKt.loadElement(file).getChildren(ELEMENT_ARCHETYPE);
for (int i = children.size() - 1; i >= 0; i--) {
Element each = children.get(i);
@@ -385,16 +390,15 @@ public class MavenIndicesManager implements Disposable {
root.addContent(childElement);
}
try {
File file = getUserArchetypesFile();
file.getParentFile().mkdirs();
JDOMUtil.writeDocument(new Document(root), file, "\n");
JdomKt.write(root, getUserArchetypesFile());
}
catch (IOException e) {
MavenLog.LOG.warn(e);
}
}
private File getUserArchetypesFile() {
return new File(getIndicesDir(), "UserArchetypes.xml");
@NotNull
private Path getUserArchetypesFile() {
return getIndicesDir().resolve("UserArchetypes.xml");
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -70,19 +70,13 @@ public class MavenProjectIndicesManager extends MavenSimpleProjectComponent {
}
getMavenProjectManager().addManagerListener(new MavenProjectsManager.Listener() {
@Override
public void activated() {
scheduleUpdateIndicesList();
}
public void projectsScheduled() {
}
@Override
public void importAndResolveScheduled() {
}
});
getMavenProjectManager().addProjectsTreeListener(new MavenProjectsTree.ListenerAdapter() {
getMavenProjectManager().addProjectsTreeListener(new MavenProjectsTree.Listener() {
@Override
public void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted) {
scheduleUpdateIndicesList();
@@ -102,6 +96,7 @@ public class MavenProjectIndicesManager extends MavenSimpleProjectComponent {
public void scheduleUpdateIndicesList(@Nullable final Consumer<List<MavenIndex>> consumer) {
myUpdateQueue.queue(new Update(MavenProjectIndicesManager.this) {
@Override
public void run() {
Set<Pair<String, String>> remoteRepositoriesIdsAndUrls;
File localRepository;
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -379,20 +379,12 @@ public class MavenProjectsNavigator extends MavenSimpleProjectComponent implemen
scheduleStructureRequest(() -> myStructure.update());
}
private class MyProjectsListener extends MavenProjectsTree.ListenerAdapter implements MavenProjectsManager.Listener {
private class MyProjectsListener implements MavenProjectsManager.Listener, MavenProjectsTree.Listener {
@Override
public void activated() {
scheduleStructureUpdate();
}
@Override
public void projectsScheduled() {
}
@Override
public void importAndResolveScheduled() {
}
@Override
public void projectsIgnoredStateChanged(final List<MavenProject> ignored, final List<MavenProject> unignored, boolean fromImport) {
scheduleStructureRequest(() -> myStructure.updateIgnored(ContainerUtil.concat(ignored, unignored)));
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,7 +40,6 @@ import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
@@ -51,6 +50,7 @@ import com.intellij.util.EventDispatcher;
import com.intellij.util.NullableConsumer;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.io.PathKt;
import com.intellij.util.ui.update.Update;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
@@ -69,6 +69,7 @@ import org.jetbrains.idea.maven.utils.*;
import javax.swing.event.HyperlinkEvent;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
@@ -306,9 +307,9 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
private void initProjectsTree(boolean tryToLoadExisting) {
if (tryToLoadExisting) {
File file = getProjectsTreeFile();
Path file = getProjectsTreeFile();
try {
if (file.exists()) {
if (PathKt.exists(file)) {
myProjectsTree = MavenProjectsTree.read(myProject, file);
}
}
@@ -353,11 +354,12 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
}
}
private File getProjectsTreeFile() {
return new File(getProjectsTreesDir(), myProject.getLocationHash() + "/tree.dat");
private Path getProjectsTreeFile() {
return getProjectsTreesDir().resolve(myProject.getLocationHash()).resolve("tree.dat");
}
private static File getProjectsTreesDir() {
@NotNull
private static Path getProjectsTreesDir() {
return MavenUtil.getPluginSystemDir("Projects");
}
@@ -385,6 +387,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
private void listenForSettingsChanges() {
getImportingSettings().addListener(new MavenImportingSettings.Listener() {
@Override
public void autoImportChanged() {
if (myProject.isDisposed()) return;
@@ -393,10 +396,12 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
}
}
@Override
public void createModuleGroupsChanged() {
scheduleImportSettings(true);
}
@Override
public void createModuleForAggregatorsChanged() {
scheduleImportSettings();
}
@@ -404,7 +409,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
}
private void listenForProjectsTreeChanges() {
myProjectsTree.addListener(new MavenProjectsTree.ListenerAdapter() {
myProjectsTree.addListener(new MavenProjectsTree.Listener() {
@Override
public void projectsIgnoredStateChanged(List<MavenProject> ignored, List<MavenProject> unignored, boolean fromImport) {
if (!fromImport) scheduleImport();
@@ -528,7 +533,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
mySaveQueue.flush();
if (isUnitTestMode()) {
FileUtil.delete(getProjectsTreesDir());
PathKt.delete(getProjectsTreesDir());
}
} finally {
initLock.unlock();
@@ -701,10 +706,12 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
@Nullable
public MavenProject findProject(@NotNull Module module) {
VirtualFile f = findPomFile(module, new MavenModelsProvider() {
@Override
public Module[] getModules() {
throw new UnsupportedOperationException();
}
@Override
public VirtualFile[] getContentRoots(Module module) {
return ModuleRootManager.getInstance(module).getContentRoots();
}
@@ -804,9 +811,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
public Set<MavenRemoteRepository> getRemoteRepositories() {
Set<MavenRemoteRepository> result = new THashSet<>();
for (MavenProject each : getProjects()) {
for (MavenRemoteRepository eachRepository : each.getRemoteRepositories()) {
result.add(eachRepository);
}
result.addAll(each.getRemoteRepositories());
}
return result;
}
@@ -989,6 +994,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
private Promise<List<Module>> scheduleImport() {
final AsyncPromise<List<Module>> result = new AsyncPromise<>();
runWhenFullyOpen(() -> myImportingQueue.queue(new Update(MavenProjectsManager.this) {
@Override
public void run() {
result.setResult(importProjects());
}
@@ -1178,6 +1184,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
}
else {
MavenUtil.runInBackground(myProject, ProjectBundle.message("maven.project.importing"), false, new MavenTask() {
@Override
public void run(MavenProgressIndicator indicator) throws MavenProcessCanceledException {
r.run();
}
@@ -1257,10 +1264,13 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
}
public interface Listener {
void activated();
default void activated() {
}
void projectsScheduled();
default void projectsScheduled() {
}
void importAndResolveScheduled();
default void importAndResolveScheduled() {
}
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,6 +32,7 @@ import com.intellij.util.containers.ArrayListSet;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
import com.intellij.util.containers.Stack;
import com.intellij.util.io.PathKt;
import gnu.trove.THashSet;
import gnu.trove.TObjectHashingStrategy;
import org.jdom.Element;
@@ -48,6 +49,7 @@ import org.jetbrains.idea.maven.server.NativeMavenProjectHolder;
import org.jetbrains.idea.maven.utils.*;
import java.io.*;
import java.nio.file.Path;
import java.util.*;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -88,6 +90,7 @@ public class MavenProjectsTree {
private final Project myProject;
private final MavenProjectReaderProjectLocator myProjectLocator = new MavenProjectReaderProjectLocator() {
@Override
public VirtualFile findProjectFile(MavenId coordinates) {
MavenProject project = findProject(coordinates);
return project == null ? null : project.getFile();
@@ -99,11 +102,10 @@ public class MavenProjectsTree {
}
@Nullable
public static MavenProjectsTree read(Project project, File file) throws IOException {
public static MavenProjectsTree read(Project project, Path file) throws IOException {
MavenProjectsTree result = new MavenProjectsTree(project);
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
try {
try (DataInputStream in = new DataInputStream(new BufferedInputStream(PathKt.inputStream(file)))) {
try {
if (!STORAGE_VERSION.equals(in.readUTF())) return null;
result.myManagedFilesPaths = readCollection(in, new LinkedHashSet<>());
@@ -115,16 +117,13 @@ public class MavenProjectsTree {
}
catch (IOException e) {
in.close();
file.delete();
PathKt.delete(file);
throw e;
}
catch (Throwable e) {
throw new IOException(e);
}
}
finally {
in.close();
}
return result;
}
@@ -165,13 +164,11 @@ public class MavenProjectsTree {
return result;
}
public void save(File file) throws IOException {
public void save(@NotNull Path file) throws IOException {
synchronized (myStateLock) {
readLock();
try {
file.getParentFile().mkdirs();
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
try {
try (DataOutputStream out = new DataOutputStream(new BufferedOutputStream(PathKt.outputStream(file)))) {
out.writeUTF(STORAGE_VERSION);
writeCollection(out, myManagedFilesPaths);
writeCollection(out, myIgnoredFilesPaths);
@@ -180,9 +177,6 @@ public class MavenProjectsTree {
writeCollection(out, myExplicitProfiles.getDisabledProfiles());
writeProjectsRecursively(out, myRootProjects);
}
finally {
out.close();
}
}
finally {
readUnlock();
@@ -373,8 +367,8 @@ public class MavenProjectsTree {
}
}
private void updateExplicitProfiles(Collection<String> explicitProfiles, Collection<String> temporarilyRemovedExplicitProfiles,
Collection<String> available) {
private static void updateExplicitProfiles(Collection<String> explicitProfiles, Collection<String> temporarilyRemovedExplicitProfiles,
Collection<String> available) {
Collection<String> removedProfiles = new THashSet<>(explicitProfiles);
removedProfiles.removeAll(available);
temporarilyRemovedExplicitProfiles.addAll(removedProfiles);
@@ -1357,6 +1351,7 @@ public class MavenProjectsTree {
console,
process,
new EmbedderTask() {
@Override
public void run(MavenEmbedderWrapper embedder) throws MavenProcessCanceledException {
process.checkCanceled();
process.setText(ProjectBundle.message("maven.updating.folders.pom", mavenProject.getDisplayName()));
@@ -1656,48 +1651,30 @@ public class MavenProjectsTree {
}
public interface Listener extends EventListener {
void profilesChanged();
void projectsIgnoredStateChanged(List<MavenProject> ignored, List<MavenProject> unignored, boolean fromImport);
void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted);
void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
@Nullable NativeMavenProjectHolder nativeMavenProject);
void pluginsResolved(MavenProject project);
void foldersResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges);
void artifactsDownloaded(MavenProject project);
}
public static class ListenerAdapter implements Listener {
public void profilesChanged() {
default void profilesChanged() {
}
public void projectsIgnoredStateChanged(List<MavenProject> ignored, List<MavenProject> unignored, boolean fromImport) {
default void projectsIgnoredStateChanged(List<MavenProject> ignored, List<MavenProject> unignored, boolean fromImport) {
}
public void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted) {
default void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted) {
}
public void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
@Nullable NativeMavenProjectHolder nativeMavenProject) {
default void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
@Nullable NativeMavenProjectHolder nativeMavenProject) {
}
public void pluginsResolved(MavenProject project) {
default void pluginsResolved(MavenProject project) {
}
public void foldersResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges) {
default void foldersResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges) {
}
public void artifactsDownloaded(MavenProject project) {
default void artifactsDownloaded(MavenProject project) {
}
}
private static class MavenCoordinateHashCodeStrategy implements TObjectHashingStrategy<MavenCoordinate> {
@Override
public int computeHashCode(MavenCoordinate object) {
String artifactId = object.getArtifactId();
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@ import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.update.MergingUpdateQueue;
import com.intellij.util.ui.update.Update;
@@ -188,7 +187,7 @@ public class MavenShortcutsManager extends MavenSimpleProjectComponent implement
}
}
private class MyProjectsTreeListener extends MavenProjectsTree.ListenerAdapter implements MavenProjectsManager.Listener {
private class MyProjectsTreeListener implements MavenProjectsManager.Listener, MavenProjectsTree.Listener {
private final Map<MavenProject, Boolean> mySheduledProjects = new THashMap<>();
private final MergingUpdateQueue myUpdateQueue = new MavenMergingUpdateQueue(getComponentName() + ": Keymap Update",
500, true, myProject);
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ public class MavenEditorTabTitleUpdater extends MavenSimpleProjectComponent {
public void initComponent() {
if (!isNormalProject()) return;
MavenProjectsManager.getInstance(myProject).addProjectsTreeListener(new MavenProjectsTree.ListenerAdapter() {
MavenProjectsManager.getInstance(myProject).addProjectsTreeListener(new MavenProjectsTree.Listener() {
@Override
public void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted) {
updateTabName(MavenUtil.collectFirsts(updated));
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -69,7 +69,7 @@ public class MavenRehighlighter {
}
});
mavenProjectManager.addProjectsTreeListener(new MavenProjectsTree.ListenerAdapter() {
mavenProjectManager.addProjectsTreeListener(new MavenProjectsTree.Listener() {
@Override
public void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted) {
for (Pair<MavenProject, MavenProjectChanges> each : updated) {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -80,6 +80,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -220,9 +221,10 @@ public class MavenUtil {
Notifications.Bus.notify(new Notification(MAVEN_NOTIFICATION_GROUP, title, e.getMessage(), NotificationType.ERROR), project);
}
public static File getPluginSystemDir(String folder) {
@NotNull
public static java.nio.file.Path getPluginSystemDir(@NotNull String folder) {
// PathManager.getSystemPath() may return relative path
return new File(PathManager.getSystemPath(), "Maven" + "/" + folder).getAbsoluteFile();
return Paths.get(PathManager.getSystemPath()).toAbsolutePath().resolve("Maven").resolve(folder);
}
public static File getBaseDir(@NotNull VirtualFile file) {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ public abstract class MavenDomWithIndicesTestCase extends MavenDomTestCase {
}
protected MavenIndicesTestFixture createIndicesFixture() {
return new MavenIndicesTestFixture(myDir, myProject);
return new MavenIndicesTestFixture(myDir.toPath(), myProject);
}
@Override
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ import java.util.List;
public class MavenExtensionCompletionAndResolutionTest extends MavenDomWithIndicesTestCase {
@Override
protected MavenIndicesTestFixture createIndicesFixture() {
return new MavenIndicesTestFixture(myDir, myProject, "plugins");
return new MavenIndicesTestFixture(myDir.toPath(), myProject, "plugins");
}
@Override
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,6 @@ package org.jetbrains.idea.maven.dom;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.xml.XmlTag;
@@ -29,7 +28,7 @@ import java.util.List;
public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesTestCase {
@Override
protected MavenIndicesTestFixture createIndicesFixture() {
return new MavenIndicesTestFixture(myDir, myProject, "plugins");
return new MavenIndicesTestFixture(myDir.toPath(), myProject, "plugins");
}
@Override
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,15 +33,19 @@ public class MavenIndicesManagerTest extends MavenIndicesTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
myIndicesFixture = new MavenIndicesTestFixture(myDir, myProject);
myIndicesFixture = new MavenIndicesTestFixture(myDir.toPath(), myProject);
myIndicesFixture.setUp();
MavenServerManager.getInstance().setUseMaven2(true);
}
@Override
protected void tearDown() throws Exception {
myIndicesFixture.tearDown();
super.tearDown();
try {
myIndicesFixture.tearDown();
}
finally {
super.tearDown();
}
}
public void testEnsuringLocalRepositoryIndex() throws Exception {
@@ -51,17 +55,17 @@ public class MavenIndicesManagerTest extends MavenIndicesTestCase {
File dir4 = myIndicesFixture.getRepositoryHelper().getTestData("dir/bar");
List<MavenIndex> indices1 = myIndicesFixture.getIndicesManager().ensureIndicesExist(myProject, dir1,
Collections.<Pair<String, String>>emptyList());
Collections.emptyList());
assertEquals(1, indices1.size());
assertTrue(myIndicesFixture.getIndicesManager().getIndices().contains(indices1.get(0)));
assertEquals(indices1, myIndicesFixture.getIndicesManager().ensureIndicesExist(myProject, dir2,
Collections.<Pair<String, String>>emptyList()));
Collections.emptyList()));
assertEquals(indices1, myIndicesFixture.getIndicesManager().ensureIndicesExist(myProject, dir3,
Collections.<Pair<String, String>>emptyList()));
Collections.emptyList()));
List<MavenIndex> indices2 = myIndicesFixture.getIndicesManager().ensureIndicesExist(myProject, dir4,
Collections.<Pair<String, String>>emptyList());
Collections.emptyList());
assertFalse(indices1.get(0).equals(indices2.get(0)));
}
@@ -87,7 +91,7 @@ public class MavenIndicesManagerTest extends MavenIndicesTestCase {
public void testIndexedArchetypes() throws Exception {
myIndicesFixture.getRepositoryHelper().addTestData("archetypes");
myIndicesFixture.getIndicesManager().ensureIndicesExist(myProject, myIndicesFixture.getRepositoryHelper().getTestData("archetypes"),
Collections.<Pair<String, String>>emptyList());
Collections.emptyList());
assertArchetypeExists("org.apache.maven.archetypes:maven-archetype-foobar:1.0");
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,9 +23,10 @@ import org.jetbrains.idea.maven.server.MavenServerManager;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
public class MavenIndicesTestFixture {
private File myDir;
private Path myDir;
private Project myProject;
private String myLocalRepoDir;
private String[] myExtraRepoDirs;
@@ -33,11 +34,15 @@ public class MavenIndicesTestFixture {
private MavenCustomRepositoryHelper myRepositoryHelper;
private MavenProjectIndicesManager myIndicesManager;
public MavenIndicesTestFixture(File dir, Project project) {
public MavenIndicesTestFixture(Path dir, Project project) {
this(dir, project, "local1", "local2");
}
public MavenIndicesTestFixture(File dir, Project project, String localRepoDir, String... extraRepoDirs) {
public MavenIndicesTestFixture(File dir, Project project) {
this(dir.toPath(), project);
}
public MavenIndicesTestFixture(Path dir, Project project, String localRepoDir, String... extraRepoDirs) {
myDir = dir;
myProject = project;
myLocalRepoDir = localRepoDir;
@@ -45,7 +50,7 @@ public class MavenIndicesTestFixture {
}
public void setUp() throws Exception {
myRepositoryHelper = new MavenCustomRepositoryHelper(myDir, ArrayUtil.append(myExtraRepoDirs, myLocalRepoDir));
myRepositoryHelper = new MavenCustomRepositoryHelper(myDir.toFile(), ArrayUtil.append(myExtraRepoDirs, myLocalRepoDir));
for (String each : myExtraRepoDirs) {
addToRepository(each);
@@ -54,7 +59,7 @@ public class MavenIndicesTestFixture {
MavenProjectsManager.getInstance(myProject).getGeneralSettings().setLocalRepository(
myRepositoryHelper.getTestDataPath(myLocalRepoDir));
getIndicesManager().setTestIndexDir(new File(myDir, "MavenIndices"));
getIndicesManager().setTestIndexDir(myDir.resolve("MavenIndices"));
myIndicesManager = MavenProjectIndicesManager.getInstance(myProject);
myIndicesManager.doInit();
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,14 +23,18 @@ public class MavenProjectIndicesManagerTest extends MavenIndicesTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
myIndicesFixture = new MavenIndicesTestFixture(myDir, myProject);
myIndicesFixture = new MavenIndicesTestFixture(myDir.toPath(), myProject);
myIndicesFixture.setUp();
}
@Override
protected void tearDown() throws Exception {
myIndicesFixture.tearDown();
super.tearDown();
try {
myIndicesFixture.tearDown();
}
finally {
super.tearDown();
}
}
public void testAutomaticallyAddAndUpdateLocalRepository() throws Exception {
@@ -78,7 +82,7 @@ public class MavenProjectIndicesManagerTest extends MavenIndicesTestCase {
public void testUpdatingIndexUsingMirrors() throws Exception {
myIndicesFixture.tearDown();
myIndicesFixture = new MavenIndicesTestFixture(myDir, myProject, "local2", "remote_mirror");
myIndicesFixture = new MavenIndicesTestFixture(myDir.toPath(), myProject, "local2", "remote_mirror");
myIndicesFixture.setUp();
updateSettingsXmlFully("<settings>" +
@@ -127,7 +131,7 @@ public class MavenProjectIndicesManagerTest extends MavenIndicesTestCase {
assertUnorderedElementsAreEqual(myIndicesFixture.getProjectIndicesManager().getGroupIds(), "test", "jmock", "junit");
myIndicesFixture.tearDown();
myIndicesFixture = new MavenIndicesTestFixture(myDir, myProject, "local2", "remote_mirror");
myIndicesFixture = new MavenIndicesTestFixture(myDir.toPath(), myProject, "local2", "remote_mirror");
myIndicesFixture.setUp();
updateSettingsXmlFully("<settings>" +
@@ -147,7 +151,7 @@ public class MavenProjectIndicesManagerTest extends MavenIndicesTestCase {
public void testCheckingLocalRepositoryForAbsentIndices() throws Exception {
myIndicesFixture.tearDown();
myIndicesFixture = new MavenIndicesTestFixture(myDir, myProject, "local2");
myIndicesFixture = new MavenIndicesTestFixture(myDir.toPath(), myProject, "local2");
myIndicesFixture.setUp();
myIndicesFixture.addToRepository("local1");
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,14 +26,18 @@ public class MavenSearcherTest extends MavenIndicesTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
myIndicesFixture = new MavenIndicesTestFixture(myDir, myProject);
myIndicesFixture = new MavenIndicesTestFixture(myDir.toPath(), myProject);
myIndicesFixture.setUp();
}
@Override
protected void tearDown() throws Exception {
myIndicesFixture.tearDown();
super.tearDown();
try {
myIndicesFixture.tearDown();
}
finally {
super.tearDown();
}
}
public void testClassSearch() throws Exception {
@@ -117,12 +121,12 @@ public class MavenSearcherTest extends MavenIndicesTestCase {
private List<String> getClassSearchResults(String pattern) {
List<String> actualArtifacts = new ArrayList<>();
for (MavenClassSearchResult eachResult : new MavenClassSearcher().search(myProject, pattern, 100)) {
String s = eachResult.className + "(" + eachResult.packageName + ")";
StringBuilder s = new StringBuilder(eachResult.className + "(" + eachResult.packageName + ")");
for (MavenArtifactInfo eachVersion : eachResult.versions) {
if (s.length() > 0) s += " ";
s += eachVersion.getGroupId() + ":" + eachVersion.getArtifactId()+ ":" + eachVersion.getVersion();
if (s.length() > 0) s.append(" ");
s.append(eachVersion.getGroupId()).append(":").append(eachVersion.getArtifactId()).append(":").append(eachVersion.getVersion());
}
actualArtifacts.add(s);
actualArtifacts.add(s.toString());
}
return actualArtifacts;
}
@@ -130,12 +134,12 @@ public class MavenSearcherTest extends MavenIndicesTestCase {
private void assertArtifactSearchResults(String pattern, String... expected) {
List<String> actual = new ArrayList<>();
for (MavenArtifactSearchResult eachResult : new MavenArtifactSearcher(true).search(myProject, pattern, 100)) {
String s = "";
StringBuilder s = new StringBuilder();
for (MavenArtifactInfo eachVersion : eachResult.versions) {
if (s.length() > 0) s += " ";
s += eachVersion.getGroupId() + ":" + eachVersion.getArtifactId()+ ":" + eachVersion.getVersion();
if (s.length() > 0) s.append(" ");
s.append(eachVersion.getGroupId()).append(":").append(eachVersion.getArtifactId()).append(":").append(eachVersion.getVersion());
}
actual.add(s);
actual.add(s.toString());
}
assertOrderedElementsAreEqual(actual, expected);
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -864,7 +864,7 @@ public class MavenProjectsManagerTest extends MavenImportingTestCase {
public void testDoNotScheduleResolveOfInvalidProjectsDeleted() throws Exception {
final boolean[] called = new boolean[1];
myProjectsManager.addProjectsTreeListener(new MavenProjectsTree.ListenerAdapter() {
myProjectsManager.addProjectsTreeListener(new MavenProjectsTree.Listener() {
@Override
public void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
NativeMavenProjectHolder nativeMavenProject) {
@@ -1086,14 +1086,14 @@ public class MavenProjectsManagerTest extends MavenImportingTestCase {
final StringBuilder log = new StringBuilder();
myProjectsManager.performScheduledImportInTests();
myProjectsManager.addProjectsTreeListener(new MavenProjectsTree.ListenerAdapter() {
myProjectsManager.addProjectsTreeListener(new MavenProjectsTree.Listener() {
@Override
public void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted) {
for (Pair<MavenProject, MavenProjectChanges> each : updated) {
log.append("updated: " + each.first.getDisplayName() + " ");
log.append("updated: ").append(each.first.getDisplayName()).append(" ");
}
for (MavenProject each : deleted) {
log.append("deleted: " + each.getDisplayName() + " ");
log.append("deleted: ").append(each.getDisplayName()).append(" ");
}
}
});
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,6 @@ package org.jetbrains.idea.maven.project.importing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.Function;
import org.jetbrains.idea.maven.project.MavenProject;
import org.jetbrains.idea.maven.project.MavenProjectsTree;
@@ -61,7 +60,7 @@ public class MavenProjectsTreeIgnoresTest extends MavenProjectsTreeTestCase {
assertEquals("ignored: m1 ", myLog);
myLog = "";
myTree.setIgnoredFilesPatterns(Collections.<String>emptyList());
myTree.setIgnoredFilesPatterns(Collections.emptyList());
assertEquals("unignored: m1 ", myLog);
myLog = "";
@@ -78,7 +77,7 @@ public class MavenProjectsTreeIgnoresTest extends MavenProjectsTreeTestCase {
assertEquals("", myLog);
}
private class MyLoggingListener extends MavenProjectsTree.ListenerAdapter {
private class MyLoggingListener implements MavenProjectsTree.Listener {
@Override
public void projectsIgnoredStateChanged(List<MavenProject> ignored, List<MavenProject> unignored, boolean fromImport) {
if (!ignored.isEmpty()) myLog += "ignored: " + format(ignored) + " ";
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.util.Function;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.project.MavenEmbeddersManager;
import org.jetbrains.idea.maven.project.MavenProject;
@@ -31,7 +30,7 @@ import org.jetbrains.idea.maven.server.MavenServerManager;
import org.jetbrains.idea.maven.server.NativeMavenProjectHolder;
import org.jetbrains.idea.maven.utils.MavenUtil;
import java.io.File;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -624,7 +623,7 @@ public class MavenProjectsTreeReadingTest extends MavenProjectsTreeTestCase {
MavenEmbeddersManager embeddersManager = new MavenEmbeddersManager(myProject);
final List<NativeMavenProjectHolder> nativeProject = new ArrayList<>();
try {
myTree.addListener(new MavenProjectsTree.ListenerAdapter() {
myTree.addListener(new MavenProjectsTree.Listener() {
@Override
public void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
NativeMavenProjectHolder nativeMavenProject) {
@@ -674,7 +673,7 @@ public class MavenProjectsTreeReadingTest extends MavenProjectsTreeTestCase {
MavenEmbeddersManager embeddersManager = new MavenEmbeddersManager(myProject);
try {
final NativeMavenProjectHolder[] nativeProject = new NativeMavenProjectHolder[1];
myTree.addListener(new MavenProjectsTree.ListenerAdapter() {
myTree.addListener(new MavenProjectsTree.Listener() {
@Override
public void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
NativeMavenProjectHolder nativeMavenProject) {
@@ -1867,7 +1866,7 @@ public class MavenProjectsTreeReadingTest extends MavenProjectsTreeTestCase {
embeddersManager.releaseInTests();
}
File f = new File(myDir, "tree.dat");
Path f = myDir.toPath().resolve("tree.dat");
myTree.save(f);
MavenProjectsTree read = MavenProjectsTree.read(myProject, f);
@@ -2239,7 +2238,7 @@ public class MavenProjectsTreeReadingTest extends MavenProjectsTreeTestCase {
PlatformTestUtil.assertPathsEqual(pathFromBasedir("my-target/test-classes"), project.getTestOutputDirectory());
}
private static class MyLoggingListener extends MavenProjectsTree.ListenerAdapter {
private static class MyLoggingListener implements MavenProjectsTree.Listener {
String log = "";
@Override