01: /*
02: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
03: * Distributed under the terms of either:
04: * - the common development and distribution license (CDDL), v1.0; or
05: * - the GNU Lesser General Public License, v2.1 or later
06: * $Id: MetaDataMerged.java 3634 2007-01-08 21:42:24Z gbevin $
07: */
08: package com.uwyn.rife.site;
09:
10: /**
11: * This interface is merely a marker interface to indicate to RIFE that it
12: * should consider this class as a <code>MetaData</code> class whose
13: * interfaces will be automatically merged into the sibling class that it's
14: * augmenting.
15: * <p>So, consider a class <code>Foo</code> and another class
16: * <code>FooMetaData</code>. When <code>FooMetaData</code> implements
17: * <code>MetaDataMerged</code>, RIFE will adapt <code>Foo</code> and make it
18: * implement all the interfaces that <code>FooMetaData</code> implements.
19: * Also, when the default constructor of <code>Foo</code> is called, an
20: * instance of <code>FooMetaData</code> will be created and stored in a new
21: * hidden member variable. The added method implementations simple delegate to
22: * the instance of <code>FooMetaData</code>.
23: * <p>Optionally, <code>FooMetaData</code> can also implement
24: * <code>MetaDataBeanAware</code>, in which case the instance of
25: * <code>FooMetaData</code> will receive the instance of Foo that it belongs
26: * to right after it has been instantiated.
27: * <p>Note that the relationship between <code>Foo</code> and
28: * <code>FooMetaData</code> is purely name based (the <code>MetaData</code>
29: * suffix). RIFE will look up the meta data class through the classpath, which
30: * means that it's possible to augment any class, anywhere, in any package,
31: * even without having the source code.
32: *
33: * @see MetaDataBeanAware
34: * @author Geert Bevin (gbevin[remove] at uwyn dot com)
35: * @version $Revision: 3634 $
36: * @since 1.4
37: */
38: public interface MetaDataMerged {
39: }
|