policies.java

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

JAVA
214
字号
/* * @(#)Policies.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.POA;import java.util.HashMap ;import java.util.Iterator ;import com.sun.corba.se.internal.orbutil.ORBConstants ;import org.omg.CORBA.*;import org.omg.PortableServer.*;import org.omg.PortableServer.POAPackage.*;public final class Policies {    private boolean cachingServantAllowed = false ;    private int threadModel;    private int lifespan;    private int idUniqueness;    private int idAssignment;    private int retention;    private int requestProcessing;    private int implicitActivation;    private HashMap policies = new HashMap() ;	// Maps Integer(policy type) to Policy    public static final Policies defaultPolicies 	= new Policies(ThreadPolicyValue._ORB_CTRL_MODEL,		       LifespanPolicyValue._TRANSIENT,		       IdUniquenessPolicyValue._UNIQUE_ID,		       IdAssignmentPolicyValue._SYSTEM_ID,		       ServantRetentionPolicyValue._RETAIN,		       RequestProcessingPolicyValue._USE_ACTIVE_OBJECT_MAP_ONLY,		       ImplicitActivationPolicyValue._NO_IMPLICIT_ACTIVATION);    public static final Policies rootPOAPolicies        = new Policies(ThreadPolicyValue._ORB_CTRL_MODEL,                       LifespanPolicyValue._TRANSIENT,                       IdUniquenessPolicyValue._UNIQUE_ID,                       IdAssignmentPolicyValue._SYSTEM_ID,                       ServantRetentionPolicyValue._RETAIN,                       RequestProcessingPolicyValue._USE_ACTIVE_OBJECT_MAP_ONLY,                                              ImplicitActivationPolicyValue._IMPLICIT_ACTIVATION);					      private Policies(int threadModel, int lifespan, int idUniqueness, int idAssignment,		     int retention, int requestProcessing, int implicitActivation) {	this.threadModel        = threadModel;	this.lifespan           = lifespan;	this.idUniqueness       = idUniqueness;	this.idAssignment       = idAssignment;	this.retention          = retention;	this.requestProcessing  = requestProcessing;	this.implicitActivation = implicitActivation;    }    Policies() {	this.threadModel        = defaultPolicies.threadModel;	this.lifespan           = defaultPolicies.lifespan;	this.idUniqueness       = defaultPolicies.idUniqueness;	this.idAssignment       = defaultPolicies.idAssignment;	this.retention          = defaultPolicies.retention;	this.requestProcessing  = defaultPolicies.requestProcessing;	this.implicitActivation = defaultPolicies.implicitActivation;    }    Policies(int bitmap) {	this.threadModel        = (bitmap & 0x0080) >> 7;	this.lifespan           = (bitmap & 0x0040) >> 6;	this.idUniqueness       = (bitmap & 0x0020) >> 5;	this.idAssignment       = (bitmap & 0x0010) >> 4;	this.implicitActivation = (bitmap & 0x0008) >> 3;	this.retention          = (bitmap & 0x0004) >> 2;	this.requestProcessing  = bitmap & 0x0003;    }    public String toString() {	StringBuffer buffer = new StringBuffer();	buffer.append( "Policies[" ) ;	boolean first = true ;	Iterator iter = policies.values().iterator() ;	while (iter.hasNext()) {	    if (first)		first = false ;	    else		buffer.append( "," ) ;	    buffer.append( iter.next().toString() ) ;	} 	buffer.append( "]" ) ;	return buffer.toString() ;    }    Policies(Policy[] policies) throws InvalidPolicy {	// Make sure the defaults are set according to the POA spec	this();				if ( policies == null )	    return;	// XXX: Check for duplicates ?	for(short i = 0; i < policies.length; i++) {	    Policy policy = policies[i];	    // Save the policy in the HashMap to support POA.get_effective_policy	    Integer key = new Integer( policy.policy_type() ) ;	    this.policies.put( key, policy ) ;	    // Set up the local copy of standard POA policy information	    if (policy instanceof ThreadPolicy) {		threadModel = ((ThreadPolicy) policy).value().value();	    } else if (policy instanceof LifespanPolicy) {		lifespan = ((LifespanPolicy) policy).value().value();	    } else if (policy instanceof IdUniquenessPolicy) {		idUniqueness = ((IdUniquenessPolicy) policy).value().value();	    } else if (policy instanceof IdAssignmentPolicy) {		idAssignment = ((IdAssignmentPolicy) policy).value().value();	    } else if (policy instanceof ServantRetentionPolicy) {		retention = ((ServantRetentionPolicy) policy).value().value();	    } else if (policy instanceof RequestProcessingPolicy) {		requestProcessing = ((RequestProcessingPolicy) policy).value().value();	    } else if (policy instanceof ImplicitActivationPolicy) {		implicitActivation = ((ImplicitActivationPolicy) policy).value().value();	    } else if (policy.policy_type() == ORBConstants.SERVANT_CACHING_POLICY)		cachingServantAllowed = true ;	}        short firstIndexOfBadCombination =             POAPolicyCombinationValidator.checkForInvalidPolicyCombinations(policies);        if ( !( firstIndexOfBadCombination <= -1 ) )            invalidPolicy(firstIndexOfBadCombination);    }    public Policy get_effective_policy( int type )    {	Integer key = new Integer( type ) ;	Policy result = (Policy)(policies.get(key)) ;	return result ;    }    public final int getBitMap() {	return (threadModel << 7 | lifespan << 6 | idUniqueness << 5	        | idAssignment << 4 | implicitActivation << 3	        | retention << 2 | requestProcessing);    }    public final boolean servantCachingAllowed()    {	return cachingServantAllowed ;    }    /* Thread Policies */    public final boolean isOrbControlledThreads() {	return threadModel == ThreadPolicyValue._ORB_CTRL_MODEL;    }    public final boolean isSingleThreaded() {	return threadModel == ThreadPolicyValue._SINGLE_THREAD_MODEL;    }    /* Lifespan */    public final boolean isTransient() {	return lifespan == LifespanPolicyValue._TRANSIENT;    }    public final boolean isPersistent() {	return lifespan == LifespanPolicyValue._PERSISTENT;    }    /* ID Uniqueness */    public final boolean isUniqueIds() {	return idUniqueness == IdUniquenessPolicyValue._UNIQUE_ID;    }    public final boolean isMultipleIds() {	return idUniqueness == IdUniquenessPolicyValue._MULTIPLE_ID;    }    /* ID Assignment */    public final boolean isUserAssignedIds() {	return idAssignment == IdAssignmentPolicyValue._USER_ID;    }    public final boolean isSystemAssignedIds() {	return idAssignment == IdAssignmentPolicyValue._SYSTEM_ID;    }    /* Servant Rentention */    public final boolean retainServants() {	return retention == ServantRetentionPolicyValue._RETAIN;    }    /* Request Processing */    public final boolean useActiveMapOnly() {	return	    requestProcessing == RequestProcessingPolicyValue._USE_ACTIVE_OBJECT_MAP_ONLY;    }    public final boolean useDefaultServant() {	return	    requestProcessing == RequestProcessingPolicyValue._USE_DEFAULT_SERVANT;    }    public final boolean useServantManager() {	return	    requestProcessing == RequestProcessingPolicyValue._USE_SERVANT_MANAGER;    }    /* Implicit Activation */    public final boolean isImplicitlyActivated() {	return implicitActivation == ImplicitActivationPolicyValue._IMPLICIT_ACTIVATION;    }    private void invalidPolicy(short index) throws InvalidPolicy {	throw new InvalidPolicy(index);    }}

⌨️ 快捷键说明

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