11package com.mikepenz.aboutlibraries.plugin.model
22
3+ import com.mikepenz.aboutlibraries.plugin.mapping.Developer
4+ import com.mikepenz.aboutlibraries.plugin.mapping.Funding
35import com.mikepenz.aboutlibraries.plugin.mapping.Library
46import com.mikepenz.aboutlibraries.plugin.mapping.License
7+ import com.mikepenz.aboutlibraries.plugin.mapping.Organization
8+ import com.mikepenz.aboutlibraries.plugin.mapping.Scm
9+ import com.mikepenz.aboutlibraries.plugin.util.PartialObjectConverter
510import groovy.json.JsonGenerator
611import groovy.json.JsonOutput
712import java.io.File
@@ -26,10 +31,35 @@ class MetaData(
2631)
2732
2833fun ResultContainer.writeToDisk (outputFile : File , excludeFields : Array <String >, prettyPrint : Boolean ) {
29- val fieldNames = mutableListOf (" artifactId" , " groupId" , " artifactFolder" ).also {
30- it.addAll(excludeFields)
34+ val allowedExclusionQualifiers = setOf (
35+ ResultContainer ::class .simpleName,
36+ Library ::class .simpleName,
37+ Developer ::class .simpleName,
38+ Organization ::class .simpleName,
39+ Funding ::class .simpleName,
40+ Scm ::class .simpleName,
41+ License ::class .simpleName,
42+ MetaData ::class .simpleName,
43+ )
44+ val excludedQualifiedFieldNames = mutableSetOf (
45+ " ${Library ::class .simpleName} .${Library ::artifactId.name} " ,
46+ " ${Library ::class .simpleName} .${Library ::groupId.name} " ,
47+ " ${Library ::class .simpleName} .${Library ::artifactFolder.name} "
48+ )
49+ val excludedUnqualifiedFieldNames = mutableSetOf<String >()
50+ excludeFields.forEach { excludedField ->
51+ val segments = excludedField.split(" ." )
52+ if (segments.size == 2 && allowedExclusionQualifiers.contains(segments.first())) {
53+ excludedQualifiedFieldNames.add(excludedField)
54+ } else {
55+ excludedUnqualifiedFieldNames.add(excludedField)
56+ }
3157 }
32- val jsonGenerator = JsonGenerator .Options ().excludeNulls().excludeFieldsByName(fieldNames).build()
58+ val jsonGenerator = JsonGenerator .Options ()
59+ .excludeNulls()
60+ .excludeFieldsByName(excludedUnqualifiedFieldNames)
61+ .addConverter(PartialObjectConverter (excludedQualifiedFieldNames))
62+ .build()
3363 PrintWriter (OutputStreamWriter (outputFile.outputStream(), StandardCharsets .UTF_8 ), true ).use {
3464 it.write(jsonGenerator.toJson(this ).let { json -> if (prettyPrint) JsonOutput .prettyPrint(json) else json })
3565 }
0 commit comments