| /* |
| * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| package com.sun.corba.se.spi.ior.iiop ; |
| |
| import org.omg.CORBA_2_3.portable.InputStream ; |
| |
| import com.sun.corba.se.spi.ior.Identifiable ; |
| import com.sun.corba.se.spi.ior.IdentifiableFactory ; |
| import com.sun.corba.se.spi.ior.EncapsulationFactoryBase ; |
| import com.sun.corba.se.spi.ior.ObjectId ; |
| import com.sun.corba.se.spi.ior.ObjectKeyTemplate ; |
| |
| import com.sun.corba.se.spi.ior.iiop.IIOPAddress ; |
| import com.sun.corba.se.spi.ior.iiop.IIOPProfileTemplate ; |
| import com.sun.corba.se.spi.ior.iiop.GIOPVersion ; |
| |
| import com.sun.corba.se.spi.orb.ORB ; |
| |
| import com.sun.corba.se.impl.encoding.MarshalInputStream ; |
| |
| import com.sun.corba.se.impl.ior.iiop.IIOPAddressImpl ; |
| import com.sun.corba.se.impl.ior.iiop.CodeSetsComponentImpl ; |
| import com.sun.corba.se.impl.ior.iiop.AlternateIIOPAddressComponentImpl ; |
| import com.sun.corba.se.impl.ior.iiop.JavaCodebaseComponentImpl ; |
| import com.sun.corba.se.impl.ior.iiop.MaxStreamFormatVersionComponentImpl ; |
| import com.sun.corba.se.impl.ior.iiop.JavaSerializationComponent; |
| import com.sun.corba.se.impl.ior.iiop.ORBTypeComponentImpl ; |
| import com.sun.corba.se.impl.ior.iiop.IIOPProfileImpl ; |
| import com.sun.corba.se.impl.ior.iiop.IIOPProfileTemplateImpl ; |
| import com.sun.corba.se.impl.ior.iiop.RequestPartitioningComponentImpl ; |
| import com.sun.corba.se.impl.orbutil.ORBConstants; |
| import com.sun.corba.se.impl.orbutil.ORBConstants; |
| |
| import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS ; |
| import org.omg.IOP.TAG_CODE_SETS ; |
| import org.omg.IOP.TAG_JAVA_CODEBASE ; |
| import org.omg.IOP.TAG_RMI_CUSTOM_MAX_STREAM_FORMAT ; |
| import org.omg.IOP.TAG_ORB_TYPE ; |
| import org.omg.IOP.TAG_INTERNET_IOP ; |
| |
| /** This class provides all of the factories for the IIOP profiles and |
| * components. This includes direct construction of profiles and templates, |
| * as well as constructing factories that can be registered with an |
| * IdentifiableFactoryFinder. |
| */ |
| public abstract class IIOPFactories { |
| private IIOPFactories() {} |
| |
| public static IdentifiableFactory makeRequestPartitioningComponentFactory() |
| { |
| return new EncapsulationFactoryBase(ORBConstants.TAG_REQUEST_PARTITIONING_ID) { |
| public Identifiable readContents(InputStream in) |
| { |
| int threadPoolToUse = in.read_ulong(); |
| Identifiable comp = |
| new RequestPartitioningComponentImpl(threadPoolToUse); |
| return comp; |
| } |
| }; |
| } |
| |
| public static RequestPartitioningComponent makeRequestPartitioningComponent( |
| int threadPoolToUse) |
| { |
| return new RequestPartitioningComponentImpl(threadPoolToUse); |
| } |
| |
| public static IdentifiableFactory makeAlternateIIOPAddressComponentFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_ALTERNATE_IIOP_ADDRESS.value) { |
| public Identifiable readContents( InputStream in ) |
| { |
| IIOPAddress addr = new IIOPAddressImpl( in ) ; |
| Identifiable comp = |
| new AlternateIIOPAddressComponentImpl( addr ) ; |
| return comp ; |
| } |
| } ; |
| } |
| |
| public static AlternateIIOPAddressComponent makeAlternateIIOPAddressComponent( |
| IIOPAddress addr ) |
| { |
| return new AlternateIIOPAddressComponentImpl( addr ) ; |
| } |
| |
| public static IdentifiableFactory makeCodeSetsComponentFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_CODE_SETS.value) { |
| public Identifiable readContents( InputStream in ) |
| { |
| return new CodeSetsComponentImpl( in ) ; |
| } |
| } ; |
| } |
| |
| public static CodeSetsComponent makeCodeSetsComponent( ORB orb ) |
| { |
| return new CodeSetsComponentImpl( orb ) ; |
| } |
| |
| public static IdentifiableFactory makeJavaCodebaseComponentFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_JAVA_CODEBASE.value) { |
| public Identifiable readContents( InputStream in ) |
| { |
| String url = in.read_string() ; |
| Identifiable comp = new JavaCodebaseComponentImpl( url ) ; |
| return comp ; |
| } |
| } ; |
| } |
| |
| public static JavaCodebaseComponent makeJavaCodebaseComponent( |
| String codebase ) |
| { |
| return new JavaCodebaseComponentImpl( codebase ) ; |
| } |
| |
| public static IdentifiableFactory makeORBTypeComponentFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_ORB_TYPE.value) { |
| public Identifiable readContents( InputStream in ) |
| { |
| int type = in.read_ulong() ; |
| Identifiable comp = new ORBTypeComponentImpl( type ) ; |
| return comp ; |
| } |
| } ; |
| } |
| |
| public static ORBTypeComponent makeORBTypeComponent( int type ) |
| { |
| return new ORBTypeComponentImpl( type ) ; |
| } |
| |
| public static IdentifiableFactory makeMaxStreamFormatVersionComponentFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_RMI_CUSTOM_MAX_STREAM_FORMAT.value) { |
| public Identifiable readContents(InputStream in) |
| { |
| byte version = in.read_octet() ; |
| Identifiable comp = new MaxStreamFormatVersionComponentImpl(version); |
| return comp ; |
| } |
| }; |
| } |
| |
| public static MaxStreamFormatVersionComponent makeMaxStreamFormatVersionComponent() |
| { |
| return new MaxStreamFormatVersionComponentImpl() ; |
| } |
| |
| public static IdentifiableFactory makeJavaSerializationComponentFactory() { |
| return new EncapsulationFactoryBase( |
| ORBConstants.TAG_JAVA_SERIALIZATION_ID) { |
| public Identifiable readContents(InputStream in) { |
| byte version = in.read_octet(); |
| Identifiable cmp = new JavaSerializationComponent(version); |
| return cmp; |
| } |
| }; |
| } |
| |
| public static JavaSerializationComponent makeJavaSerializationComponent() { |
| return JavaSerializationComponent.singleton(); |
| } |
| |
| public static IdentifiableFactory makeIIOPProfileFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_INTERNET_IOP.value) { |
| public Identifiable readContents( InputStream in ) |
| { |
| Identifiable result = new IIOPProfileImpl( in ) ; |
| return result ; |
| } |
| } ; |
| } |
| |
| public static IIOPProfile makeIIOPProfile( ORB orb, ObjectKeyTemplate oktemp, |
| ObjectId oid, IIOPProfileTemplate ptemp ) |
| { |
| return new IIOPProfileImpl( orb, oktemp, oid, ptemp ) ; |
| } |
| |
| public static IIOPProfile makeIIOPProfile( ORB orb, |
| org.omg.IOP.TaggedProfile profile ) |
| { |
| return new IIOPProfileImpl( orb, profile ) ; |
| } |
| |
| public static IdentifiableFactory makeIIOPProfileTemplateFactory() |
| { |
| return new EncapsulationFactoryBase(TAG_INTERNET_IOP.value) { |
| public Identifiable readContents( InputStream in ) |
| { |
| Identifiable result = new IIOPProfileTemplateImpl( in ) ; |
| return result ; |
| } |
| } ; |
| } |
| |
| public static IIOPProfileTemplate makeIIOPProfileTemplate( ORB orb, |
| GIOPVersion version, IIOPAddress primary ) |
| { |
| return new IIOPProfileTemplateImpl( orb, version, primary ) ; |
| } |
| |
| public static IIOPAddress makeIIOPAddress( ORB orb, String host, int port ) |
| { |
| return new IIOPAddressImpl( orb, host, port ) ; |
| } |
| |
| public static IIOPAddress makeIIOPAddress( InputStream is ) |
| { |
| return new IIOPAddressImpl( is ) ; |
| } |
| } |