IP Library Granted Patent US 10,282,217
Granted Patent B2
US 10,282,217 · App. 15/647,424 · Granted May 7, 2019

Method, system and computer program product for object serialization and de-serialization

Inventors: Bryan Self (Birmingham, AL); Elizabeth Fox (Birmingham, AL); Joshua Turner (HueyTown, AL)
Assignee: CHANGE HEALTHCARE HOLDINGS, LLC
G06F9/4493G06F9/465G06F8/71G06F16/2246
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,282,217
App. No.
15/647,424
Granted
May 7, 2019
Kind
B2
Abstract

A method, apparatus and computer program product are provided for serializing and de-serializing objects such that data may be transmitted between disparate systems otherwise having incompatible object definitions. The disparate systems may include different versions of the same system or completely different systems. Object graphs may be recursively broken down into primitive components, and the data may be reformatted as maps of primitive data chained together. The data may be transmitted to a disparate recipient system and reassembled into objects recognizable by the disparate recipient system. Various systems can then communicate with each other regardless of underlying data formats.

Claims (59)

1. A method comprising:

receiving an object graph comprising a first plurality of objects;

serializing the object graph to generate a map tree comprising a plurality of maps, wherein each map of the plurality of maps comprises dyads of first and second elements, and wherein the dyads of the first and second elements representing primitive fields are populated as name-value pairs and the dyads of the first and second elements representing non-primitive fields are populated as name-map pairs;

causing transmission of the map tree to a disparate system; and

de-serializing the map tree to populate a second plurality of objects compatible with the disparate system, wherein de-serializing the map tree comprises preventing de-serialization of at least one particular map of the map tree in an instance a particular name associated with the at least one particular map of the map tree does not match any class available to the disparate system.

2. The method of claim 1 , wherein each map of the plurality of maps comprises a class-specifying dyad of a predefined string and a class identifier to identify the class which the respective map represents.

3. The method of claim 2 , wherein de-serializing a particular map of the map tree comprises:

identifying a class-specifying dyad having a first element matching the predefined string;

in an instance a second element of the class-specifying dyad matches a class available to the disparate system, creating an object of a type specified by the class identifier and continuing de-serialization of the particular map of the map tree; and

in an instance the second element of the class-specifying dyad does not match any class available to the disparate system, discontinuing de-serialization of the particular map of the map tree.

4. The method of claim 3 , wherein continuing the de-serialization of the particular map of the map tree comprises:

recursively processing each dyad of the particular map of the map tree until the particular map of the map tree is processed comprises only the class-specifying dyad and the name-value pairs representing primitive fields.

5. The method of claim 4 , wherein recursively processing each dyad of the particular map of the map tree comprises:

determining whether a field matching a first element of a particular dyad exists in an associated class of the disparate system;

in an instance the field matching the first element of the particular dyad exists in the associated class of the disparate system, processing a second element of the particular dyad; and

in an instance the field matching the first element of the particular dyad does not exist in the associated class of the disparate system, preventing processing of the second element of the particular dyad.

6. The method of claim 5 , wherein processing the second element of the particular dyad comprises:

in an instance the second element of the particular dyad is a nested map, de-serializing the nested map; and

in an instance the second element of the particular dyad is not a nested map, populating a field of an associated object with a value of the second element of the particular dyad.

7. A system comprising:

(a) a first apparatus comprising at least a first processor and at least one memory storing computer program code, the at least one memory and the computer program code configured to, with the at least the first processor, cause the first apparatus to at least:

receive an object graph comprising a first plurality of objects;

serialize the object graph to generate a map tree comprising a plurality of maps, wherein each map of the plurality of maps comprises dyads of first and second elements, and wherein the dyads of the first and second elements representing primitive fields are populated as name-value pairs and the dyads of the first and second elements representing non-primitive fields are populated as name-map pairs; and

cause transmission of the map tree to a second apparatus; and

(b) the second apparatus, wherein the second apparatus is configured by at least a second processor to cause the second apparatus to at least:

de-serialize the map tree to populate a second plurality of objects compatible with the second apparatus, wherein de-serializing the map tree comprises preventing de-serialization of at least one particular map of the map tree in an instance a particular name associated with the at least one particular map of the map tree does not match any class available to the disparate system.

8. The system of claim 7 , wherein each map of the plurality of maps comprises a class-specifying dyad of a predefined string and a class identifier to identify the class which the respective map represents.

9. The system of claim 8 , wherein de-serializing a particular map of the map tree comprises:

identifying a class-specifying dyad having a first element matching the predefined string;

in an instance a second element of the class-specifying dyad matches a class available to the second apparatus, creating an object of a type specified by the class identifier and continuing de-serialization of the particular map of the map tree; and

in an instance the second element of the class-specifying dyad does not match any class available to the second apparatus, discontinuing de-serialization of the particular map of the map tree.

10. The system of claim 9 , wherein continuing the de-serialization of the particular map of the map tree comprises:

recursively processing each dyad of the particular map of the map tree until the particular map of the map tree is processed comprises only the class-specifying dyad and the name-value pairs representing primitive fields.

11. The system of claim 10 , wherein recursively processing each dyad of the particular map of the map tree comprises:

determining whether a field matching a first element of a particular dyad exists in an associated class of the second apparatus;

in an instance the field matching the first element of the particular dyad exists in the associated class of the second apparatus, processing a second element of the particular dyad; and

in an instance the field matching the first element of the particular dyad does not exist in the associated class of the second apparatus, preventing processing of the second element of the particular dyad.

12. The system of claim 11 , wherein processing the second element of the particular dyad comprises:

in an instance the second element of the particular dyad is a nested map, de-serializing the nested map; and

in an instance the second element of the particular dyad is not a nested map, populating a field of an associated object with a value of the second element of the particular dyad.

13. A computer program product comprising at least one non-transitory computer-readable storage medium having computer-executable program code instructions stored therein, the computer-executable program code instructions comprising program code instructions to:

receive an object graph comprising a first plurality of objects;

serialize the object graph to generate a map tree comprising a plurality of maps, wherein each map of the plurality of maps comprises dyads of first and second elements, and wherein the dyads of the first and second elements representing primitive fields are populated as name-value pairs and the dyads of the first and second elements representing non-primitive fields are populated as name-map pairs;

cause transmission of the map tree to a disparate system; and

de-serialize the map tree to populate a second plurality of objects compatible with the disparate system, wherein de-serializing the map tree comprises preventing de-serialization of at least one particular map of the map tree in an instance a particular name associated with the at least one particular map of the map tree does not match any class available to the disparate system.

14. The computer program product of claim 13 , wherein each map of the plurality of maps comprises a class-specifying dyad of a predefined string and a class identifier to identify the class which the respective map represents.

15. The computer program product of claim 14 , wherein de-serializing a particular map of the map tree comprises:

identifying a class-specifying dyad having a first element matching the predefined string;

in an instance a second element of the class-specifying dyad matches a class available to the disparate system, creating an object of a type specified by the class identifier and continuing de-serialization of the particular map of the map tree; and

in an instance the second element of the class-specifying dyad does not match any class available to the disparate system, discontinuing de-serialization of the particular map of the map tree.

16. The computer program product of claim 15 , wherein continuing the de-serialization of the particular map of the map tree comprises:

recursively processing each dyad of the particular map of the map tree until the particular map of the map tree is processed comprises only the class-specifying dyad and the name-value pairs representing primitive fields.

17. The computer program product of claim 16 , wherein recursively processing each dyad of the particular map of the map tree comprises:

determining whether a field matching a first element of a particular dyad exists in an associated class of the disparate system;

in an instance the field matching the first element of the particular dyad exists in the associated class of the disparate system, processing a second element of the particular dyad; and

in an instance the field matching the first element of the particular dyad does not exist in the associated class of the disparate system, preventing processing of the second element of the particular dyad.

18. The computer program product of claim 17 , wherein processing the second element of the particular dyad comprises:

in an instance the second element of the particular dyad is a nested map, de-serializing the nested map; and

in an instance the second element of the particular dyad is not a nested map, populating a field of an associated object with a value of the second element of the particular dyad.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2021
From: CHC MAX HOLDINGS, LLC
To: HEALTHSTREAM, INC.
Reel/Frame 055561/0198 →
RELEASE OF SECURITY INTEREST Recorded Feb 26, 2021
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: CHANGE HEALTHCARE HOLDINGS LLC
Reel/Frame 055431/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2021
From: CHANGE HEALTHCARE HOLDINGS LLC
To: CHC MAX HOLDINGS LLC
Reel/Frame 055432/0032 →
SECURITY AGREEMENT Recorded May 4, 2018
From: CHANGE HEALTHCARE HOLDINGS, LLC
To: BANK OF AMERICA, N.A.
Reel/Frame 046097/0629 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2018
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 046449/0899 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2017
From: SELF, BRYAN; FOX, ELIZABETH L.; TURNER, JOSHUA
To: CHANGE HEALTHCARE LLC
Reel/Frame 043164/0518 →
Continuity (1)
Related Publication 20190018691A1 · Jan 17, 2019