@@ -178,15 +178,18 @@ private class DesensitizationVisitor(
178
178
}
179
179
180
180
override fun visitObjectArray (desc : ObjectArrayValueDesc , data : Nothing? ): ValueDesc {
181
- return if (desc.arrayType.arguments.first().type?.classifier == Byte ::class ) { // variance is ignored
181
+ return if (
182
+ desc.arrayType.arguments.firstOrNull()?.type?.classifier == Byte ::class
183
+ || (desc.value as ? Array <* >)?.getOrNull(0 ) is Byte
184
+ ) {
182
185
@Suppress(" UNCHECKED_CAST" )
183
- ( ObjectArrayValueDesc (
186
+ ObjectArrayValueDesc (
184
187
desc.parent,
185
188
desensitizer.desensitize(desc.value as Array <Byte >),
186
189
desc.origin,
187
190
desc.arrayType,
188
191
desc.elementType
189
- ))
192
+ )
190
193
} else {
191
194
super .visitObjectArray(desc, data)
192
195
}
@@ -205,7 +208,7 @@ private class DesensitizationVisitor(
205
208
}
206
209
207
210
override fun <T : Any > visitClass (desc : ClassValueDesc <T >, data : Nothing? ): ValueDesc {
208
- return ClassValueDesc (desc.parent, desc.origin, desc.properties.toMutableMap().apply {
211
+ ClassValueDesc (desc.parent, desc.origin, desc.properties.toMutableMap().apply {
209
212
replaceAll() { key, value ->
210
213
val annotation = key.findAnnotation<NestedStructure >()
211
214
if (annotation != null && value.origin is ByteArray ) {
@@ -217,14 +220,17 @@ private class DesensitizationVisitor(
217
220
218
221
val generate = ValueDescAnalyzer .analyze(result)
219
222
.transform(OptimizeByteArrayAsHexStringTransformer ())
220
- ?.transform(DesensitizationVisitor (desensitizer))
223
+ .transform(DesensitizationVisitor (desensitizer))
224
+ .renderToString()
221
225
PlainValueDesc (
222
226
desc,
223
227
" $generate .toByteArray(${result::class .qualifiedName} .serializer())" ,
224
228
value.origin
225
229
)
226
230
} else value
227
231
}
228
- })
232
+ }).let {
233
+ return super .visitClass(it, data)
234
+ }
229
235
}
230
236
}
0 commit comments