⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stubadapter.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)StubAdapter.java	1.5 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.spi.presentation.rmi ;import javax.rmi.CORBA.Tie ;import org.omg.CORBA.portable.Delegate ;import org.omg.CORBA.portable.ObjectImpl ;import org.omg.CORBA.portable.OutputStream ;import org.omg.PortableServer.POA ;import org.omg.PortableServer.POAManager ;import org.omg.PortableServer.Servant ;import org.omg.PortableServer.POAPackage.WrongPolicy ;import org.omg.PortableServer.POAPackage.ServantNotActive ;import org.omg.PortableServer.POAManagerPackage.AdapterInactive ;import org.omg.CORBA.ORB ;import com.sun.corba.se.spi.logging.CORBALogDomains ;import com.sun.corba.se.impl.logging.ORBUtilSystemException ;// XXX Getting rid of this requires introducing an ObjectAdapterManager abstraction// as an interface into the OA framework. import com.sun.corba.se.impl.oa.poa.POAManagerImpl ;/** Provide access to stub delegate and type id information * independent of the stub type.  This class exists because * ObjectImpl does not have an interface for the 3 delegate and * type id methods, so a DynamicStub has a different type. * We cannot simply change ObjectImpl as it is a standard API. * We also cannot change the code generation of Stubs, as that * is also standard.  Hence I am left with this ugly class. */ public abstract class StubAdapter {    private StubAdapter() {}    private static ORBUtilSystemException wrapper = 	ORBUtilSystemException.get( CORBALogDomains.RPC_PRESENTATION ) ;    public static boolean isStubClass( Class cls )    {	return (ObjectImpl.class.isAssignableFrom( cls )) ||	    (DynamicStub.class.isAssignableFrom( cls )) ;    }    public static boolean isStub( Object stub )    {	return (stub instanceof DynamicStub) ||	    (stub instanceof ObjectImpl) ;    }    public static void setDelegate( Object stub, Delegate delegate )     {	if (stub instanceof DynamicStub)	    ((DynamicStub)stub).setDelegate( delegate ) ;	else if (stub instanceof ObjectImpl)	    ((ObjectImpl)stub)._set_delegate( delegate ) ;	else	    throw wrapper.setDelegateRequiresStub() ;     }    /** Use implicit activation to get an object reference for the servant.     */    public static org.omg.CORBA.Object activateServant( Servant servant )     {	POA poa = servant._default_POA() ;	org.omg.CORBA.Object ref = null ;	try {	    ref = poa.servant_to_reference( servant ) ;	} catch (ServantNotActive sna) {	    throw wrapper.getDelegateServantNotActive( sna ) ;	} catch (WrongPolicy wp) {	    throw wrapper.getDelegateWrongPolicy( wp ) ;	}	// Make sure that the POAManager is activated if no other	// POAManager state management has taken place.	POAManager mgr = poa.the_POAManager() ;	if (mgr instanceof POAManagerImpl) {	    POAManagerImpl mgrImpl = (POAManagerImpl)mgr ;	    mgrImpl.implicitActivation() ;	}	return ref ;    }    /** Given any Tie, return the corresponding object refernce, activating     * the Servant if necessary.     */    public static org.omg.CORBA.Object activateTie( Tie tie )    {	/** Any implementation of Tie should be either a Servant or an ObjectImpl,	 * depending on which style of code generation is used.  rmic -iiop by	 * default results in an ObjectImpl-based Tie, while rmic -iiop -poa	 * results in a Servant-based Tie.  Dynamic RMI-IIOP also uses Servant-based	 * Ties (see impl.presentation.rmi.ReflectiveTie).	 */	if (tie instanceof ObjectImpl) {	    return tie.thisObject() ;	} else if (tie instanceof Servant) {	    Servant servant = (Servant)tie ;	    return activateServant( servant ) ;	} else {	    throw wrapper.badActivateTieCall() ;	}    }    /** This also gets the delegate from a Servant by     * using Servant._this_object()     */    public static Delegate getDelegate( Object stub )     {	if (stub instanceof DynamicStub)	    return ((DynamicStub)stub).getDelegate() ;	else if (stub instanceof ObjectImpl)	    return ((ObjectImpl)stub)._get_delegate() ;	else if (stub instanceof Tie) {	    Tie tie = (Tie)stub ;	    org.omg.CORBA.Object ref = activateTie( tie ) ;	    return getDelegate( ref ) ;	} else	    throw wrapper.getDelegateRequiresStub() ;     }        public static ORB getORB( Object stub )     {	if (stub instanceof DynamicStub)	    return ((DynamicStub)stub).getORB() ;	else if (stub instanceof ObjectImpl)	    return (ORB)((ObjectImpl)stub)._orb() ;	else	    throw wrapper.getOrbRequiresStub() ;     }    public static String[] getTypeIds( Object stub )    {	if (stub instanceof DynamicStub)	    return ((DynamicStub)stub).getTypeIds() ;	else if (stub instanceof ObjectImpl)	    return ((ObjectImpl)stub)._ids() ;	else	    throw wrapper.getTypeIdsRequiresStub() ;     }    public static void connect( Object stub, 	ORB orb ) throws java.rmi.RemoteException     {	if (stub instanceof DynamicStub)	    ((DynamicStub)stub).connect( 		(com.sun.corba.se.spi.orb.ORB)orb ) ;	else if (stub instanceof javax.rmi.CORBA.Stub) 	    ((javax.rmi.CORBA.Stub)stub).connect( orb ) ;	else if (stub instanceof ObjectImpl)	    orb.connect( (org.omg.CORBA.Object)stub ) ;	else	    throw wrapper.connectRequiresStub() ;     }    public static boolean isLocal( Object stub )    {	if (stub instanceof DynamicStub)	    return ((DynamicStub)stub).isLocal() ;	else if (stub instanceof ObjectImpl)	    return ((ObjectImpl)stub)._is_local() ;	else	    throw wrapper.isLocalRequiresStub() ;     }    public static OutputStream request( Object stub, 	String operation, boolean responseExpected )     {	if (stub instanceof DynamicStub)	    return ((DynamicStub)stub).request( operation,		responseExpected ) ;	else if (stub instanceof ObjectImpl)	    return ((ObjectImpl)stub)._request( operation,		responseExpected ) ;	else	    throw wrapper.requestRequiresStub() ;     }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -