diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/ClassCarpenter.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/ClassCarpenter.kt index 03fb1df4ac..28019aab42 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/ClassCarpenter.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/ClassCarpenter.kt @@ -30,10 +30,10 @@ class CarpenterClassLoader(parentClassLoader: ClassLoader = Thread.currentThread */ private const val TARGET_VERSION = V1_8 -private const val jlEnum = "java/lang/Enum" -private const val jlString = "java/lang/String" -private const val jlObject = "java/lang/Object" -private const val jlClass = "java/lang/Class" +private val jlEnum get() = Type.getInternalName(Enum::class.java) +private val jlString get() = Type.getInternalName(String::class.java) +private val jlObject get() = Type.getInternalName(Object::class.java) +private val jlClass get() = Type.getInternalName(Class::class.java) /** * A class carpenter generates JVM bytecodes for a class given a schema and then loads it into a sub-classloader. @@ -131,6 +131,8 @@ class ClassCarpenter(cl: ClassLoader = Thread.currentThread().contextClassLoader cw.apply { visit(TARGET_VERSION, ACC_PUBLIC + ACC_FINAL + ACC_SUPER + ACC_ENUM, schema.jvmName, "L$jlEnum;", jlEnum, null) + + visitAnnotation(Type.getDescriptor(CordaSerializable::class.java), true).visitEnd() generateFields(schema) generateStaticEnumConstructor(schema) generateEnumConstructor() diff --git a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/Schema.kt b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/Schema.kt index 309fc46b61..16d0e362d5 100644 --- a/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/Schema.kt +++ b/node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/carpenter/Schema.kt @@ -93,7 +93,7 @@ class EnumSchema( } /** - * Factory object used by the serialiser when build [Schema]s based + * Factory object used by the serialiser when building [Schema]s based * on an AMQP schema */ object CarpenterSchemaFactory { diff --git a/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/carpenter/EnumClassTests.kt b/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/carpenter/EnumClassTests.kt index 98b80b2824..d4c40fcc0a 100644 --- a/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/carpenter/EnumClassTests.kt +++ b/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/carpenter/EnumClassTests.kt @@ -12,7 +12,7 @@ class EnumClassTests : AmqpCarpenterBase() { val schema = EnumSchema("gen.enum", enumConstants) - cc.build(schema) + assertTrue(cc.build(schema).isEnum) } @Test