mirror of
https://github.com/corda/corda.git
synced 2025-04-16 07:27:17 +00:00
CORDA-3590: Optimise classloading for DJVM deserialization. (#5944)
This commit is contained in:
parent
084bf4d844
commit
9c743897fd
@ -5,6 +5,6 @@ import net.corda.djvm.rewiring.SandboxClassLoader
|
||||
class DelegatingClassLoader(private val delegate: SandboxClassLoader) : ClassLoader(null) {
|
||||
@Throws(ClassNotFoundException::class)
|
||||
override fun loadClass(name: String, resolve: Boolean): Class<*> {
|
||||
return delegate.loadForSandbox(name).type
|
||||
return delegate.toSandboxClass(name)
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,39 @@
|
||||
package net.corda.serialization.djvm
|
||||
|
||||
import net.corda.core.serialization.internal._contextSerializationEnv
|
||||
import net.corda.core.serialization.serialize
|
||||
import net.corda.serialization.djvm.SandboxType.KOTLIN
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import org.junit.jupiter.api.fail
|
||||
import java.time.Duration
|
||||
import java.util.function.Function
|
||||
|
||||
@ExtendWith(LocalSerialization::class)
|
||||
class DeserializeDurationTest : TestBase(KOTLIN) {
|
||||
@Test
|
||||
fun `test deserializing duration`() {
|
||||
val duration = Duration.ofSeconds(12345, 6789)
|
||||
val data = duration.serialize()
|
||||
|
||||
sandbox {
|
||||
_contextSerializationEnv.set(createSandboxSerializationEnv(classLoader))
|
||||
|
||||
val sandboxDuration = data.deserializeFor(classLoader)
|
||||
|
||||
val taskFactory = classLoader.createRawTaskFactory()
|
||||
val showDuration = taskFactory.compose(classLoader.createSandboxFunction()).apply(ShowDuration::class.java)
|
||||
val result = showDuration.apply(sandboxDuration) ?: fail("Result cannot be null")
|
||||
|
||||
assertEquals(duration.toString(), result.toString())
|
||||
assertEquals(SANDBOX_STRING, result::class.java.name)
|
||||
}
|
||||
}
|
||||
|
||||
class ShowDuration : Function<Duration, String> {
|
||||
override fun apply(duration: Duration): String {
|
||||
return duration.toString()
|
||||
}
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@ import java.util.function.Function
|
||||
@ExtendWith(LocalSerialization::class)
|
||||
class DeserializeOffsetTimeTest : TestBase(KOTLIN) {
|
||||
@Test
|
||||
fun `test deserializing instant`() {
|
||||
fun `test deserializing offset time`() {
|
||||
val time = OffsetTime.now()
|
||||
val data = time.serialize()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user