IP Library Granted Patent US 7,681,184
Granted Patent B1
US 7,681,184 · App. 10/709,705 · Granted Mar 16, 2010

System and methodology for cross language type system compatibility

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 7,681,184
App. No.
10/709,705
Granted
Mar 16, 2010
Kind
B1
Abstract

A system and methodology for cross language type system compatibility is described. In one embodiment, for example, a system for translation of data types between a first application in a first language and a second application in a second language is described that comprises: a formal mapping between data types of the first language and data types of the second language; translators for translating data types between the first language and the second language based on the formal mapping; a translation mapping to the translators based on actual data types of the first application and formal data types of the second application; and a module for selecting an appropriate translator for translating between a particular data type in the first language and a data type in the second language based on the translation mapping in response to invocation of a method of the first application with the particular data type.

Claims (62)

1. A system for translation of data types between a first application in a first language and a second application in a second language, the system comprising:

a computer having at least one processor and a memory configured to generate:

a formal mapping between data types of the first language and data types of the second language;

translators for translating data types between the first language and the second language based on the formal mapping;

a translation mapping to the translators based on actual data types of the first application and formal data types of the second application; and

a module for automatically selecting an appropriate translator for translating between a particular data type in the first language and a data types in the second language based on the translation mapping in response to invocation of a method of the first application with the particular data type,

wherein the module for selecting the appropriate translator is configured to perform at least a two-level lookup in the translation mapping to select the appropriate translator,

wherein a first level of the two-level lookup includes a lookup of a full inheritance hierarchy of the actual type to determine a candidate set of translators and,

wherein a second level lookup of the two-level lookup includes a lookup based on a formal data type of the second application and selection of an appropriate translator from the candidate set of translators determined by the first level of the two-level lookup.

2. The system of claim 1 , wherein the first language comprises C# and the second language comprises a language that is configured to conform with a JAVA language specification.

3. The system of claim 1 , wherein the formal mapping comprises a mapping between formal types of the first language and formal types of the second language.

4. The system of claim 3 , wherein the formal types comprise static types.

5. The system of claim 1 , wherein the formal mapping comprises a many-to-one mapping.

6. The system of claim 1 , wherein the translators marshal translated data into a wire format for transfer from the first application to the second application across a network.

7. The system of claim 1 , wherein the translators read data of a first type and write data of a second type.

8. The system of claim 1 , wherein the translators include a mechanism for determining the actual type in the first language that a particular translator supports.

9. The system of claim 1 , wherein the translators include a mechanism for determining the formal type in the second language that a particular translator supports.

10. The system of claim 1 , wherein the translators provide information needed for creating the translation mapping.

11. The system of claim 1 , wherein the translators translate return values received from the second application into a format appropriate for the first application.

12. The system of claim 1 , wherein the translation mapping provides for navigation from an object of the first application to a formal type of the second application's environment.

13. The system of claim 1 , wherein the translation mapping comprises a mapping from actual type of the first application and formal type of the second application to a particular translator.

14. The system of claim 1 , wherein the two-level lookup includes a first level lookup based on an actual data type of the first application.

15. The system of claim 1 , wherein the module for selecting an appropriate translator determines if the mapping includes at least one translator for the particular data type.

16. The system of claim 1 , wherein the module for selecting an appropriate translator determines if the mapping includes at least one translator for interfaces of the particular data type.

17. The system of claim 1 , wherein the module for selecting an appropriate translator determines if the mapping includes at least one translator for base types of the particular data type.

18. A method for translation of data types between a first component in a first language and a second component in a second language, the method comprising:

using a computer having a processor and a memory, the computer being configured to:

define a formal mapping between data types of the first language and data types of the second language;

implement translators based on the formal mapping for translating data types between the first language and the second language;

produce a programming interface for the first component based upon the formal mapping and the second component's programming interface;

generate a translation mapping to the translators based on actual data types of the first component and formal data types of the second component as defined in the first component's programming interface;

in response to invocation of a method defined in the first component's programming interface with a particular data type, automatically select translator based on the translation mapping and the particular data type; and

translate the particular data type to a data type of the second language using the selected translator,

wherein automatically selecting the translator includes performing a two-level lookup in the translation mapping,

wherein performing a first level of the two-level lookup includes looking up a full inheritance hierarchy of the actual type to determine a candidate set of translators, and

wherein performing a second level of the two-level lookup includes a lookup based on a formal data type of the second component and selection of an appropriate translator from the candidate set of translators determined by the first level of the two-level lookup.

19. The method of claim 18 , wherein the first component comprises an application on a first machine and the second component comprises an application on a second machine.

20. The method of claim 18 , wherein the first component comprises a first component of an application and the second component comprises a second component of the application.

21. The method of claim 18 , wherein the first component and the second component operate within a single process.

22. The method of claim 18 , wherein define formal mapping includes defining a mapping between formal types of the first language and formal types of the second language.

23. The method of claim 18 , wherein define the formal mapping includes defining a many-to-one mapping.

24. The method of claim 18 , wherein implemene the translators includes implementing a translator for marshaling translated data into a wire format for transfer from the first component to the second component across a network.

25. The method of claim 18 , wherein implemene the translators includes implementing a translator reading data of a first type and writing data of a second type.

26. The method of claim 18 , wherein implemene the translators includes indicating the actual type in the first language that a particular translator supports.

27. The method of claim 18 , wherein implemene the translators includes indicating the formal type in the second language that a particular translator supports.

28. The method of claim 18 , wherein generatee the translation mapping includes generating the translation mapping based, at least in part, on information provided by the translators.

29. The method of claim 18 , wherein the translation mapping provides for navigation from an object of the first component to the formal type of the second component's environment.

30. The method of claim 18 , wherein the translation mapping comprises a mapping from actual type of the first component and formal type of the second component to a particular translator.

31. The method of claim 18 , wherein the two-level lookup includes a first level lookup based on an actual data type of the first component.

32. The method of claim 18 , wherein automatically selecting the translator includes determining if the translation mapping includes at least one translator for the particular data type.

33. The method of claim 18 , wherein automatically selecting the translator includes determining if the translation mapping includes at least one translator for interfaces of the particular data type.

34. The method of claim 18 , wherein automatically selecting the translator includes determining if the translation mapping includes at least one translator for base types of the particular data type.

35. The method of claim 18 , further comprising:

translating return values received from the second component into a data type of the first component's environment using the selected translator.

36. The method of claim 18 , wherein the first language is C# and the second language is a language that is configured to conform with a Java language specification.

37. The method of claim 18 , wherein the second language is C# and the first language is a language that is configured to conform with a Java language specification.

38. The method of claim 18 , further comprising:

copying to a computer-readable medium processor-executable instructions for performing the method of claim 18 ; and

executing said processor-executable instructions upon placement of the computer-readable medium in a computer.

39. The method of claim 18 , further comprising:

downloading a set of processor-executable instructions for performing the method of claim 18 ; and

executing said processor-executable instructions in a computer upon completion of the downloading step.

Assignments (6)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →