Merge remote-tracking branch 'origin/master'

This commit is contained in:
Ekaterina Tuzova
2013-08-07 13:20:09 +04:00
23 changed files with 122 additions and 60 deletions
@@ -140,9 +140,10 @@ public class AllClassesGetter {
}
};
public static void processJavaClasses(final CompletionParameters parameters,
final PrefixMatcher prefixMatcher, final boolean filterByScope,
final Consumer<PsiClass> consumer) {
public static void processJavaClasses(@NotNull final CompletionParameters parameters,
@NotNull final PrefixMatcher prefixMatcher,
final boolean filterByScope,
@NotNull final Consumer<PsiClass> consumer) {
final PsiElement context = parameters.getPosition();
final Project project = context.getProject();
final GlobalSearchScope scope = filterByScope ? context.getContainingFile().getResolveScope() : GlobalSearchScope.allScope(project);
@@ -167,10 +168,10 @@ public class AllClassesGetter {
processJavaClasses(prefixMatcher, project, scope, processor);
}
public static void processJavaClasses(final PrefixMatcher prefixMatcher,
Project project,
GlobalSearchScope scope,
Processor<PsiClass> processor) {
public static void processJavaClasses(@NotNull final PrefixMatcher prefixMatcher,
@NotNull Project project,
@NotNull GlobalSearchScope scope,
@NotNull Processor<PsiClass> processor) {
AllClassesSearch.search(scope, project, new Condition<String>() {
@Override
public boolean value(String s) {
@@ -79,7 +79,7 @@ public class JavaClassNameCompletionContributor extends CompletionContributor {
return false;
}
public static void addAllClasses(CompletionParameters parameters,
public static void addAllClasses(@NotNull CompletionParameters parameters,
final boolean filterByScope,
@NotNull final PrefixMatcher matcher,
@NotNull final Consumer<LookupElement> consumer) {
@@ -22,10 +22,12 @@ package com.intellij.psi.search.searches;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Conditions;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.Query;
import com.intellij.util.QueryExecutor;
import org.jetbrains.annotations.NotNull;
public class AllClassesSearch extends ExtensibleQueryFactory<PsiClass, AllClassesSearch.SearchParameters> {
public static ExtensionPointName<QueryExecutor> EP_NAME = ExtensionPointName.create("com.intellij.allClassesSearch");
@@ -36,20 +38,22 @@ public class AllClassesSearch extends ExtensibleQueryFactory<PsiClass, AllClasse
private final Project myProject;
private final Condition<String> myShortNameCondition;
public SearchParameters(final SearchScope scope, final Project project) {
this(scope, project, Condition.TRUE);
public SearchParameters(@NotNull SearchScope scope, @NotNull Project project) {
this(scope, project, Conditions.<String>alwaysTrue());
}
public SearchParameters(final SearchScope scope, final Project project, final Condition<String> shortNameCondition) {
public SearchParameters(@NotNull SearchScope scope, @NotNull Project project, @NotNull Condition<String> shortNameCondition) {
myScope = scope;
myProject = project;
myShortNameCondition = shortNameCondition;
}
@NotNull
public SearchScope getScope() {
return myScope;
}
@NotNull
public Project getProject() {
return myProject;
}
@@ -59,11 +63,13 @@ public class AllClassesSearch extends ExtensibleQueryFactory<PsiClass, AllClasse
}
}
public static Query<PsiClass> search(SearchScope scope, Project project) {
@NotNull
public static Query<PsiClass> search(@NotNull SearchScope scope, @NotNull Project project) {
return INSTANCE.createQuery(new SearchParameters(scope, project));
}
public static Query<PsiClass> search(SearchScope scope, Project project, Condition<String> shortNameCondition) {
@NotNull
public static Query<PsiClass> search(@NotNull SearchScope scope, @NotNull Project project, @NotNull Condition<String> shortNameCondition) {
return INSTANCE.createQuery(new SearchParameters(scope, project, shortNameCondition));
}
}
@@ -50,7 +50,7 @@ public class AllClassesSearchExecutor implements QueryExecutor<PsiClass, AllClas
SearchScope scope = queryParameters.getScope();
if (scope instanceof GlobalSearchScope) {
return processAllClassesInGlobalScope((GlobalSearchScope)scope, consumer, queryParameters);
return processAllClassesInGlobalScope((GlobalSearchScope)scope, queryParameters, consumer);
}
PsiElement[] scopeRoots = ((LocalSearchScope)scope).getScope();
@@ -59,8 +59,9 @@ public class AllClassesSearchExecutor implements QueryExecutor<PsiClass, AllClas
}
return true;
}
private static String[] getAllClassNames(final Project project) {
@NotNull
private static String[] getAllClassNames(@NotNull final Project project) {
return ApplicationManager.getApplication().runReadAction(new Computable<String[]>() {
@Override
public String[] compute() {
@@ -81,7 +82,9 @@ public class AllClassesSearchExecutor implements QueryExecutor<PsiClass, AllClas
});
}
private static boolean processAllClassesInGlobalScope(final GlobalSearchScope scope, final Processor<PsiClass> processor, final AllClassesSearch.SearchParameters parameters) {
private static boolean processAllClassesInGlobalScope(@NotNull final GlobalSearchScope scope,
@NotNull AllClassesSearch.SearchParameters parameters,
@NotNull Processor<PsiClass> processor) {
String[] names = getAllClassNames(parameters.getProject());
final ProgressIndicator indicator = ProgressIndicatorProvider.getGlobalProgressIndicator();
if (indicator != null) {
@@ -129,7 +132,7 @@ public class AllClassesSearchExecutor implements QueryExecutor<PsiClass, AllClas
return true;
}
private static boolean processScopeRootForAllClasses(@NotNull PsiElement scopeRoot, final Processor<PsiClass> processor) {
private static boolean processScopeRootForAllClasses(@NotNull PsiElement scopeRoot, @NotNull final Processor<PsiClass> processor) {
final boolean[] stopped = {false};
JavaElementVisitor visitor = scopeRoot instanceof PsiCompiledElement ? new JavaRecursiveElementVisitor() {
@@ -17,6 +17,7 @@ package com.intellij.openapi.startup;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
/**
* @author Dmitry Avdeev
@@ -27,5 +28,5 @@ public interface StartupActivity {
ExtensionPointName<StartupActivity> POST_STARTUP_ACTIVITY = ExtensionPointName.create("com.intellij.postStartupActivity");
void runActivity(Project project);
void runActivity(@NotNull Project project);
}
@@ -19,19 +19,20 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.util.UserDataHolder;
import com.intellij.pom.event.PomModelListener;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import java.util.Set;
public interface PomModel extends UserDataHolder {
<T extends PomModelAspect> T getModelAspect(Class<T> aClass);
<T extends PomModelAspect> T getModelAspect(@NotNull Class<T> aClass);
void registerAspect(Class<? extends PomModelAspect> aClass,
PomModelAspect aspect,
Set<PomModelAspect> dependencies);
void registerAspect(@NotNull Class<? extends PomModelAspect> aClass,
@NotNull PomModelAspect aspect,
@NotNull Set<PomModelAspect> dependencies);
void addModelListener(PomModelListener listener);
void addModelListener(PomModelListener listener, Disposable parentDisposable);
void removeModelListener(PomModelListener listener);
void addModelListener(@NotNull PomModelListener listener);
void addModelListener(@NotNull PomModelListener listener, @NotNull Disposable parentDisposable);
void removeModelListener(@NotNull PomModelListener listener);
void runTransaction(PomTransaction transaction) throws IncorrectOperationException;
void runTransaction(@NotNull PomTransaction transaction) throws IncorrectOperationException;
}
@@ -70,13 +70,13 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
}
@Override
public <T extends PomModelAspect> T getModelAspect(Class<T> aClass) {
public <T extends PomModelAspect> T getModelAspect(@NotNull Class<T> aClass) {
//noinspection unchecked
return (T)myAspects.get(aClass);
}
@Override
public void registerAspect(Class<? extends PomModelAspect> aClass, PomModelAspect aspect, Set<PomModelAspect> dependencies) {
public void registerAspect(@NotNull Class<? extends PomModelAspect> aClass, @NotNull PomModelAspect aspect, @NotNull Set<PomModelAspect> dependencies) {
myAspects.put(aClass, aspect);
final Iterator<PomModelAspect> iterator = dependencies.iterator();
final List<PomModelAspect> deps = new ArrayList<PomModelAspect>();
@@ -110,12 +110,12 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
}
@Override
public void addModelListener(PomModelListener listener) {
public void addModelListener(@NotNull PomModelListener listener) {
myListeners.add(listener);
}
@Override
public void addModelListener(final PomModelListener listener, Disposable parentDisposable) {
public void addModelListener(@NotNull final PomModelListener listener, @NotNull Disposable parentDisposable) {
addModelListener(listener);
Disposer.register(parentDisposable, new Disposable() {
@Override
@@ -126,14 +126,14 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
}
@Override
public void removeModelListener(PomModelListener listener) {
public void removeModelListener(@NotNull PomModelListener listener) {
myListeners.remove(listener);
}
private final Stack<Pair<PomModelAspect, PomTransaction>> myBlockedAspects = new Stack<Pair<PomModelAspect, PomTransaction>>();
@Override
public void runTransaction(PomTransaction transaction) throws IncorrectOperationException{
public void runTransaction(@NotNull PomTransaction transaction) throws IncorrectOperationException{
List<Throwable> throwables = new ArrayList<Throwable>(0);
synchronized(PsiLock.LOCK){
final PomModelAspect aspect = transaction.getTransactionAspect();
@@ -233,20 +233,20 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
if (containingFileByTree != null) {
boolean isFromCommit = ApplicationManager.getApplication().isDispatchThread() &&
ApplicationManager.getApplication().hasWriteAction(CommitToPsiFileAction.class);
if (!isFromCommit && !synchronizer.isIgnorePsiEvents()) {
if (!isFromCommit && !synchronizer.isIgnorePsiEvents()) {
reparseParallelTrees(containingFileByTree);
}
}
if (progressIndicator != null) progressIndicator.finishNonCancelableSection();
}
private void reparseParallelTrees(PsiFile changedFile) {
List<PsiFile> allFiles = changedFile.getViewProvider().getAllFiles();
if (allFiles.size() <= 1) {
return;
}
String newText = changedFile.getNode().getText();
for (final PsiFile file : allFiles) {
if (file != changedFile) {
@@ -266,7 +266,7 @@ public class PomModelImpl extends UserDataHolderBase implements PomModel {
private void reparseFile(final PsiFile file, String newText, String oldText) {
if (oldText.equals(newText)) return;
PsiToDocumentSynchronizer synchronizer =((PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject)).getSynchronizer();
int changeStart = StringUtil.commonPrefixLength(oldText, newText);
int changeEnd = oldText.length() - StringUtil.commonSuffixLength(oldText, newText);
@@ -26,6 +26,7 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import com.intellij.openapi.startup.StartupManager;
import org.jetbrains.annotations.NotNull;
/**
* @author Denis Zhdanov
@@ -34,7 +35,7 @@ import com.intellij.openapi.startup.StartupManager;
public class ExternalSystemStartupActivity implements StartupActivity {
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
Runnable task = new Runnable() {
@SuppressWarnings("unchecked")
@Override
@@ -61,6 +62,6 @@ public class ExternalSystemStartupActivity implements StartupActivity {
}
else {
StartupManager.getInstance(project).registerPostStartupActivity(task);
}
}
}
}
@@ -83,8 +83,10 @@ public abstract class PassExecutorService implements Disposable {
if (waitForTermination) {
for (Job<Void> job : mySubmittedPasses.values()) {
try {
JobImpl ji = (JobImpl)job;
if (!job.isDone()) ji.waitForTermination();
if (job instanceof JobImpl) {
JobImpl ji = (JobImpl)job;
if (!job.isDone()) ji.waitForTermination();
}
}
catch (Throwable throwable) {
LOG.error(throwable);
@@ -19,6 +19,7 @@ import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import org.jetbrains.annotations.NotNull;
/**
* @author Denis Zhdanov
@@ -27,7 +28,7 @@ import com.intellij.openapi.startup.StartupActivity;
public class QuickDocOnMouseOverStartupActivity implements StartupActivity {
@Override
public void runActivity(Project project) {
public void runActivity(@NotNull Project project) {
if (EditorSettingsExternalizable.getInstance().isShowQuickDocOnMouseOverElement()) {
ServiceManager.getService(QuickDocOnMouseOverManager.class).setEnabled(true);
}
@@ -39,7 +39,7 @@ public class BraceHighlighter implements StartupActivity {
private final Alarm myAlarm = new Alarm();
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
final EditorEventMulticaster eventMulticaster = EditorFactory.getInstance().getEventMulticaster();
CaretListener myCaretListener = new CaretListener() {
@@ -255,10 +255,7 @@ public class CodeFormatterFacade {
private static TextRange preprocess(@NotNull final ASTNode node, @NotNull TextRange range) {
TextRange result = range;
PsiElement psi = node.getPsi();
if (!psi.isValid()) {
for(PreFormatProcessor processor: Extensions.getExtensions(PreFormatProcessor.EP_NAME)) {
result = processor.process(node, result);
}
if (!psi.isValid()) {
return result;
}
@@ -20,12 +20,13 @@ import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import com.intellij.openapi.wm.ToolWindowManager;
import org.jetbrains.annotations.NotNull;
public class TipOfTheDayManager implements StartupActivity, DumbAware {
private boolean myVeryFirstProjectOpening = true;
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
if (!myVeryFirstProjectOpening || !GeneralSettings.getInstance().showTipsOnStartup()) {
return;
}
@@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import org.jetbrains.annotations.NotNull;
/**
* @author yole
@@ -27,7 +28,7 @@ import com.intellij.openapi.startup.StartupActivity;
public class ActionPreloader implements StartupActivity, DumbAware {
@Override
public void runActivity(Project project) {
public void runActivity(@NotNull Project project) {
if (!ApplicationManager.getApplication().isUnitTestMode() && !ApplicationManager.getApplication().isHeadlessEnvironment()) {
((ActionManagerImpl)ActionManager.getInstance()).preloadActions();
}
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
/**
* @author Dmitry Avdeev
@@ -29,7 +30,7 @@ import com.intellij.util.ui.UIUtil;
public class OpenFilesActivity implements StartupActivity, DumbAware {
@Override
public void runActivity(Project project) {
public void runActivity(@NotNull Project project) {
final FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
if (fileEditorManager instanceof FileEditorManagerImpl) {
Runnable runnable = new Runnable() {
@@ -40,7 +40,7 @@ import java.util.Map;
*/
public class ApproveRemovedMappingsActivity implements StartupActivity {
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
final Map<FileNameMatcher,Pair<FileType,Boolean>> map = ((FileTypeManagerImpl)FileTypeManager.getInstance()).getRemovedMappings();
if (!map.isEmpty()) {
UIUtil.invokeAndWaitIfNeeded(new Runnable() {
@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindowManager;
import org.jetbrains.annotations.NotNull;
/**
* @author yole
@@ -27,7 +28,7 @@ import com.intellij.openapi.wm.ToolWindowManager;
public class FilesystemToolwindowOpener implements StartupActivity, DumbAware {
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
final VirtualFile baseDir = ProjectBaseDirectory.getInstance(project).getBaseDir();
if (baseDir == null || !baseDir.isDirectory()) return;
ToolWindowManager.getInstance(project).invokeLater(new Runnable() {
@@ -16,6 +16,7 @@ import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.ShutDownTracker;
import org.jboss.netty.channel.ChannelException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.io.BuiltInServer;
@@ -68,7 +69,7 @@ public class BuiltInServerManagerImpl extends BuiltInServerManager {
private boolean veryFirstProjectOpening = true;
@Override
public void runActivity(Project project) {
public void runActivity(@NotNull Project project) {
if (!veryFirstProjectOpening) {
return;
}
@@ -15,6 +15,8 @@
*/
package com.intellij.util;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
/**
@@ -23,7 +25,7 @@ import java.util.Collection;
public class CollectConsumer<T> implements Consumer<T> {
private final Collection<T> myResult;
public CollectConsumer(Collection<T> result) {
public CollectConsumer(@NotNull Collection<T> result) {
myResult = result;
}
@@ -31,10 +33,12 @@ public class CollectConsumer<T> implements Consumer<T> {
this(new SmartList<T>());
}
@Override
public void consume(T t) {
myResult.add(t);
}
@NotNull
public Collection<T> getResult() {
return myResult;
}
@@ -0,0 +1,40 @@
/*
* Copyright 2000-2013 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.util;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
public class SynchronizedCollectConsumer<T> extends CollectConsumer<T> {
public SynchronizedCollectConsumer(@NotNull Collection<T> result) {
super(result);
}
public SynchronizedCollectConsumer() {
super();
}
@Override
public synchronized void consume(T t) {
super.consume(t);
}
@NotNull
@Override
public synchronized Collection<T> getResult() {
return super.getResult();
}
}
@@ -212,7 +212,7 @@ implements ExternalSystemConfigurableAware, ExternalSystemUiAware, ExternalSyste
for (String jar : gradleJars) {
classPath.add(new File(gradleJarsDir, jar).getAbsolutePath());
}
List<String> additionalEntries = ContainerUtilRt.newArrayList();
ContainerUtilRt.addIfNotNull(additionalEntries, PathUtil.getJarPathForClass(JavaProjectData.class));
ContainerUtilRt.addIfNotNull(additionalEntries, PathUtil.getJarPathForClass(LanguageLevel.class));
@@ -283,7 +283,7 @@ implements ExternalSystemConfigurableAware, ExternalSystemUiAware, ExternalSyste
}
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
// We want to automatically refresh linked projects on gradle service directory change.
MessageBusConnection connection = project.getMessageBus().connect(project);
connection.subscribe(GradleSettings.getInstance(project).getChangesTopic(), new GradleSettingsListenerAdapter() {
@@ -292,9 +292,9 @@ implements ExternalSystemConfigurableAware, ExternalSystemUiAware, ExternalSyste
ExternalSystemUtil.refreshProjects(project, GradleConstants.SYSTEM_ID, true);
}
});
// We used to assume that gradle scripts are always named 'build.gradle' and kept path to that build.gradle file at ide settings.
// However, it was found out that that is incorrect assumption (IDEA-109064). Now we keep paths to gradle script's directories
// However, it was found out that that is incorrect assumption (IDEA-109064). Now we keep paths to gradle script's directories
// instead. However, we don't want to force old users to re-import gradle projects because of that. That's why we check gradle
// config and re-point it from build.gradle to the parent dir if necessary.
Map<String, String> adjustedPaths = patchLinkedProjects(project);
@@ -26,7 +26,7 @@ import javax.swing.event.HyperlinkEvent;
public class MvcProjectWithoutLibraryNotificator implements StartupActivity, DumbAware {
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock();
try {
@@ -66,7 +66,7 @@ import java.util.Map;
*/
public class RepositoryLibrarySynchronizer implements StartupActivity, DumbAware{
@Override
public void runActivity(final Project project) {
public void runActivity(@NotNull final Project project) {
StartupManager.getInstance(project).registerPostStartupActivity(new DumbAwareRunnable() {
@Override
public void run() {