Skip to content

Commit

Permalink
Merge pull request #124 from NTNU-IHB/feature/jackson
Browse files Browse the repository at this point in the history
Update fmi4j and replace use of JAXB
  • Loading branch information
markaren committed Nov 8, 2020
2 parents 6c43230 + a59796f commit ce4e046
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 54 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Set up JDK 8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11

- uses: actions/cache@v2
with:
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ println "Gradle version is ${gradle.getGradleVersion()}"

ext.slf4j_version = '1.7.25'
ext.picocli_version = '4.5.0'
ext.fmi4j_version = '0.33.4'
ext.fmi4j_version = '0.34.0'

wrapper {
distributionType = Wrapper.DistributionType.ALL
Expand Down
1 change: 1 addition & 0 deletions fmu-wrapper/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ dependencies {
implementation project(":rpc-gen")
implementation "no.ntnu.ihb.fmi4j:fmi-md:$fmi4j_version"
implementation "no.ntnu.ihb.fmi4j:fmi-export:$fmi4j_version"
implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.3"

def slf4j_version = '1.7.25'
implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4j_version
Expand Down
12 changes: 7 additions & 5 deletions fmu-wrapper/src/main/kotlin/no/ntnu/ihb/fmuproxy/FmuWrapper.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package no.ntnu.ihb.fmuproxy

import com.fasterxml.jackson.dataformat.xml.XmlMapper
import no.ntnu.ihb.fmi4j.export.fmi2.Fmi2Slave
import no.ntnu.ihb.fmi4j.modeldescription.fmi1.FmiModelDescription
import no.ntnu.ihb.fmi4j.modeldescription.fmi2.Fmi2ModelDescription
import no.ntnu.ihb.fmi4j.modeldescription.util.FmiModelDescriptionUtil
import no.ntnu.ihb.fmuproxy.misc.*
import no.ntnu.ihb.fmuproxy.thrift.ModelDescription
import no.ntnu.ihb.fmuproxy.thrift.internal.InternalFmuService
Expand All @@ -11,7 +13,6 @@ import org.apache.thrift.transport.TFramedTransport
import org.apache.thrift.transport.TSocket
import java.io.*
import java.util.concurrent.TimeUnit
import javax.xml.bind.JAXB


class FmuWrapper(
Expand Down Expand Up @@ -107,10 +108,11 @@ class FmuWrapper(

override fun registerVariables() {

val xml = extractModelDescriptionXml(FileInputStream(fmu))
when (val version = extractFmiVersion(xml)) {
"1.0" -> processFmi1ModelDescription(JAXB.unmarshal(StringReader(xml), FmiModelDescription::class.java))
"2.0" -> processFmi2ModelDescription(JAXB.unmarshal(StringReader(xml), Fmi2ModelDescription::class.java))
val mapper = XmlMapper()
val xml = FmiModelDescriptionUtil.extractModelDescriptionXml(FileInputStream(fmu))
when (val version = FmiModelDescriptionUtil.extractVersion(xml)) {
"1.0" -> processFmi1ModelDescription(mapper.readValue(xml, FmiModelDescription::class.java))
"2.0" -> processFmi2ModelDescription(mapper.readValue(xml, Fmi2ModelDescription::class.java))
else -> throw IllegalArgumentException("Unknown FMI version: $version")
}

Expand Down

This file was deleted.

25 changes: 0 additions & 25 deletions fmu-wrapper/src/main/kotlin/no/ntnu/ihb/fmuproxy/misc/helpers.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package no.ntnu.ihb.fmuproxy.misc

import no.ntnu.ihb.fmi4j.modeldescription.fmi1.FmiCausality
import no.ntnu.ihb.fmi4j.modeldescription.fmi1.FmiModelDescription
import no.ntnu.ihb.fmi4j.modeldescription.fmi1.FmiScalarVariable
import no.ntnu.ihb.fmi4j.modeldescription.fmi1.FmiVariability
import no.ntnu.ihb.fmi4j.modeldescription.fmi2.Fmi2Causality
import no.ntnu.ihb.fmi4j.modeldescription.fmi2.Fmi2ModelDescription
Expand All @@ -13,13 +12,8 @@ import org.apache.thrift.transport.TFramedTransport
import org.apache.thrift.transport.TSocket
import java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.io.StringReader
import java.net.ServerSocket
import java.nio.ByteBuffer
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
import javax.xml.bind.JAXB
import kotlin.concurrent.thread

internal fun String.isLoopback(): Boolean {
Expand Down Expand Up @@ -80,25 +74,6 @@ internal fun startLocalProxy(proxyFile: File, fmuFile: File): Pair<Process, Int>
return process to port
}

internal fun extractModelDescriptionXml(stream: InputStream): String {
val xmlFile = "modelDescription.xml"
ZipInputStream(stream).use { zis ->
var nextEntry: ZipEntry? = zis.nextEntry
while (nextEntry != null) {
if (nextEntry.name == xmlFile) {
return zis.bufferedReader().use { it.readText() }
}
nextEntry = zis.nextEntry
}
}
throw IllegalArgumentException("Input is not an valid FMU! No $xmlFile present!")
}


internal fun extractFmiVersion(xml: String): String {
return JAXB.unmarshal(StringReader(xml), MockupModelDescription::class.java).fmiVersion
}

internal fun parseSettings(settings: File): ProxySettings {
require(settings.exists()) { "No such file: $settings" }
return parseSettings(settings.readText())
Expand Down

0 comments on commit ce4e046

Please sign in to comment.