IP Library Granted Patent US 10,599,487
Granted Patent B1
US 10,599,487 · App. 16/437,009 · Granted Mar 24, 2020

Adaptable data source connection strings

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,599,487
App. No.
16/437,009
Granted
Mar 24, 2020
Kind
B1
Abstract

Various embodiments of the invention provide methods, systems, and computer-program products for converting a connection string configured to use a first API to connect to a data source of a data source type to using a second, different API to connect to the data source. The data source type is identified as being associated with the string and the string is parsed and stored in a key-value dictionary. An object is instantiated for a subclass designed for the data source type. This subclass inherits from a base class that includes an abstract version of a method defined for the second API and the subclass includes a non-abstract version of this method. A string is generated by calling the method associated with the object, causing the non-abstract version to be executed, which uses the dictionary to generate the string configured to use the second API to connect to the data source.

Claims (58)

1. A method for converting a first connection string configured to use a first application programming interface (API) to connect to a data source of a first data source type to a second connection string configured to use a second, different API to connect to the data source of the first data source type comprising:

parsing the first connection string into connection information used by the first API to connect to the data source;

storing the connection information into a key-value dictionary;

identifying the first data source type is associated with the first connection string based on the connection information;

in response to identifying the first data source type, instantiating an object for a derived subclass designed for the first data source type, the derived subclass inheriting from a base class comprising an abstract version of a method defined for the second, different API and the derived subclass comprising a non-abstract version of the method defined for the second, different API; and

generating the second connection string by calling the method associated with the object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the second connection string configured to use the second, different API to connect to the data source of the first data source type.

2. The method of claim 1 , wherein the connection information comprises one or more attributes and corresponding values that are stored as key-value pairs in the key-value dictionary and identifying the first data source type is performed by matching at least one of the one or more attributes with attributes registered with the first data source type that are used by the second, different API to connect to data sources of the first data source type.

3. The method of claim 2 , wherein the non-abstract version of the method uses the portion of the connection information to generate the second connection string by (1) matching a key portion of a key-value pair stored in the key-value dictionary with an attribute registered by the first data source type and used by the second, different API to connect to data sources of the first data source type and (2) including the attribute registered by the first data source type along with the value portion of the key-value pair stored in the key-value dictionary in the second connection string.

4. The method of claim 2 further comprising:

setting a corresponding value for a particular key-value pair identifying the data source to a new data source of the first data source type; and

generating a third connection string by calling the method associated with the second object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary that includes the particular key-value pair with the corresponding value set to the new data source to generate the third connection string configured to use the second, different API to connect to the new data source of the first data source type.

5. The method of claim 1 further comprising:

converting the object for the derived subclass designed for the first data source type to a second object specific to the first data source type;

setting a corresponding value for a particular attribute registered by the first data source type and used by the second, different API to connect to data sources of the first data source type; and

generating a third connection string by calling the method associated with the second object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary along with the particular attribute and corresponding value to generate the third connection string configured to use the second, different API to connect to the data source of the first data source type.

6. The method of claim 1 , wherein the base class comprises an abstract version of a second method defined for a third API different from the first and second APIs and the derived subclass designed for the first data source type comprises a non-abstract version of the second method defined for the third API, and the method further comprises generating a third connection string configured to use the third API to connect to the data source of the first data source type by calling the second method associated with the object, wherein the non-abstract version of the second method in the derived subclass is executed as a result of calling the second method and the non-abstract version of the second method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the third connection string configured to use the third API to connect to the data source of the first data source type.

7. The method of claim 1 further comprising:

instantiating a second object for a second derived subclass designed for a second data source type, the second derived subclass inheriting from the base class and comprising a second non-abstract version of the method defined for the second, different API; and

generating a third connection string by calling the method associated with the second object, wherein the second non-abstract version of the method in the second derived subclass is executed as a result of calling the method and the second non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the third connection string configured to use the second, different API to connect to a data source of the second data source type.

8. A non-transitory, computer-readable medium comprising computer-executable instructions for converting a first connection string configured to use a first application programming interface (API) to connect to a data source of a first data source type to a second connection string configured to use a second, different API to connect to the data source of the first data source type that when executed by at least one computer processor are configured to cause the at least one computer processor to:

parse the first connection string into connection information used by the first API to connect to the data source;

store the connection information into a key-value dictionary;

identify the first data source type is associated with the first connection string based on the connection information;

in response to identifying the first data source type, instantiate an object for a derived subclass designed for the first data source type, the derived subclass inheriting from a base class comprising an abstract version of a method defined for the second, different API and the derived subclass comprising a non-abstract version of the method defined for the second, different API; and

generate the second connection string by calling the method associated with the object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the second connection string configured to use the second, different API to connect to the data source of the first data source type.

9. The non-transitory, computer-readable medium of claim 8 , wherein the connection information comprises one or more attributes and corresponding values that are stored as key-value pairs in the key-value dictionary and the computer-executable instructions are configured to cause the at least one computer processor to identify the first data source type by matching at least one of the one or more attributes with attributes registered with the first data source type that are used by the second, different API to connect to data sources of the first data source type.

10. The non-transitory, computer-readable medium of claim 9 , wherein the non-abstract version of the method uses the portion of the connection information to generate the second connection string by (1) matching a key portion of a key-value pair stored in the key-value dictionary with an attribute registered by the first data source type and used by the second, different API to connect to data sources of the first data source type and (2) including the attribute registered by the first data source type along with the value portion of the key-value pair stored in the key-value dictionary in the second connection string.

11. The non-transitory, computer-readable medium of claim 9 , wherein the computer-executable instructions are configured to cause the at least one computer processor to:

set a corresponding value for a particular key-value pair identifying the data source to a new data source of the first data source type; and

generate a third connection string by calling the method associated with the second object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary that includes the particular key-value pair with the corresponding value set to the new data source to generate the third connection string configured to use the second, different API to connect to the new data source of the first data source type.

12. The non-transitory, computer-readable medium of claim 8 , wherein the computer-executable instructions are configured to cause the at least one computer processor to:

convert the object for the derived subclass designed for the first data source type to a second object specific to the first data source type;

set a corresponding value for a particular attribute registered by the first data source type and used by the second, different API to connect to data sources of the first data source type; and

generate a third connection string by calling the method associated with the second object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least the portion of the connection information stored in the key-value dictionary along with the particular attribute and corresponding value to generate the third connection string configured to use the second, different API to connect to the data source of the first data source type.

13. The non-transitory, computer-readable medium of claim 8 wherein the base class comprises an abstract version of a second method defined for a third API different from the first and second APIs and the derived subclass designed for the first data source type comprises a non-abstract version of the second method defined for the third API, and the computer-executable instructions are configured to cause the at least one computer processor to generate a third connection string configured to use the third API to connect to the data source of the first data source type by calling the second method associated with the object, wherein the non-abstract version of the second method in the derived subclass is executed as a result of calling the second method and the non-abstract version of the second method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the third connection string configured to use the third API to connect to the data source of the first data source type.

14. The non-transitory, computer-readable medium of claim 8 , wherein the computer-executable instructions are configured to cause the at least one computer processor to:

instantiate a second object for a second derived subclass designed for a second data source type, the second derived subclass inheriting from the base class and comprising a second non-abstract version of the method defined for the second, different API; and

generate a third connection string by calling the method associated with the second object, wherein the second non-abstract version of the method in the second derived subclass is executed as a result of calling the method and the second non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the third connection string configured to use the second, different API to connect to a data source of the second data source type.

15. A system for converting a first connection string configured to use a first application programming interface (API) to connect to a data source of a first data source type to a second connection string configured to use a second, different API to connect to the data source of the first data source type, the system comprising:

at least one computer processor configured to:

parse the first connection string into connection information used by the first API to connect to the data source;

store the connection information into a key-value dictionary;

identify the first data source type is associated with the first connection string based on the connection information;

in response to identifying the first data source type, instantiate an object for a derived subclass designed for the first data source type, the derived subclass inheriting from a base class comprising an abstract version of a method defined for the second, different API and the derived subclass comprising a non-abstract version of the method defined for the second, different API; and

generate the second connection string by calling the method associated with the object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the second connection string configured to use the second, different API to connect to the data source of the first data source type.

16. The system of claim 15 , wherein the connection information comprises one or more attributes and corresponding values that are stored as key-value pairs in the key-value dictionary and the at least one computer processor is configured to identify the first data source type by matching at least one of the one or more attributes with attributes registered with the first data source type that are used by the second, different API to connect to data sources of the first data source type.

17. The system of claim 16 , wherein the non-abstract version of the method uses the portion of the connection information to generate the second connection string by (1) matching a key portion of a key-value pair stored in the key-value dictionary with an attribute registered by the first data source type and used by the second, different API to connect to data sources of the first data source type and (2) including the attribute registered by the first data source type along with the value portion of the key-value pair stored in the key-value dictionary in the second connection string.

18. The system of claim 16 , wherein the at least one computer processor is configured to:

set a corresponding value for a particular key-value pair identifying the data source to a new data source of the first data source type; and

generate a third connection string by calling the method associated with the second object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary that includes the particular key-value pair with the corresponding value set to the new data source to generate the third connection string configured to use the second, different API to connect to the new data source of the first data source type.

19. The system of claim 15 , wherein the at least one computer processor is configured to:

convert the object for the derived subclass designed for the first data source type to a second object specific to the first data source type;

set a corresponding value for a particular attribute registered by the first data source type and used by the second, different API to connect to data sources of the first data source type; and

generate a third connection string by calling the method associated with the second object, wherein the non-abstract version of the method in the derived subclass is executed as a result of calling the method and the non-abstract version of the method is configured to use at least the portion of the connection information stored in the key-value dictionary along with the particular attribute and corresponding value to generate the third connection string configured to use the second, different API to connect to the data source of the first data source type.

20. The system of claim 15 wherein the base class comprises an abstract version of a second method defined for a third API different from the first and second APIs and the derived subclass designed for the first data source type comprises a non-abstract version of the second method defined for the third API, and the at least one computer processor is configured to generate a third connection string configured to use the third API to connect to the data source of the first data source type by calling the second method associated with the object, wherein the non-abstract version of the second method in the derived subclass is executed as a result of calling the second method and the non-abstract version of the second method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the third connection string configured to use the third API to connect to the data source of the first data source type.

21. The system of claim 15 , wherein the at least one computer processor is configured to:

instantiate a second object for a second derived subclass designed for a second data source type, the second derived subclass inheriting from the base class and comprising a second non-abstract version of the method defined for the second, different API; and

generate a third connection string by calling the method associated with the second object, wherein the second non-abstract version of the method in the second derived subclass is executed as a result of calling the method and the second non-abstract version of the method is configured to use at least a portion of the connection information stored in the key-value dictionary to generate the third connection string configured to use the second, different API to connect to a data source of the second data source type.

Assignments (13)
RELEASE OF SECURITY INTEREST Recorded Oct 27, 2025
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: ALVARIA CAYMAN (WEM); ALVARIA CAYMAN (CXIP)
Reel/Frame 073360/0209 →
SECURITY INTEREST Recorded Oct 27, 2025
From: ALVARIA, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 073360/0564 →
ASSIGNMENT Recorded Oct 27, 2025
From: ALVARIA CAYMAN (WEM); ALVARIA CAYMAN (CXIP); NOBLE SYSTEMS, LLC
To: ALVARIA, INC.
Reel/Frame 073360/0481 →
PATENT SECURITY AGREEMENT Recorded Mar 20, 2024
From: ALVARIA CAYMAN (WEM); ALVARIA CAYMAN (CXIP)
To: JEFFERIES FINANCE LLC
Reel/Frame 066850/0334 →
RELEASE OF SECURITY INTEREST Recorded Mar 20, 2024
From: JEFFRIES FINANCE LLC
To: ALVARIA, INC.; NOBLE SYSTEMS, LLC
Reel/Frame 066850/0384 →
RELEASE OF SECURITY INTEREST Recorded Mar 20, 2024
From: JEFFRIES FINANCE LLC
To: ALVARIA, INC.; NOBLE SYSTEMS, LLC
Reel/Frame 066850/0428 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2024
From: NOBLE SYSTEMS, LLC
To: ALVARIA CAYMAN (CX)
Reel/Frame 066850/0556 →
CERTIFICATE OF CONVERSION Recorded Mar 12, 2024
From: NOBLE SYSTEMS CORPORATION, A GEORGIA CORPORATION
To: NOBLE SYSTEMS, LLC, A DELAWARE LIMITED LIABILITY COMPANY
Reel/Frame 066794/0435 →
RELEASE OF SECURITY INTEREST Recorded May 10, 2021
From: WELLS FARGO CAPITAL FINANCE, LLC
To: NOBLE SYSTEMS CORPORATION
Reel/Frame 056193/0363 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded May 6, 2021
From: NOBLE SYSTEMS CORPORATION; ASPECT SOFTWARE, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 057261/0093 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded May 6, 2021
From: NOBLE SYSTEMS CORPORATION; ASPECT SOFTWARE, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 057674/0664 →
SECURITY INTEREST Recorded Apr 23, 2020
From: NOBLE SYSTEMS CORPORATION
To: WELLS FARGO CAPITAL FINANCE, LLC
Reel/Frame 052495/0287 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 11, 2019
From: GOODWIN, MICHAEL C
To: NOBLE SYSTEMS CORPORATION
Reel/Frame 049427/0511 →