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 + -
显示快捷键?