mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
Generated
+1
@@ -7,6 +7,7 @@
|
||||
<root url="jar://$PROJECT_DIR$/lib/jsch.agentproxy.sshagent.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jsch.agentproxy.usocket-jna.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jsch.agentproxy.usocket-nc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jsch.agentproxy.jsch.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
|
||||
BIN
Binary file not shown.
+4
-3
@@ -157,9 +157,10 @@ public class InspectionProfileSchemesPanel extends AbstractDescriptionAwareSchem
|
||||
}
|
||||
final SingleInspectionProfilePanel existed = InspectionProfileSchemesPanel.this.getModel().getProfilePanel(profile);
|
||||
if (existed != null) {
|
||||
if (Messages.showOkCancelDialog(myProject, "Profile with name \'" +
|
||||
profile.getName() +
|
||||
"\' already exists. Do you want to overwrite it?", "Warning",
|
||||
if (Messages.showOkCancelDialog(myProject, "Profile with name \'" + profile.getName() +
|
||||
"\' already exists. Do you want to overwrite it?",
|
||||
"Overwrite Warning",
|
||||
"Overwrite", "Cancel",
|
||||
Messages.getInformationIcon()) != Messages.OK) {
|
||||
return;
|
||||
}
|
||||
|
||||
+5
-5
@@ -116,11 +116,11 @@ public class ExportTestResultsAction extends DumbAwareAction {
|
||||
}
|
||||
filename = d.getFileName();
|
||||
showDialog = getOutputFile(config, project, filename).exists()
|
||||
&& Messages.showOkCancelDialog(
|
||||
project,
|
||||
ExecutionBundle.message("export.test.results.file.exists.message", filename),
|
||||
ExecutionBundle.message("export.test.results.file.exists.title"),
|
||||
Messages.getQuestionIcon()
|
||||
&& Messages.showOkCancelDialog(project,
|
||||
ExecutionBundle.message("export.test.results.file.exists.message", filename),
|
||||
ExecutionBundle.message("export.test.results.file.exists.title"),
|
||||
"Overwrite", "Cancel",
|
||||
Messages.getQuestionIcon()
|
||||
) != Messages.OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,13 @@ import java.util.NoSuchElementException;
|
||||
|
||||
/**
|
||||
* An iterator with additional ability to {@link #peek()} the current element without moving the cursor.
|
||||
* Upon creation, {@link #peek()} returns the first element, after {@link #hasNext()} returns false might throw {@link NoSuchElementException}.
|
||||
*/
|
||||
public interface PeekableIterator<T> extends Iterator<T> {
|
||||
/**
|
||||
* @return the current element.
|
||||
* Upon iterator creation should return the first element.
|
||||
* After {@link #hasNext()} returned false might throw {@link NoSuchElementException}.
|
||||
*/
|
||||
T peek() throws NoSuchElementException;
|
||||
|
||||
PeekableIterator EMPTY = new PeekableIterator() {
|
||||
|
||||
+5
-3
@@ -637,11 +637,13 @@ public class PathsVerifier<BinaryType extends FilePatch> {
|
||||
final List<FilePatch> result = new LinkedList<>();
|
||||
if (! myOverrideExisting.isEmpty()) {
|
||||
final String title = "Overwrite Existing Files";
|
||||
final Collection<FilePath> selected = AbstractVcsHelper.getInstance(myProject).selectFilePathsToProcess(
|
||||
new ArrayList<>(myOverrideExisting.keySet()), title,
|
||||
List<FilePath> files = new ArrayList<>(myOverrideExisting.keySet());
|
||||
Collection<FilePath> selected = AbstractVcsHelper.getInstance(myProject).selectFilePathsToProcess(
|
||||
files, title,
|
||||
"\nThe following files should be created by patch, but they already exist.\nDo you want to overwrite them?\n", title,
|
||||
"The following file should be created by patch, but it already exists.\nDo you want to overwrite it?\n{0}",
|
||||
VcsShowConfirmationOption.STATIC_SHOW_CONFIRMATION);
|
||||
VcsShowConfirmationOption.STATIC_SHOW_CONFIRMATION,
|
||||
"Overwrite", "Cancel");
|
||||
if (selected != null) {
|
||||
for (FilePath path : selected) {
|
||||
myOverrideExisting.remove(path);
|
||||
|
||||
+3
-1
@@ -157,7 +157,9 @@ public class CreatePatchCommitExecutor extends LocalCommitExecutor implements Pr
|
||||
WaitForProgressToShow.runOrInvokeAndWaitAboveProgress(
|
||||
() -> result[0] = Messages.showYesNoDialog(myProject, "File " + file.getName() + " (" + file.getParent() + ")" +
|
||||
" already exists.\nDo you want to overwrite it?",
|
||||
CommonBundle.getWarningTitle(), Messages.getWarningIcon()));
|
||||
CommonBundle.getWarningTitle(),
|
||||
"Overwrite", "Cancel",
|
||||
Messages.getWarningIcon()));
|
||||
if (Messages.NO == result[0]) return;
|
||||
}
|
||||
if (file.getParentFile() == null) {
|
||||
|
||||
+40
-51
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2009-2015 Bas Leijdekkers
|
||||
* Copyright 2009-2017 Bas Leijdekkers
|
||||
*
|
||||
* 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.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
@@ -49,8 +48,7 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
protected String buildErrorString(Object... infos) {
|
||||
final PsiClass aClass = (PsiClass)infos[0];
|
||||
final String className = aClass.getName();
|
||||
final PsiClass adapterClass = (PsiClass)infos[1];
|
||||
final String adapterName = adapterClass.getName();
|
||||
final String adapterName = (String)infos[1];
|
||||
return InspectionGadgetsBundle.message(
|
||||
"listener.may.use.adapter.problem.descriptor", className,
|
||||
adapterName);
|
||||
@@ -58,31 +56,28 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
|
||||
@Override
|
||||
public JComponent createOptionsPanel() {
|
||||
return new SingleCheckboxOptionsPanel(InspectionGadgetsBundle.message(
|
||||
"listener.may.use.adapter.emtpy.methods.option"), this,
|
||||
return new SingleCheckboxOptionsPanel(InspectionGadgetsBundle.message("listener.may.use.adapter.emtpy.methods.option"), this,
|
||||
"checkForEmptyMethods");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InspectionGadgetsFix buildFix(Object... infos) {
|
||||
final PsiClass adapterClass = (PsiClass)infos[1];
|
||||
return new ListenerMayUseAdapterFix(adapterClass);
|
||||
final String adapterName = (String)infos[1];
|
||||
return new ListenerMayUseAdapterFix(adapterName);
|
||||
}
|
||||
|
||||
private static class ListenerMayUseAdapterFix extends InspectionGadgetsFix {
|
||||
|
||||
private final PsiClass adapterClass;
|
||||
private final String adapterName;
|
||||
|
||||
ListenerMayUseAdapterFix(@NotNull PsiClass adapterClass) {
|
||||
this.adapterClass = adapterClass;
|
||||
ListenerMayUseAdapterFix(@NotNull String adapterName) {
|
||||
this.adapterName = adapterName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getName() {
|
||||
return InspectionGadgetsBundle.message(
|
||||
"listener.may.use.adapter.quickfix",
|
||||
adapterClass.getName());
|
||||
return InspectionGadgetsBundle.message("listener.may.use.adapter.quickfix", adapterName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -92,12 +87,9 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doFix(Project project, ProblemDescriptor descriptor)
|
||||
throws IncorrectOperationException {
|
||||
final PsiJavaCodeReferenceElement element =
|
||||
(PsiJavaCodeReferenceElement)descriptor.getPsiElement();
|
||||
final PsiClass aClass = PsiTreeUtil.getParentOfType(element,
|
||||
PsiClass.class);
|
||||
protected void doFix(Project project, ProblemDescriptor descriptor) {
|
||||
final PsiJavaCodeReferenceElement element = (PsiJavaCodeReferenceElement)descriptor.getPsiElement();
|
||||
final PsiClass aClass = PsiTreeUtil.getParentOfType(element, PsiClass.class);
|
||||
if (aClass == null) {
|
||||
return;
|
||||
}
|
||||
@@ -124,10 +116,11 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
}
|
||||
element.delete();
|
||||
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project);
|
||||
final PsiElementFactory elementFactory =
|
||||
psiFacade.getElementFactory();
|
||||
final PsiJavaCodeReferenceElement referenceElement =
|
||||
elementFactory.createClassReferenceElement(adapterClass);
|
||||
final PsiClass adapterClass = psiFacade.findClass(adapterName, aClass.getResolveScope());
|
||||
if (adapterClass == null) {
|
||||
return;
|
||||
}
|
||||
final PsiJavaCodeReferenceElement referenceElement = psiFacade.getElementFactory().createClassReferenceElement(adapterClass);
|
||||
extendsList.add(referenceElement);
|
||||
}
|
||||
}
|
||||
@@ -145,8 +138,7 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
if (extendsList == null) {
|
||||
return;
|
||||
}
|
||||
final PsiJavaCodeReferenceElement[] extendsReferences =
|
||||
extendsList.getReferenceElements();
|
||||
final PsiJavaCodeReferenceElement[] extendsReferences = extendsList.getReferenceElements();
|
||||
if (extendsReferences.length > 0) {
|
||||
return;
|
||||
}
|
||||
@@ -154,17 +146,13 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
if (implementsList == null) {
|
||||
return;
|
||||
}
|
||||
final PsiJavaCodeReferenceElement[] implementsReferences =
|
||||
implementsList.getReferenceElements();
|
||||
for (PsiJavaCodeReferenceElement implementsReference :
|
||||
implementsReferences) {
|
||||
final PsiJavaCodeReferenceElement[] implementsReferences = implementsList.getReferenceElements();
|
||||
for (PsiJavaCodeReferenceElement implementsReference : implementsReferences) {
|
||||
checkReference(aClass, implementsReference);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkReference(
|
||||
@NotNull PsiClass aClass,
|
||||
@NotNull PsiJavaCodeReferenceElement implementsReference) {
|
||||
private void checkReference(@NotNull PsiClass aClass, @NotNull PsiJavaCodeReferenceElement implementsReference) {
|
||||
final PsiElement target = implementsReference.resolve();
|
||||
if (!(target instanceof PsiClass)) {
|
||||
return;
|
||||
@@ -174,33 +162,34 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
if (className == null || !className.endsWith("Listener")) {
|
||||
return;
|
||||
}
|
||||
final String adapterName = className.substring(0,
|
||||
className.length() - 8) + "Adapter";
|
||||
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(
|
||||
aClass.getProject());
|
||||
final GlobalSearchScope scope =
|
||||
implementsClass.getResolveScope();
|
||||
final PsiClass adapterClass = psiFacade.findClass(adapterName,
|
||||
scope);
|
||||
if (adapterClass == null) {
|
||||
final PsiMethod[] interfaceMethods = implementsClass.getMethods();
|
||||
if (interfaceMethods.length < 2) {
|
||||
return;
|
||||
}
|
||||
if (aClass.equals(adapterClass)) {
|
||||
boolean allDefault = true;
|
||||
for (PsiMethod interfaceMethod : interfaceMethods) {
|
||||
if (!interfaceMethod.hasModifierProperty(PsiModifier.DEFAULT)) {
|
||||
allDefault = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (allDefault) {
|
||||
return;
|
||||
}
|
||||
if (!adapterClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
final String adapterName = className.substring(0, className.length() - 8) + "Adapter";
|
||||
final GlobalSearchScope scope = implementsClass.getResolveScope();
|
||||
final PsiClass adapterClass = JavaPsiFacade.getInstance(aClass.getProject()).findClass(adapterName, scope);
|
||||
if (adapterClass == null || adapterClass.equals(aClass) || !adapterClass.hasModifierProperty(PsiModifier.ABSTRACT) ||
|
||||
adapterClass.isDeprecated()) {
|
||||
return;
|
||||
}
|
||||
final PsiReferenceList implementsList =
|
||||
adapterClass.getImplementsList();
|
||||
final PsiReferenceList implementsList = adapterClass.getImplementsList();
|
||||
if (implementsList == null) {
|
||||
return;
|
||||
}
|
||||
final PsiJavaCodeReferenceElement[] referenceElements =
|
||||
implementsList.getReferenceElements();
|
||||
final PsiJavaCodeReferenceElement[] referenceElements = implementsList.getReferenceElements();
|
||||
boolean adapterImplementsListener = false;
|
||||
for (PsiJavaCodeReferenceElement referenceElement :
|
||||
referenceElements) {
|
||||
for (PsiJavaCodeReferenceElement referenceElement : referenceElements) {
|
||||
final PsiElement implementsTarget = referenceElement.resolve();
|
||||
if (!implementsClass.equals(implementsTarget)) {
|
||||
continue;
|
||||
@@ -229,7 +218,7 @@ public class ListenerMayUseAdapterInspection extends BaseInspection {
|
||||
return;
|
||||
}
|
||||
}
|
||||
registerError(implementsReference, aClass, adapterClass);
|
||||
registerError(implementsReference, aClass, adapterName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
class ListenerMayUseAdapter implements Listener {
|
||||
|
||||
@Override
|
||||
public void one() {
|
||||
}
|
||||
}
|
||||
class ListenerMayUseAdapter2 implements MyListener {
|
||||
|
||||
@Override
|
||||
public void one() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void two() {
|
||||
|
||||
}
|
||||
}
|
||||
class ListenerMayUseAdapter3 implements <warning descr="Class 'ListenerMayUseAdapter3' may extend 'GoodAdapter' instead of implementing 'GoodListener'">GoodListener</warning> {
|
||||
@Override
|
||||
public void one() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void two() {
|
||||
}
|
||||
}
|
||||
interface Listener {
|
||||
default void one() {}
|
||||
default void two() {}
|
||||
}
|
||||
abstract class Adapter implements Listener {
|
||||
@Override
|
||||
public void one() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void two() {
|
||||
}
|
||||
}
|
||||
interface MyListener {
|
||||
void one();
|
||||
void two();
|
||||
}
|
||||
@Deprecated
|
||||
abstract class MyAdapter implements MyListener {
|
||||
@Override
|
||||
public void one() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void two() {
|
||||
}
|
||||
}
|
||||
interface GoodListener {
|
||||
void one();
|
||||
void two();
|
||||
}
|
||||
abstract class GoodAdapter implements GoodListener {
|
||||
@Override
|
||||
public void one() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void two() {
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* 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.
|
||||
* 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.siyeh.ig.classlayout;
|
||||
|
||||
import com.intellij.codeInspection.InspectionProfileEntry;
|
||||
import com.siyeh.ig.LightInspectionTestCase;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Bas Leijdekkers
|
||||
*/
|
||||
public class ListenerMayUseAdapterInspectionTest extends LightInspectionTestCase {
|
||||
|
||||
public void testListenerMayUseAdapter() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected InspectionProfileEntry getInspection() {
|
||||
return new ListenerMayUseAdapterInspection();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user