mirror of
https://github.com/corda/corda.git
synced 2025-01-13 08:20:01 +00:00
67623f04a3
* Create DJVM serialization modules. * Create test cases for Array<T>, List<T> and List<Array<T>>. * Refactor SandboxPrimiveSerializer for all primitive types. * Implement SandboxCollectionSerializer to support Collection types. * Implement SandboxMapSerializer to support Map types. * Attempt to fix infinite loop when computing Collection and Map fingerprints. * Apply special handling when deserialising sandbox.java.lang.Character. * Remap Java primitive types to sandbox Java object types to deter evolution. * Use Class.getPackage().getName() to determine sandbox package name. * Implement SandboxEnumSerializer to support Enum types. * Implement SandboxPublicKeySerializer to support Java security keys. * Add serialization projects to the composite example project. * Implement serializers for BigInteger, BigDecimal, Currency and StringBuffer. * Test that deserialising does not instantiate the untrusted user classes. * Implement serializers for java.time.* types. * Add serialiser for BitSet - currently disabled until BitSet itself is supported. * Add serialisers for EnumSet and Class. * Include support for EnumMap in the SandboxMapSerializer. * Ensure the DJVM Example project's tests preserve @CordaSerializable. * Add support for UUID as a primitive type. * Use common abortReadOnly() method for declaring serialization as unsupported. * Streamline the API for deserialising into the sandbox. * Add preliminary support for deserialising X.509 certificates. * Implement serializer for java.util.Optional. * Refactor configuration of the sandbox serialization scheme. * Add tests for deserialising arrays of basic types. * Include method annotations in annotation stitching. This ensures that `@ConstructorForDeserialization` is not dropped. * Enable test for SandboxBitSetSerializer. * Enable tests for X.509 serializers. * Implement serializers for ProtonJ primitive types. * Serialize java.util.Date as a primitive type. * Add the bintray Gradle plugin to the serialisation modules. * Do not publish serialisation modules - they will become part of Corda itself.
103 lines
2.9 KiB
Groovy
103 lines
2.9 KiB
Groovy
plugins {
|
|
id 'org.jetbrains.kotlin.jvm'
|
|
id 'java-library'
|
|
id 'idea'
|
|
}
|
|
|
|
ext {
|
|
corda_version = '5.0-SNAPSHOT'
|
|
}
|
|
|
|
description 'Serialization support for the DJVM'
|
|
|
|
configurations {
|
|
sandboxTesting
|
|
jdkRt.resolutionStrategy {
|
|
// Always check the repository for a newer SNAPSHOT.
|
|
cacheChangingModulesFor 0, 'seconds'
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
repositories {
|
|
maven {
|
|
url "$artifactory_contextUrl/corda-dev"
|
|
}
|
|
}
|
|
|
|
configurations{
|
|
// This is for the latest deterministic Corda SNAPSHOT artifacts...
|
|
[ compileClasspath, runtimeClasspath ].forEach { cfg ->
|
|
cfg.resolutionStrategy {
|
|
// Always check the repository for a newer SNAPSHOT.
|
|
cacheChangingModulesFor 0, 'seconds'
|
|
|
|
dependencySubstitution {
|
|
substitute module("net.corda:corda-core:$corda_version") with module("net.corda:corda-core-deterministic:$corda_version")
|
|
substitute module("net.corda:corda-serialization:$corda_version") with module("net.corda:corda-serialization-deterministic:$corda_version")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Corda serialization requires parameter names
|
|
* to be available via Java reflection.
|
|
*/
|
|
tasks.withType(JavaCompile) {
|
|
options.compilerArgs += '-parameters'
|
|
}
|
|
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
|
|
kotlinOptions {
|
|
javaParameters = true
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
api project(path: ':djvm', configuration: 'shadow')
|
|
api "net.corda:corda-core:$corda_version"
|
|
api "net.corda:corda-serialization:$corda_version"
|
|
implementation project(':serialization:deserializers')
|
|
|
|
testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version"
|
|
testImplementation "org.junit.jupiter:junit-jupiter-params:$junit_jupiter_version"
|
|
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_jupiter_version"
|
|
|
|
// Test utilities
|
|
testImplementation "org.assertj:assertj-core:$assertj_version"
|
|
testRuntimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
|
|
jdkRt "net.corda:deterministic-rt:latest.integration"
|
|
|
|
// The DJVM will need this classpath to run the unit tests.
|
|
sandboxTesting files(sourceSets.getByName("test").output)
|
|
sandboxTesting(project(':serialization:deserializers')) {
|
|
exclude group: 'net.corda'
|
|
}
|
|
sandboxTesting "net.corda:corda-serialization-deterministic:$corda_version"
|
|
sandboxTesting "org.slf4j:slf4j-nop:$slf4j_version"
|
|
}
|
|
|
|
jar {
|
|
manifest {
|
|
attributes('Sealed': true)
|
|
}
|
|
}
|
|
|
|
tasks.withType(Test) {
|
|
systemProperty 'deterministic-rt.path', configurations.jdkRt.asPath
|
|
systemProperty 'sandbox-libraries.path', configurations.sandboxTesting.asPath
|
|
}
|
|
|
|
//publish {
|
|
// name 'corda-djvm-serialization'
|
|
//}
|
|
|
|
idea {
|
|
module {
|
|
downloadJavadoc = true
|
|
downloadSources = true
|
|
}
|
|
}
|