OSID Logo
OSID Specifications
osid package
Version 3.1.0
Interfaceosid.OsidObject
Implementsosid.Identifiable
osid.Extensible
osid.Browsable
Implemented Byosid.course.Course
osid.course.ActivityUnit
osid.course.Term
osid.assessment.authoring.AssessmentPart
osid.ordering.Order
osid.ordering.Product
osid.ordering.PriceSchedule
osid.topology.Node
osid.inventory.shipment.Shipment
osid.inventory.shipment.Entry
osid.authentication.keys.Key
osid.financials.Account
osid.financials.Activity
osid.financials.FiscalPeriod
osid.workflow.event.WorkflowEvent
osid.authentication.Agent
osid.contact.Address
osid.provisioning.ProvisionReturn
osid.hold.Block
osid.filing.DirectoryEntry
osid.forum.Post
osid.forum.Reply
osid.authorization.Qualifier
osid.OsidRelationship
osid.OsidCatalog
osid.OsidRequest
osid.OsidRule
osid.OsidGovernator
osid.OsidCompendium
osid.lexicon.Text
osid.lexicon.Idiom
osid.lexicon.Parameter
osid.inventory.Item
osid.inventory.Stock
osid.inventory.Model
osid.inventory.Inventory
osid.calendaring.cycle.CyclicEvent
osid.calendaring.cycle.CyclicTimePeriod
osid.learning.Objective
osid.learning.Activity
osid.installation.InstallationPackage
osid.installation.InstallationContent
osid.installation.Installation
osid.installation.Site
osid.messaging.Message
osid.messaging.Receipt
osid.room.construction.Renovation
osid.room.construction.Project
osid.recognition.Award
osid.grading.Grade
osid.grading.GradeSystem
osid.grading.GradebookColumn
osid.grading.GradebookColumnSummary
osid.resourcing.Work
osid.resourcing.Competency
osid.repository.Asset
osid.repository.AssetContent
osid.repository.Composition
osid.profile.ProfileItem
osid.recipe.Recipe
osid.recipe.Direction
osid.recipe.Ingredient
osid.recipe.Procedure
osid.course.registration.RegistrationTarget
osid.tracking.LogEntry
osid.mapping.route.RouteSegment
osid.journaling.JournalEntry
osid.journaling.Branch
osid.offering.CanonicalUnit
osid.offering.Result
osid.mapping.Location
osid.assessment.Question
osid.assessment.Answer
osid.assessment.Item
osid.assessment.Assessment
osid.assessment.AssessmentOffered
osid.assessment.AssessmentTaken
osid.assessment.AssessmentSection
osid.blogging.Entry
osid.voting.VoterAllocation
osid.calendaring.Event
osid.calendaring.Schedule
osid.calendaring.ScheduleSlot
osid.calendaring.TimePeriod
osid.authentication.process.Authentication
osid.authentication.process.Challenge
osid.authentication.process.Trust
osid.metering.Meter
osid.dictionary.Entry
osid.configuration.Value
osid.resource.Resource
osid.logging.LogEntry
osid.personnel.Person
osid.personnel.Organization
osid.personnel.Position
osid.course.program.Program
osid.course.program.Credential
osid.process.State
osid.checklist.Todo
osid.sequencing.Chain
osid.billing.Customer
osid.billing.Item
osid.billing.Category
osid.billing.Period
osid.transport.Response
osid.workflow.Work
osid.billing.payment.Payer
osid.billing.payment.Payment
osid.communication.Communique
osid.communication.ResponseOption
osid.room.Room
osid.room.Floor
osid.room.Building
osid.mapping.path.Path
osid.mapping.path.Intersection
osid.mapping.path.Obstacle
osid.course.syllabus.Syllabus
osid.course.syllabus.Module
osid.financials.posting.Post
osid.financials.posting.PostEntry
osid.course.registration.request.RegistrationRequestItem
osid.ontology.Subject
osid.control.Device
osid.control.Controller
osid.control.Setting
osid.control.Scene
osid.control.ActionGroup
Description

OsidObject is the top level interface for all OSID Objects. An OsidObject is an object identified by an OSID Id and may implement optional interfaces. OsidObjects also contain a display name and a description. These fields are required but may be used for a variety of purposes ranging from a primary name and description of the OsidObject to a more user friendly display of various attributes.

Creation of OsidObjects and the modification of their data is managed through the associated OsidSession. The OsidManager is used to create the appropriate OsidSession for OsidObject creation, updates and deletes.

All OsidObjects are identified by an immutable Id. An Id is assigned to an object upon creation of the object and cannot be changed once assigned.

An OsidObject may support one or more supplementary records which are expressed in the form of interfaces. Each record interface is identified by a Type. A record interface may extend another record interface where support of the parent record interface is implied. In this case of interface inheritance, support of the parent record type may be implied through hasRecordType() and not explicit in getRecordTypes().

For example, if recordB extends recordA, typeB is a child of typeA. If a record implements typeB, than it also implements typeA. An application that only knows about typeA retrieves recordA. An application that knows about typeB, retrieves recordB which is the union of methods specified in typeA and typeB. If an application requests typeA, it may not attempt to access methods defined in typeB as they may not exist until explicitly requested. The mechanics of this polymorphism is defined by the language binder. One mechanism might be the use of casting.

In addition to the OsidRecord Types, OsidObjects also have a genus Type. A genus Type indicates a classification or kind of the object where an "is a" relationship exists. The purpose of of the genus Type is to avoid the creation of unnecessary record types that may needlessly complicate an interface hierarchy or introduce interoperability issues. For example, an OsidObject may have a OsidRecord Type of Publication that defines methods pertinent to publications, such as an ISBN number. An OSID Provider may wish to distinguish between books and journals without having the need of new record interfaces. In this case, the genus Type may be one of Book or Journal.While this distinction can aid a search, these genres should be treated in such a way that do not introduce interoperability problems.

Like OsidRecord Types, the genus Types may also exist in an implicit type hierarchy. An OsidObject always has at least one genus Type. Genus types should not be confused with subject tagging, which is managed in the Ontology OSID. Unlike OsidRecord Types, an OsidObject genus Type may be modified. However, once an OsidObject is created with a record Type, it cannot be changed.

Methods that return values are not permitted to return null. If a value is not set, it is indicated in the Metadata of the update OsidObjectForm.

MethodgetDisplayName
Description

Gets the preferred display name associated with this instance of this OSID object appropriate for display to the user.

Returnosid.locale.DisplayText the display name
Compliancemandatory This method must be implemented.
Provider Notes

A display name is a string used for identifying an object in human terms. A provider may wish to initialize the display name based on one or more object attributes. In some cases, the display name may not map to a specific or significant object attribute but simply be used as a preferred display name that can be modified. A provider may also wish to translate the display name into a specific locale using the Locale service. Some OSIDs define methods for more detailed naming.

MethodgetDescription
Description

Gets the description associated with this instance of this OSID object.

Returnosid.locale.DisplayText the description
Compliancemandatory This method must be implemented.
Provider Notes

A description is a string used for describing an object in human terms and may not have significance in the underlying system. A provider may wish to initialize the description based on one or more object attributes and/or treat it as an auxiliary piece of data that can be modified. A provider may also wish to translate the description into a specific locale using the Locale service.

MethodgetGenusType
Description

Gets the genus type of this object.

Returnosid.type.Type the genus type of this object
Compliancemandatory This method must be implemented.
MethodisOfGenusType
Description

Tests if this object is of the given genus Type. The given genus type may be supported by the object through the type hierarchy.

Parametersosid.type.TypegenusType a genus type
Returnboolean true if this object is of the given genus Type, false otherwise
ErrorsNULL_ARGUMENT genusType is null
Compliancemandatory This method must be implemented.