|
12 | 12 | import com.github.javaparser.ast.type.TypeParameter; |
13 | 13 | import com.github.javaparser.ast.visitor.VoidVisitorAdapter; |
14 | 14 | import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration; |
| 15 | +import com.github.javaparser.resolution.declarations.ResolvedEnumDeclaration; |
15 | 16 | import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration; |
16 | 17 | import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration; |
17 | 18 | import com.github.javaparser.resolution.types.ResolvedReferenceType; |
@@ -294,7 +295,7 @@ public void visit(ClassOrInterfaceDeclaration n, Object arg) |
294 | 295 |
|
295 | 296 | ResolvedReferenceTypeDeclaration resolve = n.resolve(); |
296 | 297 | this.classFileContainer.putClassReference(resolve.getName(), |
297 | | - new ClassReferenceLocation(getOwner(classFileContainer), |
| 298 | + new ClassReferenceLocation(resolve.getName(), |
298 | 299 | resolve.getPackageName(), "", "declaration", value.line, value.columnStart, value.columnEnd + 1)); |
299 | 300 | } |
300 | 301 | catch (Exception e) |
@@ -343,9 +344,22 @@ public void visit(ClassOrInterfaceType n, Object arg) |
343 | 344 | if (qualifiedName.contains(".")) |
344 | 345 | packagePath = qualifiedName.substring(0, qualifiedName.lastIndexOf('.')).replace('.', '/'); |
345 | 346 |
|
346 | | - this.classFileContainer.putClassReference(classValue.name, |
347 | | - new ClassReferenceLocation(getOwner(classFileContainer), |
348 | | - packagePath, "", "reference", classValue.line, classValue.columnStart, classValue.columnEnd + 1)); |
| 347 | + ClassOrInterfaceType classScope = n.getScope().orElse(null); |
| 348 | + if (classScope == null) |
| 349 | + { |
| 350 | + this.classFileContainer.putClassReference(classValue.name, |
| 351 | + new ClassReferenceLocation(classValue.name, |
| 352 | + packagePath, "", "reference", classValue.line, classValue.columnStart, |
| 353 | + classValue.columnEnd + 1)); |
| 354 | + } |
| 355 | + else |
| 356 | + { |
| 357 | + packagePath = packagePath.substring(0, packagePath.lastIndexOf("/")); |
| 358 | + |
| 359 | + this.classFileContainer.putClassReference(classValue.name, |
| 360 | + new ClassReferenceLocation(classScope.getNameAsString(), packagePath, "", "reference", |
| 361 | + classValue.line, classValue.columnStart, classValue.columnEnd + 1)); |
| 362 | + } |
349 | 363 | } |
350 | 364 | catch (Exception e) |
351 | 365 | { |
@@ -459,6 +473,19 @@ public void visit(DoStmt n, Object arg) |
459 | 473 | public void visit(EnumDeclaration n, Object arg) |
460 | 474 | { |
461 | 475 | super.visit(n, arg); |
| 476 | + |
| 477 | + ResolvedEnumDeclaration resolve = n.resolve(); |
| 478 | + |
| 479 | + Range enumClassNameRange = n.getName().getRange().orElse(null); |
| 480 | + if (enumClassNameRange == null) |
| 481 | + return; |
| 482 | + |
| 483 | + Value enumClassValue = new Value(n.getName(), enumClassNameRange); |
| 484 | + |
| 485 | + this.classFileContainer.putClassReference(enumClassValue.name, |
| 486 | + new ClassReferenceLocation(getOwner(classFileContainer), resolve.getPackageName(), "", "declaration", |
| 487 | + enumClassValue.line, enumClassValue.columnStart, enumClassValue.columnEnd + 1)); |
| 488 | + |
462 | 489 | n.getEntries().forEach(entry -> |
463 | 490 | { |
464 | 491 | SimpleName simpleName = entry.getName(); |
|
0 commit comments