Skip to content

Commit b56d37d

Browse files
committed
Added mutuallyExclusive logic
1 parent 235773b commit b56d37d

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,12 @@ public class ManagedBeanConstants {
3636
public static final String DIAGNOSTIC_CODE_INVALID_INJECT_PARAM = "RemoveInjectOrConflictedAnnotations";
3737
public static final String DIAGNOSTIC_CODE_INVALID_PRODUCES_PARAM = "RemoveProducesOrConflictedAnnotations";
3838
public static final String DIAGNOSTIC_CODE_INVALID_DISPOSES_PARAM = "RemoveDisposesOrConflictedAnnotations";
39+
public static final String DIAGNOSTIC_INJECT_MULTIPLE_METHOD_PARAM = "InvalidInjectAnnotationOnMultipleMethodParams";
3940

4041
public static final String DIAGNOSTIC_CODE_REDUNDANT_DISPOSES = "RemoveExtraDisposes";
41-
42+
//Added as part of fix that adds two quick fixes which are mutually exclusive issue #540
43+
public static final String[] INVALID_DISPOSER_FQ_PARAMS = { DISPOSES_FQ_NAME };
44+
public static final String[] INVALID_DISPOSER_FQ_CONFLICTED_PARAMS = { OBSERVES_FQ_NAME, OBSERVES_ASYNC_FQ_NAME };
4245
public static final String[] INVALID_INJECT_PARAMS_FQ = { DISPOSES_FQ_NAME, OBSERVES_FQ_NAME,
4346
OBSERVES_ASYNC_FQ_NAME };
4447

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

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@
1313

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

16-
import java.util.ArrayList;
17-
import java.util.List;
18-
import java.util.Set;
19-
import java.util.TreeSet;
16+
import java.util.*;
2017
import java.util.stream.Stream;
2118

2219
import com.intellij.psi.*;
@@ -30,6 +27,7 @@
3027

3128
import static io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.JDTUtils.getSimpleName;
3229
import static io.openliberty.tools.intellij.lsp4jakarta.lsp4ij.cdi.ManagedBeanConstants.*;
30+
import static org.eclipse.lsp4jakarta.jdt.internal.cdi.Constants.INVALID_INITIALIZER_PARAMS_FQ;
3331

3432
public class ManagedBeanDiagnosticsCollector extends AbstractDiagnosticsCollector {
3533

@@ -234,7 +232,7 @@ else if (INJECT_FQ_NAME.equals(annotation))
234232
if (isManagedBean) {
235233
boolean isClassGeneric = type.getTypeParameters().length != 0;
236234
boolean isDependent = managedBeanAnnotations.stream()
237-
.anyMatch(annotation -> DEPENDENT_FQ_NAME.equals(annotation));
235+
.anyMatch(annotation -> DEPENDENT_FQ_NAME.equals(annotation));
238236

239237
if (isClassGeneric && !isDependent) {
240238
diagnostics.add(createDiagnostic(type, unit, Messages.getMessage("ManagedBeanGenericType"),
@@ -313,6 +311,8 @@ else if (INJECT_FQ_NAME.equals(annotation))
313311

314312
private void invalidParamsCheck(PsiJavaFile unit, List<Diagnostic> diagnostics, PsiClass type, String target,
315313
String diagnosticCode) {
314+
Set<String> paramScopesSet;
315+
boolean mutuallyExclusive = false;
316316
for (PsiMethod method : type.getMethods()) {
317317
PsiAnnotation targetAnnotation = null;
318318

@@ -335,20 +335,29 @@ private void invalidParamsCheck(PsiJavaFile unit, List<Diagnostic> diagnostics,
335335
for (String annotation : paramScopes) {
336336
invalidAnnotations.add("@" + getSimpleName(annotation));
337337
}
338+
paramScopesSet = new LinkedHashSet<>(paramScopes);
339+
if (paramScopesSet.size() == INVALID_INITIALIZER_PARAMS_FQ.length && paramScopesSet.equals(Set.of(INVALID_INITIALIZER_PARAMS_FQ))) {
340+
mutuallyExclusive = true;
341+
diagnosticCode = DIAGNOSTIC_INJECT_MULTIPLE_METHOD_PARAM;
342+
}
338343
}
339344

340345
if (!invalidAnnotations.isEmpty()) {
341346
String label = PRODUCES_FQ_NAME.equals(target) ?
342347
createInvalidProducesLabel(invalidAnnotations) :
343-
createInvalidInjectLabel(invalidAnnotations);
348+
createInvalidInjectLabel(invalidAnnotations, mutuallyExclusive);
344349
diagnostics.add(createDiagnostic(method, unit, label, diagnosticCode, null, DiagnosticSeverity.Error));
345350
}
346351

347352
}
348353
}
349354

350-
private String createInvalidInjectLabel(Set<String> invalidAnnotations) {
351-
return Messages.getMessage("ManagedBeanInvalidInject", String.join(", ", invalidAnnotations)); // assuming comma delimited list is ok
355+
private String createInvalidInjectLabel(Set<String> invalidAnnotations, boolean mutuallyExclusive) {
356+
if (mutuallyExclusive) {
357+
return Messages.getMessage("ManagedBeanInvalidInject", String.join(", ", invalidAnnotations)); // assuming comma delimited list is ok
358+
} else {
359+
return Messages.getMessage("ManagedBeanInvalidInject", String.join(", ", invalidAnnotations)); // assuming comma delimited list is ok
360+
}
352361
}
353362

354363
private String createInvalidProducesLabel(Set<String> invalidAnnotations) {

0 commit comments

Comments
 (0)