IP Library Granted Patent US 8,099,735
Granted Patent B2
US 8,099,735 · App. 11/962,949 · Granted Jan 17, 2012

Method and system for module initialization

Assignee: Oracle America, Inc.
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,099,735
App. No.
11/962,949
Granted
Jan 17, 2012
Kind
B2
Abstract

A method for initializing a module that includes identifying a module for initialization and performing a plurality of processing phases on the module and all modules in a dependency graph of the module. Performing the processing phases includes, for each module, executing a processing phase of the plurality of processing phases on the module, determining whether the processing phase has been executed on all modules in a dependency graph of the module, and when the processing phase has been executed for all modules in the dependency graph of the module, executing a subsequent processing phase of the plurality of processing phases on the module, wherein at least one processing phase of the plurality of processing phases includes executing custom initialization code.

Claims (46)

1. A method for initializing a module comprising:

identifying a module for initialization, wherein the module is dependent on a plurality of modules and wherein the plurality of modules is listed in a dependency graph of the module; and

performing a plurality of processing phases on the module and the plurality of modules in the dependency graph, wherein the performing comprises, for each module:

executing a processing phase of the plurality of processing phases on the module;

determining whether the processing phase has been executed on each of the plurality of modules in the dependency graph of the module, wherein determining whether the processing phase has been executed comprises walking the dependency graph of the module to determine an initialization status of each of the modules in the dependency graph, wherein the initialization status indicates which processing phase of the plurality of processing phases was last performed on a module; and

when the processing phase has been executed on each of the modules in the dependency graph of the module, executing a subsequent processing phase of the plurality of processing phases on the module,

wherein at least one processing phase of the plurality of processing phases comprises executing custom initialization code.

2. The method of claim 1 , wherein executing the custom initialization code comprises:

initializing another module.

3. The method of claim 2 , wherein initializing the custom code further comprises:

removing the module from a module initialization queue before initializing the another module, wherein the module initialization queue comprises modules currently being initialized; and

adding the another module to the module initialization queue; and

wherein determining whether the another module depends on the module further comprises:

monitoring initialization progress of modules in the module initialization queue; and

determining that the another module depends on the module when no module in the module initialization is able to progress.

4. The method of claim 1 , wherein the custom initialization code is specified by one selected from a group consisting of a module definition of a module and an application causing the initialization of the module.

5. The method of claim 1 , wherein executing the processing phase further comprises one selected from a group consisting of identifying all modules on which the module directly depends and performing a conflict check on all modules upon which the module directly depends.

6. The method of claim 5 , wherein identifying all modules comprises executing custom initialization code to identify the modules.

7. A module system comprising:

module storage configured to store a plurality of module definitions; and

a module initialization engine configured to initialize a module created from a module definition of the plurality of module definitions by:

performing a plurality of processing phases on the module and a plurality of modules in a dependency graph of the module, wherein the module is dependent on the plurality of modules in the dependency graph of the module and wherein the performing comprises, for each module:

executing a processing phase of the plurality of processing phases on the module;

determining whether the processing phase has been executed on all modules in a dependency graph of the module, wherein determining whether the processing phase has been executed comprises walking the transitive closure of a dependency graph of the module to determine an initialization status of each of the modules in the dependency graph, wherein the initialization status indicates which processing phase of the plurality of processing phases was last performed on a module; and

when the processing phase has been executed for all modules in the dependency graph of the module, executing a subsequent processing phase of the plurality of processing phases on the module,

wherein at least one processing phase of the plurality of processing phases comprises executing custom initialization code.

8. The system of claim 7 , wherein executing the custom initialization code comprises:

initializing another module created from a module definition of the plurality of module definitions.

9. The system of claim 8 , wherein executing the custom initialization code further comprises:

a module initialization queue configured to store modules being initialized, and

wherein the performing further comprises:

removing the module from the module initialization queue before initializing the another module; and

adding the another module to the module initialization queue; and

wherein determining whether the another module depends on the module further comprises:

monitoring initialization progress of modules in the module initialization queue; and

determining that the another module depends on the module when no module in the module initialization is able to progress.

10. The system of claim 7 , wherein the custom initialization code is specified by one selected from a group consisting of a module definition of the module and an application causing the initialization of the module.

11. The system of claim 7 , wherein executing the processing phase further comprises one selected from a group consisting of identifying all modules on which the module directly depends and performing a conflict check on all modules upon which the module directly depends.

12. The system of claim 11 , wherein identifying all modules comprises executing custom initialization code to identify the modules.

13. A non-transitory computer readable medium comprising executable instructions to initialize a module by:

identifying a module for initialization, wherein the module is dependent on a plurality of modules and wherein the plurality of modules is listed in a dependency graph of the module; and

performing a plurality of processing phases on the module and the plurality of modules in the dependency graph, wherein the performing comprises, for each module:

executing a processing phase of the plurality of processing phases on the module;

determining whether the processing phase has been executed on all modules in a dependency graph of the module, wherein determining whether the processing phase has been executed comprises walking the dependency graph of the module to determine an initialization status of each of the modules in the dependency graph, wherein the initialization status indicates which processing phase of the plurality of processing phases was last performed on a module; and

when the processing phase has been executed for all modules in the dependency graph of the module, executing a subsequent processing phase of the plurality of processing phases on the module,

wherein at least one processing phase of the plurality of processing phases comprises executing custom initialization code.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0134 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2007
From: STERBENZ, ANDREAS
To: SUN MICROSYSTEMS, INC.
Reel/Frame 020285/0155 →
Continuity (1)
Related Publication 20090165002A1 · Jun 25, 2009