OsidLoader loads a specific implementation of an Open Service Interface
Definition (OSID) with its getManager method. The getManager method loads an instance of the OSID's OsidManager, assigns the manager's OsidContext, assigns any configuration information, and returns the instance of the OSID implementation. This usage of the getManager method in the OsidLoader is how applications should bind a particular implementation to an OSID. The value of this approach is that an application can defer which specific OSID implementation is used until runtime. The specific implementation package name can then be part of the configuration information rather than being hard coded. Changing implementations is simplified with this approach.
<p> As an example, in order to create a new Hierarchy, an application does not use the new operator. It uses the OsidLoader getManager method to get an instance of a class that implements HierarchyManager (a subclass of OsidManager). The application uses the HierarchyManager instance to create the Hierarchy. It is the createHierarchy() method in some package (e.g. org.osid.hierarchy.impl.HierarchyManager) which uses the new operator on org.osid.hierarchy.impl.Hierarchy, casts it as org.osid.hierarchy.Hierarchy, and returns it to the application. This indirection offers the significant value of being able to change implementations in one spot with one modification, namely by using a implementation package name argument for the OsidLoader getManager method. </p>
<p>
Sample: <blockquote> org.osid.OsidContext myContext = new org.osid.OsidContext();
String key = "myKey";
myContext.assignContext(key, "I want to save this string as context");
String whatWasMyContext = myContext.getContext(key);
org.osid.hierarchy.HierarchyManager hierarchyManager = <blockquote> org.osid.OsidLoader.getManager("org.osid.hierarchy.HierarchyManager","org.osid.shared.impl",myContext,null); </blockquote> org.osid.hierarchy.Hierarchy myHierarchy = hierarchyManager.createHierarchy(...);
</blockquote> </p>
<p> A similar technique can be used for creating other objects. OSIDs that have OsidManager implementations loaded by OsidLoader, will define an appropriate interface to create these objects. </p>
<p> The arguments to OsidLoader.getManager method are the OSID OsidManager interface name, the implementing package name, the OsidContext, and any additional configuration information. </p>
<p> OSID Version: 2.0 </p>
<p> Licensed under the org.osid.SidImplementationLicenseMIT. </p>
Located in /harmoni/oki2/osid/OsidLoader.php (line 68)
stdClass | --OsidLoader
Returns an instance of the OsidManager of the OSID specified by the OSID package OsidManager interface name and the implementation package name.
The implementation class name is constructed from the SID package Manager interface name. A configuration file name is constructed in a similar manner and if the file exists it is loaded into the implementation's OsidManager's configuration.
<p> Example: To load an implementation of the org.osid.Filing OSID implemented in a package "xyz", one would use: </p>
<p> org.osid.filing.FilingManager fm = (org.osid.filing.FilingManager)org.osid.OsidLoader.getManager( </p>
<p> "org.osid.filing.FilingManager" , </p>
<p> "xyz" , </p>
<p> new org.osid.OsidContext()); </p>
Documentation generated on Wed, 19 Sep 2007 10:25:24 -0400 by phpDocumentor 1.3.0RC3