<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>FavouritesRegistry xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../../../../../apidocs/org/apache/log4j/chainsaw/favourites/FavouritesRegistry.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <strong>package</strong> org.apache.log4j.chainsaw.favourites;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   <strong>import</strong> java.util.ArrayList;
<a name="4" href="#4">4</a>   <strong>import</strong> java.util.Collection;
<a name="5" href="#5">5</a>   <strong>import</strong> java.util.Collections;
<a name="6" href="#6">6</a>   <strong>import</strong> java.util.List;
<a name="7" href="#7">7</a>   
<a name="8" href="#8">8</a>   <em>/**<em>*</em></em>
<a name="9" href="#9">9</a>   <em> *  A singleton class that is used as a Registry of instances of JavaBeans </em>
<a name="10" href="#10">10</a>  <em> * that are in a state that a user prefers.</em>
<a name="11" href="#11">11</a>  <em> * </em>
<a name="12" href="#12">12</a>  <em> * @author Paul Smith &lt;psmith@apache.org></em>
<a name="13" href="#13">13</a>  <em> *</em>
<a name="14" href="#14">14</a>  <em> */</em>
<a name="15" href="#15">15</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../../org/apache/log4j/chainsaw/favourites/FavouritesRegistry.html">FavouritesRegistry</a>{
<a name="16" href="#16">16</a>    
<a name="17" href="#17">17</a>    <strong>private</strong> <strong>final</strong> List favourites = <strong>new</strong> ArrayList();
<a name="18" href="#18">18</a>    
<a name="19" href="#19">19</a>    <em>/**<em>*</em></em>
<a name="20" href="#20">20</a>  <em>   * Returns a Collection of Favourite instances whose getPrototype() method</em>
<a name="21" href="#21">21</a>  <em>   * returns an object whose class is assignable from clazz, or more formally, such that</em>
<a name="22" href="#22">22</a>  <em>   * clazz.isAssignableFrom(favourite.getPrototype().getClass())</em>
<a name="23" href="#23">23</a>  <em>   * @param clazz</em>
<a name="24" href="#24">24</a>  <em>   * @return favourites</em>
<a name="25" href="#25">25</a>  <em>   */</em>
<a name="26" href="#26">26</a>    <strong>public</strong> <strong>synchronized</strong> Collection getFavouritesByClass(Class clazz) {
<a name="27" href="#27">27</a>      <strong>throw</strong> <strong>new</strong> UnsupportedOperationException(<span class="string">"Work In Progress"</span>);
<a name="28" href="#28">28</a>    }
<a name="29" href="#29">29</a>    
<a name="30" href="#30">30</a>    <em>/**<em>*</em></em>
<a name="31" href="#31">31</a>  <em>   * Adds a favourite to this Registry</em>
<a name="32" href="#32">32</a>  <em>   * @param favourite</em>
<a name="33" href="#33">33</a>  <em>   */</em>
<a name="34" href="#34">34</a>    
<a name="35" href="#35">35</a>    <strong>public</strong> <strong>synchronized</strong> <strong>void</strong> addFavourite(<a href="../../../../../org/apache/log4j/chainsaw/favourites/Favourite.html">Favourite</a> favourite) {
<a name="36" href="#36">36</a>      <strong>throw</strong> <strong>new</strong> UnsupportedOperationException(<span class="string">"Work In Progress"</span>);
<a name="37" href="#37">37</a>    }
<a name="38" href="#38">38</a>    
<a name="39" href="#39">39</a>    <em>/**<em>*</em></em>
<a name="40" href="#40">40</a>  <em>   * Returns an unmodifiable List of all the known Favourite instances</em>
<a name="41" href="#41">41</a>  <em>   * @return favourites</em>
<a name="42" href="#42">42</a>  <em>   */</em>
<a name="43" href="#43">43</a>    <strong>public</strong> List getFavourites() {
<a name="44" href="#44">44</a>      <strong>return</strong> Collections.unmodifiableList(favourites);
<a name="45" href="#45">45</a>    }
<a name="46" href="#46">46</a>    
<a name="47" href="#47">47</a>    <em>/**<em>*</em></em>
<a name="48" href="#48">48</a>  <em>   * Creates a new Favourite instance after running throught some</em>
<a name="49" href="#49">49</a>  <em>   * suitability checks to make sure the object class is ok to be used</em>
<a name="50" href="#50">50</a>  <em>   * as a prototype.</em>
<a name="51" href="#51">51</a>  <em>   * </em>
<a name="52" href="#52">52</a>  <em>   * @param name The name to use for the favourite</em>
<a name="53" href="#53">53</a>  <em>   * @param prototype The object to register</em>
<a name="54" href="#54">54</a>  <em>   * @throws IllegalArgumentException if the prototype does not conform</em>
<a name="55" href="#55">55</a>  <em>   * to the necessary rules to be used as a prototype (see the package documentation).</em>
<a name="56" href="#56">56</a>  <em>   * </em>
<a name="57" href="#57">57</a>  <em>   */</em>
<a name="58" href="#58">58</a>    <strong>public</strong> <strong>void</strong> addFavourite(String name, Object prototype) {
<a name="59" href="#59">59</a>      favourites.add(createFavourite(name, prototype));
<a name="60" href="#60">60</a>    }
<a name="61" href="#61">61</a>    
<a name="62" href="#62">62</a>    <strong>private</strong> <a href="../../../../../org/apache/log4j/chainsaw/favourites/Favourite.html">Favourite</a> createFavourite(String name, Object prototype) {
<a name="63" href="#63">63</a>      checkSuitability(prototype);
<a name="64" href="#64">64</a>      <strong>return</strong> <strong>new</strong> <a href="../../../../../org/apache/log4j/chainsaw/favourites/Favourite.html">Favourite</a>(name, prototype);
<a name="65" href="#65">65</a>    }
<a name="66" href="#66">66</a>    
<a name="67" href="#67">67</a>    <em>/**<em>*</em></em>
<a name="68" href="#68">68</a>  <em>   * Checks the suitability of an object to make sure it conforms to all the rules</em>
<a name="69" href="#69">69</a>  <em>   * for being a prototype,</em>
<a name="70" href="#70">70</a>  <em>   * @param prototype</em>
<a name="71" href="#71">71</a>  <em>   * @throws IllegalArgumentException if the prototype is not suitable</em>
<a name="72" href="#72">72</a>  <em>   */</em>
<a name="73" href="#73">73</a>    <strong>private</strong> <strong>void</strong> checkSuitability(Object prototype)  throws IllegalArgumentException{
<a name="74" href="#74">74</a>      <em class="comment">// TODO Auto-generated method stub</em>
<a name="75" href="#75">75</a>     <strong>throw</strong> <strong>new</strong> UnsupportedOperationException(<span class="string">"Work in Progress"</span>); 
<a name="76" href="#76">76</a>    }
<a name="77" href="#77">77</a>  
<a name="78" href="#78">78</a>    <strong>private</strong> <a href="../../../../../org/apache/log4j/chainsaw/favourites/FavouritesRegistry.html">FavouritesRegistry</a>() {
<a name="79" href="#79">79</a>      
<a name="80" href="#80">80</a>    }
<a name="81" href="#81">81</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

