- /*
- * @(#)ORBVersionFactory.java 1.13 04/03/01
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.corba.se.spi.orb ;
-
- import com.sun.corba.se.spi.orb.ORBVersion ;
- import com.sun.corba.se.impl.orb.ORBVersionImpl ;
- import org.omg.CORBA.portable.InputStream ;
- import org.omg.CORBA.INTERNAL ;
-
- public class ORBVersionFactory {
- private ORBVersionFactory() {} ;
-
- public static ORBVersion getFOREIGN()
- {
- return ORBVersionImpl.FOREIGN ;
- }
-
- public static ORBVersion getOLD()
- {
- return ORBVersionImpl.OLD ;
- }
-
- public static ORBVersion getNEW()
- {
- return ORBVersionImpl.NEW ;
- }
-
- public static ORBVersion getJDK1_3_1_01()
- {
- return ORBVersionImpl.JDK1_3_1_01 ;
- }
-
- public static ORBVersion getNEWER()
- {
- return ORBVersionImpl.NEWER ;
- }
-
- public static ORBVersion getPEORB()
- {
- return ORBVersionImpl.PEORB ;
- }
-
- /** Return the current version of this ORB
- */
- public static ORBVersion getORBVersion()
- {
- return ORBVersionImpl.PEORB ;
- }
-
- public static ORBVersion create( InputStream is )
- {
- byte value = is.read_octet() ;
- return byteToVersion( value ) ;
- }
-
- private static ORBVersion byteToVersion( byte value )
- {
- /* Throwing an exception here would cause this version to be
- * incompatible with future versions of the ORB, to the point
- * that this version could
- * not even unmarshal objrefs from a newer version that uses
- * extended versioning. Therefore, we will simply treat all
- * unknown versions as the latest version.
- if (value < 0)
- throw new INTERNAL() ;
- */
-
- /**
- * Update: If we treat all unknown versions as the latest version
- * then when we send an IOR with a PEORB version to an ORB that
- * doesn't know the PEORB version it will treat it as whatever
- * its idea of the latest version is. Then, if that IOR is
- * sent back to the server and compared with the original
- * the equality check will fail because the versions will be
- * different.
- *
- * Instead, just capture the version bytes.
- */
-
- switch (value) {
- case ORBVersion.FOREIGN : return ORBVersionImpl.FOREIGN ;
- case ORBVersion.OLD : return ORBVersionImpl.OLD ;
- case ORBVersion.NEW : return ORBVersionImpl.NEW ;
- case ORBVersion.JDK1_3_1_01: return ORBVersionImpl.JDK1_3_1_01 ;
- case ORBVersion.NEWER : return ORBVersionImpl.NEWER ;
- case ORBVersion.PEORB : return ORBVersionImpl.PEORB ;
- default : return new ORBVersionImpl(value);
- }
- }
- }