/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: MetaDataMerged.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.site;
/**
* This interface is merely a marker interface to indicate to RIFE that it
* should consider this class as a <code>MetaData</code> class whose
* interfaces will be automatically merged into the sibling class that it's
* augmenting.
* <p>So, consider a class <code>Foo</code> and another class
* <code>FooMetaData</code>. When <code>FooMetaData</code> implements
* <code>MetaDataMerged</code>, RIFE will adapt <code>Foo</code> and make it
* implement all the interfaces that <code>FooMetaData</code> implements.
* Also, when the default constructor of <code>Foo</code> is called, an
* instance of <code>FooMetaData</code> will be created and stored in a new
* hidden member variable. The added method implementations simple delegate to
* the instance of <code>FooMetaData</code>.
* <p>Optionally, <code>FooMetaData</code> can also implement
* <code>MetaDataBeanAware</code>, in which case the instance of
* <code>FooMetaData</code> will receive the instance of Foo that it belongs
* to right after it has been instantiated.
* <p>Note that the relationship between <code>Foo</code> and
* <code>FooMetaData</code> is purely name based (the <code>MetaData</code>
* suffix). RIFE will look up the meta data class through the classpath, which
* means that it's possible to augment any class, anywhere, in any package,
* even without having the source code.
*
* @see MetaDataBeanAware
* @author Geert Bevin (gbevin[remove] at uwyn dot com)
* @version $Revision: 3918 $
* @since 1.4
*/
public interface MetaDataMerged
{
}