private static boolean isSilentlyIgnored(SymbolMetadata symbolMetadata, String annotation) { List<SymbolMetadata.AnnotationValue> annotationValues = symbolMetadata.valuesForAnnotation(annotation); return annotationValues != null && annotationValues.isEmpty(); }
private static boolean isSilentlyIgnored(SymbolMetadata symbolMetadata, String annotation) { List<SymbolMetadata.AnnotationValue> annotationValues = symbolMetadata.valuesForAnnotation(annotation); return annotationValues != null && annotationValues.isEmpty(); }
@CheckForNull private static String getPropagation(Symbol symbol, @Nullable String inheritedPropagation) { String defaultValue = inheritedPropagation != null ? inheritedPropagation : REQUIRED; List<AnnotationValue> values = symbol.metadata().valuesForAnnotation(SPRING_TRANSACTIONAL_ANNOTATION); if (values != null) { return getAnnotationAttributeAsString(values, "propagation", defaultValue); } else { values = symbol.metadata().valuesForAnnotation(JAVAX_TRANSACTIONAL_ANNOTATION); if (values != null) { return getAnnotationAttributeAsString(values, "value", defaultValue); } else { return inheritedPropagation; } } }
@CheckForNull private static String getPropagation(Symbol symbol, @Nullable String inheritedPropagation) { String defaultValue = inheritedPropagation != null ? inheritedPropagation : REQUIRED; List<AnnotationValue> values = symbol.metadata().valuesForAnnotation(SPRING_TRANSACTIONAL_ANNOTATION); if (values != null) { return getAnnotationAttributeAsString(values, "propagation", defaultValue); } else { values = symbol.metadata().valuesForAnnotation(JAVAX_TRANSACTIONAL_ANNOTATION); if (values != null) { return getAnnotationAttributeAsString(values, "value", defaultValue); } else { return inheritedPropagation; } } }
private static boolean checkRunWith(Symbol.TypeSymbol symbol, String... runnerClasses) { List<SymbolMetadata.AnnotationValue> annotationValues = symbol.metadata().valuesForAnnotation("org.junit.runner.RunWith"); if (annotationValues != null && annotationValues.size() == 1) { Object value = annotationValues.get(0).value(); if (value instanceof MemberSelectExpressionTree) { String runnerParam = ExpressionsHelper.concatenate((ExpressionTree) value); for (String runnerClass : runnerClasses) { if (runnerParam.endsWith(runnerClass)) { return true; } } } } return false; }
private static boolean checkRunWith(Symbol.TypeSymbol symbol, String... runnerClasses) { List<SymbolMetadata.AnnotationValue> annotationValues = symbol.metadata().valuesForAnnotation("org.junit.runner.RunWith"); if (annotationValues != null && annotationValues.size() == 1) { Object value = annotationValues.get(0).value(); if (value instanceof MemberSelectExpressionTree) { String runnerParam = ExpressionsHelper.concatenate((ExpressionTree) value); for (String runnerClass : runnerClasses) { if (runnerParam.endsWith(runnerClass)) { return true; } } } } return false; }
private static boolean expectAssertion(MethodTree methodTree) { List<SymbolMetadata.AnnotationValue> annotationValues = methodTree.symbol().metadata().valuesForAnnotation("org.junit.Test"); if (annotationValues != null) { for (SymbolMetadata.AnnotationValue annotationValue : annotationValues) { if ("expected".equals(annotationValue.name())) { return true; } } } return false; }
private static boolean isNullableThroughNonNull(Symbol symbol) { List<SymbolMetadata.AnnotationValue> valuesForAnnotation = symbol.metadata().valuesForAnnotation("javax.annotation.Nonnull"); if (valuesForAnnotation == null || valuesForAnnotation.isEmpty()) { return false; } return checkAnnotationParameter(valuesForAnnotation, "when", "MAYBE") || checkAnnotationParameter(valuesForAnnotation, "when", "UNKNOWN"); }
private static boolean isNullableThroughNonNull(Symbol symbol) { List<SymbolMetadata.AnnotationValue> valuesForAnnotation = symbol.metadata().valuesForAnnotation("javax.annotation.Nonnull"); if (valuesForAnnotation == null || valuesForAnnotation.isEmpty()) { return false; } return checkAnnotationParameter(valuesForAnnotation, "when", "MAYBE") || checkAnnotationParameter(valuesForAnnotation, "when", "UNKNOWN"); }
private static boolean expectAssertion(MethodTree methodTree) { List<SymbolMetadata.AnnotationValue> annotationValues = methodTree.symbol().metadata().valuesForAnnotation("org.junit.Test"); if (annotationValues != null) { for (SymbolMetadata.AnnotationValue annotationValue : annotationValues) { if ("expected".equals(annotationValue.name())) { return true; } } } return false; }
private static boolean isNotRuntimeAnnotation(Type symbolType) { List<SymbolMetadata.AnnotationValue> valuesFor = symbolType.symbol().metadata().valuesForAnnotation("java.lang.annotation.Retention"); // default policy is CLASS if (valuesFor == null) { return true; } String retentionValue = getRetentionValue(valuesFor.get(0).value()); return !"RUNTIME".equals(retentionValue); }
private static boolean isScopeSingleton(SymbolMetadata clazzMeta) { List<AnnotationValue> values = clazzMeta.valuesForAnnotation(SCOPE_ANNOTATION_FQN); for (AnnotationValue annotationValue : values) { if (("value".equals(annotationValue.name()) || "scopeName".equals(annotationValue.name())) && annotationValue.value() instanceof LiteralTree && !"\"singleton\"".equals(((LiteralTree) annotationValue.value()).value())) { return false; } } return true; }
private boolean isNotRuntimeAnnotation(Type symbolType) { List<SymbolMetadata.AnnotationValue> valuesFor = symbolType.symbol().metadata().valuesForAnnotation("java.lang.annotation.Retention"); // default policy is CLASS if (valuesFor == null) { return true; } String retentionValue = getRetentionValue(valuesFor.get(0).value()); return !"RUNTIME".equals(retentionValue); }
private static boolean isNotRuntimeAnnotation(Type symbolType) { List<SymbolMetadata.AnnotationValue> valuesFor = symbolType.symbol().metadata().valuesForAnnotation("java.lang.annotation.Retention"); // default policy is CLASS if (valuesFor == null) { return true; } String retentionValue = getRetentionValue(valuesFor.get(0).value()); return !"RUNTIME".equals(retentionValue); }
private static boolean isScopeSingleton(SymbolMetadata clazzMeta) { List<AnnotationValue> values = clazzMeta.valuesForAnnotation(SCOPE_ANNOTATION_FQN); for (AnnotationValue annotationValue : values) { if (("value".equals(annotationValue.name()) || "scopeName".equals(annotationValue.name())) && annotationValue.value() instanceof LiteralTree && !"\"singleton\"".equals(((LiteralTree) annotationValue.value()).value())) { return false; } } return true; }
private static boolean inheritRequestMethod(Symbol.TypeSymbol symbol) { List<SymbolMetadata.AnnotationValue> annotationValues = symbol.metadata().valuesForAnnotation(REQUEST_MAPPING_CLASS); if (annotationValues != null && annotationValues.stream().anyMatch(value -> REQUEST_METHOD.equals(value.name()))) { return true; } Type superClass = symbol.superClass(); if (superClass != null && inheritRequestMethod(superClass.symbol())) { return true; } for (Type type : symbol.interfaces()) { if (inheritRequestMethod(type.symbol())) { return true; } } return false; } }
private static boolean inheritRequestMethod(Symbol.TypeSymbol symbol) { List<SymbolMetadata.AnnotationValue> annotationValues = symbol.metadata().valuesForAnnotation(REQUEST_MAPPING_CLASS); if (annotationValues != null && annotationValues.stream().anyMatch(value -> REQUEST_METHOD.equals(value.name()))) { return true; } Type superClass = symbol.superClass(); if (superClass != null && inheritRequestMethod(superClass.symbol())) { return true; } for (Type type : symbol.interfaces()) { if (inheritRequestMethod(type.symbol())) { return true; } } return false; } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; if (!hasSemantic() || classTree.simpleName() == null) { return; } String classPackageName = packageNameOf(classTree.symbol()); SymbolMetadata classSymbolMetadata = classTree.symbol().metadata(); List<SymbolMetadata.AnnotationValue> componentScanValues = classSymbolMetadata.valuesForAnnotation(COMPONENT_SCAN_ANNOTATION); if (componentScanValues != null) { componentScanValues.forEach(this::addToScannedPackages); } else if (hasAnnotation(classSymbolMetadata, SPRING_BOOT_APP_ANNOTATION)) { packagesScannedBySpring.add(classPackageName); } else if (hasAnnotation(classSymbolMetadata, SPRING_BEAN_ANNOTATIONS)) { addMessageToMap(classPackageName, classTree.simpleName()); } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; if (!hasSemantic() || classTree.simpleName() == null) { return; } String classPackageName = packageNameOf(classTree.symbol()); SymbolMetadata classSymbolMetadata = classTree.symbol().metadata(); List<SymbolMetadata.AnnotationValue> componentScanValues = classSymbolMetadata.valuesForAnnotation(COMPONENT_SCAN_ANNOTATION); if (componentScanValues != null) { componentScanValues.forEach(this::addToScannedPackages); } else if (hasAnnotation(classSymbolMetadata, SPRING_BOOT_APP_ANNOTATION)) { packagesScannedBySpring.add(classPackageName); } else if (hasAnnotation(classSymbolMetadata, SPRING_BEAN_ANNOTATIONS)) { addMessageToMap(classPackageName, classTree.simpleName()); } }