iiopprofile.java

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

JAVA
204
字号
/* * @(#)IIOPProfile.java	1.28 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *///Source file: J:/ws/serveractivation/src/share/classes/com.sun.corba.se.internal.ior/IIOPProfile.javapackage com.sun.corba.se.internal.ior;import java.util.List ;import java.util.Iterator ;import com.sun.corba.se.internal.ior.IdEncapsulationBase ;import com.sun.corba.se.internal.ior.TaggedProfile ;import com.sun.corba.se.internal.ior.ObjectId ;import com.sun.corba.se.internal.ior.IIOPProfileTemplate ;import com.sun.corba.se.internal.ior.IIOPAddressImpl ;import com.sun.corba.se.internal.ior.ObjectKey ;import com.sun.corba.se.internal.ior.ObjectKeyFactory ;import com.sun.corba.se.internal.ior.AlternateIIOPAddressComponent ;import com.sun.corba.se.internal.ior.TaggedComponentFactoryFinder ;import org.omg.CORBA.BAD_PARAM;import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS ;import org.omg.IOP.TAG_INTERNET_IOP;import org.omg.CORBA.ORB ;import org.omg.CORBA.CompletionStatus;import org.omg.CORBA_2_3.portable.OutputStream ;import org.omg.CORBA_2_3.portable.InputStream ;import com.sun.corba.se.internal.iiop.CDRInputStream ;import com.sun.corba.se.internal.corba.EncapsInputStream ;import com.sun.corba.se.internal.corba.EncapsOutputStream ;import com.sun.corba.se.internal.core.GIOPVersion ;import com.sun.corba.se.internal.orbutil.MinorCodes;/** * @author */public class IIOPProfile extends IdEncapsulationBase    implements TaggedProfile{    private ObjectId id;    private final IIOPProfileTemplate template;    public boolean equals( Object obj )    {	if (obj == null)	    return false ;	if (!(obj instanceof IIOPProfile))	    return false ;	IIOPProfile other = (IIOPProfile)obj ;	return id.equals( other.id ) && template.equals( other.template ) ;    }    public ObjectId getObjectId()    {	return id ;    }    public IIOPProfileTemplate getTemplate()    {	return template ;    }    public IIOPProfile( ObjectId id, IIOPProfileTemplate template )    {	this.id = id ;	this.template = template ;    }    public IIOPProfile( InputStream is )    {	InputStream istr = IdEncapsulationBase.getEncapsulationStream( is ) ;	// First, read all of the IIOP IOR data	byte major = istr.read_octet() ;	byte minor = istr.read_octet() ;	IIOPAddress primary = new IIOPAddressImpl( istr ) ;	byte[] key = IdEncapsulationBase.readOctets( istr ) ;	ORB orb = ((CDRInputStream)is).orb() ;	ObjectKey okey = ObjectKeyFactory.get().create( orb, key ) ;	id = okey.getId() ;	template = new IIOPProfileTemplate( major, minor, primary,	    okey.getTemplate() ) ;	// Handle any tagged components (if applicable)	if (minor > 0)	    template.readIdEncapsulationSequence(		TaggedComponentFactoryFinder.getFinder(), istr ) ;    }    public IIOPProfile(org.omg.CORBA.ORB orb,            org.omg.IOP.TaggedProfile profile) {        if (profile == null ||                profile.tag != TAG_INTERNET_IOP.value ||                profile.profile_data == null) {            throw new BAD_PARAM(MinorCodes.INVALID_TAGGED_PROFILE,				CompletionStatus.COMPLETED_NO);        }        EncapsInputStream istr = new EncapsInputStream(orb,                                                       profile.profile_data,                                                       profile.profile_data.length);	istr.consumeEndian();        // First, read all of the IIOP IOR data	byte major = istr.read_octet() ;	byte minor = istr.read_octet() ;	IIOPAddress primary = new IIOPAddressImpl(istr);	byte[] key = IdEncapsulationBase.readOctets(istr);	ObjectKey okey = ObjectKeyFactory.get().create(orb, key);	id = okey.getId();	template = new IIOPProfileTemplate(major, minor, primary,	                                   okey.getTemplate());	// Handle any tagged components (if applicable)	if (minor > 0) {	    template.readIdEncapsulationSequence(		TaggedComponentFactoryFinder.getFinder(), istr);        }    }    /**     * @param arg0     * @return void     * @exception     * @author     * @roseuid 39135D2D02EC     */    public void writeContents(OutputStream os)    {	template.write( id, os ) ;    }    /**     * @return int     * @exception     * @author     * @roseuid 39135D2E00C7     */    public int getId()    {	return template.getId() ;    }    public boolean isEquivalent( IIOPProfile prof )    {	return id.equals( prof.id ) && template.isEquivalent( prof.template ) ;    }    public ObjectKey getObjectKey()    {	ObjectKeyTemplate oktemp = template.getObjectKeyTemplate() ;	ObjectKey result = new ObjectKey( oktemp, id ) ;	return result ;    }    public org.omg.IOP.TaggedProfile getIOPProfile( ORB orb )    {	EncapsOutputStream os = new EncapsOutputStream( orb ) ;	os.write_long( getId() ) ;	write( os ) ;	InputStream is = (InputStream)(os.create_input_stream()) ;	return org.omg.IOP.TaggedProfileHelper.read( is ) ;    }    /**     * @return org.omg.IOP.TaggedComponent[]     * @exception     * @author     * @roseuid 3980B6A4037F     */    public org.omg.IOP.TaggedComponent[] getIOPComponents(	ORB orb, int id )    {	int count = 0 ;	Iterator iter = template.iteratorById( id ) ;	while (iter.hasNext()) {	    iter.next() ;	    count++ ;	}	org.omg.IOP.TaggedComponent[] result = new	    org.omg.IOP.TaggedComponent[count] ;	int index = 0 ;	iter = template.iteratorById( id ) ;	while (iter.hasNext()) {	    TaggedComponent comp = (TaggedComponent)(iter.next()) ;	    result[index++] = comp.getIOPComponent( orb ) ;	}	return result ;    }}

⌨️ 快捷键说明

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