/* */ private boolean isLocal() /* */ { /* 102 */ boolean bool = false; /* 103 */ Delegate localDelegate = StubAdapter.getDelegate(this.stub); /* */ /* 105 */ if ((localDelegate instanceof CorbaClientDelegate)) { /* 106 */ CorbaClientDelegate localCorbaClientDelegate = (CorbaClientDelegate) localDelegate; /* 107 */ ContactInfoList localContactInfoList = localCorbaClientDelegate.getContactInfoList(); /* 108 */ if ((localContactInfoList instanceof CorbaContactInfoList)) { /* 109 */ CorbaContactInfoList localCorbaContactInfoList = (CorbaContactInfoList) localContactInfoList; /* 110 */ LocalClientRequestDispatcher localLocalClientRequestDispatcher = localCorbaContactInfoList.getLocalClientRequestDispatcher(); /* */ /* 112 */ bool = localLocalClientRequestDispatcher.useLocalInvocation(null); /* */ } /* */ } /* */ /* 116 */ return bool; /* */ }
/** * This method obtains an IOR from a CORBA object reference. It will return null if obj is a local * object, a null object, or an object implemented by a different ORB. It will throw BAD_OPERATION * if obj is an unconnected RMI-IIOP object. * * @return IOR the IOR that represents this objref. This will never be null. * @exception BAD_OPERATION (from oi._get_delegate) if obj is a normal objref, but does not have a * delegate set. * @exception BAD_PARAM if obj is a local object, or else was created by a foreign ORB. */ public static IOR getIOR(org.omg.CORBA.Object obj) { if (obj == null) throw wrapper.nullObjectReference(); IOR ior = null; if (StubAdapter.isStub(obj)) { org.omg.CORBA.portable.Delegate del = StubAdapter.getDelegate(obj); if (del instanceof CorbaClientDelegate) { CorbaClientDelegate cdel = (CorbaClientDelegate) del; ContactInfoList cil = cdel.getContactInfoList(); if (cil instanceof CorbaContactInfoList) { CorbaContactInfoList ccil = (CorbaContactInfoList) cil; ior = ccil.getTargetIOR(); if (ior == null) throw wrapper.nullIor(); return ior; } else { // This is our code, but the ContactInfoList is not a // CorbaContactInfoList. This should not happen, because // we are in the CORBA application of the DCSA framework. // This is a coding error, and thus an INTERNAL exception // should be thrown. // XXX needs minor code throw new INTERNAL(); } } // obj is implemented by a foreign ORB, because the Delegate is not a // ClientDelegate. // XXX this case could be handled by marshalling and // unmarshalling. However, object_to_string cannot be used // here, as it is implemented with getIOR. Note that this // will require access to an ORB, so that we can create streams // as needed. The ORB is available simply as io._orb(). throw wrapper.objrefFromForeignOrb(); } else throw wrapper.localObjectNotAllowed(); }
/** * The <tt>isLocal</tt> method has the same semantics as the ObjectImpl._is_local method, except * that it can throw a RemoteException. (no it doesn't but the spec says it should.) * * <p>The <tt>_is_local()</tt> method is provided so that stubs may determine if a particular * object is implemented by a local servant and hence local invocation APIs may be used. * * @param stub the stub to test. * @return The <tt>_is_local()</tt> method returns true if the servant incarnating the object is * located in the same process as the stub and they both share the same ORB instance. The * <tt>_is_local()</tt> method returns false otherwise. The default behavior of * <tt>_is_local()</tt> is to return false. * @throws RemoteException The Java to IDL specification does to specify the conditions that cause * a RemoteException to be thrown. */ public boolean isLocal(javax.rmi.CORBA.Stub stub) throws RemoteException { boolean result = false; try { org.omg.CORBA.portable.Delegate delegate = stub._get_delegate(); if (delegate instanceof CorbaClientDelegate) { // For the Sun ORB CorbaClientDelegate cdel = (CorbaClientDelegate) delegate; ContactInfoList cil = cdel.getContactInfoList(); if (cil instanceof CorbaContactInfoList) { CorbaContactInfoList ccil = (CorbaContactInfoList) cil; LocalClientRequestDispatcher lcs = ccil.getLocalClientRequestDispatcher(); result = lcs.useLocalInvocation(null); } } else { // For a non-Sun ORB result = delegate.is_local(stub); } } catch (SystemException e) { throw javax.rmi.CORBA.Util.mapSystemException(e); } return result; }