Skip to content

Commit 0178ba9

Browse files
Merge pull request #1047 from vaisakhkannan/#767-FIx-ProcessCanceledException
Fix usage of ProcessCanceledException to support 2024.2
2 parents cdbd100 + c93a8dd commit 0178ba9

31 files changed

+258
-441
lines changed
Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (c) 2022 IBM Corporation, Lidia Ataupillco Ramos and others.
1+
/* Copyright (c) 2022, 2024 IBM Corporation, Lidia Ataupillco Ramos and others.
22
*
33
* This program and the accompanying materials are made available under the
44
* terms of the Eclipse Public License v. 2.0 which is available at
@@ -12,14 +12,14 @@
1212

1313
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij;
1414

15-
import com.intellij.openapi.progress.ProcessCanceledException;
16-
import com.intellij.openapi.project.IndexNotReadyException;
1715
import com.intellij.psi.PsiClass;
16+
import io.openliberty.tools.intellij.util.ExceptionUtil;
1817

1918
import java.util.Arrays;
2019
import java.util.List;
2120
import java.util.Set;
22-
import java.util.concurrent.CancellationException;
21+
import java.util.logging.Level;
22+
import java.util.logging.Logger;
2323
import java.util.stream.Collectors;
2424
import java.util.Collections;
2525

@@ -32,16 +32,20 @@
3232
* @return list of recognised defining annotations applied to a class
3333
*/
3434
public class AnnotationUtil {
35+
private static final Logger LOGGER = Logger.getLogger(AnnotationUtil.class.getName());
3536
public static List<String> getScopeAnnotations(PsiClass type, Set<String> scopes) {
36-
try {
37-
// Construct a stream of only the annotations applied to the type that are also
38-
// recognised annotations found in scopes.
39-
return Arrays.stream(type.getAnnotations()).map(annotation -> annotation.getNameReferenceElement().getQualifiedName())
40-
.filter(scopes::contains).distinct().collect(Collectors.toList());
41-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
42-
throw e;
43-
} catch (Exception e) {
44-
return Collections.<String>emptyList();
45-
}
37+
return ExceptionUtil.executeWithExceptionHandling(
38+
// Construct a stream of only the annotations applied to the type that are also
39+
// recognised annotations found in scopes.
40+
() -> Arrays.stream(type.getAnnotations())
41+
.map(annotation -> annotation.getNameReferenceElement().getQualifiedName())
42+
.filter(scopes::contains)
43+
.distinct()
44+
.collect(Collectors.toList()),
45+
e -> {
46+
LOGGER.log(Level.WARNING, "Error while calling getScopeAnnotations", e);
47+
return Collections.<String>emptyList();
48+
}
49+
);
4650
}
4751
}

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/annotations/PostConstructReturnTypeQuickFix.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@
1212
*******************************************************************************/
1313
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.annotations;
1414

15-
import com.intellij.openapi.progress.ProcessCanceledException;
16-
import com.intellij.openapi.project.IndexNotReadyException;
1715
import com.intellij.psi.PsiElement;
1816
import com.intellij.psi.PsiMethod;
19-
import com.intellij.psi.PsiPrimitiveType;
2017
import com.intellij.psi.PsiTypes;
2118
import com.intellij.psi.util.PsiTreeUtil;
2219
import io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.JDTUtils;
@@ -26,14 +23,12 @@
2623
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionContext;
2724
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
2825
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ChangeCorrectionProposal;
26+
import io.openliberty.tools.intellij.util.ExceptionUtil;
2927
import org.eclipse.lsp4j.CodeAction;
3028
import org.eclipse.lsp4j.Diagnostic;
31-
import org.eclipse.lsp4j.WorkspaceEdit;
3229

3330
import java.util.ArrayList;
3431
import java.util.List;
35-
import java.util.concurrent.CancellationException;
36-
import java.util.logging.Level;
3732
import java.util.logging.Logger;
3833

3934
/**
@@ -74,14 +69,8 @@ public CodeAction resolveCodeAction(JavaCodeActionResolveContext context) {
7469
assert parentType != null;
7570
ChangeCorrectionProposal proposal = new ModifyReturnTypeProposal(TITLE_MESSAGE, context.getSource().getCompilationUnit(),
7671
context.getASTRoot(), parentType, 0, PsiTypes.voidType());
77-
try {
78-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
79-
toResolve.setEdit(we);
80-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
81-
throw e;
82-
} catch (Exception e) {
83-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action to change return type to void", e);
84-
}
72+
73+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action to change return type to void");
8574
return toResolve;
8675
}
8776

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/beanvalidation/BeanValidationQuickFix.java

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
*******************************************************************************/
1313
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.beanvalidation;
1414

15-
import com.intellij.openapi.progress.ProcessCanceledException;
16-
import com.intellij.openapi.project.IndexNotReadyException;
1715
import com.intellij.psi.*;
1816
import com.intellij.psi.util.PsiTreeUtil;
1917
import io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.JDTUtils;
@@ -23,14 +21,12 @@
2321
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.IJavaCodeActionParticipant;
2422
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionContext;
2523
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
24+
import io.openliberty.tools.intellij.util.ExceptionUtil;
2625
import org.eclipse.lsp4j.CodeAction;
2726
import org.eclipse.lsp4j.Diagnostic;
28-
import org.eclipse.lsp4j.WorkspaceEdit;
2927
import org.eclipse.lsp4mp.commons.codeaction.CodeActionResolveData;
3028

3129
import java.util.*;
32-
import java.util.concurrent.CancellationException;
33-
import java.util.logging.Level;
3430
import java.util.logging.Logger;
3531

3632
/**
@@ -111,14 +107,7 @@ private void resolveRemoveConstraintAnnotationsCodeAction(JavaCodeActionResolveC
111107
final RemoveAnnotationsProposal proposal = new RemoveAnnotationsProposal(name, context.getSource().getCompilationUnit(),
112108
context.getASTRoot(), parentType, 0, Collections.singletonList(annotationToRemove.get()), isFormatRequired);
113109

114-
try {
115-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
116-
toResolve.setEdit(we);
117-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
118-
throw e;
119-
} catch (Exception e) {
120-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action to remove constraint annotation", e);
121-
}
110+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action to remove constraint annotation");
122111
}
123112
}
124113
}
@@ -134,14 +123,7 @@ private void resolveStaticModifierCodeAction(JavaCodeActionResolveContext contex
134123
context.getASTRoot(), parentType, 0, modifierListOwner.getModifierList(), Collections.emptyList(),
135124
Collections.singletonList("static"));
136125

137-
try {
138-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
139-
toResolve.setEdit(we);
140-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
141-
throw e;
142-
} catch (Exception e) {
143-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action to remove static modifier", e);
144-
}
126+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action to remove static modifier");
145127
}
146128

147129
private void removeStaticModifierCodeActions(Diagnostic diagnostic, JavaCodeActionContext context,

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/cdi/ManagedBeanNoArgConstructorQuickFix.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.cdi;
1515

16-
import com.intellij.openapi.progress.ProcessCanceledException;
17-
import com.intellij.openapi.project.IndexNotReadyException;
1816
import com.intellij.psi.PsiClass;
1917
import com.intellij.psi.PsiElement;
2018
import com.intellij.psi.util.PsiTreeUtil;
@@ -25,15 +23,13 @@
2523
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionContext;
2624
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
2725
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ChangeCorrectionProposal;
26+
import io.openliberty.tools.intellij.util.ExceptionUtil;
2827
import org.eclipse.lsp4j.CodeAction;
2928
import org.eclipse.lsp4j.Diagnostic;
30-
import org.eclipse.lsp4j.WorkspaceEdit;
3129

3230
import java.util.ArrayList;
3331
import java.util.Collections;
3432
import java.util.List;
35-
import java.util.concurrent.CancellationException;
36-
import java.util.logging.Level;
3733
import java.util.logging.Logger;
3834

3935
/**
@@ -74,14 +70,7 @@ public CodeAction resolveCodeAction(JavaCodeActionResolveContext context) {
7470
context.getSource().getCompilationUnit(), context.getASTRoot(), parentType, 0,
7571
constructorName.equals(Messages.getMessage("AddProtectedConstructor")) ? "protected" : "public");
7672

77-
try {
78-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
79-
toResolve.setEdit(we);
80-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
81-
throw e;
82-
} catch (Exception e) {
83-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code actions to add constructors", e);
84-
}
73+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code actions to add constructors");
8574

8675
return toResolve;
8776
}

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/cdi/ManagedBeanQuickFix.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515

1616
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.cdi;
1717

18-
import com.intellij.openapi.progress.ProcessCanceledException;
19-
import com.intellij.openapi.project.IndexNotReadyException;
2018
import com.intellij.psi.PsiElement;
2119
import com.intellij.psi.PsiModifierListOwner;
2220
import io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.JDTUtils;
@@ -26,14 +24,12 @@
2624
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
2725
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ChangeCorrectionProposal;
2826
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ReplaceAnnotationProposal;
27+
import io.openliberty.tools.intellij.util.ExceptionUtil;
2928
import org.eclipse.lsp4j.CodeAction;
3029
import org.eclipse.lsp4j.Diagnostic;
31-
import org.eclipse.lsp4j.WorkspaceEdit;
3230

3331
import java.util.ArrayList;
3432
import java.util.List;
35-
import java.util.concurrent.CancellationException;
36-
import java.util.logging.Level;
3733
import java.util.logging.Logger;
3834

3935
import static io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.cdi.ManagedBeanConstants.SCOPE_FQ_NAMES;
@@ -74,14 +70,7 @@ public CodeAction resolveCodeAction(JavaCodeActionResolveContext context) {
7470
context.getASTRoot(), parentType, 0, ADD_ANNOTATION, context.getSource().getCompilationUnit(),
7571
REMOVE_ANNOTATION_NAMES);
7672

77-
try {
78-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
79-
toResolve.setEdit(we);
80-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
81-
throw e;
82-
} catch (Exception e) {
83-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action.", e);
84-
}
73+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action");
8574
return toResolve;
8675
}
8776

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/codeAction/proposal/quickfix/InsertAnnotationMissingQuickFix.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
*******************************************************************************/
1515
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.codeAction.proposal.quickfix;
1616

17-
import com.intellij.openapi.progress.ProcessCanceledException;
18-
import com.intellij.openapi.project.IndexNotReadyException;
1917
import com.intellij.psi.*;
2018
import com.intellij.psi.util.PsiTreeUtil;
2119
import io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.JDTUtils;
@@ -25,13 +23,11 @@
2523
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
2624
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ChangeCorrectionProposal;
2725
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.InsertAnnotationProposal;
26+
import io.openliberty.tools.intellij.util.ExceptionUtil;
2827
import org.eclipse.lsp4j.CodeAction;
2928
import org.eclipse.lsp4j.Diagnostic;
30-
import org.eclipse.lsp4j.WorkspaceEdit;
3129

3230
import java.util.*;
33-
import java.util.concurrent.CancellationException;
34-
import java.util.logging.Level;
3531
import java.util.logging.Logger;
3632

3733
/**
@@ -90,14 +86,8 @@ public CodeAction resolveCodeAction(JavaCodeActionResolveContext context) {
9086
ChangeCorrectionProposal proposal = new InsertAnnotationProposal(name, context.getCompilationUnit(),
9187
context.getASTRoot(), parentType, 0, context.getSource().getCompilationUnit(),
9288
annotations);
93-
try {
94-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
95-
toResolve.setEdit(we);
96-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
97-
throw e;
98-
} catch (Exception e) {
99-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action.", e);
100-
}
89+
90+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action.");
10191
return toResolve;
10292
}
10393

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/codeAction/proposal/quickfix/InsertAnnotationQuickFix.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
*******************************************************************************/
1414
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.codeAction.proposal.quickfix;
1515

16-
import com.intellij.openapi.progress.ProcessCanceledException;
17-
import com.intellij.openapi.project.IndexNotReadyException;
1816
import com.intellij.psi.PsiAnnotation;
1917
import com.intellij.psi.PsiClass;
2018
import com.intellij.psi.PsiElement;
@@ -27,15 +25,13 @@
2725
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionContext;
2826
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
2927
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ChangeCorrectionProposal;
28+
import io.openliberty.tools.intellij.util.ExceptionUtil;
3029
import org.eclipse.lsp4j.CodeAction;
3130
import org.eclipse.lsp4j.Diagnostic;
32-
import org.eclipse.lsp4j.WorkspaceEdit;
3331

3432
import java.util.ArrayList;
3533
import java.util.Arrays;
3634
import java.util.List;
37-
import java.util.concurrent.CancellationException;
38-
import java.util.logging.Level;
3935
import java.util.logging.Logger;
4036

4137
/**
@@ -93,14 +89,8 @@ public CodeAction resolveCodeAction(JavaCodeActionResolveContext context) {
9389
String label = getLabel(this.annotation, attributes);
9490
ChangeCorrectionProposal proposal = new ModifyAnnotationProposal(label, context.getSource().getCompilationUnit(),
9591
context.getASTRoot(), binding, annotationNode, 0, this.annotation, Arrays.asList(attributes));
96-
try {
97-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
98-
toResolve.setEdit(we);
99-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
100-
throw e;
101-
} catch (Exception e) {
102-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action " + label, e);
103-
}
92+
93+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action " + label);
10494
return toResolve;
10595
}
10696

src/main/java/io/openliberty/tools/intellij/lsp4jakarta/lsp4ij/codeAction/proposal/quickfix/RemoveAnnotationConflictQuickFix.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
*******************************************************************************/
1515
package io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.codeAction.proposal.quickfix;
1616

17-
import com.intellij.openapi.progress.ProcessCanceledException;
18-
import com.intellij.openapi.project.IndexNotReadyException;
1917
import com.intellij.openapi.project.Project;
2018
import com.intellij.psi.PsiClass;
2119
import com.intellij.psi.PsiElement;
@@ -30,9 +28,9 @@
3028
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionContext;
3129
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.codeaction.JavaCodeActionResolveContext;
3230
import io.openliberty.tools.intellij.lsp4mp4ij.psi.core.java.corrections.proposal.ChangeCorrectionProposal;
31+
import io.openliberty.tools.intellij.util.ExceptionUtil;
3332
import org.eclipse.lsp4j.CodeAction;
3433
import org.eclipse.lsp4j.Diagnostic;
35-
import org.eclipse.lsp4j.WorkspaceEdit;
3634
import org.eclipse.lsp4mp.commons.codeaction.CodeActionResolveData;
3735

3836
import java.util.HashMap;
@@ -41,8 +39,6 @@
4139
import java.util.Arrays;
4240
import java.util.Collections;
4341
import java.util.List;
44-
import java.util.concurrent.CancellationException;
45-
import java.util.logging.Level;
4642
import java.util.logging.Logger;
4743
import java.util.stream.Collectors;
4844

@@ -117,14 +113,7 @@ public CodeAction resolveCodeAction(JavaCodeActionResolveContext context) {
117113
ChangeCorrectionProposal proposal = new DeleteAnnotationProposal(name, context.getSource().getCompilationUnit(),
118114
context.getASTRoot(), parentType, 0, declaringNode, resolveAnnotationsArray);
119115

120-
try {
121-
WorkspaceEdit we = context.convertToWorkspaceEdit(proposal);
122-
toResolve.setEdit(we);
123-
} catch (IndexNotReadyException | ProcessCanceledException | CancellationException e) {
124-
throw e;
125-
} catch (Exception e) {
126-
LOGGER.log(Level.WARNING, "Unable to create workspace edit for code action to remove annotation", e);
127-
}
116+
ExceptionUtil.executeWithWorkspaceEditHandling(context, proposal, toResolve, LOGGER, "Unable to create workspace edit for code action to remove annotation");
128117
return toResolve;
129118
}
130119

0 commit comments

Comments
 (0)