Skip to content

Commit f46c99c

Browse files
authored
Micronaut Data finder completion should work for record entities. (#4053)
1 parent 5978524 commit f46c99c

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

enterprise/micronaut/src/org/netbeans/modules/micronaut/completion/MicronautDataCompletionTask.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import javax.lang.model.element.Element;
4242
import javax.lang.model.element.ExecutableElement;
4343
import javax.lang.model.element.Modifier;
44+
import javax.lang.model.element.RecordComponentElement;
4445
import javax.lang.model.element.TypeElement;
4546
import javax.lang.model.type.DeclaredType;
4647
import javax.lang.model.type.TypeKind;
@@ -248,8 +249,21 @@ private <T> void resolveFinderMethods(CompilationController cc, TreePath path, S
248249
Map<String, String> prop2Types = new HashMap<>();
249250
for (ExecutableElement method : ElementFilter.methodsIn(entity.getEnclosedElements())) {
250251
String methodName = method.getSimpleName().toString();
251-
if (methodName.startsWith(GET) && method.getParameters().isEmpty()) {
252-
prop2Types.put(methodName.substring(GET.length()), tu.getTypeName(method.getReturnType()).toString());
252+
if (methodName.startsWith(GET) && methodName.length() > 3 && method.getParameters().isEmpty()) {
253+
TypeMirror type = method.getReturnType();
254+
if (type.getKind() != TypeKind.ERROR) {
255+
methodName = methodName.substring(GET.length());
256+
methodName = methodName.substring(0, 1).toUpperCase(Locale.ENGLISH) + methodName.substring(1);
257+
prop2Types.put(methodName, tu.getTypeName(type).toString());
258+
}
259+
}
260+
}
261+
for (RecordComponentElement recordComponent : ElementFilter.recordComponentsIn(entity.getEnclosedElements())) {
262+
TypeMirror type = recordComponent.asType();
263+
if (type.getKind() != TypeKind.ERROR) {
264+
String name = recordComponent.getSimpleName().toString();
265+
name = name.substring(0, 1).toUpperCase(Locale.ENGLISH) + name.substring(1);
266+
prop2Types.put(name, tu.getTypeName(type).toString());
253267
}
254268
}
255269
addFindByCompletions(entity, prop2Types, prefix, full, consumer);

0 commit comments

Comments
 (0)