Skip to content

Commit 8cc2bf7

Browse files
committed
fix: fix npe when trying to declare a nested type which is not wrapped in e.g. a list
1 parent 92402ab commit 8cc2bf7

File tree

3 files changed

+34
-3
lines changed

3 files changed

+34
-3
lines changed

plugin/src/main/kotlin/cloud/rio/gdprdoc/GenerateGdprDocumentationTask.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,8 @@ abstract class GenerateGdprDocumentationTask : DefaultTask() {
252252
logger.info(fields.joinToString(separator = "\n"))
253253

254254
if (nestedTypeAnnotation != null) {
255-
val typeSignature = fieldInfo.typeSignature as ClassRefTypeSignature
256-
val referencedClassNames = typeSignature.typeArguments.map { it.toString() }
255+
val typeSignature = fieldInfo.typeSignature as ClassRefTypeSignature?
256+
val referencedClassNames = typeSignature?.typeArguments?.map { it.toString() } ?: listOf(fieldInfo.typeDescriptor.toString())
257257
resolveFieldsFromNestedClass(referencedClassNames, fieldPath, depth, visited, fields)
258258
}
259259
}

test/src/main/kotlin/cloud/rio/example/adapter/db/DriverEvent.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ data class DriverEventDb(
3434
val position: List<PositionDb>,
3535
@GdprData.Field(level = PiiLevel.PSEUDONYM)
3636
val driverCardNumber: String,
37+
@GdprData.NestedType
38+
val address: AddressDb,
3739
)
3840

3941
data class PositionDb(
@@ -42,3 +44,12 @@ data class PositionDb(
4244
@GdprData.Field(level = PiiLevel.NON_PII)
4345
val longitude: Double,
4446
)
47+
48+
data class AddressDb(
49+
@GdprData.Field(level = PiiLevel.NON_PII)
50+
val street: String,
51+
@GdprData.Field(level = PiiLevel.NON_PII)
52+
val city: String,
53+
@GdprData.Field(level = PiiLevel.NON_PII)
54+
val country: String,
55+
)

test/src/test/kotlin/cloud/rio/gdprdoc/GdprDocumentationSnapshotTest.ss

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148

149149
| Name | Database identifier | Responsible For Deletion | Retention | Fields |
150150
| --- | --- | --- | --- | --- |
151-
| [DriverEventDb](#cloud.rio.example.adapter.db.DriverEventDb#DB) | arn:aws:dynamodb:region:accountId:table/driver-events | Dev team | Kept for 30 days | `assetId`, `timestamp`, `position.latitude`, `position.longitude`, `driverCardNumber` |
151+
| [DriverEventDb](#cloud.rio.example.adapter.db.DriverEventDb#DB) | arn:aws:dynamodb:region:accountId:table/driver-events | Dev team | Kept for 30 days | `assetId`, `timestamp`, `position.latitude`, `position.longitude`, `driverCardNumber`, `address.street`, `address.city`, `address.country` |
152152
| [DriverKafka](#cloud.rio.example.adapter.kafka.DriverKafka#DB) | arn:aws:dynamodb:region:accountId:table/driver-events | Owner of the upstream data source | Kept until data is deleted upstream | `driverCardNumber`, `name` |
153153
| [PermissionsKafka](#cloud.rio.example.adapter.kafka.PermissionsKafka#DB) | arn:aws:dynamodb:region:accountId:table/permissions | Owner of the upstream data source | Kept until data is deleted upstream | `userId`, `hasAccess` |
154154

@@ -196,6 +196,26 @@
196196
<td><span style="background-color:darkorange; padding:2px 10px; border-radius:3px;">PSEUDONYM</span></td>
197197
<td>String</td>
198198
</tr>
199+
<tr>
200+
<td><code>address</code></td>
201+
<td>-</td>
202+
<td>AddressDb</td>
203+
</tr>
204+
<tr>
205+
<td>&nbsp;&nbsp;&nbsp;&nbsp;<code>address.street</code></td>
206+
<td><span style="background-color:green; padding:2px 10px; border-radius:3px;">NON PII</span></td>
207+
<td>String</td>
208+
</tr>
209+
<tr>
210+
<td>&nbsp;&nbsp;&nbsp;&nbsp;<code>address.city</code></td>
211+
<td><span style="background-color:green; padding:2px 10px; border-radius:3px;">NON PII</span></td>
212+
<td>String</td>
213+
</tr>
214+
<tr>
215+
<td>&nbsp;&nbsp;&nbsp;&nbsp;<code>address.country</code></td>
216+
<td><span style="background-color:green; padding:2px 10px; border-radius:3px;">NON PII</span></td>
217+
<td>String</td>
218+
</tr>
199219
</tbody>
200220
</table>
201221

0 commit comments

Comments
 (0)