/***** Copyright (c) 1999-2000 Object Management Group. Unlimited rights to
duplicate and use this code are hereby granted provided that this
copyright notice is included.
*****/
package org.omg.PortableServer;
abstract public class Servant {
final public org.omg.CORBA.Object _this_object() {
return _get_delegate().this_object(this);
}
final public org.omg.CORBA.Object _this_object(org.omg.CORBA.ORB orb) {
try {
((org.omg.CORBA_2_3.ORB)orb).set_delegate(this);
}
catch (ClassCastException e) {
throw new org.omg.CORBA.BAD_PARAM(
"POA Servant requires an instanceof org.omg.CORBA_2_3.ORB");
}
return _this_object();
}
final public org.omg.CORBA.ORB _orb() {
return _get_delegate().orb(this);
}
final public POA _poa() {
return _get_delegate().poa(this);
}
final public byte[] _object_id() {
return _get_delegate().object_id(this);
}
public POA _default_POA() {
return _get_delegate().default_POA(this);
}
public boolean _is_a(String repository_id) {
return _get_delegate().is_a(this, repository_id);
}
public boolean _non_existent() {
return _get_delegate().non_existent(this);
}
public org.omg.CORBA.Object _get_component() {
return _get_delegate().get_component(this);
}
/** @deprecated Deprecated by CORBA 2.4
*/
public org.omg.CORBA.InterfaceDef _get_interface() {
return _get_delegate().get_interface(this);
}
public org.omg.CORBA.Object _get_interface_def()
{
// First try to call the delegate implementation class's
// "Object get_interface_def(..)" method (will work for ORBs
// whose delegates implement this method).
// Else call the delegate implementation class's
// "InterfaceDef get_interface(..)" method using reflection
// (will work for ORBs that were built using an older version
// of the Delegate interface with a get_interface method
// but not a get_interface_def method).
org.omg.PortableServer.portable.Delegate delegate = _get_delegate();
try {
// If the ORB's delegate class does not implement
// "Object get_interface_def(..)", this will throw
// an AbstractMethodError.
return delegate.get_interface_def(this);
} catch( AbstractMethodError aex ) {
// Call "InterfaceDef get_interface(..)" method using reflection.
try {
Class[] argc = { org.omg.PortableServer.Servant.class };
java.lang.reflect.Method meth =
delegate.getClass().getMethod("get_interface", argc);
Object[] argx = { this };
return (org.omg.CORBA.Object)meth.invoke(delegate, argx);
} catch( java.lang.reflect.InvocationTargetException exs ) {
Throwable t = exs.getTargetException();
if (t instanceof Error) {
throw (Error) t;
} else if (t instanceof RuntimeException) {
throw (RuntimeException) t;
} else {
throw new org.omg.CORBA.NO_IMPLEMENT();
}
} catch( RuntimeException rex ) {
throw rex;
} catch( Exception exr ) {
throw new org.omg.CORBA.NO_IMPLEMENT();
}
}
}
public String _repository_id() {
return _get_delegate().repository_id( this ) ;
}
abstract public String[] _all_interfaces(POA poa, byte[] objectID);
private transient org.omg.PortableServer.portable.Delegate _delegate =null;
final public org.omg.PortableServer.portable.Delegate _get_delegate() {
if (_delegate == null) {
throw new org.omg.CORBA.BAD_INV_ORDER(
"The Servant has not been associated with an ORBinstance");
}
return _delegate;
}
final public void _set_delegate(
org.omg.PortableServer.portable.Delegate delegate) {
_delegate = delegate;
}
}