IIOPFactories.java revision 608:7e06bf1dcb09
123693Speter/*
21590Srgrimes * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
31590Srgrimes * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
41590Srgrimes *
51590Srgrimes * This code is free software; you can redistribute it and/or modify it
61590Srgrimes * under the terms of the GNU General Public License version 2 only, as
71590Srgrimes * published by the Free Software Foundation.  Oracle designates this
81590Srgrimes * particular file as subject to the "Classpath" exception as provided
91590Srgrimes * by Oracle in the LICENSE file that accompanied this code.
101590Srgrimes *
111590Srgrimes * This code is distributed in the hope that it will be useful, but WITHOUT
121590Srgrimes * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
131590Srgrimes * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
141590Srgrimes * version 2 for more details (a copy is included in the LICENSE file that
151590Srgrimes * accompanied this code).
161590Srgrimes *
171590Srgrimes * You should have received a copy of the GNU General Public License version
181590Srgrimes * 2 along with this work; if not, write to the Free Software Foundation,
191590Srgrimes * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
201590Srgrimes *
211590Srgrimes * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
221590Srgrimes * or visit www.oracle.com if you need additional information or have any
231590Srgrimes * questions.
241590Srgrimes */
251590Srgrimes
261590Srgrimespackage com.sun.corba.se.spi.ior.iiop ;
271590Srgrimes
2823693Speterimport org.omg.CORBA_2_3.portable.InputStream ;
2950477Speter
301590Srgrimesimport com.sun.corba.se.spi.ior.Identifiable ;
31240506Seadlerimport com.sun.corba.se.spi.ior.IdentifiableFactory ;
321590Srgrimesimport com.sun.corba.se.spi.ior.EncapsulationFactoryBase ;
3379535Sruimport com.sun.corba.se.spi.ior.ObjectId ;
341590Srgrimesimport com.sun.corba.se.spi.ior.ObjectKeyTemplate ;
351590Srgrimes
361590Srgrimesimport com.sun.corba.se.spi.ior.iiop.IIOPAddress ;
371590Srgrimesimport com.sun.corba.se.spi.ior.iiop.IIOPProfileTemplate ;
3868963Sruimport com.sun.corba.se.spi.ior.iiop.GIOPVersion ;
39168632Sdes
4070197Sruimport com.sun.corba.se.spi.orb.ORB ;
4170197Sru
421590Srgrimesimport com.sun.corba.se.impl.encoding.MarshalInputStream ;
431590Srgrimes
4468963Sruimport com.sun.corba.se.impl.ior.iiop.IIOPAddressImpl ;
4595083Scharnierimport com.sun.corba.se.impl.ior.iiop.CodeSetsComponentImpl ;
461590Srgrimesimport com.sun.corba.se.impl.ior.iiop.AlternateIIOPAddressComponentImpl ;
471590Srgrimesimport com.sun.corba.se.impl.ior.iiop.JavaCodebaseComponentImpl ;
48107262Sruimport com.sun.corba.se.impl.ior.iiop.MaxStreamFormatVersionComponentImpl ;
49100521Sumeimport com.sun.corba.se.impl.ior.iiop.JavaSerializationComponent;
50100521Sumeimport com.sun.corba.se.impl.ior.iiop.ORBTypeComponentImpl ;
51100521Sumeimport com.sun.corba.se.impl.ior.iiop.IIOPProfileImpl ;
52100521Sumeimport com.sun.corba.se.impl.ior.iiop.IIOPProfileTemplateImpl ;
53100521Sumeimport com.sun.corba.se.impl.ior.iiop.RequestPartitioningComponentImpl ;
54100521Sumeimport com.sun.corba.se.impl.orbutil.ORBConstants;
55100521Sumeimport com.sun.corba.se.impl.orbutil.ORBConstants;
56100521Sume
571590Srgrimesimport org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS ;
5895083Scharnierimport org.omg.IOP.TAG_CODE_SETS ;
591590Srgrimesimport org.omg.IOP.TAG_JAVA_CODEBASE ;
602537Spstimport org.omg.IOP.TAG_RMI_CUSTOM_MAX_STREAM_FORMAT ;
6157670Ssheldonhimport org.omg.IOP.TAG_ORB_TYPE ;
6257670Ssheldonhimport org.omg.IOP.TAG_INTERNET_IOP ;
632537Spst
642537Spst/** This class provides all of the factories for the IIOP profiles and
6567483Sru * components.  This includes direct construction of profiles and templates,
6667483Sru * as well as constructing factories that can be registered with an
6767483Sru * IdentifiableFactoryFinder.
6867483Sru */
691590Srgrimespublic abstract class IIOPFactories {
701590Srgrimes    private IIOPFactories() {}
711590Srgrimes
7269909Sru    public static IdentifiableFactory makeRequestPartitioningComponentFactory()
7369909Sru    {
7469909Sru        return new EncapsulationFactoryBase(ORBConstants.TAG_REQUEST_PARTITIONING_ID) {
7572109Scharnier            public Identifiable readContents(InputStream in)
762537Spst            {
772537Spst                int threadPoolToUse = in.read_ulong();
781590Srgrimes                Identifiable comp =
791590Srgrimes                    new RequestPartitioningComponentImpl(threadPoolToUse);
801590Srgrimes                return comp;
812537Spst            }
822537Spst        };
832537Spst    }
842537Spst
852537Spst    public static RequestPartitioningComponent makeRequestPartitioningComponent(
862537Spst            int threadPoolToUse)
872537Spst    {
882537Spst        return new RequestPartitioningComponentImpl(threadPoolToUse);
892537Spst    }
902537Spst
9199249Smini    public static IdentifiableFactory makeAlternateIIOPAddressComponentFactory()
9299249Smini    {
93131491Sru        return new EncapsulationFactoryBase(TAG_ALTERNATE_IIOP_ADDRESS.value) {
94131491Sru            public Identifiable readContents( InputStream in )
9599249Smini            {
9699249Smini                IIOPAddress addr = new IIOPAddressImpl( in ) ;
9799249Smini                Identifiable comp =
98117010Sjmallett                    new AlternateIIOPAddressComponentImpl( addr ) ;
99202756Sed                return comp ;
1001590Srgrimes            }
10195083Scharnier        } ;
1021590Srgrimes    }
1031590Srgrimes
1041590Srgrimes    public static AlternateIIOPAddressComponent makeAlternateIIOPAddressComponent(
1052537Spst        IIOPAddress addr )
106107262Sru    {
107107262Sru        return new AlternateIIOPAddressComponentImpl( addr ) ;
108107262Sru    }
1091590Srgrimes
110107262Sru    public static IdentifiableFactory makeCodeSetsComponentFactory()
1111590Srgrimes    {
1121590Srgrimes        return new EncapsulationFactoryBase(TAG_CODE_SETS.value) {
1131590Srgrimes            public Identifiable readContents( InputStream in )
1141590Srgrimes            {
1151590Srgrimes                return new CodeSetsComponentImpl( in ) ;
1161590Srgrimes            }
1171590Srgrimes        } ;
1181590Srgrimes    }
1191590Srgrimes
1201590Srgrimes    public static CodeSetsComponent makeCodeSetsComponent( ORB orb )
1212537Spst    {
1221590Srgrimes        return new CodeSetsComponentImpl( orb ) ;
1231590Srgrimes    }
1241590Srgrimes
1251590Srgrimes    public static IdentifiableFactory makeJavaCodebaseComponentFactory()
1261590Srgrimes    {
1271590Srgrimes        return new EncapsulationFactoryBase(TAG_JAVA_CODEBASE.value) {
1281590Srgrimes            public Identifiable readContents( InputStream in )
1291590Srgrimes            {
1302537Spst                String url = in.read_string() ;
1312537Spst                Identifiable comp = new JavaCodebaseComponentImpl( url ) ;
1322537Spst                return comp ;
1332537Spst            }
1341590Srgrimes        } ;
13595083Scharnier    }
1361590Srgrimes
1371590Srgrimes    public static JavaCodebaseComponent makeJavaCodebaseComponent(
1381590Srgrimes        String codebase )
13968963Sru    {
1401590Srgrimes        return new JavaCodebaseComponentImpl( codebase ) ;
141107262Sru    }
142107262Sru
143107262Sru    public static IdentifiableFactory makeORBTypeComponentFactory()
1441590Srgrimes    {
145107262Sru        return new EncapsulationFactoryBase(TAG_ORB_TYPE.value) {
1461590Srgrimes            public Identifiable readContents( InputStream in )
1471590Srgrimes            {
1481590Srgrimes                int type = in.read_ulong() ;
1491590Srgrimes                Identifiable comp = new ORBTypeComponentImpl( type ) ;
1501590Srgrimes                return comp ;
1511590Srgrimes            }
1521590Srgrimes        } ;
1531590Srgrimes    }
1541590Srgrimes
1551590Srgrimes    public static ORBTypeComponent makeORBTypeComponent( int type )
1561590Srgrimes    {
15768963Sru        return new ORBTypeComponentImpl( type ) ;
1581590Srgrimes    }
1591590Srgrimes
1601590Srgrimes    public static IdentifiableFactory makeMaxStreamFormatVersionComponentFactory()
1611590Srgrimes    {
16268963Sru        return new EncapsulationFactoryBase(TAG_RMI_CUSTOM_MAX_STREAM_FORMAT.value) {
1631590Srgrimes            public Identifiable readContents(InputStream in)
1641590Srgrimes            {
1651590Srgrimes                byte version = in.read_octet() ;
1661590Srgrimes                Identifiable comp = new MaxStreamFormatVersionComponentImpl(version);
1671590Srgrimes                return comp ;
1681590Srgrimes            }
1691590Srgrimes        };
1701590Srgrimes    }
1711590Srgrimes
17268963Sru    public static MaxStreamFormatVersionComponent makeMaxStreamFormatVersionComponent()
1731590Srgrimes    {
1741590Srgrimes        return new MaxStreamFormatVersionComponentImpl() ;
17595083Scharnier    }
17695083Scharnier
17795083Scharnier    public static IdentifiableFactory makeJavaSerializationComponentFactory() {
1781590Srgrimes        return new EncapsulationFactoryBase(
1791590Srgrimes                                ORBConstants.TAG_JAVA_SERIALIZATION_ID) {
1801590Srgrimes            public Identifiable readContents(InputStream in) {
1811590Srgrimes                byte version = in.read_octet();
1821590Srgrimes                Identifiable cmp = new JavaSerializationComponent(version);
1831590Srgrimes                return cmp;
1841590Srgrimes            }
1851590Srgrimes        };
1861590Srgrimes    }
1871590Srgrimes
1881590Srgrimes    public static JavaSerializationComponent makeJavaSerializationComponent() {
1891590Srgrimes        return JavaSerializationComponent.singleton();
1901590Srgrimes    }
1911590Srgrimes
1921590Srgrimes    public static IdentifiableFactory makeIIOPProfileFactory()
1935369Sjkh    {
1945369Sjkh        return new EncapsulationFactoryBase(TAG_INTERNET_IOP.value) {
195107262Sru            public Identifiable readContents( InputStream in )
1965369Sjkh            {
197150316Sdds                Identifiable result = new IIOPProfileImpl( in ) ;
19868963Sru                return result ;
1995369Sjkh            }
20064775Sbrian        } ;
20164775Sbrian    }
20264775Sbrian
20364775Sbrian    public static IIOPProfile makeIIOPProfile( ORB orb, ObjectKeyTemplate oktemp,
20464775Sbrian        ObjectId oid, IIOPProfileTemplate ptemp )
205108257Sru    {
20664775Sbrian        return new IIOPProfileImpl( orb, oktemp, oid, ptemp ) ;
20765069Ssheldonh    }
20865064Sbrian
2092589Spst    public static IIOPProfile makeIIOPProfile( ORB orb,
21095083Scharnier        org.omg.IOP.TaggedProfile profile )
21195083Scharnier    {
21295083Scharnier        return new IIOPProfileImpl( orb, profile ) ;
2132589Spst    }
2142589Spst
2152589Spst    public static IdentifiableFactory makeIIOPProfileTemplateFactory()
21668963Sru    {
2172589Spst        return new EncapsulationFactoryBase(TAG_INTERNET_IOP.value) {
21823693Speter            public Identifiable readContents( InputStream in )
219202756Sed            {
22064775Sbrian                Identifiable result = new IIOPProfileTemplateImpl( in ) ;
22164775Sbrian                return result ;
222202756Sed            }
22323693Speter        } ;
22423693Speter    }
2251590Srgrimes
2261590Srgrimes    public static IIOPProfileTemplate makeIIOPProfileTemplate( ORB orb,
2271590Srgrimes        GIOPVersion version, IIOPAddress primary )
2281590Srgrimes    {
22964775Sbrian        return new IIOPProfileTemplateImpl( orb, version, primary ) ;
23079366Sru    }
23127836Swollman
23227836Swollman    public static IIOPAddress makeIIOPAddress( ORB orb, String host, int port )
23327836Swollman    {
23427836Swollman        return new IIOPAddressImpl( orb, host, port ) ;
23527836Swollman    }
23627836Swollman
2371590Srgrimes    public static IIOPAddress makeIIOPAddress( InputStream is )
2381590Srgrimes    {
23968963Sru        return new IIOPAddressImpl( is ) ;
2401590Srgrimes    }
2411590Srgrimes}
242168657Sru