blob: 9784546c7edca1af9125d5ae48698120980b7ab9 [file] [log] [blame]
Implementation hierarchies in the IOR code
Utility classes:
impl.ior.ByteBuffer class used to speed up computation of the adapter id
impl.ior.EncapsulationUtility misc. utilities for dealing with CDR encapsulation
impl.ior.FreezableList special list class that can change from mutable to immutable (one way only)
impl.ior.MinorCodes minor codes for all IOR errors
impl.ior.ORTImpl wrapper around IORTemplate for ORT
spi.ior.IORFactories factory for all basic IOR types
spi.ior.IIOP.???Factories factory for IIOP IOR factory types (IIOPProfile, IIOPProfileTemplate,
and all of the supported IIOP tagged component factories)
This needs to provide access to all of the IdentifiableFactory instances
we need for registration. It also needs to provide factory methods for
creating all of these types.
impl.ior.iiop.TaggedComponentFactories needs to be absorbed here.
Support for non-registered (unknown) TaggedComponent and TaggedProfile instances
impl.ior.GenericIdEncapsulation
impl.ior.GenericTaggedComponent
impl.ior.GenericTaggedProfile
Basic common representation for writing, getting ids, inherited lists:
spi.ior.IdentifiableContainerBase
spi.ior.Writeable
spi.ior.Identifiable
spi.ior.IdentifiableBase
Some basic IOR types and their implementation:
spi.ior.IOR
impl.ior.IORImpl
spi.ior.IORTemplate
impl.ior.IORTemplateImpl
spi.ior.IdentifiableFactory (the basic factory type, which is never created in the spi.ior package.
All instances of this factory are necessarily protocol dependent, for example IIOP in the
spi.ior.iiop package).
spi.ior.IdentifiableFactoryFinder
impl.ior.IdentifiableFactoryFinderBase
impl.ior.TaggedComponentFactoryFinderImpl
impl.ior.TaggedProfileFactoryFinderImpl
spi.ior.ObjectAdapterId
impl.ior.ObjectAdapterIdBase
impl.ior.ObjectAdapterIdArray
impl.ior.ObjectAdapterIdNumber
spi.ior.ObjectId
impl.ior.ObjectIdImpl
spi.ior.ObjectKey
impl.ior.ObjectKeyImpl
The ObjectKeyTemplate family, which needs some work for pluggability yet:
impl.ior.ObjectKeyFactory
impl.ior.ObjectKeyTemplateFactory : should this be in the SPI?
spi.ior.ObjectKeyTemplate
impl.ior.WireObjectKeyTemplate
impl.ior.ObjectKeyTemplateBase
impl.ior.OldObjectKeyTemplateBase
impl.ior.OldJIDLObjectKeyTemplate
impl.ior.OldPOAObjectKeyTemplate
impl.ior.NewObjectKeyTemplateBase
impl.ior.JIDLObjectKeyTemplate
impl.ior.POAObjectKeyTemplate
IIOP types and their implementations:
spi.ior.TaggedComponent
spi.ior.TaggedComponentBase
impl.ior.iiop.AlternateIIOPAddressComponent
impl.ior.iiop.CodeSetsComponent
impl.ior.iiop.JavaCodebaseComponent
impl.ior.iiop.MaxStreamFormatVersionComponent
impl.ior.iiop.ORBTypeComponent
impl.ior.iiop.PoliciesComponent
spi.ior.TaggedProfile
spi.ior.iiop.IIOPProfile
impl.ior.iiop.IIOPProfileImpl
spi.ior.TaggedProfileTemplate
spi.ior.iiop.IIOPProfileTemplate
impl.ior.iiop.IIOPProfileTemplateImpl
spi.ior.iiop.IIOPAddress
impl.ior.iiop.IIOPAddressBase
impl.ior.iiop.IIOPAddressFutureImpl
impl.ior.iiop.IIOPAddressImpl
Issues:
1. GIOPVersion.chooseRequestVersion( ORB, IOR ) is not well-defined: it should be
(ORB, IIOPProfile).
Call sites:
Connection.locate: not used
Called from GIOPImpl.locate: not used
CorbaContactInfoImpl.createMessageMediator
This needs a version that looks only at a single profile.
2. MessageBase.createRequest takes an IOR instead of an IIOPProfile.
3. CDRInputStream_1_0.read_Object( Class ) calls IOR.getCodebase() in
a call to Utility.loadStubClass, which is
only defined on a profile. What do we do here?
Similar problem in same class internalIORToObject, which call IOR.getServant
and IOR.getCodebase. IOR.getCodeBase is called in loadStub.