Skip to content

Commit

Permalink
Fix serialization issues with gradle
Browse files Browse the repository at this point in the history
#KT-18114 fixed
  • Loading branch information
semoro committed May 26, 2017
1 parent ef99442 commit 42a6272
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions integration/src/main/kotlin/org/jetbrains/dokka/configuration.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
package org.jetbrains.dokka

import ru.yole.jkid.CustomSerializer
import ru.yole.jkid.ValueSerializer
import ru.yole.jkid.deserialization.JKidException
import java.io.Serializable
import java.net.URL


class UrlSerializer : ValueSerializer<URL?> {
override fun fromJsonValue(jsonValue: Any?): URL? {
if (jsonValue !is String?)
throw JKidException("Expected string representation of URL, got: $jsonValue")
return jsonValue?.let { URL(jsonValue) }
}

override fun toJsonValue(value: URL?): Any? = value?.toExternalForm()
}

interface DokkaConfiguration {
val moduleName: String
val classpath: List<String>
Expand Down Expand Up @@ -43,13 +57,13 @@ interface DokkaConfiguration {
}

interface ExternalDocumentationLink {
val url: URL
val packageListUrl: URL
@CustomSerializer(UrlSerializer::class) val url: URL
@CustomSerializer(UrlSerializer::class) val packageListUrl: URL

open class Builder(open var url: URL? = null,
open var packageListUrl: URL? = null) {

constructor(root: String) : this(URL(root), null)
constructor(root: String, packageList: String? = null) : this(URL(root), packageList?.let { URL(it) })

fun build(): DokkaConfiguration.ExternalDocumentationLink =
if (packageListUrl != null && url != null)
Expand Down Expand Up @@ -83,5 +97,5 @@ data class SerializeOnlyDokkaConfiguration(override val moduleName: String,
override val noStdlibLink: Boolean) : DokkaConfiguration


data class ExternalDocumentationLinkImpl internal constructor(override val url: URL,
override val packageListUrl: URL) : DokkaConfiguration.ExternalDocumentationLink
data class ExternalDocumentationLinkImpl(@CustomSerializer(UrlSerializer::class) override val url: URL,
@CustomSerializer(UrlSerializer::class) override val packageListUrl: URL) : Serializable, DokkaConfiguration.ExternalDocumentationLink

0 comments on commit 42a6272

Please sign in to comment.