perf(config): 优化 Artifact 的序列化过程.

AbstractArtifact 已经有官方的 toString 实现了, 故不再多此一举.
同时, 如果有不基于 AbstractArtifact 的 Artifact 实现, 将会转换成 DefaultArtifact 并直接使用 toString.
This commit is contained in:
LamGC 2022-06-23 11:37:37 +08:00
parent 8a33448b19
commit d5e66156b9
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -4,6 +4,7 @@ import com.google.gson.*
import net.lamgc.scalabot.config.MavenRepositoryConfig import net.lamgc.scalabot.config.MavenRepositoryConfig
import net.lamgc.scalabot.config.ProxyType import net.lamgc.scalabot.config.ProxyType
import net.lamgc.scalabot.config.UsernameAuthenticator import net.lamgc.scalabot.config.UsernameAuthenticator
import org.eclipse.aether.artifact.AbstractArtifact
import org.eclipse.aether.artifact.Artifact import org.eclipse.aether.artifact.Artifact
import org.eclipse.aether.artifact.DefaultArtifact import org.eclipse.aether.artifact.DefaultArtifact
import org.eclipse.aether.repository.Authentication import org.eclipse.aether.repository.Authentication
@ -45,14 +46,19 @@ object ProxyTypeSerializer : JsonDeserializer<ProxyType>,
object ArtifactSerializer : JsonSerializer<Artifact>, JsonDeserializer<Artifact> { object ArtifactSerializer : JsonSerializer<Artifact>, JsonDeserializer<Artifact> {
override fun serialize(src: Artifact, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement { override fun serialize(src: Artifact, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement {
val gavBuilder = StringBuilder("${src.groupId}:${src.artifactId}") return if (src is AbstractArtifact) {
if (!src.extension.equals("jar")) { JsonPrimitive(src.toString())
gavBuilder.append(':').append(src.extension) } else {
JsonPrimitive(
DefaultArtifact(
src.groupId,
src.artifactId,
src.classifier,
src.extension,
src.version
).toString()
)
} }
if (src.classifier.isNotEmpty()) {
gavBuilder.append(':').append(src.classifier)
}
return JsonPrimitive(gavBuilder.append(':').append(src.version).toString())
} }
override fun deserialize(json: JsonElement, typeOfT: Type?, context: JsonDeserializationContext?): Artifact { override fun deserialize(json: JsonElement, typeOfT: Type?, context: JsonDeserializationContext?): Artifact {