Skip to content

Commit fa9c7fb

Browse files
fix: crash on encountering default package classes
1 parent 86f39bd commit fa9c7fb

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

dex/src/main/kotlin/com/legacycode/eureka/dex/dependency/D3GraphBuilder.kt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import com.legacycode.eureka.dex.Child
88
import com.legacycode.eureka.dex.Node
99

1010
class D3GraphBuilder : AdjacencyList.GraphBuilder<String> {
11+
companion object {
12+
private const val DEFAULT_PACKAGE_NAME = ""
13+
}
14+
1115
private val objectMapper = ObjectMapper()
1216
private val rootNode = objectMapper.createObjectNode()
1317
private val linksArray = objectMapper.createArrayNode()
@@ -37,15 +41,25 @@ class D3GraphBuilder : AdjacencyList.GraphBuilder<String> {
3741

3842
override fun afterTraversal() {
3943
val nodesArray = objectMapper.createArrayNode()
40-
allNodes.onEach {
41-
val node = objectMapper.createObjectNode().apply {
42-
put("id", it)
43-
put("group", it.substring(0, it.lastIndexOf('.')))
44+
allNodes.onEach { fqn ->
45+
val objectNode = objectMapper.createObjectNode().apply {
46+
put("id", fqn)
47+
put("group", getPackageName(fqn))
4448
}
45-
nodesArray.add(node)
49+
nodesArray.add(objectNode)
4650
}
4751

4852
rootNode.set<ArrayNode>("nodes", nodesArray)
4953
rootNode.set<ArrayNode>("links", linksArray)
5054
}
55+
56+
private fun getPackageName(fqn: String): String {
57+
val isInDefaultPackage = !fqn.contains(".")
58+
val packageName = if (isInDefaultPackage) {
59+
DEFAULT_PACKAGE_NAME
60+
} else {
61+
fqn.substring(0, fqn.lastIndexOf('.'))
62+
}
63+
return packageName
64+
}
5165
}

0 commit comments

Comments
 (0)