2525import com .fasterxml .jackson .annotation .JsonCreator ;
2626import com .fasterxml .jackson .annotation .JsonIgnore ;
2727import com .fasterxml .jackson .annotation .JsonProperty ;
28+ import com .fasterxml .jackson .annotation .JsonSubTypes ;
29+ import com .fasterxml .jackson .annotation .JsonTypeInfo ;
2830import com .google .errorprone .annotations .Immutable ;
2931
3032import java .util .ArrayList ;
@@ -144,7 +146,7 @@ public PlanNode getSource()
144146 return source ;
145147 }
146148
147- @ JsonIgnore
149+ @ JsonProperty
148150 public Optional <WriterTarget > getTarget ()
149151 {
150152 return target ;
@@ -276,6 +278,14 @@ public boolean isSingleWriterPerPartitionRequired()
276278
277279 // only used during planning -- will not be serialized
278280 @ SuppressWarnings ({"EmptyClass" , "ClassMayBeInterface" })
281+ @ JsonTypeInfo (use = JsonTypeInfo .Id .NAME , property = "@type" )
282+ @ JsonSubTypes ({
283+ @ JsonSubTypes .Type (value = CreateName .class , name = "createName" ),
284+ @ JsonSubTypes .Type (value = InsertReference .class , name = "insertReference" ),
285+ @ JsonSubTypes .Type (value = DeleteHandle .class , name = "deleteHandle" ),
286+ @ JsonSubTypes .Type (value = RefreshMaterializedViewReference .class , name = "refreshMaterializedView" ),
287+ @ JsonSubTypes .Type (value = UpdateTarget .class , name = "updateTarget" )
288+ })
279289 public abstract static class WriterTarget
280290 {
281291 public abstract ConnectorId getConnectorId ();
@@ -296,7 +306,11 @@ public static class CreateName
296306 private final Optional <NewTableLayout > layout ;
297307 private final Optional <List <OutputColumnMetadata >> columns ;
298308
299- public CreateName (ConnectorId connectorId , ConnectorTableMetadata tableMetadata , Optional <NewTableLayout > layout , Optional <List <OutputColumnMetadata >> columns )
309+ @ JsonCreator
310+ public CreateName (@ JsonProperty ("connectorId" ) ConnectorId connectorId ,
311+ @ JsonProperty ("tableMetadata" ) ConnectorTableMetadata tableMetadata ,
312+ @ JsonProperty ("layout" ) Optional <NewTableLayout > layout ,
313+ @ JsonProperty ("columns" ) Optional <List <OutputColumnMetadata >> columns )
300314 {
301315 this .connectorId = requireNonNull (connectorId , "connectorId is null" );
302316 this .tableMetadata = requireNonNull (tableMetadata , "tableMetadata is null" );
@@ -305,38 +319,42 @@ public CreateName(ConnectorId connectorId, ConnectorTableMetadata tableMetadata,
305319 }
306320
307321 @ Override
322+ @ JsonIgnore
308323 public ConnectorId getConnectorId ()
309324 {
310325 return connectorId ;
311326 }
312327
328+ @ JsonIgnore
313329 public ConnectorTableMetadata getTableMetadata ()
314330 {
315331 return tableMetadata ;
316332 }
317333
334+ @ JsonIgnore
318335 public Optional <NewTableLayout > getLayout ()
319336 {
320337 return layout ;
321338 }
322339
323340 @ Override
341+ @ JsonIgnore
324342 public SchemaTableName getSchemaTableName ()
325-
326343 {
327344 return tableMetadata .getTable ();
328345 }
329346
330347 @ Override
331- public String toString ()
348+ @ JsonIgnore
349+ public Optional <List <OutputColumnMetadata >> getOutputColumns ()
332350 {
333- return connectorId + "." + tableMetadata . getTable () ;
351+ return columns ;
334352 }
335353
336354 @ Override
337- public Optional < List < OutputColumnMetadata >> getOutputColumns ()
355+ public String toString ()
338356 {
339- return columns ;
357+ return connectorId + "." + tableMetadata . getTable () ;
340358 }
341359 }
342360
@@ -347,31 +365,39 @@ public static class InsertReference
347365 private final SchemaTableName schemaTableName ;
348366 private final Optional <List <OutputColumnMetadata >> columns ;
349367
350- public InsertReference (TableHandle handle , SchemaTableName schemaTableName , Optional <List <OutputColumnMetadata >> columns )
368+ @ JsonCreator
369+ public InsertReference (
370+ @ JsonProperty ("handle" ) TableHandle handle ,
371+ @ JsonProperty ("schemaTableName" ) SchemaTableName schemaTableName ,
372+ @ JsonProperty ("columns" ) Optional <List <OutputColumnMetadata >> columns )
351373 {
352374 this .handle = requireNonNull (handle , "handle is null" );
353375 this .schemaTableName = requireNonNull (schemaTableName , "schemaTableName is null" );
354376 this .columns = requireNonNull (columns , "columns is null" );
355377 }
356378
379+ @ JsonProperty
357380 public TableHandle getHandle ()
358381 {
359382 return handle ;
360383 }
361384
362385 @ Override
363- public ConnectorId getConnectorId ()
386+ @ JsonProperty
387+ public SchemaTableName getSchemaTableName ()
364388 {
365- return handle . getConnectorId () ;
389+ return schemaTableName ;
366390 }
367391
368392 @ Override
369- public SchemaTableName getSchemaTableName ()
393+ @ JsonIgnore
394+ public ConnectorId getConnectorId ()
370395 {
371- return schemaTableName ;
396+ return handle . getConnectorId () ;
372397 }
373398
374399 @ Override
400+ @ JsonIgnore
375401 public Optional <List <OutputColumnMetadata >> getOutputColumns ()
376402 {
377403 return columns ;
@@ -390,32 +416,37 @@ public static class DeleteHandle
390416 private final TableHandle handle ;
391417 private final SchemaTableName schemaTableName ;
392418
419+ @ JsonCreator
393420 public DeleteHandle (
394- TableHandle handle ,
395- SchemaTableName schemaTableName )
421+ @ JsonProperty ( "handle" ) TableHandle handle ,
422+ @ JsonProperty ( "schemaTableName" ) SchemaTableName schemaTableName )
396423 {
397424 this .handle = requireNonNull (handle , "handle is null" );
398425 this .schemaTableName = requireNonNull (schemaTableName , "schemaTableName is null" );
399426 }
400427
428+ @ JsonProperty
401429 public TableHandle getHandle ()
402430 {
403431 return handle ;
404432 }
405433
406434 @ Override
407- public ConnectorId getConnectorId ()
435+ @ JsonProperty
436+ public SchemaTableName getSchemaTableName ()
408437 {
409- return handle . getConnectorId () ;
438+ return schemaTableName ;
410439 }
411440
412441 @ Override
413- public SchemaTableName getSchemaTableName ()
442+ @ JsonIgnore
443+ public ConnectorId getConnectorId ()
414444 {
415- return schemaTableName ;
445+ return handle . getConnectorId () ;
416446 }
417447
418448 @ Override
449+ @ JsonIgnore
419450 public Optional <List <OutputColumnMetadata >> getOutputColumns ()
420451 {
421452 return Optional .empty ();
@@ -433,30 +464,37 @@ public static class RefreshMaterializedViewReference
433464 private final TableHandle handle ;
434465 private final SchemaTableName schemaTableName ;
435466
436- public RefreshMaterializedViewReference (TableHandle handle , SchemaTableName schemaTableName )
467+ @ JsonCreator
468+ public RefreshMaterializedViewReference (
469+ @ JsonProperty ("handle" ) TableHandle handle ,
470+ @ JsonProperty ("schemaTableName" ) SchemaTableName schemaTableName )
437471 {
438472 this .handle = requireNonNull (handle , "handle is null" );
439473 this .schemaTableName = requireNonNull (schemaTableName , "schemaTableName is null" );
440474 }
441475
476+ @ JsonProperty
442477 public TableHandle getHandle ()
443478 {
444479 return handle ;
445480 }
446481
447482 @ Override
448- public ConnectorId getConnectorId ()
483+ @ JsonProperty
484+ public SchemaTableName getSchemaTableName ()
449485 {
450- return handle . getConnectorId () ;
486+ return schemaTableName ;
451487 }
452488
453489 @ Override
454- public SchemaTableName getSchemaTableName ()
490+ @ JsonIgnore
491+ public ConnectorId getConnectorId ()
455492 {
456- return schemaTableName ;
493+ return handle . getConnectorId () ;
457494 }
458495
459496 @ Override
497+ @ JsonIgnore
460498 public Optional <List <OutputColumnMetadata >> getOutputColumns ()
461499 {
462500 return Optional .empty ();
@@ -477,11 +515,12 @@ public static class UpdateTarget
477515 private final List <String > updatedColumns ;
478516 private final List <ColumnHandle > updatedColumnHandles ;
479517
518+ @ JsonCreator
480519 public UpdateTarget (
481- TableHandle handle ,
482- SchemaTableName schemaTableName ,
483- List <String > updatedColumns ,
484- List <ColumnHandle > updatedColumnHandles )
520+ @ JsonProperty ( "handle" ) TableHandle handle ,
521+ @ JsonProperty ( "schemaTableName" ) SchemaTableName schemaTableName ,
522+ @ JsonProperty ( "updatedColumns" ) List <String > updatedColumns ,
523+ @ JsonProperty ( "updatedColumnHandles" ) List <ColumnHandle > updatedColumnHandles )
485524 {
486525 this .handle = requireNonNull (handle , "handle is null" );
487526 this .schemaTableName = requireNonNull (schemaTableName , "schemaTableName is null" );
@@ -490,32 +529,40 @@ public UpdateTarget(
490529 this .updatedColumnHandles = requireNonNull (updatedColumnHandles , "updatedColumnHandles is null" );
491530 }
492531
532+ @ JsonProperty
493533 public TableHandle getHandle ()
494534 {
495535 return handle ;
496536 }
497537
498- public ConnectorId getConnectorId ()
538+ @ Override
539+ @ JsonProperty
540+ public SchemaTableName getSchemaTableName ()
499541 {
500- return handle . getConnectorId () ;
542+ return schemaTableName ;
501543 }
502544
503- public SchemaTableName getSchemaTableName ()
545+ @ Override
546+ @ JsonIgnore
547+ public ConnectorId getConnectorId ()
504548 {
505- return schemaTableName ;
549+ return handle . getConnectorId () ;
506550 }
507551
508552 @ Override
553+ @ JsonIgnore
509554 public Optional <List <OutputColumnMetadata >> getOutputColumns ()
510555 {
511556 return Optional .empty ();
512557 }
513558
559+ @ JsonIgnore
514560 public List <String > getUpdatedColumns ()
515561 {
516562 return updatedColumns ;
517563 }
518564
565+ @ JsonIgnore
519566 public List <ColumnHandle > getUpdatedColumnHandles ()
520567 {
521568 return updatedColumnHandles ;
0 commit comments