COSMOS Design 260468
Design Document for Profile Module
This is the design document for bugzilla 260468.
|Josh Hester||January 23, 2009|
|Process||Sizing||Names of people doing the work|
What is SDD?
Solution Deployment Descriptor provides a standardized way to declare and externalize information about your software package and its deployment.
What is the Change Resolver?
The change resolver is a module within the SDD Runtime that is responsible for taking various inputs such as Profiles, SDD's and user input and performing resolution on resources and requirements defined.
What is the Profile?
The SDD is intended to fit a wide range of needs, but it is not intended to describe these needs in finely grained detail. It says that a resource can host other resources that can host other resources, and it requires that you specify what kind of resources you’re talking about, but the SDD does not have a list of possible resource types. This list and other lists of acceptable values to be plugged into SDD documents are determined by the developers who create the runtime. When a runtime is written, the developers will keep a list of these acceptable values, their definitions, and how they relate to each other. This list is called the profile. (Dunston 2008)
The profile module is a helper to the change resolver. As the change resolver is processing an SDD it will encounter resources and references to resources. Upon being instantiated, the profile module will parse the profile. When a particular resource is encountered, the change resolver will then call upon the profile module in order to find out information about how to find the resource.
The main task of the profile module will be to parse and traverse an xml document, the profile. This will be accomplished by using jaxb class representations of the schema. As the profile module is being instantiated, the change resolver will pass into it the URI's and namespaces associated with each profile specified in the SDD. As the change resolver is traversing an sdd, it may come to a resource, property or constraint that it knows nothing about. At this point, it will call the profile module and pass it the complex type and simple type along with any values associated with the item. The profile module will traverse the tree it has created with jaxb. If it finds the item it will then return a the class for the resolver to load associated with the item in the profile. The Change Resolver will then validate the presence of and class load the resolver.