diff --git a/component-studio/component-runtime-di/src/main/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitor.java b/component-studio/component-runtime-di/src/main/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitor.java index 942bfc8f7fd09..01fd409483840 100644 --- a/component-studio/component-runtime-di/src/main/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitor.java +++ b/component-studio/component-runtime-di/src/main/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitor.java @@ -475,11 +475,6 @@ private void onArray(final Entry entry, final Collection value) { } private void onObject(final String name, final Object value) { - if (Record.class.isInstance(value)) {// keep old action here - recordBuilder.withString(name, jsonb.toJson(value)); - return; - } - recordBuilder.with(rowStructSchema.getEntry(name), value); } diff --git a/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitorTest.java b/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitorTest.java index 011bfd49deda4..05b787be11cde 100644 --- a/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitorTest.java +++ b/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/DiRowStructVisitorTest.java @@ -125,6 +125,8 @@ void visit() { createMetadata(dynamic, "BYTES", StudioTypes.LIST, BYTES); createMetadata(dynamic, "DATES", StudioTypes.LIST, DATES); createMetadata(dynamic, "RECORDS", StudioTypes.LIST, RECORDS); + createMetadata(dynamic, "RECORD", StudioTypes.OBJECT, RECORD); + createMetadata(dynamic, "RECORD_SUB", StudioTypes.OBJECT, RECORD_WITH_SUB); createMetadata(dynamic, "BIG_DECIMALS", StudioTypes.LIST, BIG_DECIMALS); createMetadata(dynamic, "dynDate", StudioTypes.DATE, DATE); createMetadata(dynamic, "dynStringDate", StudioTypes.STRING, @@ -141,7 +143,7 @@ void visit() { final Record record = visitor.get(rowStruct, factory); final Schema schema = record.getSchema(); // should have 3 excluded fields - assertEquals(58, schema.getEntries().size()); + assertEquals(60, schema.getEntries().size()); // schema metadata assertFalse(schema.getEntry("id").isNullable()); @@ -219,6 +221,8 @@ void visit() { assertEquals(String.valueOf(Character.MAX_VALUE), record.getString("char0")); assertEquals(dynObject, record.get(Object.class, "dynObject")); assertEquals(STRINGS, record.getArray(String.class, "STRINGS")); + assertEquals(RECORD, record.get(Record.class, "RECORD")); + assertEquals(RECORD_WITH_SUB, record.get(Record.class, "RECORD_SUB")); assertEquals(LONGS, record.getArray(Long.class, "LONGS")); assertEquals(FLOATS, record.getArray(Float.class, "FLOATS")); assertEquals(DOUBLES, record.getArray(Double.class, "DOUBLES")); diff --git a/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/VisitorsTest.java b/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/VisitorsTest.java index c6d30043b6015..1dd5aaab7b490 100644 --- a/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/VisitorsTest.java +++ b/component-studio/component-runtime-di/src/test/java/org/talend/sdk/component/runtime/di/record/VisitorsTest.java @@ -71,6 +71,9 @@ public class VisitorsTest { protected static final Record RECORD = factory.newRecordBuilder().withInt("ntgr", 1).withString("str", "one").build(); + protected static final Record RECORD_WITH_SUB = + factory.newRecordBuilder().withInt("ntgr", 1).withRecord("record1", RECORD).build(); + protected static final Object OBJECT = new Object(); protected static final Document DOCUMENT = new Document();