1 /* Tie.java -- 2 Copyright (C) 2002, 2005 Free Software Foundation, Inc. 3 4 This file is part of GNU Classpath. 5 6 GNU Classpath is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 GNU Classpath is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Classpath; see the file COPYING. If not, write to the 18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA. 20 21 Linking this library statically or dynamically with other modules is 22 making a combined work based on this library. Thus, the terms and 23 conditions of the GNU General Public License cover the whole 24 combination. 25 26 As a special exception, the copyright holders of this library give you 27 permission to link this library with independent modules to produce an 28 executable, regardless of the license terms of these independent 29 modules, and to copy and distribute the resulting executable under 30 terms of your choice, provided that you also meet, for each linked 31 independent module, the terms and conditions of the license of that 32 module. An independent module is a module which is not derived from 33 or based on this library. If you modify this library, you may extend 34 this exception to your version of the library, but you are not 35 obligated to do so. If you do not wish to do so, delete this 36 exception statement from your version. */ 37 38 package javax.rmi.CORBA; 39 40 import java.rmi.NoSuchObjectException; 41 import java.rmi.Remote; 42 import org.omg.CORBA.ORB; 43 import org.omg.CORBA.portable.InvokeHandler; 44 45 /** 46 * <p> 47 * A Tie serves as a CORBA Servant or implementation base. It is connected to 48 * the ORB on a server side, providing the implementation of the required 49 * functionality. ORB access this implementation using {@link InvokeHandler} 50 * ._invoke(..). All such calls are finally delegated to the object, returned by 51 * {@link #getTarget()}. 52 * </p> 53 * <p> 54 * Ties are generated from implementations (name pattern *Impl) and have the 55 * name pattern _*Impl_Tie, for instance:<br> 56 * <code>rmic -keep -iiop -poa -always gnu.testlet.java.rmi.Remote.CalculatorImpl</code> 57 * </p> 58 * <p> 59 * Ties should normally be derived from the 60 * {@link org.omg.PortableServer.Servant}. Such ties are generated by 61 * <code>rmic</code> compiler using <code>-poa</code> key. Ties can be also 62 * derived from {@link org.omg.CORBA_2_3.portable.ObjectImpl}. 63 * </p> 64 * 65 * @author Audrius Meskauskas (AudriusA@Bioinformatics.org) 66 */ 67 public interface Tie 68 extends InvokeHandler 69 { 70 /** 71 * Get the invocation target, where all method calls should be delegated. 72 * 73 * @return the object, implementing methods, defined in the interface being 74 * served by this Tie. 75 */ getTarget()76 Remote getTarget(); 77 78 /** 79 * Set the invocation target, where all method calls should be delegated. 80 * 81 * @param target the object, implementing methods, defined in the interface 82 * being served by this Tie. The code, produced by a typical rmic compiler 83 * usually requires the target to be an instance of the implementation from 84 * that the Tie was generated. 85 * 86 * @throws ClassCastException if the passed parameter is not an instance of 87 * the implementation from that the Tie was generated. 88 */ setTarget(Remote target)89 void setTarget(Remote target); 90 91 /** 92 * Get the ORB to that this Tie is connected. 93 * 94 * @see org.omg.PortableServer.Servant#_orb 95 */ orb()96 ORB orb(); 97 98 /** 99 * Connect this Tie to the given ORB. 100 */ orb(ORB orb)101 void orb(ORB orb); 102 103 /** 104 * Get the object that delegates calls to this tie. 105 * 106 * @see org.omg.PortableServer.Servant#_this_object() 107 */ thisObject()108 org.omg.CORBA.Object thisObject(); 109 110 /** 111 * Deactivate this Tie. The tie is normally deactivated using POA mechanisms. 112 * Depending on the POA policies, it may be possible to activate the Tie 113 * again. The ties that are not derived from 114 * {@link org.omg.PortableServer.Servant} deactivate themselves by 115 * {@link ORB#disconnect}. 116 * 117 * @throws NoSuchObjectException if there are no objects served by this Tie, 118 * or if the these objects are already deactivated. 119 * 120 * @see org.omg.PortableServer.POAOperations#deactivate_object 121 */ deactivate()122 void deactivate() 123 throws NoSuchObjectException; 124 125 } 126