iornotes revision 608:7e06bf1dcb09
1Implementation hierarchies in the IOR code
2
3Utility classes:
4    impl.ior.ByteBuffer			class used to speed up computation of the adapter id
5    impl.ior.EncapsulationUtility	misc. utilities for dealing with CDR encapsulation
6    impl.ior.FreezableList		special list class that can change from mutable to immutable (one way only)
7    impl.ior.MinorCodes			minor codes for all IOR errors
8    impl.ior.ORTImpl			wrapper around IORTemplate for ORT
9    spi.ior.IORFactories		factory for all basic IOR types
10    spi.ior.IIOP.???Factories		factory for IIOP IOR factory types (IIOPProfile, IIOPProfileTemplate, 
11					    and all of the supported IIOP tagged component factories)
12					This needs to provide access to all of the IdentifiableFactory instances
13					we need for registration.  It also needs to provide factory methods for
14					creating all of these types.  
15	impl.ior.iiop.TaggedComponentFactories needs to be absorbed here.
16
17
18Support for non-registered (unknown) TaggedComponent and TaggedProfile instances
19    impl.ior.GenericIdEncapsulation
20	impl.ior.GenericTaggedComponent
21	impl.ior.GenericTaggedProfile
22
23Basic common representation for writing, getting ids, inherited lists:
24    spi.ior.IdentifiableContainerBase
25    spi.ior.Writeable
26	spi.ior.Identifiable
27	    spi.ior.IdentifiableBase
28
29Some basic IOR types and their implementation:
30    spi.ior.IOR
31	impl.ior.IORImpl
32
33    spi.ior.IORTemplate
34	impl.ior.IORTemplateImpl
35
36    spi.ior.IdentifiableFactory (the basic factory type, which is never created in the spi.ior package.
37	All instances of this factory are necessarily protocol dependent, for example IIOP in the
38	spi.ior.iiop package).
39    spi.ior.IdentifiableFactoryFinder
40	impl.ior.IdentifiableFactoryFinderBase
41	    impl.ior.TaggedComponentFactoryFinderImpl
42	    impl.ior.TaggedProfileFactoryFinderImpl
43
44    spi.ior.ObjectAdapterId
45	impl.ior.ObjectAdapterIdBase
46	    impl.ior.ObjectAdapterIdArray
47		impl.ior.ObjectAdapterIdNumber
48
49    spi.ior.ObjectId
50	impl.ior.ObjectIdImpl
51
52    spi.ior.ObjectKey
53	impl.ior.ObjectKeyImpl
54
55The ObjectKeyTemplate family, which needs some work for pluggability yet:
56    impl.ior.ObjectKeyFactory
57    impl.ior.ObjectKeyTemplateFactory : should this be in the SPI?
58    spi.ior.ObjectKeyTemplate
59	impl.ior.WireObjectKeyTemplate
60	impl.ior.ObjectKeyTemplateBase
61	    impl.ior.OldObjectKeyTemplateBase
62		impl.ior.OldJIDLObjectKeyTemplate
63		impl.ior.OldPOAObjectKeyTemplate
64	    impl.ior.NewObjectKeyTemplateBase
65		impl.ior.JIDLObjectKeyTemplate
66		impl.ior.POAObjectKeyTemplate
67
68IIOP types and their implementations:
69    spi.ior.TaggedComponent
70	spi.ior.TaggedComponentBase
71	    impl.ior.iiop.AlternateIIOPAddressComponent
72	    impl.ior.iiop.CodeSetsComponent
73	    impl.ior.iiop.JavaCodebaseComponent
74	    impl.ior.iiop.MaxStreamFormatVersionComponent
75	    impl.ior.iiop.ORBTypeComponent
76	    impl.ior.iiop.PoliciesComponent
77
78    spi.ior.TaggedProfile
79	spi.ior.iiop.IIOPProfile
80	    impl.ior.iiop.IIOPProfileImpl
81
82    spi.ior.TaggedProfileTemplate
83	spi.ior.iiop.IIOPProfileTemplate
84	    impl.ior.iiop.IIOPProfileTemplateImpl
85
86    spi.ior.iiop.IIOPAddress
87	impl.ior.iiop.IIOPAddressBase
88	    impl.ior.iiop.IIOPAddressFutureImpl
89	    impl.ior.iiop.IIOPAddressImpl
90
91Issues:
92
931. GIOPVersion.chooseRequestVersion( ORB, IOR ) is not well-defined: it should be
94   (ORB, IIOPProfile). 
95   Call sites:
96   Connection.locate: not used
97	Called from GIOPImpl.locate: not used
98   CorbaContactInfoImpl.createMessageMediator
99	This needs a version that looks only at a single profile.
100
1012. MessageBase.createRequest takes an IOR instead of an IIOPProfile.
102
1033. CDRInputStream_1_0.read_Object( Class ) calls IOR.getCodebase() in 
104   a call to Utility.loadStubClass, which is
105   only defined on a profile.  What do we do here?
106   Similar problem in same class internalIORToObject, which call IOR.getServant
107   and IOR.getCodebase.  IOR.getCodeBase is called in loadStub.
108