A Closer Look


The sample application contains an example OSID Consumer and an example OSID Provider using the Okapia OSID implementation framework.

Source Navigation

Resource OSID Consumer

net.okapia.osid.sample.Planets is the sample application. It performs the following:

  1. Starts up an OsidRuntimeManager via a Bootloader
  2. Gets the net.okapia.osid.sample.providers.resource.solarsystem.ResourceManager OSID Resource Provider via the OsidRuntimeManager.
  3. Gets a ResourceLookupSession via the ResourceManager.
  4. Gets a stream of Resources via the ResourceLookupSession.
  5. Iterates through the ResourceList and displays them.
  6. Shuts down the OSID Resource Provider and OSID Runtime.

Resource OSID Provider

The shaded rows indicate classes that directly implement an OSID. The others are supporting files.

net.okapia.osid.sample.providers.resource.solarsystem.ResourceManagerThe entry point for OSID Providers. OsidManagers define what the OSID Provider supports and provides access to supported OsidSessions.
net.okapia.osid.sample.providers.resource.solarsystem.ServiceProviderMetadata for OsidManager implementations.
net.okapia.osid.sample.providers.resource.solarsystem.ResourceLookupSessionThe OsidSession for listing Resources. All the action happens in OsidSessions.
net.okapia.osid.sample.providers.resource.solarsystem.ResourceAn implementation of Resource. An example ResourceRecord is implemented in the same class because there is only one.
net.okapia.osid.sample.providers.resource.solarsystem.PlanetAn enumeration of planets from which to create Resources.
net.okapia.osid.sample.providers.resource.solarsystem.BinAn OsidCatalog for collections of Resources. This provider defines only one.


A configuration file for this provider. The OsidRuntimeManager feeds configuration data to OsidManager implementations via the initialize() method.

Package Dependencies

The OSID Java Language Binding is in a jar OSID-<version>.jar. Various package dependencies are part of the Okapia OSID implementation framework.

Looking at the class files in the OSID Resource Provider, you can see that they extend classes in this framework and often make use of other Okapia tools in them. 

Package PrefixDescription
org.osidOSID Specifications
net.okapiaOkapia OSID implementation framework

We have an old strange habit of fully qualifying Java classes in OSID Provider implementations. We get so many variant implementations that it helps to quickly identify what's what.

Methods annotated with 

@OSID @Override

directly implement an OSID method in an OSID (interface). If it is overridden without the @OSID annotation, then it is probably overriding a method in an Okapia class (implementation).