diff --git a/build.gradle b/build.gradle index dd465b69..afce6ca7 100644 --- a/build.gradle +++ b/build.gradle @@ -99,4 +99,4 @@ task ktlint(type: JavaExec, group: "verification") { classpath = configurations.ktlint main = "com.github.shyiko.ktlint.Main" args "$project.rootDir/**/src/main/**/*.kt", "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/reports/checkstyle/kotlin-checkstyle-report.xml" -} \ No newline at end of file +} diff --git a/fearless-utils/build.gradle b/fearless-utils/build.gradle index afede04d..63dc6b5e 100644 --- a/fearless-utils/build.gradle +++ b/fearless-utils/build.gradle @@ -79,7 +79,6 @@ dependencies { implementation wsDep implementation gsonDep implementation web3jDep - implementation gsonDep implementation apacheXercesDep implementation xxHashDep @@ -87,6 +86,8 @@ dependencies { testImplementation jUnitDep testImplementation mockitoDep + + implementation project(":schema") } def computeVersionName() { diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharing.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharing.kt index 4ae4dfb8..16dc7807 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharing.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharing.kt @@ -1,7 +1,7 @@ package jp.co.soramitsu.fearless_utils.encrypt.qr -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.extensions.toHexString +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toHexString private const val PREFIX = "substrate" diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/RuntimeSnapshot.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/RuntimeSnapshot.kt index 42c5cb06..7b943bbc 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/RuntimeSnapshot.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/RuntimeSnapshot.kt @@ -3,7 +3,7 @@ package jp.co.soramitsu.fearless_utils.runtime import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry import jp.co.soramitsu.fearless_utils.runtime.metadata.RuntimeMetadata -class RuntimeSnapshot( - val typeRegistry: TypeRegistry, - val metadata: RuntimeMetadata -) \ No newline at end of file +class RuntimeSnapshot { + lateinit var typeRegistry: TypeRegistry + lateinit var metadata: RuntimeMetadata +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/StorageUtils.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/StorageUtils.kt index ffb3b335..67f521ca 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/StorageUtils.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/StorageUtils.kt @@ -1,9 +1,9 @@ package jp.co.soramitsu.fearless_utils.runtime -import jp.co.soramitsu.fearless_utils.extensions.toHexString import jp.co.soramitsu.fearless_utils.hash.Hasher import jp.co.soramitsu.fearless_utils.hash.Hasher.xxHash128 import jp.co.soramitsu.fearless_utils.hash.hashConcat +import jp.co.soramitsu.schema.extensions.toHexString typealias HashFunction = (ByteArray) -> ByteArray @@ -33,4 +33,4 @@ object StorageUtils { return keyBytes.toHexString(withPrefix = true) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/ParsingExt.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/ParsingExt.kt index 0317a2c3..36738801 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/ParsingExt.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/ParsingExt.kt @@ -25,4 +25,4 @@ internal fun String.splitTuple(): List { } return result -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParser.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParser.kt index 1aee8999..94b2b571 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParser.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParser.kt @@ -1,20 +1,22 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions import com.google.gson.annotations.SerializedName -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePreset -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.create -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.newBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.CollectionEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.SetType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct +import jp.co.soramitsu.schema.DynamicTypeResolver +import jp.co.soramitsu.schema.ParseResult +import jp.co.soramitsu.schema.TypeDefinitionParser +import jp.co.soramitsu.schema.TypePreset +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.create +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Alias +import jp.co.soramitsu.schema.definitions.types.composite.CollectionEnum +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.composite.SetType +import jp.co.soramitsu.schema.definitions.types.composite.Struct +import jp.co.soramitsu.schema.getOrCreate +import jp.co.soramitsu.schema.newBuilder +import jp.co.soramitsu.schema.type import java.math.BigInteger class TypeDefinitionsTree( @@ -33,16 +35,11 @@ class TypeDefinitionsTree( } } -class ParseResult( - val typePreset: TypePreset, - val unknownTypes: List -) - private const val TOKEN_SET = "set" private const val TOKEN_STRUCT = "struct" private const val TOKEN_ENUM = "enum" -object TypeDefinitionParser { +object TypeDefinitionParserImpl : TypeDefinitionParser { private class Params( val types: Map, @@ -50,14 +47,14 @@ object TypeDefinitionParser { val typesBuilder: TypePresetBuilder ) - fun parseBaseDefinitions( - tree: TypeDefinitionsTree, + override fun parseBaseDefinitions( + types: Map, typePreset: TypePreset, - dynamicTypeResolver: DynamicTypeResolver = DynamicTypeResolver.defaultCompoundResolver() + dynamicTypeResolver: DynamicTypeResolver ): ParseResult { val builder = typePreset.newBuilder() - val params = Params(tree.types, dynamicTypeResolver, builder) + val params = Params(types, dynamicTypeResolver, builder) parseTypes(params) @@ -199,4 +196,4 @@ object TypeDefinitionParser { ?: resolveDynamicType(parsingParams, name, typeDef)?.let(::TypeReference) ?: parsingParams.typesBuilder.create(name) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/DynamicTypeExtension.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/DynamicTypeExtension.kt deleted file mode 100644 index 96e2eed1..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/DynamicTypeExtension.kt +++ /dev/null @@ -1,11 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic - -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference - -typealias TypeProvider = (typeDef: String) -> TypeReference - -interface DynamicTypeExtension { - - fun createType(name: String, typeDef: String, typeProvider: TypeProvider): Type<*>? -} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/DynamicTypeResolver.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/DynamicTypeResolver.kt deleted file mode 100644 index eeac1816..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/DynamicTypeResolver.kt +++ /dev/null @@ -1,43 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic - -import jp.co.soramitsu.fearless_utils.extensions.tryFindNonNull -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.BoxExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.CompactExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.FixedArrayExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.HashMapExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.OptionExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.ResultTypeExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.TupleExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.VectorExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type - -class DynamicTypeResolver( - val extensions: List -) { - constructor(vararg extensions: DynamicTypeExtension) : this(extensions.toList()) - - companion object { - fun defaultCompoundResolver(): DynamicTypeResolver { - return DynamicTypeResolver(DEFAULT_COMPOUND_EXTENSIONS) - } - - val DEFAULT_COMPOUND_EXTENSIONS = listOf( - VectorExtension, - CompactExtension, - OptionExtension, - BoxExtension, - TupleExtension, - FixedArrayExtension, - HashMapExtension, - ResultTypeExtension - ) - } - - fun createDynamicType( - name: String, - typeDef: String, - innerTypeProvider: TypeProvider - ): Type<*>? { - return extensions.tryFindNonNull { it.createType(name, typeDef, innerTypeProvider) } - } -} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypePreset.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypePreset.kt index e1f3c69a..be2baa2b 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypePreset.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypePreset.kt @@ -1,8 +1,6 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.registry -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias +import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.BitVec import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Bytes import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.CallBytes @@ -24,25 +22,20 @@ import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.H512 import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Null import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.OpaqueCall import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.SessionKeysSubstrate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u128 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u16 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u256 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u32 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u64 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub.FakeType - -typealias TypePresetBuilder = MutableMap -typealias TypePreset = Map - -fun TypePreset.newBuilder(): TypePresetBuilder = toMutableMap() - -fun TypePresetBuilder.type(type: Type<*>) { - val currentRef = getOrCreate(type.name) - - currentRef.value = type -} +import jp.co.soramitsu.schema.TypePreset +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.composite.Alias +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u128 +import jp.co.soramitsu.schema.definitions.types.primitives.u16 +import jp.co.soramitsu.schema.definitions.types.primitives.u256 +import jp.co.soramitsu.schema.definitions.types.primitives.u32 +import jp.co.soramitsu.schema.definitions.types.primitives.u64 +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.stub.FakeType +import jp.co.soramitsu.schema.getOrCreate +import jp.co.soramitsu.schema.type +import jp.co.soramitsu.schema.typePreset fun TypePresetBuilder.fakeType(name: String) { type(FakeType(name)) @@ -56,18 +49,7 @@ fun TypePresetBuilder.alias(alias: String, original: String) { type(typeAlias) } -fun TypePresetBuilder.getOrCreate(definition: String) = getOrPut(definition) { TypeReference(null) } - -fun TypePresetBuilder.create(definition: String): TypeReference = - TypeReference(null).also { put(definition, it) } - -fun createTypePresetBuilder(): TypePresetBuilder = mutableMapOf() - -fun typePreset(builder: TypePresetBuilder.() -> Unit): TypePreset { - return createTypePresetBuilder().apply(builder) -} - -fun substratePreParsePreset(): TypePreset = typePreset { +fun substratePreParsePreset(runtime: RuntimeSnapshot = RuntimeSnapshot()): TypePreset = typePreset { type(BooleanType) type(u8) @@ -79,7 +61,7 @@ fun substratePreParsePreset(): TypePreset = typePreset { type(GenericAccountId) type(Null) - type(GenericCall) + type(GenericCall(runtime)) fakeType("GenericBlock") @@ -92,7 +74,7 @@ fun substratePreParsePreset(): TypePreset = typePreset { type(Bytes) type(BitVec) - type(Extrinsic) + type(Extrinsic(runtime)) type(CallBytes) // seems to be unused in runtime type(EraType) @@ -108,9 +90,9 @@ fun substratePreParsePreset(): TypePreset = typePreset { type(GenericMultiAddress(this)) - type(OpaqueCall) + type(OpaqueCall(runtime)) - type(GenericEvent) + type(GenericEvent(runtime)) type(EventRecord(this)) alias("::Source", "LookupSource") diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypeRegistry.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypeRegistry.kt index 206c1e60..c3b23cca 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypeRegistry.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/TypeRegistry.kt @@ -1,11 +1,11 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.registry -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.preprocessors.RemoveGenericNoisePreprocessor -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.skipAliases -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.resolvedOrNull +import jp.co.soramitsu.schema.DynamicTypeResolver +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.resolvedOrNull +import jp.co.soramitsu.schema.definitions.types.skipAliases interface RequestPreprocessor { @@ -14,7 +14,7 @@ interface RequestPreprocessor { class TypeRegistry( val types: Map = mapOf(), - val dynamicTypeResolver: DynamicTypeResolver + val dynamicTypeResolver: DynamicTypeResolver = DynamicTypeResolver.defaultCompoundResolver() ) { operator fun get( diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeExt.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeExt.kt deleted file mode 100644 index 65d4c225..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeExt.kt +++ /dev/null @@ -1,96 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types - -import io.emeraldpay.polkaj.scale.ScaleCodecReader -import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.extensions.ensureExceptionType -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.extensions.toHexString -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import java.io.ByteArrayOutputStream - -/** - * @throws CyclicAliasingException - */ -fun Type<*>.skipAliases(): Type<*>? { - if (this !is Alias) return this - - return aliasedReference.skipAliasesOrNull()?.value -} - -fun Type<*>?.isFullyResolved() = this?.isFullyResolved ?: false - -/** - * @throws EncodeDecodeException - */ -fun Type.fromByteArray(runtime: RuntimeSnapshot, byteArray: ByteArray): I { - val reader = ScaleCodecReader(byteArray) - - return ensureUnifiedException { decode(reader, runtime) } -} - -/** - * @throws EncodeDecodeException - */ -fun Type.fromHex(runtime: RuntimeSnapshot, hex: String): I { - return ensureUnifiedException { fromByteArray(runtime, hex.fromHex()) } -} - -fun Type.fromByteArrayOrNull(runtime: RuntimeSnapshot, byteArray: ByteArray): I? { - return runCatching { fromByteArray(runtime, byteArray) }.getOrNull() -} - -fun Type.fromHexOrNull(runtime: RuntimeSnapshot, hex: String): I? { - return runCatching { fromHex(runtime, hex) }.getOrNull() -} - -/** - * @throws EncodeDecodeException - */ -fun Type.toByteArray(runtime: RuntimeSnapshot, value: I): ByteArray { - return ensureUnifiedException { - useScaleWriter { encode(this, runtime, value) } - } -} - -/** - * Type-unsafe version of [toByteArray] - * - * @throws EncodeDecodeException - */ -fun Type<*>.bytes(runtime: RuntimeSnapshot, value: Any?): ByteArray { - return ensureUnifiedException { - useScaleWriter { encodeUnsafe(this, runtime, value) } - } -} - -fun Type.toByteArrayOrNull(runtime: RuntimeSnapshot, value: I): ByteArray? { - return runCatching { toByteArray(runtime, value) }.getOrNull() -} - -fun Type<*>.bytesOrNull(runtime: RuntimeSnapshot, value: Any?): ByteArray? { - return runCatching { bytes(runtime, value) }.getOrNull() -} - -/** - * @throws EncodeDecodeException - */ -fun Type.toHex(runtime: RuntimeSnapshot, value: I) = - toByteArray(runtime, value).toHexString(withPrefix = true) - -fun Type.toHexOrNull(runtime: RuntimeSnapshot, value: I) = - toByteArrayOrNull(runtime, value)?.toHexString(withPrefix = true) - -fun useScaleWriter(use: ScaleCodecWriter.() -> Unit): ByteArray { - val stream = ByteArrayOutputStream() - val writer = ScaleCodecWriter(stream) - - writer.use() - - return stream.toByteArray() -} - -private inline fun ensureUnifiedException(block: () -> R): R { - return ensureExceptionType(::EncodeDecodeException, block) -} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVec.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVec.kt index 4a410b9e..76b3f7c1 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVec.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVec.kt @@ -3,10 +3,10 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import jp.co.soramitsu.fearless_utils.hash.isPositive -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.Primitive -import jp.co.soramitsu.fearless_utils.scale.dataType.compactInt -import jp.co.soramitsu.fearless_utils.scale.dataType.uint + +import jp.co.soramitsu.schema.definitions.types.primitives.Primitive +import jp.co.soramitsu.schema.scale.dataType.compactInt +import jp.co.soramitsu.schema.scale.dataType.uint import java.math.BigInteger import kotlin.math.ceil @@ -16,7 +16,7 @@ object BitVec : Primitive("BitVec") { private val TWO = BigInteger("2") - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Bits { + override fun decode(scaleCodecReader: ScaleCodecReader): Bits { val sizeInBits = compactInt.read(scaleCodecReader).toInt() val sizeInBytes = sizeInBytes(sizeInBits) @@ -35,7 +35,7 @@ object BitVec : Primitive("BitVec") { return bits } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Bits) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Bits) { val intValue = value.foldIndexed(BigInteger.ZERO) { index, acc, bit -> if (bit) { acc + TWO.pow(index) @@ -58,4 +58,4 @@ object BitVec : Primitive("BitVec") { } private fun sizeInBytes(inBits: Int) = ceil(inBits / 8.0).toInt() -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Bytes.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Bytes.kt index 628a0820..e03a56a0 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Bytes.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Bytes.kt @@ -1,5 +1,5 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.DynamicByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.DynamicByteArray -val Bytes = DynamicByteArray("Bytes") \ No newline at end of file +val Bytes = DynamicByteArray("Bytes") diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/CallBytes.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/CallBytes.kt index 86553789..25775454 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/CallBytes.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/CallBytes.kt @@ -2,18 +2,17 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.Primitive -import jp.co.soramitsu.fearless_utils.scale.dataType.byteArraySized +import jp.co.soramitsu.schema.definitions.types.primitives.Primitive +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.scale.dataType.byteArraySized object CallBytes : Primitive("CallBytes") { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): String { + override fun decode(scaleCodecReader: ScaleCodecReader): String { throw NotImplementedError() // the same as in polkascan implementation } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: String) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: String) { val bytes = value.fromHex() byteArraySized(bytes.size).write(scaleCodecWriter, bytes) @@ -22,4 +21,4 @@ object CallBytes : Primitive("CallBytes") { override fun isValidInstance(instance: Any?): Boolean { return instance is String } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Data.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Data.kt index ea2c311d..16d9309c 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Data.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Data.kt @@ -2,14 +2,13 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.scale.dataType.byte -import jp.co.soramitsu.fearless_utils.scale.utils.directWrite +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.getOrCreate +import jp.co.soramitsu.schema.scale.dataType.byte +import jp.co.soramitsu.schema.scale.utils.directWrite class Data(preset: TypePresetBuilder) : DictEnum("Data", createMapping(preset)) { @@ -22,7 +21,7 @@ class Data(preset: TypePresetBuilder) : DictEnum("Data", createMapping(preset)) const val SHA_3_256 = "ShaThree256" } - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Entry { + override fun decode(scaleCodecReader: ScaleCodecReader): Entry { return when (val typeIndex = byte.read(scaleCodecReader).toInt()) { 0 -> Entry(NONE, null) @@ -39,7 +38,7 @@ class Data(preset: TypePresetBuilder) : DictEnum("Data", createMapping(preset)) val typeEntry = elements[typeIndex - offset] - val decoded = typeEntry.value.requireValue().decode(scaleCodecReader, runtime) + val decoded = typeEntry.value.requireValue().decode(scaleCodecReader) Entry(typeEntry.name, decoded) } @@ -50,7 +49,6 @@ class Data(preset: TypePresetBuilder) : DictEnum("Data", createMapping(preset)) override fun encode( scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, value: Entry ) { when (value.name) { @@ -72,7 +70,7 @@ class Data(preset: TypePresetBuilder) : DictEnum("Data", createMapping(preset)) val type = elements[index].value.requireValue() scaleCodecWriter.writeByte(index + offset) - type.encodeUnsafe(scaleCodecWriter, runtime, value.value) + type.encodeUnsafe(scaleCodecWriter, value.value) } } } @@ -87,4 +85,4 @@ private fun createMapping(preset: TypePresetBuilder): List("Era") { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Era { + override fun decode(scaleCodecReader: ScaleCodecReader): Era { val firstByte = byte.read(scaleCodecReader).toHex() return if (firstByte == "00") { @@ -58,7 +58,7 @@ object EraType : Primitive("Era") { } } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Era) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Era) { when (value) { is Era.Immortal -> byte.write(scaleCodecWriter, 0) is Era.Mortal -> { @@ -73,4 +73,4 @@ object EraType : Primitive("Era") { } override fun isValidInstance(instance: Any?) = instance is Era -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EventRecord.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EventRecord.kt index a9318e55..039b3928 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EventRecord.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EventRecord.kt @@ -1,10 +1,10 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Vec +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Struct +import jp.co.soramitsu.schema.definitions.types.composite.Vec +import jp.co.soramitsu.schema.getOrCreate @Suppress("FunctionName") fun EventRecord(typePresetBuilder: TypePresetBuilder) = Struct( @@ -19,4 +19,4 @@ fun EventRecord(typePresetBuilder: TypePresetBuilder) = Struct( ) ) ) -) \ No newline at end of file +) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Extrinsic.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Extrinsic.kt index 833a0cff..c9b17724 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Extrinsic.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Extrinsic.kt @@ -5,19 +5,19 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.bytes -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toByteArray -import jp.co.soramitsu.fearless_utils.scale.dataType.byte -import jp.co.soramitsu.fearless_utils.scale.dataType.compactInt +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.bytes +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.toByteArray +import jp.co.soramitsu.schema.scale.dataType.byte +import jp.co.soramitsu.schema.scale.dataType.compactInt private val SIGNED_MASK = 0b1000_0000.toUByte() private const val TYPE_ADDRESS = "Address" private const val TYPE_SIGNATURE = "ExtrinsicSignature" -object Extrinsic : Type("ExtrinsicsDecoder") { +class Extrinsic(private val runtime: RuntimeSnapshot) : Type("ExtrinsicsDecoder") { class Instance( val signature: Signature?, @@ -34,29 +34,28 @@ object Extrinsic : Type("ExtrinsicsDecoder") { override val isFullyResolved: Boolean = true - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Instance { + override fun decode(scaleCodecReader: ScaleCodecReader): Instance { val length = compactInt.read(scaleCodecReader) val extrinsicVersion = byte.read(scaleCodecReader).toUByte() val signature = if (isSigned(extrinsicVersion)) { Signature( - accountIdentifier = addressType(runtime).decode(scaleCodecReader, runtime), - signature = signatureType(runtime).decode(scaleCodecReader, runtime), - signedExtras = SignedExtras.decode(scaleCodecReader, runtime) + accountIdentifier = addressType().decode(scaleCodecReader), + signature = signatureType().decode(scaleCodecReader), + signedExtras = SignedExtras(runtime).decode(scaleCodecReader) ) } else { null } - val call = GenericCall.decode(scaleCodecReader, runtime) + val call = GenericCall(runtime).decode(scaleCodecReader) return Instance(signature, call) } override fun encode( scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, value: Instance ) { val isSigned = value.signature != null @@ -67,20 +66,20 @@ object Extrinsic : Type("ExtrinsicsDecoder") { val signatureWrapperBytes = if (isSigned) { val signature = value.signature!! - val addressBytes = addressType(runtime).bytes(runtime, signature.accountIdentifier) - val signatureBytes = signatureType(runtime).bytes(runtime, signature.signature) - val signedExtrasBytes = SignedExtras.bytes(runtime, signature.signedExtras) + val addressBytes = addressType().bytes(signature.accountIdentifier) + val signatureBytes = signatureType().bytes(signature.signature) + val signedExtrasBytes = SignedExtras(runtime).bytes(signature.signedExtras) addressBytes + signatureBytes + signedExtrasBytes } else { byteArrayOf() } - val callBytes = GenericCall.toByteArray(runtime, value.call) + val callBytes = GenericCall(runtime).toByteArray(value.call) val extrinsicBodyBytes = byteArrayOf(encodedVersion) + signatureWrapperBytes + callBytes - Bytes.encode(scaleCodecWriter, runtime, extrinsicBodyBytes) + Bytes.encode(scaleCodecWriter, extrinsicBodyBytes) } override fun isValidInstance(instance: Any?): Boolean { @@ -99,12 +98,12 @@ object Extrinsic : Type("ExtrinsicsDecoder") { return extrinsicVersion and SIGNED_MASK != 0.toUByte() } - private fun addressType(runtime: RuntimeSnapshot): Type<*> { + private fun addressType(): Type<*> { return runtime.typeRegistry[TYPE_ADDRESS] ?: requiredTypeNotFound(TYPE_ADDRESS) } - private fun signatureType(runtime: RuntimeSnapshot): Type<*> { + private fun signatureType(): Type<*> { return runtime.typeRegistry[TYPE_SIGNATURE] ?: requiredTypeNotFound(TYPE_SIGNATURE) } @@ -112,4 +111,4 @@ object Extrinsic : Type("ExtrinsicsDecoder") { private fun requiredTypeNotFound(name: String): Nothing { throw EncodeDecodeException("Cannot resolve $name type, which is required to work with Extrinsic") } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicExt.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicExt.kt index b4ed90d2..261bfb11 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicExt.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicExt.kt @@ -1,7 +1,7 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.encrypt.EncryptionType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum class MultiSignature(val encryptionType: EncryptionType, val value: ByteArray) @@ -56,4 +56,4 @@ fun multiAddressFromId(addressId: ByteArray): DictEnum.Entry { name = MULTI_ADDRESS_ID, value = addressId ) -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicPayloadExtras.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicPayloadExtras.kt index d276c100..ed5ae1f0 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicPayloadExtras.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicPayloadExtras.kt @@ -3,10 +3,10 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.Compact -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u32 +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.primitives.Compact +import jp.co.soramitsu.schema.definitions.types.primitives.u32 typealias ExtrinsicPayloadExtrasInstance = Map @@ -14,63 +14,70 @@ private const val _MORTALITY = "CheckMortality" private const val _NONCE = "CheckNonce" private const val _TIP = "ChargeTransactionPayment" -object SignedExtras : ExtrinsicPayloadExtras( +class SignedExtras(runtime: RuntimeSnapshot) : ExtrinsicPayloadExtras( name = "SignedExtras", extrasMapping = mapOf( _MORTALITY to EraType, _NONCE to Compact("Compact"), _TIP to Compact("Compact") - ) + ), + runtime ) { - const val ERA = _MORTALITY - const val NONCE = _NONCE - const val TIP = _TIP + + companion object { + const val ERA = _MORTALITY + const val NONCE = _NONCE + const val TIP = _TIP + } } private const val _GENESIS = "CheckGenesis" private const val _SPEC_VERSION = "CheckSpecVersion" private const val _TX_VERSION = "CheckTxVersion" -object AdditionalExtras : ExtrinsicPayloadExtras( +class AdditionalExtras(runtime: RuntimeSnapshot) : ExtrinsicPayloadExtras( name = "AdditionalExtras", extrasMapping = mapOf( _MORTALITY to H256, _GENESIS to H256, _SPEC_VERSION to u32, _TX_VERSION to u32 - ) + ), + runtime ) { - const val BLOCK_HASH = _MORTALITY - const val GENESIS = _GENESIS - const val SPEC_VERSION = _SPEC_VERSION - const val TX_VERSION = _TX_VERSION + + companion object { + const val BLOCK_HASH = _MORTALITY + const val GENESIS = _GENESIS + const val SPEC_VERSION = _SPEC_VERSION + const val TX_VERSION = _TX_VERSION + } } open class ExtrinsicPayloadExtras( name: String, - private val extrasMapping: Map> + private val extrasMapping: Map>, + private val runtime: RuntimeSnapshot ) : Type(name) { override fun decode( - scaleCodecReader: ScaleCodecReader, - runtime: RuntimeSnapshot + scaleCodecReader: ScaleCodecReader ): ExtrinsicPayloadExtrasInstance { val enabledSignedExtras = runtime.metadata.extrinsic.signedExtensions return enabledSignedExtras.associateWith { name -> - extrasMapping[name]?.decode(scaleCodecReader, runtime) + extrasMapping[name]?.decode(scaleCodecReader) } } override fun encode( scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, value: ExtrinsicPayloadExtrasInstance ) { val enabledSignedExtras = runtime.metadata.extrinsic.signedExtensions return enabledSignedExtras.forEach { name -> - extrasMapping[name]?.encodeUnsafe(scaleCodecWriter, runtime, value[name]) + extrasMapping[name]?.encodeUnsafe(scaleCodecWriter, value[name]) } } @@ -82,4 +89,4 @@ open class ExtrinsicPayloadExtras( private fun unknownSignedExtension(name: String): Nothing = throw EncodeDecodeException("Unknown signed extension: $name") -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericAccountId.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericAccountId.kt index f043fe41..f4165f86 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericAccountId.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericAccountId.kt @@ -1,5 +1,5 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.FixedByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.FixedByteArray -object GenericAccountId : FixedByteArray("GenericAccountId", 32) \ No newline at end of file +object GenericAccountId : FixedByteArray("GenericAccountId", 32) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCall.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCall.kt index 47e95551..05b49e75 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCall.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCall.kt @@ -3,16 +3,16 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException import jp.co.soramitsu.fearless_utils.runtime.metadata.Function import jp.co.soramitsu.fearless_utils.runtime.metadata.FunctionArgument import jp.co.soramitsu.fearless_utils.runtime.metadata.callOrNull import jp.co.soramitsu.fearless_utils.runtime.metadata.moduleOrNull -import jp.co.soramitsu.fearless_utils.scale.dataType.tuple -import jp.co.soramitsu.fearless_utils.scale.dataType.uint8 +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.scale.dataType.tuple +import jp.co.soramitsu.schema.scale.dataType.uint8 -object GenericCall : Type("GenericCall") { +class GenericCall(val runtime: RuntimeSnapshot) : Type("GenericCall") { class Instance(val moduleIndex: Int, val callIndex: Int, val arguments: Map) @@ -20,15 +20,15 @@ object GenericCall : Type("GenericCall") { override val isFullyResolved = true - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Instance { + override fun decode(scaleCodecReader: ScaleCodecReader): Instance { val (moduleIndex, callIndex) = indexCoder.read(scaleCodecReader) .run { first.toInt() to second.toInt() } - val call = getCallOrThrow(runtime, moduleIndex, callIndex) + val call = getCallOrThrow(moduleIndex, callIndex) val arguments = call.arguments.associate { argumentDefinition -> argumentDefinition.name to argumentDefinition.typeOrThrow() - .decode(scaleCodecReader, runtime) + .decode(scaleCodecReader) } return Instance(moduleIndex, callIndex, arguments) @@ -36,16 +36,15 @@ object GenericCall : Type("GenericCall") { override fun encode( scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, value: Instance ) = with(value) { - val call = getCallOrThrow(runtime, moduleIndex, callIndex) + val call = getCallOrThrow(moduleIndex, callIndex) indexCoder.write(scaleCodecWriter, moduleIndex.toUByte() to callIndex.toUByte()) call.arguments.forEach { argumentDefinition -> argumentDefinition.typeOrThrow() - .encodeUnsafe(scaleCodecWriter, runtime, arguments[argumentDefinition.name]) + .encodeUnsafe(scaleCodecWriter, arguments[argumentDefinition.name]) } } @@ -57,7 +56,6 @@ object GenericCall : Type("GenericCall") { type ?: throw EncodeDecodeException("Argument $name is not resolved") private fun getCallOrThrow( - runtime: RuntimeSnapshot, moduleIndex: Int, callIndex: Int ): Function { @@ -70,4 +68,4 @@ object GenericCall : Type("GenericCall") { private fun callNotFound(moduleIndex: Int, callIndex: Int): Nothing { throw EncodeDecodeException("No call found for index ($moduleIndex, $callIndex)") } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericConsensusEngineId.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericConsensusEngineId.kt index a86c1a0b..4ccda681 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericConsensusEngineId.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericConsensusEngineId.kt @@ -1,11 +1,11 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Vec -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.FixedByteArray +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Struct +import jp.co.soramitsu.schema.definitions.types.composite.Vec +import jp.co.soramitsu.schema.definitions.types.primitives.FixedByteArray +import jp.co.soramitsu.schema.getOrCreate val GenericConsensusEngineId = FixedByteArray("GenericConsensusEngineId", 4) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEvent.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEvent.kt index 0a59c312..a2838ff4 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEvent.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEvent.kt @@ -3,15 +3,15 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException import jp.co.soramitsu.fearless_utils.runtime.metadata.Event import jp.co.soramitsu.fearless_utils.runtime.metadata.eventOrNull import jp.co.soramitsu.fearless_utils.runtime.metadata.moduleOrNull -import jp.co.soramitsu.fearless_utils.scale.dataType.tuple -import jp.co.soramitsu.fearless_utils.scale.dataType.uint8 +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.scale.dataType.tuple +import jp.co.soramitsu.schema.scale.dataType.uint8 -object GenericEvent : Type("GenericEvent") { +class GenericEvent(val runtime: RuntimeSnapshot) : Type("GenericEvent") { class Instance(val moduleIndex: Int, val eventIndex: Int, val arguments: List) @@ -19,14 +19,14 @@ object GenericEvent : Type("GenericEvent") { override val isFullyResolved = true - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Instance { + override fun decode(scaleCodecReader: ScaleCodecReader): Instance { val (moduleIndex, eventIndex) = indexCoder.read(scaleCodecReader) .run { first.toInt() to second.toInt() } - val call = getEventOrThrow(runtime, moduleIndex, eventIndex) + val call = getEventOrThrow(moduleIndex, eventIndex) val arguments = call.arguments.map { argumentDefinition -> - argumentDefinition.requireNonNull().decode(scaleCodecReader, runtime) + argumentDefinition.requireNonNull().decode(scaleCodecReader) } return Instance(moduleIndex, eventIndex, arguments) @@ -34,16 +34,15 @@ object GenericEvent : Type("GenericEvent") { override fun encode( scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, value: Instance ) = with(value) { - val call = getEventOrThrow(runtime, moduleIndex, eventIndex) + val call = getEventOrThrow(moduleIndex, eventIndex) indexCoder.write(scaleCodecWriter, moduleIndex.toUByte() to eventIndex.toUByte()) call.arguments.forEachIndexed { index, argumentType -> argumentType.requireNonNull() - .encodeUnsafe(scaleCodecWriter, runtime, arguments[index]) + .encodeUnsafe(scaleCodecWriter, arguments[index]) } } @@ -55,7 +54,6 @@ object GenericEvent : Type("GenericEvent") { this ?: throw EncodeDecodeException("Argument $name is not resolved") private fun getEventOrThrow( - runtime: RuntimeSnapshot, moduleIndex: Int, callIndex: Int ): Event { @@ -68,4 +66,4 @@ object GenericEvent : Type("GenericEvent") { private fun eventNotFound(moduleIndex: Int, eventIndex: Int): Nothing { throw EncodeDecodeException("No event for ($moduleIndex, $eventIndex) index found") } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericMultiAddress.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericMultiAddress.kt index bd769398..6889a0af 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericMultiAddress.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericMultiAddress.kt @@ -1,10 +1,10 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.Compact +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.primitives.Compact +import jp.co.soramitsu.schema.getOrCreate const val MULTI_ADDRESS_ID = "Id" @@ -18,4 +18,4 @@ fun GenericMultiAddress(typePresetBuilder: TypePresetBuilder) = DictEnum( DictEnum.Entry("Address32", typePresetBuilder.getOrCreate("H256")), DictEnum.Entry("Address20", typePresetBuilder.getOrCreate("H160")) ) -) \ No newline at end of file +) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericSeal.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericSeal.kt index 2c3146d1..12d55163 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericSeal.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericSeal.kt @@ -1,8 +1,8 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.composite.Struct +import jp.co.soramitsu.schema.getOrCreate @Suppress("FunctionName") fun GenericSealV0(typePresetBuilder: TypePresetBuilder) = Struct( diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Hash.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Hash.kt index 5a548144..29d5fc5b 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Hash.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Hash.kt @@ -1,6 +1,6 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.FixedByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.FixedByteArray val H160 = Hash(160) val H256 = Hash(256) @@ -10,4 +10,4 @@ class Hash(bits: Int) : FixedByteArray("H$bits", length = bits / 8) { init { require(bits % 8 == 0) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Null.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Null.kt index 1b5ec56c..b282cd53 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Null.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/Null.kt @@ -2,20 +2,19 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.Primitive -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot +import jp.co.soramitsu.schema.definitions.types.primitives.Primitive object Null : Primitive("Null") { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Any? { + override fun decode(scaleCodecReader: ScaleCodecReader): Any? { return null } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Any?) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Any?) { // pass } override fun isValidInstance(instance: Any?): Boolean { return instance == null } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCall.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCall.kt index 637d980f..09e58e83 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCall.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCall.kt @@ -3,34 +3,32 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromByteArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toByteArray +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.fromByteArray +import jp.co.soramitsu.schema.definitions.types.toByteArray -object OpaqueCall : Type("OpaqueCall") { +class OpaqueCall(val runtime: RuntimeSnapshot) : Type("OpaqueCall") { override val isFullyResolved = true override fun decode( - scaleCodecReader: ScaleCodecReader, - runtime: RuntimeSnapshot + scaleCodecReader: ScaleCodecReader ): GenericCall.Instance { - val bytes = Bytes.decode(scaleCodecReader, runtime) + val bytes = Bytes.decode(scaleCodecReader) - return GenericCall.fromByteArray(runtime, bytes) + return GenericCall(runtime).fromByteArray(bytes) } override fun encode( scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, value: GenericCall.Instance ) { - val callEncoded = GenericCall.toByteArray(runtime, value) + val callEncoded = GenericCall(runtime).toByteArray(value) - return Bytes.encode(scaleCodecWriter, runtime, callEncoded) + return Bytes.encode(scaleCodecWriter, callEncoded) } override fun isValidInstance(instance: Any?): Boolean { return instance is ByteArray } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SessionKeysSubstrate.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SessionKeysSubstrate.kt index 48d18504..7399cbe8 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SessionKeysSubstrate.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SessionKeysSubstrate.kt @@ -1,8 +1,8 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.getOrCreate -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct +import jp.co.soramitsu.schema.TypePresetBuilder +import jp.co.soramitsu.schema.definitions.types.composite.Struct +import jp.co.soramitsu.schema.getOrCreate @Suppress("FunctionName") fun SessionKeysSubstrate(typePresetBuilder: TypePresetBuilder) = Struct( @@ -12,4 +12,4 @@ fun SessionKeysSubstrate(typePresetBuilder: TypePresetBuilder) = Struct( "babe" to typePresetBuilder.getOrCreate("AccountId"), "im_online" to typePresetBuilder.getOrCreate("AccountId") ) -) \ No newline at end of file +) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/Compact.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/Compact.kt deleted file mode 100644 index 362ecef7..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/Compact.kt +++ /dev/null @@ -1,18 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives - -import io.emeraldpay.polkaj.scale.ScaleCodecReader -import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.scale.dataType.compactInt -import java.math.BigInteger -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot - -class Compact(name: String) : NumberType(name) { - - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): BigInteger { - return compactInt.read(scaleCodecReader) - } - - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: BigInteger) { - return compactInt.write(scaleCodecWriter, value) - } -} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/DynamicByteArray.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/DynamicByteArray.kt deleted file mode 100644 index 5c662408..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/DynamicByteArray.kt +++ /dev/null @@ -1,21 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives - -import io.emeraldpay.polkaj.scale.ScaleCodecReader -import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.scale.dataType.byteArray -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot - -class DynamicByteArray(name: String) : Primitive(name) { - - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): ByteArray { - return byteArray.read(scaleCodecReader) - } - - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: ByteArray) { - return byteArray.write(scaleCodecWriter, value) - } - - override fun isValidInstance(instance: Any?): Boolean { - return instance is ByteArray - } -} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/Primitive.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/Primitive.kt deleted file mode 100644 index 9c262e45..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/Primitive.kt +++ /dev/null @@ -1,8 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives - -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type - -abstract class Primitive(name: String) : Type(name) { - - override val isFullyResolved = true -} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/stub/FakeType.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/stub/FakeType.kt deleted file mode 100644 index 466e07c5..00000000 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/stub/FakeType.kt +++ /dev/null @@ -1,23 +0,0 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub - -import io.emeraldpay.polkaj.scale.ScaleCodecReader -import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot - -class FakeType(name: String) : Type(name) { - - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Nothing { - throw IllegalArgumentException("Fake") - } - - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Nothing) { - throw IllegalArgumentException("Fake") - } - - override fun isValidInstance(instance: Any?): Boolean { - return false - } - - override val isFullyResolved = true -} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilder.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilder.kt index 8e392b5e..c7ba6c7c 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilder.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilder.kt @@ -13,11 +13,11 @@ import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Generic import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.MultiSignature import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.SignedExtras import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.new -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.useScaleWriter import jp.co.soramitsu.fearless_utils.runtime.metadata.call import jp.co.soramitsu.fearless_utils.runtime.metadata.module import jp.co.soramitsu.fearless_utils.wsrpc.request.runtime.chain.RuntimeVersion +import jp.co.soramitsu.schema.definitions.types.toHex +import jp.co.soramitsu.schema.definitions.types.useScaleWriter import java.math.BigInteger private val DEFAULT_TIP = BigInteger.ZERO @@ -76,7 +76,7 @@ class ExtrinsicBuilder( call = call ) - return Extrinsic.toHex(runtime, extrinsic) + return Extrinsic(runtime).toHex(extrinsic) } private fun maybeWrapInBatch(): GenericCall.Instance { @@ -102,9 +102,9 @@ class ExtrinsicBuilder( ) val payloadBytes = useScaleWriter { - GenericCall.encode(this, runtime, call) - SignedExtras.encode(this, runtime, signedExtrasInstance) - AdditionalExtras.encode(this, runtime, additionalExtrasInstance) + GenericCall(runtime).encode(this, call) + SignedExtras(runtime).encode(this, signedExtrasInstance) + AdditionalExtras(runtime).encode(this, additionalExtrasInstance) } val messageToSign = if (payloadBytes.size > PAYLOAD_HASH_THRESHOLD) { @@ -136,4 +136,4 @@ class ExtrinsicBuilder( SignedExtras.TIP to tip, SignedExtras.NONCE to nonce ) -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderExt.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderExt.kt index f06692e2..2f1b7210 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderExt.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderExt.kt @@ -1,6 +1,6 @@ package jp.co.soramitsu.fearless_utils.runtime.extrinsic -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum import java.math.BigInteger fun ExtrinsicBuilder.transfer(recipientAccountId: ByteArray, amount: BigInteger): ExtrinsicBuilder { @@ -15,4 +15,4 @@ fun ExtrinsicBuilder.transfer(recipientAccountId: ByteArray, amount: BigInteger) "value" to amount ) ) -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadata.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadata.kt index 03f873ce..e44fbc83 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadata.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadata.kt @@ -1,8 +1,8 @@ package jp.co.soramitsu.fearless_utils.runtime.metadata import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.scale.EncodableStruct +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.scale.EncodableStruct import java.math.BigInteger interface WithName { @@ -276,4 +276,4 @@ class ExtrinsicMetadata( version = struct[ExtrinsicMetadataSchema.version].toInt().toBigInteger(), signedExtensions = struct[ExtrinsicMetadataSchema.signedExtensions] ) -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataExt.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataExt.kt index 8bbd6bba..bd6424ea 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataExt.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataExt.kt @@ -1,10 +1,10 @@ package jp.co.soramitsu.fearless_utils.runtime.metadata -import jp.co.soramitsu.fearless_utils.extensions.toHexString import jp.co.soramitsu.fearless_utils.hash.Hasher.xxHash128 import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.bytes -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException + +import jp.co.soramitsu.schema.definitions.types.bytes +import jp.co.soramitsu.schema.extensions.toHexString /** * @throws NoSuchElementException if module was not found @@ -85,7 +85,7 @@ fun StorageEntry.storageKey(runtime: RuntimeSnapshot, key: Any?): String { else -> wrongEntryType() } - val keyEncoded = keyType?.bytes(runtime, key) ?: typeNotResolved(name) + val keyEncoded = keyType?.bytes(key) ?: typeNotResolved(name) val storageKey = moduleHash() + serviceHash() + hasher.hashingFunction(keyEncoded) @@ -105,14 +105,14 @@ fun StorageEntry.storageKeyOrNull(runtime: RuntimeSnapshot, key1: Any?) = nullOn * @throws IllegalStateException if some of types used for encoding cannot be resolved * @throws EncodeDecodeException if error happened during encoding */ -fun StorageEntry.storageKey(runtime: RuntimeSnapshot, key1: Any?, key2: Any?): String { +fun StorageEntry.storageKey(key1: Any?, key2: Any?): String { if (type !is StorageEntryType.DoubleMap) wrongEntryType() val key1Type = type.key1 ?: typeNotResolved(name) val key2Type = type.key2 ?: typeNotResolved(name) - val key1Encoded = key1Type.bytes(runtime, key1) - val key2Encoded = key2Type.bytes(runtime, key2) + val key1Encoded = key1Type.bytes(key1) + val key2Encoded = key2Type.bytes(key2) val key1Hashed = type.key1Hasher.hashingFunction(key1Encoded) val key2Hashed = type.key2Hasher.hashingFunction(key2Encoded) @@ -122,9 +122,9 @@ fun StorageEntry.storageKey(runtime: RuntimeSnapshot, key1: Any?, key2: Any?): S return storageKey.toHexString(withPrefix = true) } -fun StorageEntry.storageKeyOrNull(runtime: RuntimeSnapshot, key1: Any?, key2: Any?) = +fun StorageEntry.storageKeyOrNull(key1: Any?, key2: Any?) = nullOnException { - storageKey(runtime, key1, key2) + storageKey(key1, key2) } private fun typeNotResolved(entryName: String): Nothing = @@ -145,4 +145,4 @@ private fun requireElementInMap(map: Map?, index: Int): V { if (map == null) throw NoSuchElementException() return map.values.elementAtOrNull(index) ?: throw NoSuchElementException() -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataSchema.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataSchema.kt index b03d60f5..6e7492ac 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataSchema.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/metadata/RuntimeMetadataSchema.kt @@ -2,18 +2,18 @@ package jp.co.soramitsu.fearless_utils.runtime.metadata import jp.co.soramitsu.fearless_utils.hash.Hasher import jp.co.soramitsu.fearless_utils.hash.hashConcat -import jp.co.soramitsu.fearless_utils.scale.EncodableStruct -import jp.co.soramitsu.fearless_utils.scale.Schema -import jp.co.soramitsu.fearless_utils.scale.bool -import jp.co.soramitsu.fearless_utils.scale.byteArray -import jp.co.soramitsu.fearless_utils.scale.dataType.scalable -import jp.co.soramitsu.fearless_utils.scale.enum -import jp.co.soramitsu.fearless_utils.scale.schema -import jp.co.soramitsu.fearless_utils.scale.string -import jp.co.soramitsu.fearless_utils.scale.uint32 -import jp.co.soramitsu.fearless_utils.scale.uint8 -import jp.co.soramitsu.fearless_utils.scale.vector -import jp.co.soramitsu.fearless_utils.scale.dataType.string as stringType +import jp.co.soramitsu.schema.scale.EncodableStruct +import jp.co.soramitsu.schema.scale.Schema +import jp.co.soramitsu.schema.scale.bool +import jp.co.soramitsu.schema.scale.byteArray +import jp.co.soramitsu.schema.scale.dataType.scalable +import jp.co.soramitsu.schema.scale.enum +import jp.co.soramitsu.schema.scale.schema +import jp.co.soramitsu.schema.scale.string +import jp.co.soramitsu.schema.scale.uint32 +import jp.co.soramitsu.schema.scale.uint8 +import jp.co.soramitsu.schema.scale.vector +import jp.co.soramitsu.schema.scale.dataType.string as stringType object RuntimeMetadataSchema : Schema() { val magicNumber by uint32() @@ -140,4 +140,4 @@ fun EncodableStruct.module(name: String) = get(RuntimeMet fun EncodableStruct.call(name: String) = get(ModuleMetadataSchema.calls)?.find { it[FunctionMetadataSchema.name] == name } -fun EncodableStruct.storage(name: String) = get(ModuleMetadataSchema.storage)?.get(StorageMetadataSchema.entries)?.find { it[StorageEntryMetadataSchema.name] == name } \ No newline at end of file +fun EncodableStruct.storage(name: String) = get(ModuleMetadataSchema.storage)?.get(StorageMetadataSchema.entries)?.find { it[StorageEntryMetadataSchema.name] == name } diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/Types.kt b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/Types.kt index 76707850..f99e964d 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/Types.kt +++ b/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/Types.kt @@ -1,8 +1,8 @@ package jp.co.soramitsu.fearless_utils.wsrpc.mappers import com.google.gson.Gson -import jp.co.soramitsu.fearless_utils.scale.EncodableStruct -import jp.co.soramitsu.fearless_utils.scale.Schema +import jp.co.soramitsu.schema.scale.EncodableStruct +import jp.co.soramitsu.schema.scale.Schema import jp.co.soramitsu.fearless_utils.wsrpc.exception.RpcException import jp.co.soramitsu.fearless_utils.wsrpc.response.RpcResponse @@ -62,4 +62,4 @@ class POJOMapper(val classRef: Class) : NullableMapper() { else -> rpcResponse.result as? T ?: null } } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/SignerTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/SignerTest.kt index d2eaef04..9f7dc07f 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/SignerTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/SignerTest.kt @@ -1,8 +1,8 @@ package jp.co.soramitsu.fearless_utils.encrypt import jp.co.soramitsu.fearless_utils.encrypt.model.Keypair -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.extensions.toHexString +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toHexString import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -40,4 +40,4 @@ class SignerTest { assertEquals(expected, signatureWrapper.signature.toHexString()) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharingTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharingTest.kt index 47ea5965..bafd3359 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharingTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/encrypt/qr/QrSharingTest.kt @@ -1,7 +1,7 @@ package jp.co.soramitsu.fearless_utils.encrypt.qr import jp.co.soramitsu.fearless_utils.common.assertThrows -import jp.co.soramitsu.fearless_utils.extensions.fromHex +import jp.co.soramitsu.schema.extensions.fromHex import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -83,4 +83,4 @@ class QrSharingTest { QrSharing.decode(wrongContent) } } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/extensions/KotlinKtTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/extensions/KotlinKtTest.kt index fa28dc0b..22e4615d 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/extensions/KotlinKtTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/extensions/KotlinKtTest.kt @@ -1,6 +1,8 @@ package jp.co.soramitsu.fearless_utils.extensions -import org.junit.Assert.* +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toBigInteger +import org.junit.Assert.assertEquals import org.junit.Test import java.math.BigInteger import java.nio.ByteOrder @@ -13,4 +15,4 @@ class KotlinKtTest { assertEquals(BigInteger("1097877634998"), bytes.toBigInteger(ByteOrder.LITTLE_ENDIAN)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/integration/extrinsic/SendIntegrationTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/integration/extrinsic/SendIntegrationTest.kt index 6a2bfd18..0416e610 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/integration/extrinsic/SendIntegrationTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/integration/extrinsic/SendIntegrationTest.kt @@ -2,7 +2,6 @@ package jp.co.soramitsu.fearless_utils.integration.extrinsic import jp.co.soramitsu.fearless_utils.encrypt.EncryptionType import jp.co.soramitsu.fearless_utils.encrypt.model.Keypair -import jp.co.soramitsu.fearless_utils.extensions.fromHex import jp.co.soramitsu.fearless_utils.integration.BaseIntegrationTest import jp.co.soramitsu.fearless_utils.integration.WESTEND_URL import jp.co.soramitsu.fearless_utils.runtime.RealRuntimeProvider @@ -12,6 +11,7 @@ import jp.co.soramitsu.fearless_utils.runtime.extrinsic.transfer import jp.co.soramitsu.fearless_utils.wsrpc.executeAsync import jp.co.soramitsu.fearless_utils.wsrpc.request.runtime.author.SubmitExtrinsicRequest import jp.co.soramitsu.fearless_utils.wsrpc.request.runtime.chain.RuntimeVersion +import jp.co.soramitsu.schema.extensions.fromHex import kotlinx.coroutines.runBlocking import org.junit.Ignore import org.junit.Test @@ -50,4 +50,4 @@ class SendIntegrationTest : BaseIntegrationTest(WESTEND_URL) { print(socketService.executeAsync(SubmitExtrinsicRequest(extrinsic)).result!!) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/Common.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/Common.kt index a80c55d4..6b3138a9 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/Common.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/Common.kt @@ -4,32 +4,30 @@ import com.google.gson.Gson import com.google.gson.stream.JsonReader import jp.co.soramitsu.fearless_utils.common.getFileContentFromResources import jp.co.soramitsu.fearless_utils.common.getResourceReader -import jp.co.soramitsu.fearless_utils.runtime.definitions.TypeDefinitionParser +import jp.co.soramitsu.fearless_utils.runtime.definitions.TypeDefinitionParserImpl import jp.co.soramitsu.fearless_utils.runtime.definitions.TypeDefinitionsTree -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.GenericsExtension import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.substratePreParsePreset import jp.co.soramitsu.fearless_utils.runtime.metadata.RuntimeMetadata import jp.co.soramitsu.fearless_utils.runtime.metadata.RuntimeMetadataSchema -import org.junit.Assert +import jp.co.soramitsu.schema.DynamicTypeResolver +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.GenericsExtension object RealRuntimeProvider { fun buildRuntime(networkName: String): RuntimeSnapshot { val metadataRaw = buildRawMetadata(networkName) - val typeRegistry = buildRegistry(networkName) - val metadata = RuntimeMetadata(typeRegistry, metadataRaw) - - return RuntimeSnapshot(typeRegistry, metadata) + return RuntimeSnapshot() + .also { it.typeRegistry = buildRegistry(networkName, it)} + .also { it.metadata = RuntimeMetadata(it.typeRegistry, metadataRaw) } } fun buildRawMetadata(networkName: String = "kusama") = getFileContentFromResources("${networkName}_metadata").run { RuntimeMetadataSchema.read(this) } - fun buildRegistry(networkName: String): TypeRegistry { + fun buildRegistry(networkName: String, runtime: RuntimeSnapshot = RuntimeSnapshot()): TypeRegistry { val gson = Gson() val reader = JsonReader(getResourceReader("default.json")) val kusamaReader = JsonReader(getResourceReader("${networkName}.json")) @@ -39,8 +37,8 @@ object RealRuntimeProvider { gson.fromJson(kusamaReader, TypeDefinitionsTree::class.java) val defaultTypeRegistry = - TypeDefinitionParser.parseBaseDefinitions(tree, substratePreParsePreset()).typePreset - val networkParsed = TypeDefinitionParser.parseNetworkVersioning( + TypeDefinitionParserImpl.parseBaseDefinitions(tree.types, substratePreParsePreset(runtime)).typePreset + val networkParsed = TypeDefinitionParserImpl.parseNetworkVersioning( kusamaTree, defaultTypeRegistry ) @@ -52,4 +50,4 @@ object RealRuntimeProvider { ) ) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParserTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParserTest.kt index 231798d8..d6ce7f3c 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParserTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/TypeDefinitionParserTest.kt @@ -4,25 +4,18 @@ import com.google.gson.Gson import com.google.gson.stream.JsonReader import jp.co.soramitsu.fearless_utils.common.assertInstance import jp.co.soramitsu.fearless_utils.common.getResourceReader -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePreset import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.substratePreParsePreset -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.type -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.typePreset -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.CollectionEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.FixedArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Option -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.SetType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Struct -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Tuple -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Vec -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.FixedByteArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u64 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub.FakeType +import jp.co.soramitsu.schema.DynamicTypeResolver +import jp.co.soramitsu.schema.TypePreset +import jp.co.soramitsu.schema.definitions.types.composite.* +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.FixedByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.u64 +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.stub.FakeType +import jp.co.soramitsu.schema.type +import jp.co.soramitsu.schema.typePreset import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -365,7 +358,7 @@ class TypeDefinitionParserTest { val tree = gson.fromJson(definitions, TypeDefinitionsTree::class.java) val unknown = - TypeDefinitionParser.parseBaseDefinitions(tree, initialTypeRegistry).unknownTypes + TypeDefinitionParserImpl.parseBaseDefinitions(tree.types, initialTypeRegistry).unknownTypes assert("F" in unknown) } @@ -376,7 +369,7 @@ class TypeDefinitionParserTest { val reader = JsonReader(getResourceReader("default.json")) val tree = gson.fromJson(reader, TypeDefinitionsTree::class.java) - val result = TypeDefinitionParser.parseBaseDefinitions(tree, substratePreParsePreset()) + val result = TypeDefinitionParserImpl.parseBaseDefinitions(tree.types, substratePreParsePreset()) print(result.unknownTypes) @@ -395,13 +388,13 @@ class TypeDefinitionParserTest { val kusamaTree = gson.fromJson(kusamaReader, TypeDefinitionsTree::class.java) - val defaultParsed = TypeDefinitionParser.parseBaseDefinitions(defaultTree, substratePreParsePreset()) + val defaultParsed = TypeDefinitionParserImpl.parseBaseDefinitions(defaultTree.types, substratePreParsePreset()) val defaultRegistry = TypeRegistry(defaultParsed.typePreset, DynamicTypeResolver.defaultCompoundResolver()) val keysDefault = defaultRegistry["Keys"] assertEquals("SessionKeysSubstrate", keysDefault?.name) - val kusamaParsed = TypeDefinitionParser.parseNetworkVersioning( + val kusamaParsed = TypeDefinitionParserImpl.parseNetworkVersioning( kusamaTree, defaultParsed.typePreset, 1057 @@ -430,7 +423,7 @@ class TypeDefinitionParserTest { val tree = gson.fromJson(json, TypeDefinitionsTree::class.java) return TypeRegistry( - TypeDefinitionParser.parseBaseDefinitions(tree, typePreset).typePreset, + TypeDefinitionParserImpl.parseBaseDefinitions(tree.types, typePreset).typePreset, dynamicTypeResolver = DynamicTypeResolver.defaultCompoundResolver() ) } @@ -444,4 +437,4 @@ class TypeDefinitionParserTest { } """.trimIndent() } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/GenericsExtensionTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/GenericsExtensionTest.kt index 4efc14d6..7b68c7a0 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/GenericsExtensionTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/GenericsExtensionTest.kt @@ -1,9 +1,9 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.registry.extensions -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.TypeProvider -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.GenericsExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub.FakeType +import jp.co.soramitsu.schema.definitions.dynamic.TypeProvider +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.GenericsExtension +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.stub.FakeType import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -34,4 +34,4 @@ class GenericsExtensionTest { assert(createdType == null) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/HashMapExtensionTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/HashMapExtensionTest.kt index 42d84e24..5de3d225 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/HashMapExtensionTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/HashMapExtensionTest.kt @@ -4,17 +4,18 @@ import com.google.gson.Gson import com.google.gson.stream.JsonReader import jp.co.soramitsu.fearless_utils.common.assertInstance import jp.co.soramitsu.fearless_utils.common.getResourceReader -import jp.co.soramitsu.fearless_utils.runtime.definitions.TypeDefinitionParser +import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot +import jp.co.soramitsu.fearless_utils.runtime.definitions.TypeDefinitionParserImpl import jp.co.soramitsu.fearless_utils.runtime.definitions.TypeDefinitionsTree -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.TypeProvider -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.HashMapExtension import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.substratePreParsePreset -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Tuple -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Vec -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub.FakeType +import jp.co.soramitsu.schema.DynamicTypeResolver +import jp.co.soramitsu.schema.definitions.dynamic.TypeProvider +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.HashMapExtension +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Tuple +import jp.co.soramitsu.schema.definitions.types.composite.Vec +import jp.co.soramitsu.schema.definitions.types.stub.FakeType import org.junit.Assert import org.junit.Test @@ -37,7 +38,7 @@ class HashMapExtensionTest { val defaultReader = JsonReader(getResourceReader("default.json")) val defaultTree = gson.fromJson(defaultReader, TypeDefinitionsTree::class.java) - val defaultParsed = TypeDefinitionParser.parseBaseDefinitions(defaultTree, substratePreParsePreset()) + val defaultParsed = TypeDefinitionParserImpl.parseBaseDefinitions(defaultTree.types, substratePreParsePreset()) val defaultRegistry = TypeRegistry(defaultParsed.typePreset, DynamicTypeResolver.defaultCompoundResolver()) val type = defaultRegistry["HashMap"] assertInstance(type) diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/VectorExtensionTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/VectorExtensionTest.kt index da9bd3fe..d4ca5b63 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/VectorExtensionTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/registry/extensions/VectorExtensionTest.kt @@ -1,12 +1,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.registry.extensions import jp.co.soramitsu.fearless_utils.common.assertInstance -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.VectorExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Vec -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.DynamicByteArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.VectorExtension +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Vec +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.DynamicByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.u8 import org.junit.Test class VectorExtensionTest { @@ -24,4 +24,4 @@ class VectorExtensionTest { assertInstance(result) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/BaseTypeTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/BaseTypeTest.kt index 6536ef9f..0fbf82c7 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/BaseTypeTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/BaseTypeTest.kt @@ -1,33 +1,22 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeResolver -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions.GenericsExtension import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.substratePreParsePreset -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.metadata.Event -import jp.co.soramitsu.fearless_utils.runtime.metadata.ExtrinsicMetadata +import jp.co.soramitsu.fearless_utils.runtime.metadata.* import jp.co.soramitsu.fearless_utils.runtime.metadata.Function -import jp.co.soramitsu.fearless_utils.runtime.metadata.FunctionArgument -import jp.co.soramitsu.fearless_utils.runtime.metadata.Module -import jp.co.soramitsu.fearless_utils.runtime.metadata.RuntimeMetadata -import jp.co.soramitsu.fearless_utils.runtime.metadata.Storage +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u8 import java.math.BigInteger abstract class BaseTypeTest { - protected val typeRegistry = TypeRegistry( - substratePreParsePreset(), - dynamicTypeResolver = DynamicTypeResolver( - extensions = DynamicTypeResolver.DEFAULT_COMPOUND_EXTENSIONS + listOf(GenericsExtension) - ) - ) + protected val runtime: RuntimeSnapshot = RuntimeSnapshot() + .also { it.typeRegistry = TypeRegistry(substratePreParsePreset(it)) } + .also { it.metadata = meta() } - protected val runtime: RuntimeSnapshot = RuntimeSnapshot( - typeRegistry = typeRegistry, - metadata = RuntimeMetadata( + fun meta(): RuntimeMetadata { + return RuntimeMetadata( runtimeVersion = BigInteger.ONE, modules = mapOf( "A" to Module( @@ -71,6 +60,6 @@ abstract class BaseTypeTest { signedExtensions = emptyList() ) ) - ) + } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExtTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExtTest.kt index 33c7b1af..97860e00 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExtTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExtTest.kt @@ -1,8 +1,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types import jp.co.soramitsu.fearless_utils.common.assertThrows -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.CyclicAliasingException +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Alias +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.skipAliases +import jp.co.soramitsu.schema.definitions.types.skipAliasesOrNull import org.junit.Assert.assertEquals import org.junit.Test @@ -70,4 +74,4 @@ class TypeReferenceExtTest { assertEquals(null, alias1Ref.skipAliasesOrNull()) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnumTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnumTest.kt index b5262cf7..da9f1269 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnumTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnumTest.kt @@ -1,11 +1,10 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.composite.CollectionEnum +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 @@ -20,7 +19,7 @@ class EnumTest : BaseTypeTest() { val expectedInstance = enumValues[1] val inHex = "0x01" - val decoded = type.fromHex(runtime, inHex) + val decoded = type.fromHex(inHex) assertEquals(expectedInstance, decoded) } @@ -29,7 +28,7 @@ class EnumTest : BaseTypeTest() { fun `should encode instance`() { val instance = enumValues[1] - val encoded = type.toHex(runtime, instance) + val encoded = type.toHex(instance) assertEquals("0x01", encoded) } @@ -42,4 +41,4 @@ class EnumTest : BaseTypeTest() { assertFalse(type.isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnumTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnumTest.kt index 49d192b1..97b16a0e 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnumTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnumTest.kt @@ -1,19 +1,19 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u128 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u128 +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 + @RunWith(JUnit4::class) class DictEnumTest : BaseTypeTest() { @@ -33,7 +33,7 @@ class DictEnumTest : BaseTypeTest() { val expectedInstance = DictEnum.Entry("B", true) val inHex = "0x0101" - val decoded = type.fromHex(runtime, inHex) + val decoded = type.fromHex(inHex) assertEquals(expectedInstance.name, decoded.name) assertEquals(expectedInstance.value, decoded.value) @@ -43,7 +43,7 @@ class DictEnumTest : BaseTypeTest() { fun `should encode instance`() { val instance = DictEnum.Entry("A", 1.toBigInteger()) - val encoded = type.toHex(runtime, instance) + val encoded = type.toHex(instance) assertEquals("0x0001", encoded) } @@ -57,4 +57,4 @@ class DictEnumTest : BaseTypeTest() { assertFalse(type.isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArrayTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArrayTest.kt index a9cfba16..e48eb40a 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArrayTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArrayTest.kt @@ -1,13 +1,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.FixedArray +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 @@ -29,14 +28,14 @@ class FixedArrayTest : BaseTypeTest() { @Test fun `should decode instance`() { - val decoded = type.fromHex(runtime, inHex) + val decoded = type.fromHex(inHex) assertEquals(typeInstance, decoded) } @Test fun `should encode instance`() { - val encoded = type.toHex(runtime, typeInstance) + val encoded = type.toHex(typeInstance) assertEquals(inHex, encoded) } @@ -49,4 +48,4 @@ class FixedArrayTest : BaseTypeTest() { assertFalse(type.isValidInstance(listOf(1))) assertFalse(type.isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/OptionTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/OptionTest.kt index 3dbc8618..4820c18c 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/OptionTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/OptionTest.kt @@ -2,15 +2,14 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.common.assertThrows import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Option +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test class OptionTest : BaseTypeTest() { @@ -28,7 +27,7 @@ class OptionTest : BaseTypeTest() { @Test fun `should decode optional true`() { val inHex = "0x02" - val decoded = optionalBoolean.fromHex(runtime, inHex) + val decoded = optionalBoolean.fromHex(inHex) assertEquals(true, decoded) } @@ -38,14 +37,14 @@ class OptionTest : BaseTypeTest() { val inHex = "0x05" assertThrows { - optionalBoolean.fromHex(runtime, inHex) + optionalBoolean.fromHex(inHex) } } @Test fun `should decode optional false`() { val inHex = "0x01" - val decoded = optionalBoolean.fromHex(runtime, inHex) + val decoded = optionalBoolean.fromHex(inHex) assertEquals(false, decoded) } @@ -53,7 +52,7 @@ class OptionTest : BaseTypeTest() { @Test fun `should decode null boolean`() { val inHex = "0x00" - val decoded = optionalBoolean.fromHex(runtime, inHex) + val decoded = optionalBoolean.fromHex(inHex) assertEquals(null, decoded) } @@ -61,7 +60,7 @@ class OptionTest : BaseTypeTest() { @Test fun `should decode non-null other type`() { val inHex = "0x0109" - val decoded = optionalU8.fromHex(runtime, inHex) + val decoded = optionalU8.fromHex(inHex) assertEquals(9.toBigInteger(), decoded) } @@ -69,28 +68,28 @@ class OptionTest : BaseTypeTest() { @Test fun `should decode null other type`() { val inHex = "0x00" - val decoded = optionalU8.fromHex(runtime, inHex) + val decoded = optionalU8.fromHex(inHex) assertEquals(null, decoded) } @Test fun `should encode non-boolean instance`() { - val encoded = optionalU8.toHex(runtime, 9.toBigInteger()) + val encoded = optionalU8.toHex(9.toBigInteger()) assertEquals("0x0109", encoded) } @Test fun `should encode null non-boolean instance`() { - val encoded = optionalU8.toHex(runtime, null) + val encoded = optionalU8.toHex(null) assertEquals("0x00", encoded) } @Test fun `should encode boolean instance`() { - val encoded = optionalBoolean.toHex(runtime, true) + val encoded = optionalBoolean.toHex(true) assertEquals("0x02", encoded) } @@ -106,4 +105,4 @@ class OptionTest : BaseTypeTest() { assertFalse(optionalBoolean.isValidInstance(1)) assertFalse(optionalU8.isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetTypeTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetTypeTest.kt index 214c4243..61d03c82 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetTypeTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetTypeTest.kt @@ -1,13 +1,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.SetType +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test class SetTypeTest : BaseTypeTest() { @@ -26,7 +25,7 @@ class SetTypeTest : BaseTypeTest() { @Test fun `should decode one flag`() { val inHex = "0x04" - val decoded = type.fromHex(runtime, inHex) + val decoded = type.fromHex(inHex) assertEquals(setOf("C"), decoded) } @@ -34,7 +33,7 @@ class SetTypeTest : BaseTypeTest() { @Test fun `should decode multiple flags`() { val inHex = "0x0d" - val decoded = type.fromHex(runtime, inHex) + val decoded = type.fromHex(inHex) assertEquals(setOf("A", "C", "D"), decoded) } @@ -42,7 +41,7 @@ class SetTypeTest : BaseTypeTest() { @Test fun `should encode one flag`() { val instance = setOf("C") - val encoded = type.toHex(runtime, instance) + val encoded = type.toHex(instance) assertEquals("0x04", encoded) } @@ -50,7 +49,7 @@ class SetTypeTest : BaseTypeTest() { @Test fun `should encode multiple flags`() { val instance = setOf("A", "C", "D") - val encoded = type.toHex(runtime, instance) + val encoded = type.toHex(instance) assertEquals("0x0d", encoded) } @@ -65,4 +64,4 @@ class SetTypeTest : BaseTypeTest() { assertFalse(type.isValidInstance(setOf("F"))) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/StructTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/StructTest.kt index c482faec..9453d465 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/StructTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/StructTest.kt @@ -1,14 +1,13 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Struct +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test class StructTest : BaseTypeTest() { @@ -30,14 +29,14 @@ class StructTest : BaseTypeTest() { @Test fun `should decode instance`() { - val decoded = type.fromHex(runtime, expectedInHex) + val decoded = type.fromHex(expectedInHex) assertEquals(expectedInstance, decoded.mapping) } @Test fun `should encode instance`() { - val encoded = type.toHex(runtime, Struct.Instance(expectedInstance)) + val encoded = type.toHex(Struct.Instance(expectedInstance)) assertEquals(expectedInHex, encoded) } @@ -52,4 +51,4 @@ class StructTest : BaseTypeTest() { assertFalse(type.isValidInstance(mapOf())) assertFalse(type.isValidInstance(Struct.Instance(mapOf()))) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/TupleTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/TupleTest.kt index b43684d9..a72a2980 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/TupleTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/TupleTest.kt @@ -1,14 +1,13 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Tuple +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test class TupleTest : BaseTypeTest() { @@ -29,14 +28,14 @@ class TupleTest : BaseTypeTest() { @Test fun `should decode instance`() { - val decoded = type.fromHex(runtime, expectedInHex) + val decoded = type.fromHex(expectedInHex) assertEquals(expectedInstance, decoded) } @Test fun `should encode instance`() { - val encoded = type.toHex(runtime, expectedInstance) + val encoded = type.toHex(expectedInstance) assertEquals(expectedInHex, encoded) } @@ -48,4 +47,4 @@ class TupleTest : BaseTypeTest() { assertFalse(type.isValidInstance(1)) assertFalse(type.isValidInstance(listOf(false))) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/VecTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/VecTest.kt index 7d689428..bc977e0b 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/VecTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/VecTest.kt @@ -1,13 +1,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.Vec +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test class VecTest : BaseTypeTest() { @@ -24,14 +23,14 @@ class VecTest : BaseTypeTest() { @Test fun `should decode instance`() { - val decoded = type.fromHex(runtime, inHex) + val decoded = type.fromHex(inHex) assertEquals(typeInstance, decoded) } @Test fun `should encode instance`() { - val encoded = type.toHex(runtime, typeInstance) + val encoded = type.toHex(typeInstance) assertEquals(inHex, encoded) } @@ -45,4 +44,4 @@ class VecTest : BaseTypeTest() { assertFalse(type.isValidInstance(listOf(1))) assertFalse(type.isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVecTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVecTest.kt index b3cac914..dd3d853c 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVecTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/BitVecTest.kt @@ -1,9 +1,9 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics -import jp.co.soramitsu.fearless_utils.extensions.fromHex import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex +import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.BitVec +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex import org.junit.Assert.* import org.junit.Test @@ -11,31 +11,28 @@ class BitVecTest : BaseTypeTest() { @Test fun `should decode empty array`() { - val decoded = BitVec.fromHex( - runtime, - "0x00" - ) + val decoded = BitVec.fromHex( "0x00" ) assertArrayEquals(booleanArrayOf(), decoded) } @Test fun `should decode size 3`() { - val decoded = BitVec.fromHex(runtime, "0x0c07") + val decoded = BitVec.fromHex( "0x0c07") assertArrayEquals(booleanArrayOf(true, true, true), decoded) } @Test fun `should decode size 2`() { - val decoded = BitVec.fromHex(runtime, "0x0803") + val decoded = BitVec.fromHex( "0x0803") assertArrayEquals(booleanArrayOf(true, true), decoded) } @Test fun `should decode size 2 bytes`() { - val decoded = BitVec.fromHex(runtime, "0x28fd02") + val decoded = BitVec.fromHex( "0x28fd02") assertArrayEquals( booleanArrayOf(true, false, true, true, true, true, true, true, false, true), @@ -45,21 +42,21 @@ class BitVecTest : BaseTypeTest() { @Test fun `should encode size 3`() { - val decoded = BitVec.toHex(runtime, booleanArrayOf(true, true, true)) + val decoded = BitVec.toHex(booleanArrayOf(true, true, true)) assertEquals("0x0c07", decoded) } @Test fun `should encode false true`() { - val decoded = BitVec.toHex(runtime, booleanArrayOf(false, true)) + val decoded = BitVec.toHex(booleanArrayOf(false, true)) assertEquals("0x0802", decoded) } @Test fun `should encode true false`() { - val decoded = BitVec.toHex(runtime, booleanArrayOf(true, false)) + val decoded = BitVec.toHex(booleanArrayOf(true, false)) assertEquals("0x0801", decoded) } @@ -67,7 +64,6 @@ class BitVecTest : BaseTypeTest() { @Test fun `should encode size 2 bytes`() { val decoded = BitVec.toHex( - runtime, booleanArrayOf(true, false, true, true, true, true, true, true, false, true) ) @@ -76,11 +72,8 @@ class BitVecTest : BaseTypeTest() { @Test fun `should encode empty array`() { - val decoded = BitVec.toHex( - runtime, - booleanArrayOf() - ) + val decoded = BitVec.toHex(booleanArrayOf()) assertEquals("0x00", decoded) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/DataTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/DataTest.kt index 25b62b55..77d50d0c 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/DataTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/DataTest.kt @@ -2,15 +2,15 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.common.assertInstance import jp.co.soramitsu.fearless_utils.common.assertThrows -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.extensions.toHexString -import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypePresetBuilder +import jp.co.soramitsu.schema.TypePresetBuilder import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toHexString import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Test @@ -23,7 +23,7 @@ class DataTest : BaseTypeTest() { fun `should decode none`() { val hex = "0x00" - val decoded = type.fromHex(runtime, hex) + val decoded = type.fromHex(hex) assertNull(decoded.value) assertEquals("None", decoded.name) @@ -33,7 +33,7 @@ class DataTest : BaseTypeTest() { fun `should decode raw`() { val hex = "0x090102030405060708" - val decodedEntry = type.fromHex(runtime, hex) + val decodedEntry = type.fromHex(hex) assertEquals("Raw", decodedEntry.name) val value = decodedEntry.value @@ -46,7 +46,7 @@ class DataTest : BaseTypeTest() { fun `should decode hasher`() { val hex = "0x241234567890123456789012345678901212345678901234567890123456789012" - val decodedEntry = type.fromHex(runtime, hex) + val decodedEntry = type.fromHex(hex) assertEquals("Keccak256", decodedEntry.name) val value = decodedEntry.value @@ -63,27 +63,27 @@ class DataTest : BaseTypeTest() { val hex = "0x26" assertThrows { - type.fromHex(runtime, hex) + type.fromHex(hex) } } @Test fun `should encode none`() { - val encoded = type.toHex(runtime, DictEnum.Entry("None", null)) + val encoded = type.toHex(DictEnum.Entry("None", null)) assertEquals("0x00", encoded) } @Test fun `should encode raw`() { - val encoded = type.toHex(runtime, DictEnum.Entry("Raw", "0x0102030405060708".fromHex())) + val encoded = type.toHex(DictEnum.Entry("Raw", "0x0102030405060708".fromHex())) assertEquals("0x090102030405060708", encoded) } @Test fun `should encode hasher`() { - val encoded = type.toHex(runtime, DictEnum.Entry("Keccak256", "0x1234567890123456789012345678901212345678901234567890123456789012".fromHex())) + val encoded = type.toHex(DictEnum.Entry("Keccak256", "0x1234567890123456789012345678901212345678901234567890123456789012".fromHex())) assertEquals("0x241234567890123456789012345678901212345678901234567890123456789012", encoded) } diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EraTypeTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EraTypeTest.kt index f4bb8e44..9f5118a6 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EraTypeTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/EraTypeTest.kt @@ -2,10 +2,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.common.assertInstance import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex +import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Era import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Era.Companion.getPeriodPhaseFromBlockPeriod -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.* +import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.EraType +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.assertEquals import org.junit.Test class EraTypeTest : BaseTypeTest() { @@ -18,7 +20,7 @@ class EraTypeTest : BaseTypeTest() { @Test fun `should decode immortal`() { - val decoded = EraType.fromHex(runtime, "0x00") + val decoded = EraType.fromHex("0x00") assertEquals(Era.Immortal, decoded) } @@ -33,7 +35,7 @@ class EraTypeTest : BaseTypeTest() { @Test fun `should encode immortal`() { val inHex = "0x00" - val encoded = EraType.toHex(runtime, Era.Immortal) + val encoded = EraType.toHex(Era.Immortal) assertEquals(inHex, encoded) } @@ -46,7 +48,7 @@ class EraTypeTest : BaseTypeTest() { } private fun performMortalDecodeTest(inHex: String, period: Int, phase: Int) { - val decoded = EraType.fromHex(runtime, inHex) + val decoded = EraType.fromHex(inHex) assertInstance(decoded) @@ -55,8 +57,8 @@ class EraTypeTest : BaseTypeTest() { } private fun performMortalEncodeTest(inHex: String, period: Int, phase: Int) { - val encoded = EraType.toHex(runtime, Era.Mortal(period, phase)) + val encoded = EraType.toHex(Era.Mortal(period, phase)) assertEquals(inHex, encoded) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicTest.kt index 8a99f103..447cb29c 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ExtrinsicTest.kt @@ -1,12 +1,12 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.encrypt.EncryptionType -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.extensions.toHexString import jp.co.soramitsu.fearless_utils.runtime.RealRuntimeProvider -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toHexString import org.junit.Assert.assertEquals import org.junit.Test import java.math.BigInteger @@ -20,7 +20,7 @@ class ExtrinsicTest { @Test fun `should decode transfer extrinsic`() { - val decoded = Extrinsic.fromHex(runtime, inHex) + val decoded = Extrinsic(runtime).fromHex(inHex) val multiSignature = decoded.signature!!.tryExtractMultiSignature()!! @@ -31,7 +31,7 @@ class ExtrinsicTest { fun `should decode batch extrinsic`() { val batch = "0x01038400fdc41550fb5186d71cae699c31731b3e1baa10680c7bd6b3831a6d222cf4d16800b2b0e48ec54dd07af525e605c2d674ef57eef7d9932c3ad16f68c1e41a18ce579a207aa910b22bcddcf0a2eea96d4617fe618dff95de548bbf53e1773416700815009000100008040000340a806419d5e278172e45cb0e50da1b031795366c99ddfe0a680bd53b142c630f0000c16ff28623040000340a806419d5e278172e45cb0e50da1b031795366c99ddfe0a680bd53b142c630f00106644db8723" - val decoded = Extrinsic.fromHex(runtime, batch) + val decoded = Extrinsic(runtime).fromHex(batch) assertEquals(16, decoded.call.moduleIndex) assertEquals(0, decoded.call.callIndex) @@ -69,8 +69,8 @@ class ExtrinsicTest { call = call ) - val encoded = Extrinsic.toHex(runtime, extrinsic) + val encoded = Extrinsic(runtime).toHex(extrinsic) assertEquals(inHex, encoded) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCallTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCallTest.kt index 9ce5de9e..80d4468d 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCallTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericCallTest.kt @@ -2,12 +2,10 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.common.assertThrows import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.* import org.junit.Test class GenericCallTest : BaseTypeTest() { @@ -25,14 +23,14 @@ class GenericCallTest : BaseTypeTest() { @Test fun `should encode correct call`() { - val encoded = GenericCall.toHex(runtime, instance) + val encoded = GenericCall(runtime).toHex(instance) assertEquals(inHex, encoded) } @Test fun `should decode correct call`() { - val decoded = GenericCall.fromHex(runtime, inHex) + val decoded = GenericCall(runtime).fromHex(inHex) assertEquals(instance.arguments, decoded.arguments) assertEquals(instance.moduleIndex, decoded.moduleIndex) @@ -47,7 +45,7 @@ class GenericCallTest : BaseTypeTest() { arguments = emptyMap() ) - assertThrows { GenericCall.toHex(runtime, invalidInstance) } + assertThrows { GenericCall(runtime).toHex(invalidInstance) } } @Test @@ -61,27 +59,27 @@ class GenericCallTest : BaseTypeTest() { ) ) - assertThrows { GenericCall.toHex(runtime, invalidInstance) } + assertThrows { GenericCall(runtime).toHex(invalidInstance) } } @Test fun `should throw if decoding instance with invalid index`() { val inHex = "0x0203" - assertThrows { GenericCall.fromHex(runtime, inHex) } + assertThrows { GenericCall(runtime).fromHex(inHex) } } @Test fun `should throw if decoding instance with invalid arguments`() { val inHex = "0x01000412" - assertThrows { GenericCall.fromHex(runtime, inHex) } + assertThrows { GenericCall(runtime).fromHex(inHex) } } @Test fun `should validate instance`() { - assertTrue(GenericCall.isValidInstance(instance)) + assertTrue(GenericCall(runtime).isValidInstance(instance)) - assertFalse(GenericCall.isValidInstance(1)) + assertFalse(GenericCall(runtime).isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEventTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEventTest.kt index 1f5aafaf..83d12ceb 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEventTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/GenericEventTest.kt @@ -2,9 +2,9 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.common.assertThrows import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex import org.junit.Assert.* import org.junit.Test @@ -23,14 +23,14 @@ class GenericEventTest : BaseTypeTest() { @Test fun `should encode correct event`() { - val encoded = GenericEvent.toHex(runtime, instance) + val encoded = GenericEvent(runtime).toHex(instance) assertEquals(inHex, encoded) } @Test fun `should decode correct call`() { - val decoded = GenericEvent.fromHex(runtime, inHex) + val decoded = GenericEvent(runtime).fromHex(inHex) assertEquals(instance.arguments, decoded.arguments) assertEquals(instance.moduleIndex, decoded.moduleIndex) @@ -45,7 +45,7 @@ class GenericEventTest : BaseTypeTest() { arguments = emptyList() ) - assertThrows { GenericEvent.toHex(runtime, invalidInstance) } + assertThrows { GenericEvent(runtime).toHex(invalidInstance) } } @Test @@ -59,27 +59,27 @@ class GenericEventTest : BaseTypeTest() { ) ) - assertThrows { GenericEvent.toHex(runtime, invalidInstance) } + assertThrows { GenericEvent(runtime).toHex(invalidInstance) } } @Test fun `should throw if decoding instance with invalid index`() { val inHex = "0x0203" - assertThrows { GenericEvent.fromHex(runtime, inHex) } + assertThrows { GenericEvent(runtime).fromHex(inHex) } } @Test fun `should throw if decoding instance with invalid arguments`() { val inHex = "0x01000412" - assertThrows { GenericEvent.fromHex(runtime, inHex) } + assertThrows { GenericEvent(runtime).fromHex(inHex) } } @Test fun `should validate instance`() { - assertTrue(GenericEvent.isValidInstance(instance)) + assertTrue(GenericEvent(runtime).isValidInstance(instance)) - assertFalse(GenericEvent.isValidInstance(1)) + assertFalse(GenericEvent(runtime).isValidInstance(1)) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/HashTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/HashTest.kt index 2d169a79..fa1225a5 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/HashTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/HashTest.kt @@ -26,4 +26,4 @@ class HashTest { assertEquals(hash.length, 32) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCallTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCallTest.kt index a93c7d65..77d43e1c 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCallTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/OpaqueCallTest.kt @@ -1,9 +1,9 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex -import org.junit.Assert.* +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex +import org.junit.Assert.assertEquals import org.junit.Test class OpaqueCallTest : BaseTypeTest() { @@ -20,7 +20,7 @@ class OpaqueCallTest : BaseTypeTest() { @Test fun `should decode call`() { - val decoded = OpaqueCall.fromHex(runtime, inHex) + val decoded = OpaqueCall(runtime).fromHex(inHex) assertEquals(instance.arguments, decoded.arguments) assertEquals(instance.moduleIndex, decoded.moduleIndex) @@ -29,8 +29,8 @@ class OpaqueCallTest : BaseTypeTest() { @Test fun `should encode call`() { - val encoded = OpaqueCall.toHex(runtime, instance) + val encoded = OpaqueCall(runtime).toHex(instance) assertEquals(inHex, encoded) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultTypeTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultTypeTest.kt index 9bb77893..0d9ff14b 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultTypeTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultTypeTest.kt @@ -1,13 +1,14 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.runtime.definitions.types.BaseTypeTest -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u32 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.generics.ResultType +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType +import jp.co.soramitsu.schema.definitions.types.primitives.u32 +import jp.co.soramitsu.schema.definitions.types.primitives.u8 +import jp.co.soramitsu.schema.definitions.types.toHex import org.junit.Assert import org.junit.Test @@ -17,7 +18,7 @@ class ResultTypeTest : BaseTypeTest() { fun `should decode err false`() { val hex = "0x0100" val type = ResultType(TypeReference(u32), TypeReference(BooleanType)) - val decoded = type.fromHex(runtime, hex) + val decoded = type.fromHex(hex) Assert.assertEquals(ResultType.Err, decoded.name) Assert.assertEquals(false, decoded.value) @@ -27,7 +28,7 @@ class ResultTypeTest : BaseTypeTest() { fun `should decode ok u8`() { val hex = "0x002a" val type = ResultType(TypeReference(u8), TypeReference(BooleanType)) - val decoded = type.fromHex(runtime, hex) + val decoded = type.fromHex(hex) Assert.assertEquals(ResultType.Ok, decoded.name) Assert.assertEquals(42.toBigInteger(), decoded.value) @@ -36,9 +37,9 @@ class ResultTypeTest : BaseTypeTest() { @Test fun `should encode ok u8`() { val type = ResultType(TypeReference(u8), TypeReference(BooleanType)) - val decoded = type.toHex(runtime, DictEnum.Entry(ResultType.Ok, 42.toBigInteger())) + val decoded = type.toHex(DictEnum.Entry(ResultType.Ok, 42.toBigInteger())) Assert.assertEquals("0x002a", decoded) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SignedExtrasTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SignedExtrasTest.kt index 5fad97eb..f9036cce 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SignedExtrasTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/SignedExtrasTest.kt @@ -2,11 +2,11 @@ package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics import jp.co.soramitsu.fearless_utils.common.assertThrows import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.fromHex -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.toHex import jp.co.soramitsu.fearless_utils.runtime.metadata.ExtrinsicMetadata import jp.co.soramitsu.fearless_utils.runtime.metadata.RuntimeMetadata +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.fromHex +import jp.co.soramitsu.schema.definitions.types.toHex import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test @@ -44,7 +44,7 @@ class SignedExtrasTest { SignedExtras.ERA to Era.Immortal ) - val encoded = SignedExtras.toHex(runtime, extras) + val encoded = SignedExtras(runtime).toHex( extras) assertEquals("0x002804", encoded) } @@ -59,7 +59,7 @@ class SignedExtrasTest { SignedExtras.ERA to Era.Immortal // CheckMortality is unused ) - val encoded = SignedExtras.toHex(runtime, extras) + val encoded = SignedExtras(runtime).toHex( extras) assertEquals("0x2804", encoded) } @@ -75,7 +75,7 @@ class SignedExtrasTest { SignedExtras.ERA to Era.Immortal ) - val encoded = SignedExtras.toHex(runtime, extras) + val encoded = SignedExtras(runtime).toHex( extras) assertEquals("0x", encoded) } @@ -89,7 +89,7 @@ class SignedExtrasTest { ) assertThrows { - SignedExtras.toHex(runtime, extras) + SignedExtras(runtime).toHex( extras) } } @@ -99,7 +99,7 @@ class SignedExtrasTest { val inHex = "0x002804" - val decoded = SignedExtras.fromHex(runtime, inHex) + val decoded = SignedExtras(runtime).fromHex( inHex) assertEquals(decoded.size, 3) } @@ -110,7 +110,7 @@ class SignedExtrasTest { val inHex = "0x2804" - val decoded = SignedExtras.fromHex(runtime, inHex) + val decoded = SignedExtras(runtime).fromHex( inHex) assertEquals(decoded.size, 2) } @@ -121,7 +121,7 @@ class SignedExtrasTest { val inHex = "0x" - val decoded = SignedExtras.fromHex(runtime, inHex) + val decoded = SignedExtras(runtime).fromHex( inHex) assertEquals(decoded.size, 0) } @@ -129,4 +129,4 @@ class SignedExtrasTest { private fun extrinsicContainsExtras(vararg extras: String) { `when`(extrinsicMetadata.signedExtensions).thenReturn(extras.toList()) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderTest.kt index 6ab654ac..4369b199 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/extrinsic/ExtrinsicBuilderTest.kt @@ -2,12 +2,12 @@ package jp.co.soramitsu.fearless_utils.runtime.extrinsic import jp.co.soramitsu.fearless_utils.encrypt.EncryptionType import jp.co.soramitsu.fearless_utils.encrypt.model.Keypair -import jp.co.soramitsu.fearless_utils.extensions.fromHex import jp.co.soramitsu.fearless_utils.runtime.RealRuntimeProvider import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.Era import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.multiAddressFromId import jp.co.soramitsu.fearless_utils.ss58.SS58Encoder.toAccountId import jp.co.soramitsu.fearless_utils.wsrpc.request.runtime.chain.RuntimeVersion +import jp.co.soramitsu.schema.extensions.fromHex import org.junit.Assert.assertEquals import org.junit.Test import java.math.BigInteger @@ -117,4 +117,4 @@ class ExtrinsicBuilderTest { assertEquals(extrinsicInHex, encoded) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/metadata/MetadataTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/metadata/MetadataTest.kt index 56c44d9c..bb35288d 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/metadata/MetadataTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/runtime/metadata/MetadataTest.kt @@ -4,8 +4,8 @@ import jp.co.soramitsu.fearless_utils.common.assertInstance import jp.co.soramitsu.fearless_utils.common.getFileContentFromResources import jp.co.soramitsu.fearless_utils.runtime.RealRuntimeProvider import jp.co.soramitsu.fearless_utils.runtime.definitions.registry.TypeRegistry -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.stub.FakeType -import jp.co.soramitsu.fearless_utils.scale.EncodableStruct +import jp.co.soramitsu.schema.definitions.types.stub.FakeType +import jp.co.soramitsu.schema.scale.EncodableStruct import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/ScaleStructTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/ScaleStructTest.kt index c5f28757..45f2205b 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/ScaleStructTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/ScaleStructTest.kt @@ -20,11 +20,12 @@ import jp.co.soramitsu.fearless_utils.scale.DefaultValues.bigInteger import jp.co.soramitsu.fearless_utils.scale.DefaultValues.bytes import jp.co.soramitsu.fearless_utils.scale.DefaultValues.text import jp.co.soramitsu.fearless_utils.scale.Vector.numbers -import jp.co.soramitsu.fearless_utils.scale.dataType.DataType -import jp.co.soramitsu.fearless_utils.scale.dataType.compactInt -import jp.co.soramitsu.fearless_utils.scale.dataType.scalable -import jp.co.soramitsu.fearless_utils.scale.dataType.string -import jp.co.soramitsu.fearless_utils.scale.dataType.uint16 +import jp.co.soramitsu.schema.scale.* +import jp.co.soramitsu.schema.scale.dataType.DataType +import jp.co.soramitsu.schema.scale.dataType.compactInt +import jp.co.soramitsu.schema.scale.dataType.scalable +import jp.co.soramitsu.schema.scale.dataType.string +import jp.co.soramitsu.schema.scale.dataType.uint16 import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Test @@ -33,8 +34,8 @@ import org.mockito.junit.MockitoJUnitRunner import java.math.BigDecimal import java.math.BigInteger import java.math.MathContext -import jp.co.soramitsu.fearless_utils.scale.dataType.boolean as Bool -import jp.co.soramitsu.fearless_utils.scale.dataType.uint8 as Uint8 +import jp.co.soramitsu.schema.scale.dataType.boolean as Bool +import jp.co.soramitsu.schema.scale.dataType.uint8 as Uint8 object OnlyCompact : Schema() { val compact by compactInt() @@ -293,4 +294,4 @@ class ScaleStructTest { assertEquals(struct[CustomTypeTest.delimiter], afterIo[CustomTypeTest.delimiter]) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/dataType/EnumTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/dataType/EnumTest.kt index 2b8f3d51..7761d080 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/dataType/EnumTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/scale/dataType/EnumTest.kt @@ -1,8 +1,8 @@ package jp.co.soramitsu.fearless_utils.scale.dataType -import jp.co.soramitsu.fearless_utils.scale.Schema -import jp.co.soramitsu.fearless_utils.scale.enum -import jp.co.soramitsu.fearless_utils.scale.toHexString +import jp.co.soramitsu.schema.scale.Schema +import jp.co.soramitsu.schema.scale.enum +import jp.co.soramitsu.schema.scale.toHexString import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -31,4 +31,4 @@ class EnumTest { assertEquals(hex, afterIo) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/ss58/SS58EncoderTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/ss58/SS58EncoderTest.kt index 980c172a..3dfce584 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/ss58/SS58EncoderTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/ss58/SS58EncoderTest.kt @@ -1,11 +1,11 @@ package jp.co.soramitsu.fearless_utils.ss58 import jp.co.soramitsu.fearless_utils.common.TestAddressBytes -import jp.co.soramitsu.fearless_utils.extensions.fromHex -import jp.co.soramitsu.fearless_utils.extensions.toHexString import jp.co.soramitsu.fearless_utils.ss58.SS58Encoder.addressByte import jp.co.soramitsu.fearless_utils.ss58.SS58Encoder.toAccountId import jp.co.soramitsu.fearless_utils.ss58.SS58Encoder.toAddress +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toHexString import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -94,4 +94,4 @@ class SS58EncoderTest { assertEquals("0x84bdc405d139399bba3ccea5d3de23316c9deeab661f57e2f4d1720cc6649859", hexKey) assertEquals(TestAddressBytes.WESTEND, prefix) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/MappersTest.kt b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/MappersTest.kt index 68341449..7987fefe 100644 --- a/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/MappersTest.kt +++ b/fearless-utils/src/test/java/jp/co/soramitsu/fearless_utils/wsrpc/mappers/MappersTest.kt @@ -2,11 +2,11 @@ package jp.co.soramitsu.fearless_utils.wsrpc.mappers import com.google.gson.Gson import jp.co.soramitsu.fearless_utils.common.assertThrows -import jp.co.soramitsu.fearless_utils.scale.Schema -import jp.co.soramitsu.fearless_utils.scale.bool -import jp.co.soramitsu.fearless_utils.scale.invoke -import jp.co.soramitsu.fearless_utils.scale.toHexString -import jp.co.soramitsu.fearless_utils.scale.uint32 +import jp.co.soramitsu.schema.scale.Schema +import jp.co.soramitsu.schema.scale.bool +import jp.co.soramitsu.schema.scale.invoke +import jp.co.soramitsu.schema.scale.toHexString +import jp.co.soramitsu.schema.scale.uint32 import jp.co.soramitsu.fearless_utils.wsrpc.exception.RpcException import jp.co.soramitsu.fearless_utils.wsrpc.response.RpcError import jp.co.soramitsu.fearless_utils.wsrpc.response.RpcResponse @@ -139,4 +139,4 @@ class MappersTest { message = error ) ) -} \ No newline at end of file +} diff --git a/schema/.gitignore b/schema/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/schema/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/schema/build.gradle b/schema/build.gradle new file mode 100644 index 00000000..9d25736f --- /dev/null +++ b/schema/build.gradle @@ -0,0 +1,18 @@ +plugins { + id 'java' + id 'kotlin' +} + +apply plugin: 'kotlin' +apply plugin: 'java' + +dependencies { + implementation(fileTree("libs") {include("*.jar")}) + implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}" + implementation("org.bouncycastle:bcprov-jdk15on:1.60") +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/schema/libs/polkaj-scale-0.2.3.jar b/schema/libs/polkaj-scale-0.2.3.jar new file mode 100644 index 00000000..3b9e50e1 Binary files /dev/null and b/schema/libs/polkaj-scale-0.2.3.jar differ diff --git a/schema/src/main/java/jp/co/soramitsu/schema/DynamicTypeResolver.kt b/schema/src/main/java/jp/co/soramitsu/schema/DynamicTypeResolver.kt new file mode 100644 index 00000000..760d4661 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/DynamicTypeResolver.kt @@ -0,0 +1,51 @@ +package jp.co.soramitsu.schema + +import jp.co.soramitsu.schema.definitions.dynamic.DynamicTypeExtension +import jp.co.soramitsu.schema.definitions.dynamic.TypeProvider +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.BoxExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.CompactExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.FixedArrayExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.HashMapExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.OptionExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.ResultTypeExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.TupleExtension +import jp.co.soramitsu.schema.definitions.dynamic.extentsions.VectorExtension +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.extensions.tryFindNonNull + +class DynamicTypeResolver( + val extensions: List +) { + constructor(vararg extensions: DynamicTypeExtension) : this(extensions.toList()) + + companion object { + fun defaultCompoundResolver(): DynamicTypeResolver { + return DynamicTypeResolver(DEFAULT_COMPOUND_EXTENSIONS) + } + + val DEFAULT_COMPOUND_EXTENSIONS = listOf( + VectorExtension, + CompactExtension, + OptionExtension, + BoxExtension, + TupleExtension, + FixedArrayExtension, + HashMapExtension, + ResultTypeExtension + ) + } + + fun createDynamicType( + name: String, + typeDef: String, + innerTypeProvider: TypeProvider + ): Type<*>? { + return extensions.tryFindNonNull { + it.createType( + name, + typeDef, + innerTypeProvider + ) + } + } +} diff --git a/schema/src/main/java/jp/co/soramitsu/schema/TypeDefinitionParser.kt b/schema/src/main/java/jp/co/soramitsu/schema/TypeDefinitionParser.kt new file mode 100644 index 00000000..5a4248b2 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/TypeDefinitionParser.kt @@ -0,0 +1,14 @@ +package jp.co.soramitsu.schema + +interface TypeDefinitionParser { + fun parseBaseDefinitions( + types: Map, + typePreset: TypePreset, + dynamicTypeResolver: DynamicTypeResolver = DynamicTypeResolver.defaultCompoundResolver() + ): ParseResult +} + +class ParseResult( + val typePreset: TypePreset, + val unknownTypes: List +) diff --git a/schema/src/main/java/jp/co/soramitsu/schema/TypePreset.kt b/schema/src/main/java/jp/co/soramitsu/schema/TypePreset.kt new file mode 100644 index 00000000..95140e15 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/TypePreset.kt @@ -0,0 +1,27 @@ +package jp.co.soramitsu.schema + +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference + +typealias TypePreset = Map + +typealias TypePresetBuilder = MutableMap + +fun TypePreset.newBuilder(): TypePresetBuilder = toMutableMap() + +fun TypePresetBuilder.type(type: Type<*>) { + val currentRef = getOrCreate(type.name) + + currentRef.value = type +} + +fun TypePresetBuilder.getOrCreate(definition: String) = getOrPut(definition) { TypeReference(null) } + +fun TypePresetBuilder.create(definition: String): TypeReference = + TypeReference(null).also { put(definition, it) } + +fun createTypePresetBuilder(): TypePresetBuilder = mutableMapOf() + +fun typePreset(builder: TypePresetBuilder.() -> Unit): TypePreset { + return createTypePresetBuilder().apply(builder) +} diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/ParsingExt.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/ParsingExt.kt new file mode 100644 index 00000000..046254e3 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/ParsingExt.kt @@ -0,0 +1,28 @@ +package jp.co.soramitsu.schema.definitions + +internal fun String.splitTuple(): List { + val innerPart = removeSurrounding("(", ")").replace(" ", "") + + val result = mutableListOf() + var bracketsCount = 0 + var currentBeginning = 0 + + innerPart.forEachIndexed { index, c -> + when (c) { + '(', '<', '[' -> bracketsCount++ + ')', '>', ']' -> bracketsCount-- + ',' -> { + if (bracketsCount == 0) { + result += innerPart.substring(currentBeginning, index) + currentBeginning = index + 1 + } + } + } + } + + if (currentBeginning < innerPart.length) { + result += innerPart.substring(currentBeginning, innerPart.length) + } + + return result +} \ No newline at end of file diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/DynamicTypeExtension.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/DynamicTypeExtension.kt new file mode 100644 index 00000000..490216da --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/DynamicTypeExtension.kt @@ -0,0 +1,11 @@ +package jp.co.soramitsu.schema.definitions.dynamic + +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference + +typealias TypeProvider = (typeDef: String) -> TypeReference + +interface DynamicTypeExtension { + + fun createType(name: String, typeDef: String, typeProvider: TypeProvider): Type<*>? +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/Default.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/Default.kt similarity index 70% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/Default.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/Default.kt index e49cb343..533e583a 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/Default.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/Default.kt @@ -1,19 +1,19 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions - -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.TypeProvider -import jp.co.soramitsu.fearless_utils.runtime.definitions.splitTuple -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.FixedArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Option -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Tuple -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Vec -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics.ResultType -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.Compact -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.DynamicByteArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.FixedByteArray -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.u8 +package jp.co.soramitsu.schema.definitions.dynamic.extentsions + +import jp.co.soramitsu.schema.definitions.dynamic.DynamicTypeExtension +import jp.co.soramitsu.schema.definitions.dynamic.TypeProvider +import jp.co.soramitsu.schema.definitions.splitTuple +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.FixedArray +import jp.co.soramitsu.schema.definitions.types.composite.Option +import jp.co.soramitsu.schema.definitions.types.composite.Tuple +import jp.co.soramitsu.schema.definitions.types.composite.Vec +import jp.co.soramitsu.schema.definitions.types.generics.ResultType +import jp.co.soramitsu.schema.definitions.types.primitives.Compact +import jp.co.soramitsu.schema.definitions.types.primitives.DynamicByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.FixedByteArray +import jp.co.soramitsu.schema.definitions.types.primitives.u8 object VectorExtension : WrapperExtension() { override val wrapperName = "Vec" diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/GenericsExtension.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/GenericsExtension.kt similarity index 63% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/GenericsExtension.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/GenericsExtension.kt index 7ad67768..11b3938a 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/GenericsExtension.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/GenericsExtension.kt @@ -1,8 +1,8 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions +package jp.co.soramitsu.schema.definitions.dynamic.extentsions -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.TypeProvider -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type +import jp.co.soramitsu.schema.definitions.dynamic.DynamicTypeExtension +import jp.co.soramitsu.schema.definitions.dynamic.TypeProvider +import jp.co.soramitsu.schema.definitions.types.Type private val GENERIC_REGEX = "^([^<]*)<(.+)>\$".toRegex() // PartName @@ -16,4 +16,4 @@ object GenericsExtension : DynamicTypeExtension { return typeProvider(rawType).value } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/WrapperExtension.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/WrapperExtension.kt similarity index 57% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/WrapperExtension.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/WrapperExtension.kt index ad5e0813..5e9758c9 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/dynamic/extentsions/WrapperExtension.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/dynamic/extentsions/WrapperExtension.kt @@ -1,9 +1,9 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.extentsions +package jp.co.soramitsu.schema.definitions.dynamic.extentsions -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.DynamicTypeExtension -import jp.co.soramitsu.fearless_utils.runtime.definitions.dynamic.TypeProvider -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.dynamic.DynamicTypeExtension +import jp.co.soramitsu.schema.definitions.dynamic.TypeProvider +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference abstract class WrapperExtension : DynamicTypeExtension { @@ -20,4 +20,4 @@ abstract class WrapperExtension : DynamicTypeExtension { return createWrapper(name, innerTypeRef) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/Type.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/Type.kt similarity index 68% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/Type.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/Type.kt index f4112640..02de88a6 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/Type.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/Type.kt @@ -1,9 +1,8 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types +package jp.co.soramitsu.schema.definitions.types import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException class TypeReference(var value: Type<*>?) { private var resolutionInProgress: Boolean = false @@ -27,6 +26,9 @@ class TypeReference(var value: Type<*>?) { private fun resolveRecursive() = value?.isFullyResolved ?: false private fun isInRecursion() = resolutionInProgress + override fun toString(): String { + return "TypeReference(value=$value, resolutionInProgress=$resolutionInProgress)" + } } abstract class Type(val name: String) { @@ -36,16 +38,12 @@ abstract class Type(val name: String) { /** * @throws EncodeDecodeException */ - abstract fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): InstanceType + abstract fun decode(scaleCodecReader: ScaleCodecReader): InstanceType /** * @throws EncodeDecodeException */ - abstract fun encode( - scaleCodecWriter: ScaleCodecWriter, - runtime: RuntimeSnapshot, - value: InstanceType - ) + abstract fun encode(scaleCodecWriter: ScaleCodecWriter, value: InstanceType) abstract fun isValidInstance(instance: Any?): Boolean @@ -53,17 +51,17 @@ abstract class Type(val name: String) { * @throws EncodeDecodeException */ @Suppress("UNCHECKED_CAST") - fun encodeUnsafe(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Any?) { + fun encodeUnsafe(scaleCodecWriter: ScaleCodecWriter, value: Any?) { if (!isValidInstance(value)) { val valueTypeName = value?.let { it::class.java.simpleName } throw EncodeDecodeException("$value ($valueTypeName) is not a valid instance if $this") } - encode(scaleCodecWriter, runtime, value as InstanceType) + encode(scaleCodecWriter, value as InstanceType) } override fun toString(): String { return name } -} \ No newline at end of file +} diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/TypeExt.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/TypeExt.kt new file mode 100644 index 00000000..6f49aa48 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/TypeExt.kt @@ -0,0 +1,95 @@ +package jp.co.soramitsu.schema.definitions.types + +import io.emeraldpay.polkaj.scale.ScaleCodecReader +import io.emeraldpay.polkaj.scale.ScaleCodecWriter +import jp.co.soramitsu.schema.definitions.types.composite.Alias +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.extensions.ensureExceptionType +import jp.co.soramitsu.schema.extensions.fromHex +import jp.co.soramitsu.schema.extensions.toHexString +import java.io.ByteArrayOutputStream + +/** + * @throws CyclicAliasingException + */ +fun Type<*>.skipAliases(): Type<*>? { + if (this !is Alias) return this + + return aliasedReference.skipAliasesOrNull()?.value +} + +fun Type<*>?.isFullyResolved() = this?.isFullyResolved ?: false + +/** + * @throws EncodeDecodeException + */ +fun Type.fromByteArray(byteArray: ByteArray): I { + val reader = ScaleCodecReader(byteArray) + + return ensureUnifiedException { decode(reader) } +} + +/** + * @throws EncodeDecodeException + */ +fun Type.fromHex(hex: String): I { + return ensureUnifiedException { fromByteArray(hex.fromHex()) } +} + +fun Type.fromByteArrayOrNull(byteArray: ByteArray): I? { + return runCatching { fromByteArray(byteArray) }.getOrNull() +} + +fun Type.fromHexOrNull(hex: String): I? { + return runCatching { fromHex(hex) }.getOrNull() +} + +/** + * @throws EncodeDecodeException + */ +fun Type.toByteArray(value: I): ByteArray { + return ensureUnifiedException { + useScaleWriter { encode(this, value) } + } +} + +/** + * Type-unsafe version of [toByteArray] + * + * @throws EncodeDecodeException + */ +fun Type<*>.bytes(value: Any?): ByteArray { + return ensureUnifiedException { + useScaleWriter { encodeUnsafe(this, value) } + } +} + +fun Type.toByteArrayOrNull(value: I): ByteArray? { + return runCatching { toByteArray(value) }.getOrNull() +} + +fun Type<*>.bytesOrNull(value: Any?): ByteArray? { + return runCatching { bytes(value) }.getOrNull() +} + +/** + * @throws EncodeDecodeException + */ +fun Type.toHex(value: I) = + toByteArray(value).toHexString(withPrefix = true) + +fun Type.toHexOrNull(value: I) = + toByteArrayOrNull(value)?.toHexString(withPrefix = true) + +fun useScaleWriter(use: ScaleCodecWriter.() -> Unit): ByteArray { + val stream = ByteArrayOutputStream() + val writer = ScaleCodecWriter(stream) + + writer.use() + + return stream.toByteArray() +} + +private inline fun ensureUnifiedException(block: () -> R): R { + return ensureExceptionType(::EncodeDecodeException, block) +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExt.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/TypeReferenceExt.kt similarity index 81% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExt.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/TypeReferenceExt.kt index 89515185..b57f23e5 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/TypeReferenceExt.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/TypeReferenceExt.kt @@ -1,6 +1,6 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types +package jp.co.soramitsu.schema.definitions.types -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.Alias +import jp.co.soramitsu.schema.definitions.types.composite.Alias class CyclicAliasingException : Exception() @@ -33,4 +33,4 @@ fun TypeReference.skipAliasesOrNull(): TypeReference? { return runCatching { skipAliases() }.getOrNull() } -fun TypeReference.resolvedOrNull(): TypeReference? = if (isResolved()) this else null \ No newline at end of file +fun TypeReference.resolvedOrNull(): TypeReference? = if (isResolved()) this else null diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Alias.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Alias.kt similarity index 51% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Alias.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Alias.kt index 85d91812..badc6d56 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Alias.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Alias.kt @@ -1,19 +1,18 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference class Alias(alias: String, val aliasedReference: TypeReference) : Type(alias) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Any? { - return aliasedReference.requireValue().decode(scaleCodecReader, runtime) + override fun decode(scaleCodecReader: ScaleCodecReader): Any? { + return aliasedReference.requireValue().decode(scaleCodecReader) } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Any?) { - aliasedReference.requireValue().encodeUnsafe(scaleCodecWriter, runtime, value) + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Any?) { + aliasedReference.requireValue().encodeUnsafe(scaleCodecWriter, value) } override fun isValidInstance(instance: Any?): Boolean { @@ -22,4 +21,4 @@ class Alias(alias: String, val aliasedReference: TypeReference) : Type(ali override val isFullyResolved: Boolean get() = aliasedReference.isResolved() -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnum.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/CollectionEnum.kt similarity index 53% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnum.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/CollectionEnum.kt index ce89980c..790bd1d8 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/CollectionEnum.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/CollectionEnum.kt @@ -1,21 +1,20 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.scale.dataType.CollectionEnumType -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.scale.dataType.CollectionEnumType class CollectionEnum( name: String, val elements: List ) : Type(name) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): String { + override fun decode(scaleCodecReader: ScaleCodecReader): String { return CollectionEnumType(elements).read(scaleCodecReader) } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: String) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: String) { CollectionEnumType(elements).write(scaleCodecWriter, value) } @@ -26,4 +25,4 @@ class CollectionEnum( operator fun get(key: Int): String = elements[key] override val isFullyResolved = true -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnum.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/DictEnum.kt similarity index 64% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnum.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/DictEnum.kt index a31304c9..5996469d 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/DictEnum.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/DictEnum.kt @@ -1,12 +1,11 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.skipAliasesOrNull +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.skipAliasesOrNull open class DictEnum( name: String, @@ -15,16 +14,16 @@ open class DictEnum( class Entry(val name: String, val value: T) - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Entry { + override fun decode(scaleCodecReader: ScaleCodecReader): Entry { val typeIndex = scaleCodecReader.readByte() val entry = elements[typeIndex.toInt()] - val decoded = entry.value.requireValue().decode(scaleCodecReader, runtime) + val decoded = entry.value.requireValue().decode(scaleCodecReader) return Entry(entry.name, decoded) } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Entry) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Entry) { val index = elements.indexOfFirst { it.name == value.name } if (index == -1) elementNotFound(value.name) @@ -32,7 +31,7 @@ open class DictEnum( val type = elements[index].value.requireValue() scaleCodecWriter.writeByte(index) - type.encodeUnsafe(scaleCodecWriter, runtime, value.value) + type.encodeUnsafe(scaleCodecWriter, value.value) } override fun isValidInstance(instance: Any?): Boolean { diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArray.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/FixedArray.kt similarity index 56% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArray.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/FixedArray.kt index 9463f0b7..35ae05da 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/FixedArray.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/FixedArray.kt @@ -1,29 +1,28 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot +import jp.co.soramitsu.schema.definitions.types.TypeReference class FixedArray(name: String, val length: Int, typeReference: TypeReference) : WrapperType>(name, typeReference) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): List<*> { + override fun decode(scaleCodecReader: ScaleCodecReader): List<*> { val type = typeReference.requireValue() val list = mutableListOf() repeat(length) { - list += type.decode(scaleCodecReader, runtime) + list += type.decode(scaleCodecReader) } return list } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: List<*>) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: List<*>) { val type = typeReference.requireValue() value.forEach { - type.encodeUnsafe(scaleCodecWriter, runtime, it) + type.encodeUnsafe(scaleCodecWriter, it) } } @@ -32,4 +31,4 @@ class FixedArray(name: String, val length: Int, typeReference: TypeReference) : return instance is List<*> && instance.size == length && instance.all(type::isValidInstance) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Option.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Option.kt similarity index 63% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Option.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Option.kt index 28678e67..316648d6 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Option.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Option.kt @@ -1,18 +1,17 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.BooleanType -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.errors.EncodeDecodeException +import jp.co.soramitsu.schema.definitions.types.primitives.BooleanType class Option( name: String, typeReference: TypeReference ) : WrapperType(name, typeReference) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Any? { + override fun decode(scaleCodecReader: ScaleCodecReader): Any? { if (typeReference.requireValue() is BooleanType) { return when (scaleCodecReader.readByte().toInt()) { 0 -> null @@ -24,10 +23,10 @@ class Option( val some: Boolean = scaleCodecReader.readBoolean() - return if (some) typeReference.requireValue().decode(scaleCodecReader, runtime) else null + return if (some) typeReference.requireValue().decode(scaleCodecReader) else null } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Any?) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Any?) { val type = typeReference.requireValue() if (type is BooleanType) { @@ -37,7 +36,7 @@ class Option( scaleCodecWriter.write(ScaleCodecWriter.BOOL, false) } else { scaleCodecWriter.write(ScaleCodecWriter.BOOL, true) - type.encodeUnsafe(scaleCodecWriter, runtime, value) + type.encodeUnsafe(scaleCodecWriter, value) } } } @@ -45,4 +44,4 @@ class Option( override fun isValidInstance(instance: Any?): Boolean { return instance == null || typeReference.requireValue().isValidInstance(instance) } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/SetType.kt similarity index 59% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/SetType.kt index c5c42cb3..6b60dfbd 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/SetType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/SetType.kt @@ -1,12 +1,10 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.hash.isPositive -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives.NumberType +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.primitives.NumberType import java.math.BigInteger -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot class SetType( name: String, @@ -14,14 +12,14 @@ class SetType( val valueList: LinkedHashMap ) : WrapperType>(name, valueTypeReference) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Set { + override fun decode(scaleCodecReader: ScaleCodecReader): Set { val valueType = typeReference.requireValue() require(valueType is NumberType) - val value = valueType.decode(scaleCodecReader, runtime) + val value = valueType.decode(scaleCodecReader) return valueList.mapNotNullTo(mutableSetOf()) { (name, mask) -> - if (value.and(mask).isPositive()) { + if (value.and(mask).signum() == 1) { name } else { null @@ -29,7 +27,7 @@ class SetType( } } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Set) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Set) { val valueType = typeReference.requireValue() require(valueType is NumberType) @@ -41,7 +39,7 @@ class SetType( } } - valueType.encode(scaleCodecWriter, runtime, folded) + valueType.encode(scaleCodecWriter, folded) } override fun isValidInstance(instance: Any?): Boolean { @@ -49,4 +47,4 @@ class SetType( } operator fun get(key: String) = valueList[key] -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Struct.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Struct.kt similarity index 58% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Struct.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Struct.kt index e6bf117c..e821e755 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Struct.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Struct.kt @@ -1,11 +1,10 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.skipAliases -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.skipAliases @Suppress("UNCHECKED_CAST") class Struct( @@ -17,17 +16,17 @@ class Struct( inline operator fun get(key: String): R? = mapping[key] as? R } - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Instance { + override fun decode(scaleCodecReader: ScaleCodecReader): Instance { val values = mapping.mapValues { (_, type) -> - type.requireValue().decode(scaleCodecReader, runtime) + type.requireValue().decode(scaleCodecReader) } return Instance(values) } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Instance) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Instance) { mapping.forEach { (name, type) -> - type.requireValue().encodeUnsafe(scaleCodecWriter, runtime, value[name]) + type.requireValue().encodeUnsafe(scaleCodecWriter, value[name]) } } @@ -43,4 +42,4 @@ class Struct( override val isFullyResolved: Boolean get() = mapping.all { (_, ref) -> ref.isResolved() } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Tuple.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Tuple.kt similarity index 58% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Tuple.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Tuple.kt index 03f43159..93f0dfff 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/Tuple.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/Tuple.kt @@ -1,21 +1,20 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.skipAliasesOrNull +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.skipAliasesOrNull class Tuple(name: String, val typeReferences: List) : Type>(name) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): List<*> { - return typeReferences.map { it.requireValue().decode(scaleCodecReader, runtime) } + override fun decode(scaleCodecReader: ScaleCodecReader): List<*> { + return typeReferences.map { it.requireValue().decode(scaleCodecReader) } } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: List<*>) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: List<*>) { typeReferences.zip(value).onEach { (type, value) -> - type.requireValue().encodeUnsafe(scaleCodecWriter, runtime, value) + type.requireValue().encodeUnsafe(scaleCodecWriter, value) } } @@ -35,4 +34,4 @@ class Tuple(name: String, val typeReferences: List) : Type>(name, typeReference) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): List<*> { + override fun decode(scaleCodecReader: ScaleCodecReader): List<*> { val type = typeReference.requireValue() val size = compactInt.read(scaleCodecReader) val result = mutableListOf() repeat(size.toInt()) { - val element = type.decode(scaleCodecReader, runtime) + val element = type.decode(scaleCodecReader) result.add(element) } return result } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: List<*>) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: List<*>) { val type = typeReference.requireValue() val size = value.size.toBigInteger() compactInt.write(scaleCodecWriter, size) value.forEach { - type.encodeUnsafe(scaleCodecWriter, runtime, it) + type.encodeUnsafe(scaleCodecWriter, it) } } @@ -36,4 +35,4 @@ class Vec(name: String, typeReference: TypeReference) : WrapperType>(nam typeReference.requireValue().isValidInstance(it) } } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/WrapperType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/WrapperType.kt similarity index 54% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/WrapperType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/WrapperType.kt index 8fa878d8..0b301dc5 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/composite/WrapperType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/composite/WrapperType.kt @@ -1,8 +1,8 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite +package jp.co.soramitsu.schema.definitions.types.composite -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.Type -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.skipAliasesOrNull +import jp.co.soramitsu.schema.definitions.types.Type +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.skipAliasesOrNull abstract class WrapperType(name: String, val typeReference: TypeReference) : Type(name) { diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/errors/EncodeDecodeException.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/errors/EncodeDecodeException.kt similarity index 75% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/errors/EncodeDecodeException.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/errors/EncodeDecodeException.kt index 766e3cbd..db86cf4d 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/errors/EncodeDecodeException.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/errors/EncodeDecodeException.kt @@ -1,4 +1,4 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.errors +package jp.co.soramitsu.schema.definitions.types.errors class EncodeDecodeException( message: String? = null, diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/generics/ResultType.kt similarity index 50% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/generics/ResultType.kt index aeceaa00..bda40d23 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/generics/ResultType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/generics/ResultType.kt @@ -1,7 +1,7 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.generics +package jp.co.soramitsu.schema.definitions.types.generics -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.TypeReference -import jp.co.soramitsu.fearless_utils.runtime.definitions.types.composite.DictEnum +import jp.co.soramitsu.schema.definitions.types.TypeReference +import jp.co.soramitsu.schema.definitions.types.composite.DictEnum class ResultType(ok: TypeReference, err: TypeReference) : DictEnum( "Result", listOf( diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/BooleanType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/BooleanType.kt similarity index 50% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/BooleanType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/BooleanType.kt index debef5ef..35104598 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/BooleanType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/BooleanType.kt @@ -1,18 +1,17 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives +package jp.co.soramitsu.schema.definitions.types.primitives import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot object BooleanType : Primitive("bool") { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): Boolean { + override fun decode(scaleCodecReader: ScaleCodecReader): Boolean { return scaleCodecReader.readBoolean() } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: Boolean) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Boolean) { scaleCodecWriter.write(ScaleCodecWriter.BOOL, value) } override fun isValidInstance(instance: Any?) = instance is Boolean -} \ No newline at end of file +} diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/Compact.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/Compact.kt new file mode 100644 index 00000000..d5afba3c --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/Compact.kt @@ -0,0 +1,17 @@ +package jp.co.soramitsu.schema.definitions.types.primitives + +import io.emeraldpay.polkaj.scale.ScaleCodecReader +import io.emeraldpay.polkaj.scale.ScaleCodecWriter +import jp.co.soramitsu.schema.scale.dataType.compactInt +import java.math.BigInteger + +class Compact(name: String) : NumberType(name) { + + override fun decode(scaleCodecReader: ScaleCodecReader): BigInteger { + return compactInt.read(scaleCodecReader) + } + + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: BigInteger) { + return compactInt.write(scaleCodecWriter, value) + } +} diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/DynamicByteArray.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/DynamicByteArray.kt new file mode 100644 index 00000000..e1892d03 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/DynamicByteArray.kt @@ -0,0 +1,20 @@ +package jp.co.soramitsu.schema.definitions.types.primitives + +import io.emeraldpay.polkaj.scale.ScaleCodecReader +import io.emeraldpay.polkaj.scale.ScaleCodecWriter +import jp.co.soramitsu.schema.scale.dataType.byteArray + +class DynamicByteArray(name: String) : Primitive(name) { + + override fun decode(scaleCodecReader: ScaleCodecReader): ByteArray { + return byteArray.read(scaleCodecReader) + } + + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: ByteArray) { + return byteArray.write(scaleCodecWriter, value) + } + + override fun isValidInstance(instance: Any?): Boolean { + return instance is ByteArray + } +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/FixedByteArray.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/FixedByteArray.kt similarity index 56% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/FixedByteArray.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/FixedByteArray.kt index 88120925..31d3a10f 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/FixedByteArray.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/FixedByteArray.kt @@ -1,20 +1,19 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives +package jp.co.soramitsu.schema.definitions.types.primitives import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot open class FixedByteArray(name: String, val length: Int) : Primitive(name) { - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot): ByteArray { + override fun decode(scaleCodecReader: ScaleCodecReader): ByteArray { return scaleCodecReader.readByteArray(length) } - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: ByteArray) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: ByteArray) { return scaleCodecWriter.directWrite(value, 0, length) } override fun isValidInstance(instance: Any?): Boolean { return instance is ByteArray && instance.size == length } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/NumberType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/NumberType.kt similarity index 73% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/NumberType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/NumberType.kt index 9ec3fd8a..f34df658 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/NumberType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/NumberType.kt @@ -1,4 +1,4 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives +package jp.co.soramitsu.schema.definitions.types.primitives import java.math.BigInteger diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/Primitive.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/Primitive.kt new file mode 100644 index 00000000..9d76e711 --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/Primitive.kt @@ -0,0 +1,8 @@ +package jp.co.soramitsu.schema.definitions.types.primitives + +import jp.co.soramitsu.schema.definitions.types.Type + +abstract class Primitive(name: String) : Type(name) { + + override val isFullyResolved = true +} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/UIntType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/UIntType.kt similarity index 54% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/UIntType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/UIntType.kt index 1e9fe3dc..50bd6fa4 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/runtime/definitions/types/primitives/UIntType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/primitives/UIntType.kt @@ -1,10 +1,9 @@ -package jp.co.soramitsu.fearless_utils.runtime.definitions.types.primitives +package jp.co.soramitsu.schema.definitions.types.primitives import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter -import jp.co.soramitsu.fearless_utils.scale.dataType.uint +import jp.co.soramitsu.schema.scale.dataType.uint import java.math.BigInteger -import jp.co.soramitsu.fearless_utils.runtime.RuntimeSnapshot val u8 = UIntType(8) val u16 = UIntType(16) @@ -23,9 +22,9 @@ class UIntType(bits: Int) : NumberType("u$bits") { private val codec = uint(size = bytes) - override fun encode(scaleCodecWriter: ScaleCodecWriter, runtime: RuntimeSnapshot, value: BigInteger) { + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: BigInteger) { codec.write(scaleCodecWriter, value) } - override fun decode(scaleCodecReader: ScaleCodecReader, runtime: RuntimeSnapshot) = codec.read(scaleCodecReader) + override fun decode(scaleCodecReader: ScaleCodecReader) = codec.read(scaleCodecReader) } diff --git a/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/stub/FakeType.kt b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/stub/FakeType.kt new file mode 100644 index 00000000..b09c949e --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/definitions/types/stub/FakeType.kt @@ -0,0 +1,22 @@ +package jp.co.soramitsu.schema.definitions.types.stub + +import io.emeraldpay.polkaj.scale.ScaleCodecReader +import io.emeraldpay.polkaj.scale.ScaleCodecWriter +import jp.co.soramitsu.schema.definitions.types.Type + +class FakeType(name: String) : Type(name) { + + override fun decode(scaleCodecReader: ScaleCodecReader): Nothing { + throw IllegalArgumentException("Fake") + } + + override fun encode(scaleCodecWriter: ScaleCodecWriter, value: Nothing) { + throw IllegalArgumentException("Fake") + } + + override fun isValidInstance(instance: Any?): Boolean { + return false + } + + override val isFullyResolved = true +} diff --git a/schema/src/main/java/jp/co/soramitsu/schema/extensions/Exceptions.kt b/schema/src/main/java/jp/co/soramitsu/schema/extensions/Exceptions.kt new file mode 100644 index 00000000..2283d97d --- /dev/null +++ b/schema/src/main/java/jp/co/soramitsu/schema/extensions/Exceptions.kt @@ -0,0 +1,16 @@ +package jp.co.soramitsu.schema.extensions + +inline fun ensureExceptionType( + creator: (Exception) -> T, + block: () -> R +): R { + return try { + block() + } catch (e: Exception) { + if (e is T) { + throw e + } else { + throw creator(e) + } + } +} \ No newline at end of file diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/extensions/Hex.kt b/schema/src/main/java/jp/co/soramitsu/schema/extensions/Hex.kt similarity index 92% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/extensions/Hex.kt rename to schema/src/main/java/jp/co/soramitsu/schema/extensions/Hex.kt index bd5819ae..b17b0ac1 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/extensions/Hex.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/extensions/Hex.kt @@ -1,4 +1,4 @@ -package jp.co.soramitsu.fearless_utils.extensions +package jp.co.soramitsu.schema.extensions import org.bouncycastle.util.encoders.Hex diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/extensions/Kotlin.kt b/schema/src/main/java/jp/co/soramitsu/schema/extensions/Kotlin.kt similarity index 90% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/extensions/Kotlin.kt rename to schema/src/main/java/jp/co/soramitsu/schema/extensions/Kotlin.kt index 1233d779..4da6bed6 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/extensions/Kotlin.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/extensions/Kotlin.kt @@ -1,4 +1,4 @@ -package jp.co.soramitsu.fearless_utils.extensions +package jp.co.soramitsu.schema.extensions import java.math.BigInteger import java.nio.ByteOrder diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Delegate.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/Delegate.kt similarity index 84% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Delegate.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/Delegate.kt index 5cb50a1e..5cc46956 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Delegate.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/Delegate.kt @@ -1,7 +1,7 @@ -package jp.co.soramitsu.fearless_utils.scale +package jp.co.soramitsu.schema.scale -import jp.co.soramitsu.fearless_utils.scale.dataType.DataType -import jp.co.soramitsu.fearless_utils.scale.dataType.optional +import jp.co.soramitsu.schema.scale.dataType.DataType +import jp.co.soramitsu.schema.scale.dataType.optional import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty @@ -32,4 +32,4 @@ class NullableFieldDelegate, T>( private var field: Field = schema.nullableField(dataType, default) override fun getValue(thisRef: Schema, property: KProperty<*>) = field -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Dsl.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/Dsl.kt similarity index 70% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Dsl.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/Dsl.kt index 3a243b9a..fc2decf4 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Dsl.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/Dsl.kt @@ -1,25 +1,25 @@ @file:Suppress("unused", "EXPERIMENTAL_API_USAGE") -package jp.co.soramitsu.fearless_utils.scale - -import jp.co.soramitsu.fearless_utils.scale.dataType.DataType -import jp.co.soramitsu.fearless_utils.scale.dataType.EnumType -import jp.co.soramitsu.fearless_utils.scale.dataType.boolean -import jp.co.soramitsu.fearless_utils.scale.dataType.byte -import jp.co.soramitsu.fearless_utils.scale.dataType.byteArray -import jp.co.soramitsu.fearless_utils.scale.dataType.byteArraySized -import jp.co.soramitsu.fearless_utils.scale.dataType.compactInt -import jp.co.soramitsu.fearless_utils.scale.dataType.list -import jp.co.soramitsu.fearless_utils.scale.dataType.long -import jp.co.soramitsu.fearless_utils.scale.dataType.scalable -import jp.co.soramitsu.fearless_utils.scale.dataType.string -import jp.co.soramitsu.fearless_utils.scale.dataType.tuple -import jp.co.soramitsu.fearless_utils.scale.dataType.uint128 -import jp.co.soramitsu.fearless_utils.scale.dataType.uint16 -import jp.co.soramitsu.fearless_utils.scale.dataType.uint32 -import jp.co.soramitsu.fearless_utils.scale.dataType.uint64 -import jp.co.soramitsu.fearless_utils.scale.dataType.uint8 -import jp.co.soramitsu.fearless_utils.scale.dataType.union +package jp.co.soramitsu.schema.scale + +import jp.co.soramitsu.schema.scale.dataType.DataType +import jp.co.soramitsu.schema.scale.dataType.EnumType +import jp.co.soramitsu.schema.scale.dataType.boolean +import jp.co.soramitsu.schema.scale.dataType.byte +import jp.co.soramitsu.schema.scale.dataType.byteArray +import jp.co.soramitsu.schema.scale.dataType.byteArraySized +import jp.co.soramitsu.schema.scale.dataType.compactInt +import jp.co.soramitsu.schema.scale.dataType.list +import jp.co.soramitsu.schema.scale.dataType.long +import jp.co.soramitsu.schema.scale.dataType.scalable +import jp.co.soramitsu.schema.scale.dataType.string +import jp.co.soramitsu.schema.scale.dataType.tuple +import jp.co.soramitsu.schema.scale.dataType.uint128 +import jp.co.soramitsu.schema.scale.dataType.uint16 +import jp.co.soramitsu.schema.scale.dataType.uint32 +import jp.co.soramitsu.schema.scale.dataType.uint64 +import jp.co.soramitsu.schema.scale.dataType.uint8 +import jp.co.soramitsu.schema.scale.dataType.union import java.math.BigInteger import kotlin.reflect.KClass @@ -88,4 +88,4 @@ fun > S.enum(vararg types: DataType<*>, default: Any? = null) = No fun , E : Enum> S.enum(enumClass: KClass, default: E? = null) = NonNullFieldDelegate(EnumType(enumClass.java), this, default) -fun , T> S.custom(type: DataType, default: T? = null) = NonNullFieldDelegate(type, this, default) \ No newline at end of file +fun , T> S.custom(type: DataType, default: T? = null) = NonNullFieldDelegate(type, this, default) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/ScaleStruct.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/ScaleStruct.kt similarity index 85% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/ScaleStruct.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/ScaleStruct.kt index 98842910..2c063ea0 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/ScaleStruct.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/ScaleStruct.kt @@ -1,7 +1,7 @@ -package jp.co.soramitsu.fearless_utils.scale +package jp.co.soramitsu.schema.scale -import jp.co.soramitsu.fearless_utils.scale.dataType.DataType -import jp.co.soramitsu.fearless_utils.scale.dataType.optional +import jp.co.soramitsu.schema.scale.dataType.DataType +import jp.co.soramitsu.schema.scale.dataType.optional class Field(val dataType: DataType, val defaultValue: T? = null) @@ -41,4 +41,4 @@ class EncodableStruct>(val schema: S) { fun > EncodableStruct.toHexString() = schema.toHexString(this) -fun > EncodableStruct.toByteArray() = schema.toByteArray(this) \ No newline at end of file +fun > EncodableStruct.toByteArray() = schema.toByteArray(this) diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Schema.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/Schema.kt similarity index 84% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Schema.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/Schema.kt index 2e0a8363..83a0a4fb 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/Schema.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/Schema.kt @@ -1,15 +1,14 @@ -package jp.co.soramitsu.fearless_utils.scale +package jp.co.soramitsu.schema.scale import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import io.emeraldpay.polkaj.scale.ScaleReader import io.emeraldpay.polkaj.scale.ScaleWriter -import jp.co.soramitsu.fearless_utils.extensions.toHexString -import jp.co.soramitsu.fearless_utils.scale.dataType.DataType -import jp.co.soramitsu.fearless_utils.scale.dataType.optional +import jp.co.soramitsu.schema.extensions.toHexString +import jp.co.soramitsu.schema.scale.dataType.DataType +import jp.co.soramitsu.schema.scale.dataType.optional import org.bouncycastle.util.encoders.Hex import java.io.ByteArrayOutputStream -import kotlin.Exception @Suppress("UNCHECKED_CAST") abstract class Schema> : ScaleReader>, @@ -73,8 +72,7 @@ abstract class Schema> : ScaleReader>, return outputStream.toByteArray() } - fun toHexString(struct: EncodableStruct): String = - toByteArray(struct).toHexString(withPrefix = true) + fun toHexString(struct: EncodableStruct): String = toByteArray(struct).toHexString(withPrefix = true) override fun write(writer: ScaleCodecWriter, struct: EncodableStruct) { for (field in fields) { @@ -85,4 +83,4 @@ abstract class Schema> : ScaleReader>, type.write(writer, value) } } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Compound.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Compound.kt similarity index 96% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Compound.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Compound.kt index 48c33f87..b6c36c87 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Compound.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Compound.kt @@ -1,12 +1,12 @@ @file:Suppress("ClassName", "UNCHECKED_CAST") -package jp.co.soramitsu.fearless_utils.scale.dataType +package jp.co.soramitsu.schema.scale.dataType import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import io.emeraldpay.polkaj.scale.writer.BoolWriter -import jp.co.soramitsu.fearless_utils.scale.EncodableStruct -import jp.co.soramitsu.fearless_utils.scale.Schema +import jp.co.soramitsu.schema.scale.EncodableStruct +import jp.co.soramitsu.schema.scale.Schema class tuple( private val a: DataType, @@ -169,4 +169,4 @@ class union(val dataTypes: Array>) : DataType() { override fun conformsType(value: Any?): Boolean { return dataTypes.any { it.conformsType(value) } } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/DataType.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/DataType.kt similarity index 79% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/DataType.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/DataType.kt index f4eb6aed..967a673a 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/DataType.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/DataType.kt @@ -1,8 +1,8 @@ -package jp.co.soramitsu.fearless_utils.scale.dataType +package jp.co.soramitsu.schema.scale.dataType import io.emeraldpay.polkaj.scale.ScaleReader import io.emeraldpay.polkaj.scale.ScaleWriter abstract class DataType : ScaleReader, ScaleWriter { abstract fun conformsType(value: Any?): Boolean -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Numbers.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Numbers.kt similarity index 93% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Numbers.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Numbers.kt index a4aadc72..f0787f18 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Numbers.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Numbers.kt @@ -1,12 +1,12 @@ @file:Suppress("EXPERIMENTAL_API_USAGE") -package jp.co.soramitsu.fearless_utils.scale.dataType +package jp.co.soramitsu.schema.scale.dataType import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter import io.emeraldpay.polkaj.scale.reader.CompactBigIntReader -import jp.co.soramitsu.fearless_utils.extensions.toBigInteger -import jp.co.soramitsu.fearless_utils.scale.utils.CompactBigIntWriter +import jp.co.soramitsu.schema.extensions.toBigInteger +import jp.co.soramitsu.schema.scale.utils.CompactBigIntWriter import java.math.BigInteger import java.nio.ByteOrder @@ -102,4 +102,4 @@ object compactInt : DataType() { } override fun conformsType(value: Any?) = value is BigInteger -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Primitives.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Primitives.kt similarity index 96% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Primitives.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Primitives.kt index b9b23333..91f24403 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/dataType/Primitives.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/dataType/Primitives.kt @@ -1,4 +1,4 @@ -package jp.co.soramitsu.fearless_utils.scale.dataType +package jp.co.soramitsu.schema.scale.dataType import io.emeraldpay.polkaj.scale.ScaleCodecReader import io.emeraldpay.polkaj.scale.ScaleCodecWriter @@ -45,4 +45,4 @@ class byteArraySized(private val length: Int) : DataType() { override fun write(writer: ScaleCodecWriter, value: ByteArray) = writer.directWrite(value, 0, length) override fun conformsType(value: Any?) = value is ByteArray -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/utils/CompactIntWriter.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/utils/CompactIntWriter.kt similarity index 95% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/utils/CompactIntWriter.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/utils/CompactIntWriter.kt index 6c83aa27..156652f9 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/utils/CompactIntWriter.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/utils/CompactIntWriter.kt @@ -1,4 +1,4 @@ -package jp.co.soramitsu.fearless_utils.scale.utils +package jp.co.soramitsu.schema.scale.utils import io.emeraldpay.polkaj.scale.CompactMode import io.emeraldpay.polkaj.scale.ScaleCodecWriter @@ -35,4 +35,4 @@ class CompactBigIntWriter : ScaleWriter { } } } -} \ No newline at end of file +} diff --git a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/utils/Ext.kt b/schema/src/main/java/jp/co/soramitsu/schema/scale/utils/Ext.kt similarity index 75% rename from fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/utils/Ext.kt rename to schema/src/main/java/jp/co/soramitsu/schema/scale/utils/Ext.kt index 704dd0c9..f922f64c 100644 --- a/fearless-utils/src/main/java/jp/co/soramitsu/fearless_utils/scale/utils/Ext.kt +++ b/schema/src/main/java/jp/co/soramitsu/schema/scale/utils/Ext.kt @@ -1,7 +1,7 @@ -package jp.co.soramitsu.fearless_utils.scale.utils +package jp.co.soramitsu.schema.scale.utils import io.emeraldpay.polkaj.scale.ScaleCodecWriter fun ScaleCodecWriter.directWrite(byteArray: ByteArray) { directWrite(byteArray, 0, byteArray.size) -} \ No newline at end of file +} diff --git a/settings.gradle b/settings.gradle index aa550cf5..b134f31e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,4 @@ include ':fearless-utils' include ':app' -rootProject.name = "fearless-utils-android" \ No newline at end of file +rootProject.name = "fearless-utils-android" +include ':schema'