specialmethod.java

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

JAVA
107
字号
/* * @(#)SpecialMethod.java	1.20 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 org.omg.CORBA.*;import org.omg.CORBA.portable.*;import org.omg.PortableServer.Servant ;import com.sun.corba.se.internal.core.*;import com.sun.corba.se.internal.POA.MinorCodes;abstract class SpecialMethod {    abstract String getName();    abstract ServerResponse invoke(Servant servant,			           com.sun.corba.se.internal.core.ServerRequest req);    static final SpecialMethod getSpecialMethod(String operation) {	for(int i = 0; i < methods.length; i++)	    if (methods[i].getName().equals(operation))		return methods[i];	return null;    }    static final boolean isSpecialMethod(String operation) {        for(int i = 0; i < methods.length; i++)	    if (methods[i].getName().equals(operation))		return true;	return false;    }        static SpecialMethod[] methods = {	new IsA(),	new GetInterface(),	new NonExistent(),	new NotExistent()    };}class NonExistent extends SpecialMethod {    String getName() {		// _non_existent	return "_non_existent";      }    ServerResponse invoke(Servant servant,			  com.sun.corba.se.internal.core.ServerRequest req) {	boolean result = (servant == null) ? true : false;	ServerResponse resp = req.createResponse(null);	OutputStream os = (OutputStream)resp;	os.write_boolean(result);	return resp;    }}class NotExistent extends NonExistent {    public String getName() {		// _not_existent	return "_not_existent";    }}class IsA extends SpecialMethod  {	// _is_a    String getName() {	return "_is_a";    }    ServerResponse invoke(Servant servant,			  com.sun.corba.se.internal.core.ServerRequest req) {	if (servant == null)	    POAImpl.objectNotExist(MinorCodes.NULL_SERVANT,				   CompletionStatus.COMPLETED_NO);	String[] ids =             servant._all_interfaces(servant._poa(),servant._object_id());	String clientId = ((InputStream)req).read_string();	boolean answer = false;	for(int i = 0; i < ids.length; i++)	    if (ids[i].equals(clientId)) {		answer = true;	    }	    	ServerResponse resp = req.createResponse(null);	OutputStream os = (OutputStream)resp;	os.write_boolean(answer);	return resp;    }}class GetInterface extends SpecialMethod  {	// _get_interface    String getName() {	return "_interface";    }    ServerResponse invoke(Servant servant,			  com.sun.corba.se.internal.core.ServerRequest req) {	if (servant == null)	    POAImpl.objectNotExist(MinorCodes.NULL_SERVANT,				   CompletionStatus.COMPLETED_NO);	throw new	    NO_IMPLEMENT(com.sun.corba.se.internal.orbutil.MinorCodes.GETINTERFACE_NOT_IMPLEMENTED,			 CompletionStatus.COMPLETED_NO);    }}

⌨️ 快捷键说明

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