iorinfoimpl.java

来自「java jdk 1.4的源码」· Java 代码 · 共 182 行

JAVA
182
字号
/* * @(#)IORInfoImpl.java	1.21 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.Interceptors;import org.omg.PortableInterceptor.IORInfo;import com.sun.corba.se.interceptor.IORInfoExt;import com.sun.corba.se.interceptor.UnknownType;import com.sun.corba.se.internal.POA.POAImpl;import com.sun.corba.se.internal.ior.IORTemplate;import com.sun.corba.se.internal.ior.TaggedProfileTemplate;import com.sun.corba.se.internal.ior.TaggedComponentFactoryFinder;import org.omg.IOP.TaggedComponent;import org.omg.CORBA.BAD_PARAM;import org.omg.CORBA.CompletionStatus;import org.omg.CORBA.INV_POLICY;import org.omg.CORBA.NO_IMPLEMENT;import org.omg.CORBA.Policy;import org.omg.CORBA.LocalObject;import org.omg.CORBA.ORB ;import java.util.*;/** * IORInfoImpl is the implementation of the IORInfo class, as described * in orbos/99-12-02, section 7.   */public final class IORInfoImpl     extends LocalObject     implements IORInfo, IORInfoExt{        // The ORB    private ORB orb;        // The POAImpl associated with this IORInfo object.    private POAImpl poaImpl;    /**     * Creates a new IORInfo implementation.  This info object will establish     * tagged components with the template for the provided IOR Template.     */    IORInfoImpl( ORB orb, POAImpl poaImpl ) {        this.orb = orb;	this.poaImpl = poaImpl;    }    /**     * An ORB service implementation may determine what server side policy      * of a particular type is in effect for an IOR being constructed by      * calling the get_effective_policy operation.  When the IOR being      * constructed is for an object implemented using a POA, all Policy      * objects passed to the PortableServer::POA::create_POA call that      * created that POA are accessible via get_effective_policy.     * <p>     * If a policy for the given type is not known to the ORB, then this      * operation will raise INV_POLICY with a standard minor code of 2.     *     * @param type The CORBA::PolicyType specifying the type of policy to      *   return.     * @return The effective CORBA::Policy object of the requested type.     *   If the given policy type is known, but no policy of that tpye is      *   in effect, then this operation will return a nil object reference.     */    public Policy get_effective_policy (int type) {	return poaImpl.get_effective_policy( type );    }    /**     * A portable ORB service implementation calls this method from its      * implementation of establish_components to add a tagged component to      * the set which will be included when constructing IORs.  The      * components in this set will be included in all profiles.     * <p>     * Any number of components may exist with the same component ID.     *     * @param tagged_component The IOP::TaggedComponent to add     */    public void add_ior_component (TaggedComponent tagged_component) {	if( tagged_component == null ) nullParam();        addIORComponentToProfileInternal( tagged_component, 					  poaImpl.getIORTemplate().iterator());    }    /**     * A portable ORB service implementation calls this method from its      * implementation of establish_components to add a tagged component to      * the set which will be included when constructing IORs.  The      * components in this set will be included in the specified profile.     * <p>     * Any number of components may exist with the same component ID.     * <p>     * If the given profile ID does not define a known profile or it is      * impossible to add components to thgat profile, BAD_PARAM is raised      * with a minor code of TBD_BP + 3.     *     * @param tagged_component The IOP::TaggedComponent to add.     * @param profile_id The IOP::ProfileId tof the profile to which this      *     component will be added.     */    public void add_ior_component_to_profile (         TaggedComponent tagged_component, int profile_id )     {	if( tagged_component == null ) nullParam();        addIORComponentToProfileInternal( 	    tagged_component, poaImpl.getIORTemplate().iteratorById( 	    profile_id ) );    }    /**     * @param type The type of the server port     *     (see connection.ORBSocketFactory for discussion).     * @return The listen port number for that type.     * @throws UnknownType if no port of the given type is found.     */    public int getServerPort(String type)	throws	    UnknownType    {	int port = ((com.sun.corba.se.internal.Interceptors.PIORB)orb)	           .getServerPort(type);	if (port == -1) {	    throw new UnknownType();	}	return port;    }        /**     * Internal utility method to add an IOR component to the set of profiles     * present in the iterator.     */    private void addIORComponentToProfileInternal(         TaggedComponent tagged_component, Iterator iterator )    {        // Convert the given IOP::TaggedComponent into the appropriate        // type for the TaggedProfileTemplate        TaggedComponentFactoryFinder finder =             TaggedComponentFactoryFinder.getFinder();        Object newTaggedComponent = finder.create( orb, tagged_component );                // Iterate through TaggedProfileTemplates and add the given tagged        // component to the appropriate one(s).	boolean found = false;        while( iterator.hasNext() ) {	    found = true;            TaggedProfileTemplate taggedProfileTemplate =                 (TaggedProfileTemplate)iterator.next();	    taggedProfileTemplate.add( newTaggedComponent );        }	// If no profile was found with the given id, throw a BAD_PARAM:	// (See orbos/00-08-06, section 21.5.3.3.)	if( !found ) {	    throw new BAD_PARAM( 		"Profile ID does not define a known profile or it is " +		"impossible to add components to that profile.", 		com.sun.corba.se.internal.Interceptors.MinorCodes.		INVALID_PROFILE_ID, CompletionStatus.COMPLETED_NO );	}    }        /**     * Called when an invalid null parameter was passed.  Throws a     * BAD_PARAM with a minor code of 1     */    private void nullParam()         throws BAD_PARAM     {        throw new BAD_PARAM(             com.sun.corba.se.internal.orbutil.MinorCodes.NULL_PARAM, 	    CompletionStatus.COMPLETED_NO );    }}

⌨️ 快捷键说明

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