1 /*** 2 * Fractal API 3 * Copyright (C) 2001-2002 France Telecom, INRIA 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 * 19 * Contact: fractal@objectweb.org 20 * 21 * Authors: Eric Bruneton, Thierry Coupaye, Pascal Dechamboux, Romain Lenglet, 22 * Philippe Merle, Jean-Bernard Stefani. 23 */ 24 25 package org.objectweb.fractal.api.type; 26 27 import org.objectweb.fractal.api.Type; 28 import org.objectweb.fractal.api.NoSuchInterfaceException; 29 30 /** 31 * A component type. A component type is just a collection of component 32 * interface types, which describes the interfaces that components of this type 33 * must or may have at runtime. 34 */ 35 36 public interface ComponentType extends Type { 37 38 /** 39 * Returns the types of the interfaces of components of this type. 40 * 41 * @return the types of the interfaces that components of this type must or 42 * may have at runtime. 43 */ 44 45 InterfaceType[] getFcInterfaceTypes (); 46 47 /** 48 * Returns an interface type of this component type from its name. This method 49 * is not strictly necessary, as it can be implemented by using the {@link 50 * #getFcInterfaceTypes getFcInterfaceTypes} method. But it is convenient and 51 * can be implemented more efficiently than with the previous method. This is 52 * why it is specified here. 53 * 54 * @param name the name of one of the interface types returned by {@link 55 * #getFcInterfaceTypes getFcInterfaceTypes} (see {@link 56 * InterfaceType#getFcItfName getFcItfName}). 57 * @return the interface type of this component type whose name is equal to 58 * the given name (see {@link InterfaceType#getFcItfName getFcItfName}). 59 * @throws NoSuchInterfaceException if there is no such interface type. 60 */ 61 62 InterfaceType getFcInterfaceType (String name) 63 throws NoSuchInterfaceException; 64 } 65