IP Library Granted Patent US 8,789,010
Granted Patent B2
US 8,789,010 · App. 13/104,369 · Granted Jul 22, 2014

Managing static data structures of legacy software in dynamic class loader environments

Inventors: Mark Lambert (Menlo Park, CA); Laurent Domenech (San Jose, CA)
Assignee: TIBCO Software Inc.
G06F8/72
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 8,789,010
App. No.
13/104,369
Granted
Jul 22, 2014
Kind
B2
Abstract

A method for managing static data structures of a legacy data modeling software product in a dynamic class loader environment comprises constructing a bundle-specific registry for each software bundle in the dynamic class loader environment and instructing the legacy data modeling software product to use the bundle-specific registry rather than its default registry when creating in-memory representations of data model classes associated with a particular software bundle. Constructing a bundle-specific registry may include using the bundle's configuration metadata to calculate a dependency graph identifying the other bundles on which the software bundle depends. An initializer may construct the initial set of bundle-specific registries, and a listener may construct bundle-specific registries for new software bundles entering the system.

Claims (38)

1. A method for managing static data structures of a legacy data modeling software product in a dynamic class loader environment, wherein the dynamic class loader environment comprises a variable plurality of software bundles, and wherein the legacy data modeling software product is operable to use a registry associating external type identifiers with at least one data model class to create an in-memory representation of the at least one data model class, the method comprising:

for a first of the plurality of software bundles, constructing a bundle-specific registry, wherein the bundle-specific registry comprises a set of external type identifiers associated with the first software bundle, and wherein the bundle-specific registry associates each member of the set of external type identifiers with at least one data model class; and

instructing the legacy data modeling software product to use the constructed bundle-specific registry when creating the in-memory representation of the at least one data model class represented by a member of the set of external type identifiers associated with the first software bundle,

wherein the plurality of software bundles may comprise different versions of a specific software bundle.

2. The method of claim 1 , wherein the plurality of software bundles comprises a specific software bundle and an alternate version of the specific software bundle.

3. The method of claim 1 , wherein the dynamic class loader environment comprises OSGi.

4. The method of claim 1 , wherein the legacy data modeling software product comprises EMF (Eclipse Modeling Framework), wherein the at least one data model class comprises a Java class, and wherein the in-memory representation of the at least one data model class comprises a Java object.

5. The method of claim 4 , wherein the external type identifiers are specified using XML (Extensible Markup Language).

6. The method of claim 4 , wherein instructing the legacy data modeling software product to use the constructed bundle-specific registry when creating the in-memory representation of the at least one data model class represented by a member of the set of external type identifiers associated with the first software bundle comprises specifying the bundle-specific registry through a Java system property.

7. The method of claim 1 , further comprising constructing a bundle-specific registry for each of the remaining plurality of software bundles in the dynamic class loader environment.

8. The method of claim 7 , further comprising:

receiving a notification that a new software bundle has entered the dynamic class loader environment; and

constructing a new bundle-specific registry for the new software bundle.

9. The method of claim 1 , wherein the first software bundle is associated with configuration metadata, and wherein constructing the bundle-specific registry for the first software bundle comprises:

calculating a dependency graph for the first software bundle using the configuration metadata, wherein the dependency graph identifies a dependency subset of the plurality of software bundles, and wherein the dependency subset comprises at least the first software bundle;

for each member of the dependency subset, constructing a member-specific registry fragment comprising a set of external type identifiers defined by the member of the dependency subset, wherein the member-specific registry fragment associates each member of the set of external type identifiers with at least one data model class; and

merging the registry fragments of each member of the dependency subset into a single registry, wherein the single registry is the bundle-specific registry for the first software bundle.

10. The method of claim 9 , wherein a second of the plurality of software bundles is associated with second configuration metadata, the method further comprising:

calculating a second dependency graph for the second software bundle using the second configuration metadata, wherein the second dependency graph identifies a second dependency subset of the plurality of software bundles, and wherein the second dependency subset comprises at least the second software bundle and a member of the first dependency subset;

for each member of the second dependency subset not a member of the first dependency subset, constructing a member-specific registry fragment comprising a set of external type identifiers defined by the member of the second dependency subset, wherein the member-specific registry fragment associates each member of the set of external type identifiers with at least one data model class; and

merging the registry fragments of each member of the second dependency subset into a second single registry, wherein the second single registry is the bundle-specific registry for the second software bundle.

11. The method of claim 10 , wherein the second software bundle is a member of the first dependency subset.

12. A system for managing static data structures of a legacy data modeling software product in a dynamic class loader environment, wherein the dynamic class loader environment comprises a variable plurality of software bundles, and wherein the legacy data modeling software product is configured to use a registry associating external type identifiers with at least one data model class to create an in-memory representation of the at least one data model class, the system comprising:

a hardware layer adapted for running an operating system that executes an execution system, the hardware layer comprising a processor in communication with a memory; and

the execution system comprising:

an initializer operable to identify an initial set of software bundles in the dynamic class loader environment, wherein the initial set of software bundles may comprise different versions of a specific software bundle;

at least one bundle-specific registry constructed by the initializer, wherein a bundle-specific registry is constructed for each member of the initial set of software bundles, and wherein each bundle-specific registry associates at least one external type identifier with at least one data model class;

a super-registry managing the at least one bundle-specific registry, wherein the super-registry replaces a default registry of the legacy data modeling software product, and wherein the super-registry provides the legacy data modeling software product with a constructed first bundle-specific registry corresponding to a first software bundle for use in creating the in-memory representation of the at least one data model class represented by an external type identifier associated with the first software bundle; and

a listener configured to receive a notification that a new software bundle has entered the dynamic class loader environment, and further configured to construct a bundle-specific registry for the new software bundle upon receiving the notification.

13. The system of claim 12 , wherein the plurality of software bundles comprises a specific software bundle and an alternate version of the specific software bundle.

14. The system of claim 12 , wherein the dynamic class loader environment comprises OSGi.

15. The system of claim 12 , wherein the legacy data modeling software product comprises EMF (Eclipse Modeling Framework), wherein the at least one data model class comprises a Java class, and wherein the in-memory representation of the at least one data model class comprises a Java object.

16. The system of claim 15 , wherein the external type identifiers are specified using XML (Extensible Markup Language).

17. The system of claim 15 , wherein replacing the default registry of the legacy data modeling software product with the super-registry comprises specifying the super-registry through a Java system property.

18. The system of claim 12 , wherein each member of the initial set of software bundles is associated with configuration metadata, and wherein constructing the bundle-specific registry for each set member comprises:

calculating a dependency graph for the set member using the set member's associated configuration metadata, wherein the dependency graph identifies the set member's dependency subset of the plurality of software bundles;

for each member of the dependency subset, constructing a subset-member-specific registry fragment comprising a set of external type identifiers defined by the subset member, wherein the subset-member-specific registry fragment associates each member of the set of external type identifiers with at least one data model class; and

merging the registry fragments of each subset member into a single registry, wherein the single registry is the bundle-specific registry for the set member.

Assignments (15)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
CHANGE OF NAME Recorded Feb 7, 2023
From: TIBCO SOFTWARE INC.
To: CLOUD SOFTWARE GROUP, INC.
Reel/Frame 062714/0634 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
RELEASE REEL 052115 / FRAME 0318 Recorded Oct 3, 2022
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: TIBCO SOFTWARE INC.
Reel/Frame 061588/0511 →
RELEASE (REEL 034536 / FRAME 0438) Recorded Sep 30, 2022
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 061574/0963 →
RELEASE (REEL 054275 / FRAME 0975) Recorded May 7, 2021
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 056176/0398 →
SECURITY AGREEMENT Recorded Nov 2, 2020
From: TIBCO SOFTWARE INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 054275/0975 →
SECURITY AGREEMENT Recorded Mar 6, 2020
From: TIBCO SOFTWARE INC.
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 052115/0318 →
SECURITY INTEREST Recorded Dec 5, 2014
From: TIBCO SOFTWARE INC.; TIBCO KABIRA LLC; NETRICS.COM LLC
To: JPMORGAN CHASE BANK., N.A., AS COLLATERAL AGENT
Reel/Frame 034536/0438 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2011
From: LAMBERT, MARK; DOMENECH, LAURENT
To: TIBCO SOFTWARE INC.
Reel/Frame 026975/0124 →
Continuity (2)
Provisional Application 61333235 · May 10, 2010
Related Publication 20110307877A1 · Dec 15, 2011