All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jetbrains.plugin.structure.teamcity.beans.TeamcityPluginBeanExtractor.kt Maven / Gradle / Ivy

/*
 * Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 */

package com.jetbrains.plugin.structure.teamcity.beans

import org.xml.sax.SAXParseException
import org.xml.sax.helpers.DefaultHandler
import java.io.InputStream
import javax.xml.bind.JAXBContext
import javax.xml.bind.UnmarshalException
import javax.xml.parsers.DocumentBuilderFactory

object TeamcityPluginBeanExtractor {
  private val jaxbContext = JAXBContext.newInstance(TeamcityPluginBean::class.java)
  private val documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder().apply {
    setErrorHandler(object : DefaultHandler() {
      override fun error(e: SAXParseException) {
        throw e
      }
    })
  }

  @Throws(UnmarshalException::class)
  fun extractPluginBean(inputStream: InputStream): TeamcityPluginBean {
    val document = documentBuilder.parse(inputStream)
    val unmarshaller = jaxbContext.createUnmarshaller()
    return unmarshaller.unmarshal(document, TeamcityPluginBean::class.java).value
        ?: throw UnmarshalException("Metadata element not found")
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy