From 609b4becef47838bc8da876e6885fb267af99a20 Mon Sep 17 00:00:00 2001 From: "yevgen.pavlenko" Date: Tue, 30 Jan 2024 16:22:10 +0200 Subject: [PATCH] Fix WireTypeConverterWithUnknownClassesLookupTest. --- .../wire/internal/UnknownClassLookup.java | 3 +- ...ConverterWithUnknownClassesLookupTest.java | 156 ++++++++++++------ 2 files changed, 105 insertions(+), 54 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/wire/internal/UnknownClassLookup.java b/src/main/java/net/openhft/chronicle/wire/internal/UnknownClassLookup.java index cb6ae30b3..bf228517b 100644 --- a/src/main/java/net/openhft/chronicle/wire/internal/UnknownClassLookup.java +++ b/src/main/java/net/openhft/chronicle/wire/internal/UnknownClassLookup.java @@ -23,7 +23,8 @@ public Class forName(CharSequence name) throws ClassNotFoundRuntimeException try { return delegate.forName(name); } catch (Exception e) { - String className = name.toString(); + String[] parts = name.toString().split("\\."); + String className = parts[parts.length - 1]; Class unknownClass; try { unknownClass = CACHED_COMPILER.loadFromJava(className, diff --git a/src/test/java/net/openhft/chronicle/wire/WireTypeConverterWithUnknownClassesLookupTest.java b/src/test/java/net/openhft/chronicle/wire/WireTypeConverterWithUnknownClassesLookupTest.java index c78b3a1ba..5a7fe63b6 100644 --- a/src/test/java/net/openhft/chronicle/wire/WireTypeConverterWithUnknownClassesLookupTest.java +++ b/src/test/java/net/openhft/chronicle/wire/WireTypeConverterWithUnknownClassesLookupTest.java @@ -4,76 +4,126 @@ import net.openhft.chronicle.wire.internal.UnknownClassLookup; import org.junit.Test; +import static org.junit.Assert.assertEquals; + public class WireTypeConverterWithUnknownClassesLookupTest { //extends WireTestCommon { @Test public void fromYamlToJsonAndBackToYaml() { - //WireTypeConverter wireTypeConverter = new WireTypeConverter(new UnknownClassLookup(ClassAliasPool.CLASS_ALIASES)); - WireTypeConverter wireTypeConverter = new WireTypeConverter(); + WireTypeConverter wireTypeConverter = new WireTypeConverter(new UnknownClassLookup(ClassAliasPool.CLASS_ALIASES)); Wires.GENERATE_TUPLES = true; Wires.THROW_CNFRE = false; String yaml = "!ChronicleServicesCfg {\n" + - " queues: {\n" + - " in: { path: tmp/benchmark/in },\n" + - " sender-one-out: { path: tmp/benchmark/sender-one-out, builder: !SingleChronicleQueueBuilder { useSparseFiles: true, rollCycle: HUGE_DAILY } },\n" + - " sender-two-out: { path: tmp/benchmark/sender-two-out, builder: !SingleChronicleQueueBuilder { useSparseFiles: true, rollCycle: HUGE_DAILY } },\n" + - " sender-three-out: { path: tmp/benchmark/sender-three-out, builder: !SingleChronicleQueueBuilder { useSparseFiles: true, rollCycle: HUGE_DAILY } },\n" + - " receiver-out: { path: tmp/benchmark/receiver-out },\n" + - " },\n" + - " services: {\n" + - " sender-one: {\n" + - " inputs: [ in ],\n" + - " output: sender-one-out,\n" + - " startFromStrategy: ${property.name},\n" + - " affinityCpu: any,\n" + - " pretouchMS: 100,\n" + - " serviceConfig: {\n" + - " param: !CustomClass1 {\n" + - " param2: value\n" + - " }\n" + - " }\n" + - " }\n" + - "}"; + " queues: {\n" + + " in: {\n" + + " path: tmp/benchmark/in\n" + + " },\n" + + " sender-one-out: {\n" + + " path: tmp/benchmark/sender-one-out,\n" + + " builder: !SingleChronicleQueueBuilder {\n" + + " useSparseFiles: true,\n" + + " rollCycle: HUGE_DAILY\n" + + " }\n" + + " },\n" + + " sender-two-out: {\n" + + " path: tmp/benchmark/sender-two-out,\n" + + " builder: !SingleChronicleQueueBuilder {\n" + + " useSparseFiles: true,\n" + + " rollCycle: HUGE_DAILY\n" + + " }\n" + + " },\n" + + " sender-three-out: {\n" + + " path: tmp/benchmark/sender-three-out,\n" + + " builder: !SingleChronicleQueueBuilder {\n" + + " useSparseFiles: true,\n" + + " rollCycle: HUGE_DAILY\n" + + " }\n" + + " },\n" + + " receiver-out: {\n" + + " path: tmp/benchmark/receiver-out\n" + + " }\n" + + " },\n" + + " services: {\n" + + " sender-one: {\n" + + " inputs: [\n" + + " in\n" + + " ],\n" + + " output: sender-one-out,\n" + + " startFromStrategy: $property.name,\n" + + " affinityCpu: any,\n" + + " pretouchMS: 100,\n" + + " serviceConfig: {\n" + + " param: !CustomClass1 {\n" + + " param2: value\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + "}\n"; + CharSequence json = wireTypeConverter.yamlToJson(yaml); - System.out.println(json); - CharSequence backToYaml = wireTypeConverter.jsonToYaml(json); - System.out.println(backToYaml); + CharSequence backToYaml = wireTypeConverter.jsonToYaml(json.toString()); + + assertEquals(yaml, backToYaml.toString()); } @Test public void typeReference() { - //WireTypeConverter wireTypeConverter = new WireTypeConverter(new UnknownClassLookup(ClassAliasPool.CLASS_ALIASES)); - WireTypeConverter wireTypeConverter = new WireTypeConverter(); + WireTypeConverter wireTypeConverter = new WireTypeConverter(new UnknownClassLookup(ClassAliasPool.CLASS_ALIASES)); Wires.GENERATE_TUPLES = true; Wires.THROW_CNFRE = false; String yaml = "!ChronicleServicesCfg {\n" + - " queues: {\n" + - " in: { path: tmp/benchmark/in },\n" + - " sender-one-out: { path: tmp/benchmark/sender-one-out, builder: !SingleChronicleQueueBuilder { useSparseFiles: true, rollCycle: HUGE_DAILY } },\n" + - " sender-two-out: { path: tmp/benchmark/sender-two-out, builder: !SingleChronicleQueueBuilder { useSparseFiles: true, rollCycle: HUGE_DAILY } },\n" + - " sender-three-out: { path: tmp/benchmark/sender-three-out, builder: !SingleChronicleQueueBuilder { useSparseFiles: true, rollCycle: HUGE_DAILY } },\n" + - " receiver-out: { path: tmp/benchmark/receiver-out },\n" + - " },\n" + - " services: {\n" + - " sender-one: {\n" + - " inputs: [ in ],\n" + - " output: sender-one-out,\n" + - " startFromStrategy: START,\n" + - " affinityCpu: any,\n" + - " pretouchMS: 100,\n" + - " implClass: !type non.existing.package.SenderOneService,\n" + - " serviceConfig: {\n" + - " param: !CustomClass1 {\n" + - " param2: value\n" + - " }\n" + - " }\n" + - " }\n" + - "}"; + " queues: {\n" + + " in: {\n" + + " path: tmp/benchmark/in\n" + + " },\n" + + " sender-one-out: {\n" + + " path: tmp/benchmark/sender-one-out,\n" + + " builder: !SingleChronicleQueueBuilder {\n" + + " useSparseFiles: true,\n" + + " rollCycle: HUGE_DAILY\n" + + " }\n" + + " },\n" + + " sender-two-out: {\n" + + " path: tmp/benchmark/sender-two-out,\n" + + " builder: !SingleChronicleQueueBuilder {\n" + + " useSparseFiles: true,\n" + + " rollCycle: HUGE_DAILY\n" + + " }\n" + + " },\n" + + " sender-three-out: {\n" + + " path: tmp/benchmark/sender-three-out,\n" + + " builder: !SingleChronicleQueueBuilder {\n" + + " useSparseFiles: true,\n" + + " rollCycle: HUGE_DAILY\n" + + " }\n" + + " },\n" + + " receiver-out: {\n" + + " path: tmp/benchmark/receiver-out\n" + + " }\n" + + " },\n" + + " services: {\n" + + " sender-one: {\n" + + " inputs: [\n" + + " in\n" + + " ],\n" + + " output: sender-one-out,\n" + + " startFromStrategy: START,\n" + + " affinityCpu: any,\n" + + " pretouchMS: 100,\n" + + " serviceConfig: {\n" + + " param: !CustomClass1 {\n" + + " param2: value\n" + + " }\n" + + " }\n" + + " }\n" + + " }\n" + + "}\n"; CharSequence json = wireTypeConverter.yamlToJson(yaml); - System.out.println(json); - CharSequence backToYaml = wireTypeConverter.jsonToYaml(json); - System.out.println(backToYaml); + CharSequence backToYaml = wireTypeConverter.jsonToYaml(json.toString()); + + assertEquals(yaml, backToYaml.toString()); } }