1 /* 2 * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.corba.se.spi.ior.iiop ; 27 28 import org.omg.CORBA_2_3.portable.InputStream ; 29 30 import com.sun.corba.se.spi.ior.Identifiable ; 31 import com.sun.corba.se.spi.ior.IdentifiableFactory ; 32 import com.sun.corba.se.spi.ior.EncapsulationFactoryBase ; 33 import com.sun.corba.se.spi.ior.ObjectId ; 34 import com.sun.corba.se.spi.ior.ObjectKeyTemplate ; 35 36 import com.sun.corba.se.spi.ior.iiop.IIOPAddress ; 37 import com.sun.corba.se.spi.ior.iiop.IIOPProfileTemplate ; 38 import com.sun.corba.se.spi.ior.iiop.GIOPVersion ; 39 40 import com.sun.corba.se.spi.orb.ORB ; 41 42 import com.sun.corba.se.impl.encoding.MarshalInputStream ; 43 44 import com.sun.corba.se.impl.ior.iiop.IIOPAddressImpl ; 45 import com.sun.corba.se.impl.ior.iiop.CodeSetsComponentImpl ; 46 import com.sun.corba.se.impl.ior.iiop.AlternateIIOPAddressComponentImpl ; 47 import com.sun.corba.se.impl.ior.iiop.JavaCodebaseComponentImpl ; 48 import com.sun.corba.se.impl.ior.iiop.MaxStreamFormatVersionComponentImpl ; 49 import com.sun.corba.se.impl.ior.iiop.JavaSerializationComponent; 50 import com.sun.corba.se.impl.ior.iiop.ORBTypeComponentImpl ; 51 import com.sun.corba.se.impl.ior.iiop.IIOPProfileImpl ; 52 import com.sun.corba.se.impl.ior.iiop.IIOPProfileTemplateImpl ; 53 import com.sun.corba.se.impl.ior.iiop.RequestPartitioningComponentImpl ; 54 import com.sun.corba.se.impl.orbutil.ORBConstants; 55 import com.sun.corba.se.impl.orbutil.ORBConstants; 56 57 import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS ; 58 import org.omg.IOP.TAG_CODE_SETS ; 59 import org.omg.IOP.TAG_JAVA_CODEBASE ; 60 import org.omg.IOP.TAG_RMI_CUSTOM_MAX_STREAM_FORMAT ; 61 import org.omg.IOP.TAG_ORB_TYPE ; 62 import org.omg.IOP.TAG_INTERNET_IOP ; 63 64 /** This class provides all of the factories for the IIOP profiles and 65 * components. This includes direct construction of profiles and templates, 66 * as well as constructing factories that can be registered with an 67 * IdentifiableFactoryFinder. 68 */ 69 public abstract class IIOPFactories { IIOPFactories()70 private IIOPFactories() {} 71 makeRequestPartitioningComponentFactory()72 public static IdentifiableFactory makeRequestPartitioningComponentFactory() 73 { 74 return new EncapsulationFactoryBase(ORBConstants.TAG_REQUEST_PARTITIONING_ID) { 75 public Identifiable readContents(InputStream in) 76 { 77 int threadPoolToUse = in.read_ulong(); 78 Identifiable comp = 79 new RequestPartitioningComponentImpl(threadPoolToUse); 80 return comp; 81 } 82 }; 83 } 84 85 public static RequestPartitioningComponent makeRequestPartitioningComponent( 86 int threadPoolToUse) 87 { 88 return new RequestPartitioningComponentImpl(threadPoolToUse); 89 } 90 91 public static IdentifiableFactory makeAlternateIIOPAddressComponentFactory() 92 { 93 return new EncapsulationFactoryBase(TAG_ALTERNATE_IIOP_ADDRESS.value) { 94 public Identifiable readContents( InputStream in ) 95 { 96 IIOPAddress addr = new IIOPAddressImpl( in ) ; 97 Identifiable comp = 98 new AlternateIIOPAddressComponentImpl( addr ) ; 99 return comp ; 100 } 101 } ; 102 } 103 104 public static AlternateIIOPAddressComponent makeAlternateIIOPAddressComponent( 105 IIOPAddress addr ) 106 { 107 return new AlternateIIOPAddressComponentImpl( addr ) ; 108 } 109 110 public static IdentifiableFactory makeCodeSetsComponentFactory() 111 { 112 return new EncapsulationFactoryBase(TAG_CODE_SETS.value) { 113 public Identifiable readContents( InputStream in ) 114 { 115 return new CodeSetsComponentImpl( in ) ; 116 } 117 } ; 118 } 119 120 public static CodeSetsComponent makeCodeSetsComponent( ORB orb ) 121 { 122 return new CodeSetsComponentImpl( orb ) ; 123 } 124 125 public static IdentifiableFactory makeJavaCodebaseComponentFactory() 126 { 127 return new EncapsulationFactoryBase(TAG_JAVA_CODEBASE.value) { 128 public Identifiable readContents( InputStream in ) 129 { 130 String url = in.read_string() ; 131 Identifiable comp = new JavaCodebaseComponentImpl( url ) ; 132 return comp ; 133 } 134 } ; 135 } 136 137 public static JavaCodebaseComponent makeJavaCodebaseComponent( 138 String codebase ) 139 { 140 return new JavaCodebaseComponentImpl( codebase ) ; 141 } 142 143 public static IdentifiableFactory makeORBTypeComponentFactory() 144 { 145 return new EncapsulationFactoryBase(TAG_ORB_TYPE.value) { 146 public Identifiable readContents( InputStream in ) 147 { 148 int type = in.read_ulong() ; 149 Identifiable comp = new ORBTypeComponentImpl( type ) ; 150 return comp ; 151 } 152 } ; 153 } 154 155 public static ORBTypeComponent makeORBTypeComponent( int type ) 156 { 157 return new ORBTypeComponentImpl( type ) ; 158 } 159 160 public static IdentifiableFactory makeMaxStreamFormatVersionComponentFactory() 161 { 162 return new EncapsulationFactoryBase(TAG_RMI_CUSTOM_MAX_STREAM_FORMAT.value) { 163 public Identifiable readContents(InputStream in) 164 { 165 byte version = in.read_octet() ; 166 Identifiable comp = new MaxStreamFormatVersionComponentImpl(version); 167 return comp ; 168 } 169 }; 170 } 171 172 public static MaxStreamFormatVersionComponent makeMaxStreamFormatVersionComponent() 173 { 174 return new MaxStreamFormatVersionComponentImpl() ; 175 } 176 177 public static IdentifiableFactory makeJavaSerializationComponentFactory() { 178 return new EncapsulationFactoryBase( 179 ORBConstants.TAG_JAVA_SERIALIZATION_ID) { 180 public Identifiable readContents(InputStream in) { 181 byte version = in.read_octet(); 182 Identifiable cmp = new JavaSerializationComponent(version); 183 return cmp; 184 } 185 }; 186 } 187 188 public static JavaSerializationComponent makeJavaSerializationComponent() { 189 return JavaSerializationComponent.singleton(); 190 } 191 192 public static IdentifiableFactory makeIIOPProfileFactory() 193 { 194 return new EncapsulationFactoryBase(TAG_INTERNET_IOP.value) { 195 public Identifiable readContents( InputStream in ) 196 { 197 Identifiable result = new IIOPProfileImpl( in ) ; 198 return result ; 199 } 200 } ; 201 } 202 203 public static IIOPProfile makeIIOPProfile( ORB orb, ObjectKeyTemplate oktemp, 204 ObjectId oid, IIOPProfileTemplate ptemp ) 205 { 206 return new IIOPProfileImpl( orb, oktemp, oid, ptemp ) ; 207 } 208 209 public static IIOPProfile makeIIOPProfile( ORB orb, 210 org.omg.IOP.TaggedProfile profile ) 211 { 212 return new IIOPProfileImpl( orb, profile ) ; 213 } 214 215 public static IdentifiableFactory makeIIOPProfileTemplateFactory() 216 { 217 return new EncapsulationFactoryBase(TAG_INTERNET_IOP.value) { 218 public Identifiable readContents( InputStream in ) 219 { 220 Identifiable result = new IIOPProfileTemplateImpl( in ) ; 221 return result ; 222 } 223 } ; 224 } 225 226 public static IIOPProfileTemplate makeIIOPProfileTemplate( ORB orb, 227 GIOPVersion version, IIOPAddress primary ) 228 { 229 return new IIOPProfileTemplateImpl( orb, version, primary ) ; 230 } 231 232 public static IIOPAddress makeIIOPAddress( ORB orb, String host, int port ) 233 { 234 return new IIOPAddressImpl( orb, host, port ) ; 235 } 236 237 public static IIOPAddress makeIIOPAddress( InputStream is ) 238 { 239 return new IIOPAddressImpl( is ) ; 240 } 241 } 242