Replace SimpleXmlConverterFactory to JAXB coverter

This commit is contained in:
MohitMali 2022-11-23 19:24:25 +05:30
parent 120cbcf86e
commit f9c2c37340
4 changed files with 40 additions and 47 deletions

View File

@ -59,7 +59,7 @@ object Libs {
/** /**
* https://github.com/square/retrofit * https://github.com/square/retrofit
*/ */
const val converter_simplexml: String = "com.squareup.retrofit2:converter-simplexml:" + const val converter_jaxb: String = "com.squareup.retrofit2:converter-jaxb:" +
Versions.com_squareup_retrofit2 Versions.com_squareup_retrofit2
/** /**

View File

@ -74,11 +74,7 @@ dependencies {
implementation(Libs.select_folder_document_file) implementation(Libs.select_folder_document_file)
// Square // Square
implementation(Libs.converter_simplexml) { implementation(Libs.converter_jaxb)
exclude(group = "xpp3", module = "xpp3")
exclude(group = "stax", module = "stax-api")
exclude(group = "stax", module = "stax")
}
// Leak canary // Leak canary
debugImplementation(Libs.leakcanary_android) debugImplementation(Libs.leakcanary_android)

View File

@ -17,66 +17,66 @@
*/ */
package org.kiwix.kiwixmobile.core.entity package org.kiwix.kiwixmobile.core.entity
import org.simpleframework.xml.Attribute
import org.simpleframework.xml.ElementList
import org.simpleframework.xml.Root
import java.io.File import java.io.File
import java.io.Serializable import java.io.Serializable
import java.util.LinkedList import java.util.LinkedList
import javax.xml.bind.annotation.XmlAttribute
import javax.xml.bind.annotation.XmlElement
import javax.xml.bind.annotation.XmlRootElement
@Root(name = "library") @XmlRootElement(name = "library")
class LibraryNetworkEntity { class LibraryNetworkEntity {
@field:ElementList(name = "book", inline = true, required = false) @field:XmlElement(name = "book")
var book: LinkedList<Book>? = null var book: LinkedList<Book>? = null
@field:Attribute(name = "version", required = false) @field:XmlAttribute(name = "version")
var version: String? = null var version: String? = null
@Root(name = "book", strict = false) @XmlRootElement(name = "book")
class Book : Serializable { class Book : Serializable {
@field:Attribute(name = "id", required = false) @field:XmlAttribute(name = "id")
var id: String = "" var id: String = ""
@field:Attribute(name = "title", required = false) @field:XmlAttribute(name = "title")
var title: String = "" var title: String = ""
@field:Attribute(name = "description", required = false) @field:XmlAttribute(name = "description")
var description: String? = null var description: String? = null
@field:Attribute(name = "language", required = false) @field:XmlAttribute(name = "language")
var language: String = "" var language: String = ""
@field:Attribute(name = "creator", required = false) @field:XmlAttribute(name = "creator")
var creator: String = "" var creator: String = ""
@field:Attribute(name = "publisher", required = false) @field:XmlAttribute(name = "publisher")
var publisher: String = "" var publisher: String = ""
@field:Attribute(name = "favicon", required = false) @field:XmlAttribute(name = "favicon")
var favicon: String = "" var favicon: String = ""
@field:Attribute(name = "faviconMimeType", required = false) @field:XmlAttribute(name = "faviconMimeType")
var faviconMimeType: String? = null var faviconMimeType: String? = null
@field:Attribute(name = "date", required = false) @field:XmlAttribute(name = "date")
var date: String = "" var date: String = ""
@field:Attribute(name = "url", required = false) @field:XmlAttribute(name = "url")
var url: String? = null var url: String? = null
@field:Attribute(name = "articleCount", required = false) @field:XmlAttribute(name = "articleCount")
var articleCount: String? = null var articleCount: String? = null
@field:Attribute(name = "mediaCount", required = false) @field:XmlAttribute(name = "mediaCount")
var mediaCount: String? = null var mediaCount: String? = null
@field:Attribute(name = "size", required = false) @field:XmlAttribute(name = "size")
var size: String = "" var size: String = ""
@field:Attribute(name = "name", required = false) @field:XmlAttribute(name = "name")
var bookName: String? = null var bookName: String? = null
@field:Attribute(name = "tags", required = false) @field:XmlAttribute(name = "tags")
var tags: String? = null var tags: String? = null
var searchMatches = 0 var searchMatches = 0

View File

@ -17,30 +17,27 @@
*/ */
package org.kiwix.kiwixmobile.core.entity package org.kiwix.kiwixmobile.core.entity
import org.simpleframework.xml.Attribute import javax.xml.bind.annotation.XmlAttribute
import org.simpleframework.xml.Element import javax.xml.bind.annotation.XmlElement
import org.simpleframework.xml.ElementList import javax.xml.bind.annotation.XmlRootElement
import org.simpleframework.xml.ElementMap
import org.simpleframework.xml.Root
import org.simpleframework.xml.Text
@Root(strict = false, name = "metalink") @XmlRootElement(name = "metalink")
class MetaLinkNetworkEntity { class MetaLinkNetworkEntity {
@field:Element @field:XmlElement
var file: FileElement? = null var file: FileElement? = null
val urls: List<Url>? val urls: List<Url>?
get() = file?.urls get() = file?.urls
val relevantUrl: Url val relevantUrl: Url
get() = file?.urls?.get(0) ?: Url() get() = file?.urls?.get(0) ?: Url()
@Root(strict = false) @XmlRootElement()
class FileElement { class FileElement {
@field:Attribute @field:XmlAttribute
var name: String? = null var name: String? = null
@field:ElementList(inline = true, entry = "url") @field:XmlElement(name = "url")
var urls: List<Url>? = null var urls: List<Url>? = null
@field:Element var size: Long = 0 @field:XmlElement var size: Long = 0
@field:ElementMap( @field:ElementMap(
entry = "hash", entry = "hash",
@ -51,7 +48,7 @@ class MetaLinkNetworkEntity {
) )
var hashes: Map<String, String>? = null var hashes: Map<String, String>? = null
@field:Element(required = false) @field:XmlElement(required = false)
var pieces: Pieces? = null var pieces: Pieces? = null
val pieceHashes: List<String>? val pieceHashes: List<String>?
get() = pieces?.pieceHashes get() = pieces?.pieceHashes
@ -66,24 +63,24 @@ class MetaLinkNetworkEntity {
} }
class Pieces { class Pieces {
@field:Attribute @field:XmlAttribute
var length = 0 var length = 0
@field:Attribute(name = "type") @field:XmlAttribute(name = "type")
var hashType: String? = null var hashType: String? = null
@field:ElementList(inline = true, entry = "hash") @field:XmlElement(name = "hash")
var pieceHashes: List<String>? = null var pieceHashes: List<String>? = null
} }
class Url { class Url {
@field:Attribute @field:XmlAttribute
var location: String? = null var location: String? = null
@field:Attribute @field:XmlAttribute
var priority = 0 var priority = 0
@field:Text @field:XmlAttribute
var value: String? = null var value: String? = null
} }
} }