Skip to content

Commit 329a46e

Browse files
committed
add package name as conversion arg option
1 parent 1190d8f commit 329a46e

File tree

9 files changed

+45
-15
lines changed

9 files changed

+45
-15
lines changed

core/src/main/kotlin/com/fractalwrench/json2kotlin/ClassTypeHolder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.squareup.kotlinpoet.*
44
import java.util.*
55

66

7-
internal class ClassTypeHolder(val delegate: SourceBuildDelegate) : TraversalDelegate { // TODO rename, bad ontology
7+
internal class ClassTypeHolder(val delegate: SourceBuildDelegate) { // TODO rename, bad ontology
88

99
internal val stack = Stack<TypeSpec>()
1010
private val jsonProcessor = JsonProcessor()
@@ -38,7 +38,7 @@ internal class ClassTypeHolder(val delegate: SourceBuildDelegate) : TraversalDel
3838
/**
3939
* Processes a single level in the tree
4040
*/
41-
override fun processTreeLevel(levelQueue: LinkedList<TypedJsonElement>) { // FIXME not ll, generify?
41+
fun processTreeLevel(levelQueue: LinkedList<TypedJsonElement>) { // FIXME not ll, generify?
4242
val fieldValues = levelQueue.filter { it.isJsonObject }.toMutableList()
4343

4444
jsonFieldGrouper.groupCommonFieldValues(fieldValues)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package com.fractalwrench.json2kotlin
22

3-
class ConversionArgs(val rootClassName: String = "Example") // TODO support a few other options (package name, build delegate)
3+
class ConversionArgs(val rootClassName: String = "Example", val packageName: String? = null)

core/src/main/kotlin/com/fractalwrench/json2kotlin/Kotlin2JsonConverter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Kotlin2JsonConverter(val buildDelegate: SourceBuildDelegate = GsonBuildDel
1010

1111
// TODO (general: update KDocs!)
1212

13-
// TODO expose grouping class as a parameter, add to config
13+
// TODO expose grouping class as a parameter
1414

1515
private val jsonReader = JsonReader(JsonParser())
1616
private val sourceFileWriter = SourceFileWriter()

core/src/main/kotlin/com/fractalwrench/json2kotlin/ReverseJsonTreeTraverser.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,6 @@ internal class ReverseJsonTreeTraverser {
5656
.map { TypedJsonElement(it.value, it.key, depth) }
5757
}
5858

59-
private fun nameForArrayField(index: Int, identifier: String): String =
60-
if (index == 0) identifier else "$identifier${index + 1}" // FIXME duplication
61-
6259
private fun shouldAddToStack(element: JsonElement) = element.isJsonArray || element.isJsonObject
6360

6461
}

core/src/main/kotlin/com/fractalwrench/json2kotlin/SourceFileWriter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ internal class SourceFileWriter { // TODO rename once functionality has changed
1414
* Writes a collection of types to a source file OutputStream.
1515
*/
1616
fun writeSourceFile(stack: Stack<TypeSpec>, args: ConversionArgs, output: OutputStream) {
17-
val sourceFile = FileSpec.builder("", args.rootClassName) // FIXME set package name
17+
val packageName = args.packageName ?: ""
18+
val sourceFile = FileSpec.builder(packageName, args.rootClassName)
1819

1920
while (stack.isNotEmpty()) {
2021
sourceFile.addType(stack.pop())

core/src/main/kotlin/com/fractalwrench/json2kotlin/TraversalDelegate.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.fractalwrench.json2kotlin
2+
3+
import org.junit.Assert
4+
import org.junit.Test
5+
import java.io.ByteArrayOutputStream
6+
import java.io.File
7+
8+
class ConverterArgsTest {
9+
10+
private val fileReader = ResourceFileReader()
11+
private val jsonConverter = Kotlin2JsonConverter()
12+
13+
/**
14+
* Takes a JSON file and converts it into the equivalent Kotlin class, then compares to expected output.
15+
*/
16+
@Test
17+
fun testPackageName() {
18+
val jsonFilename = "args/Package.json"
19+
val expectedFilename = "args/PackageExample.kt"
20+
val json = fileReader.readContents(jsonFilename)
21+
22+
val outputStream = ByteArrayOutputStream()
23+
jsonConverter.convert(json, outputStream, ConversionArgs("PackageExample", "com.fractalwrench.foo"))
24+
25+
val generatedSource = String(outputStream.toByteArray()).standardiseNewline()
26+
val expectedContents = fileReader.readContents(expectedFilename).standardiseNewline()
27+
val msg = "Generated file doesn't match expected file \'$expectedFilename\'"
28+
Assert.assertEquals(msg, expectedContents, generatedSource)
29+
}
30+
31+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"firstField": "test"
3+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.fractalwrench.foo
2+
3+
import kotlin.String
4+
5+
data class PackageExample(val firstField: String)

0 commit comments

Comments
 (0)