View Javadoc

1   /*
2    * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3    * the spring framework, http://el4j.sf.net
4    * Copyright (C) 2005 by ELCA Informatique SA, Av. de la Harpe 22-24,
5    * 1000 Lausanne, Switzerland, http://www.elca.ch
6    *
7    * EL4J is published under the GNU Lesser General Public License (LGPL)
8    * Version 2.1. See http://www.gnu.org/licenses/
9    *
10   * This program 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
13   * GNU Lesser General Public License for more details.
14   *
15   * For alternative licensing, please contact info@elca.ch
16   */
17  
18  package ch.elca.el4j.util.interfaceenrichment;
19  
20  /**
21   * This interface is used to describe how an interface should be
22   * decorated. With <em>decoration</em> we mean that we create a
23   * shadow interface that is slightly different than the original
24   * interface. The shadow interface can additionally implement a new interfaces
25   * and/or one can change any signatures of its methods.
26   *
27   * @svnLink $Revision: 3874 $;$Date: 2009-08-04 14:25:40 +0200 (Di, 04. Aug 2009) $;$Author: swismer $;$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/branches/el4j_3_1/el4j/framework/modules/core/src/main/java/ch/elca/el4j/util/interfaceenrichment/EnrichmentDecorator.java $
28   *
29   * @author Martin Zeltner (MZE)
30   */
31  public interface EnrichmentDecorator {
32  
33  	/**
34  	 * Method to change the name of the interface.
35  	 *
36  	 * @param originalInterfaceName
37  	 *            Is the name of the original interface.
38  	 * @return Returns the newly created interface name.
39  	 */
40  	public String changedInterfaceName(String originalInterfaceName);
41  
42  	/**
43  	 * Method to change classes, which are extended by the interface.
44  	 *
45  	 * @param extendedInterfaces
46  	 *            Are the extended interfaces of the original interface.
47  	 * @return Returns the extended interfaces for the new interface.
48  	 */
49  	public Class<?>[] changedExtendedInterface(Class<?>[] extendedInterfaces);
50  
51  	/**
52  	 * Method to change the signature of given method.
53  	 *
54  	 * @param method
55  	 *            Is the method from the original interface.
56  	 * @return Returns the method signature for the new interface.
57  	 */
58  	public MethodDescriptor changedMethodSignature(MethodDescriptor method);
59  }