<recipes>
  <recipe>
    <id>helloclusteredworld</id>
    <name>Hello Clustered World</name>
    <description>Hello World application that demonstrates simple clustering.</description>
    <visible>true</visible>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/helloclusteredworld</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/helloclusteredworld/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/helloclusteredworld/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>helloclusteredinstance</id>
    <name>Hello Clustered Instance</name>
    <description>Hello World application that demonstrates POJO clustering.</description>
    <visible>true</visible>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/helloclusteredinstance</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/helloclusteredinstance/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/helloclusteredinstance/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>instrumentation</id>
    <name>Instrumentation</name>
    <description>Sample application that demonstrates how to configure Terracotta instrumentation.</description>
    <visible>true</visible>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/instrumentation</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/instrumentation/Main.java</source>
    <source2>http://svn.terracotta.org/svn/forge/cookbook/instrumentation/Counter.java</source2>
    <config>http://svn.terracotta.org/svn/forge/cookbook/instrumentation/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>locking</id>
    <name>Locking</name>
    <description>Demonstrates how to configure the tc-config.xml locks section</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/locking</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/locking/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/locking/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>synchronized</id>
    <name>Synchronized</name>
    <description>Demonstrates the use of distributed synchronized, wait and notify.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/synchronized</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/synchronized/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/synchronized/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>waitnotify</id>
    <name>Wait/Notify</name>
    <description>Demonstrates the use of distributed wait/notify.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/waitnotify</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/waitnotify/Wait.java</source>
    <source2>http://svn.terracotta.org/svn/forge/cookbook/waitnotify/Notify.java</source2>
    <config>http://svn.terracotta.org/svn/forge/cookbook/waitnotify/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>transient</id>
    <name>Transient</name>
    <description>Demonstrates how transience works in Terracotta.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/transient</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/transient/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/transient/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>hashmap</id>
    <name>HashMap</name>
    <description>Demonstrates the use of a java.util.HashMap.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/hashmap</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/hashmap/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/hashmap/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>concurrenthashmap</id>
    <name>ConcurrentHashMap</name>
    <description>Demonstrates the use of a java.util.concurrent.ConcurrentHashMap.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/concurrenthashmap</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/concurrenthashmap/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/concurrenthashmap/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>atomicinteger</id>
    <name>AtomicInteger</name>
    <description>Demonstrates the use of an AtomicInteger.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/atomicinteger</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/atomicinteger/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/atomicinteger/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>cyclicbarrier</id>
    <name>CyclicBarrier</name>
    <description>Coordinate JVMs using a java.util.concurrent.CyclicBarrier.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/cyclicbarrier</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/cyclicbarrier/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/cyclicbarrier/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>readlock</id>
    <name>Read Lock</name>
    <description>How to use read locks to improve concurrent access</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/readlock</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/readlock/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/readlock/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>rrwl</id>
    <name>ReentrantReadWriteLock</name>
    <description>How to use java.util.concurrent.ReentrantReadWriteLock.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/rrwl</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/rrwl/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/rrwl/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>linkedblockingqueue</id>
    <name>LinkedBlockingQueue</name>
    <description>Demonstrates the use of java.util.concurrent.LinkedBlockingQueue</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/linkedblockingqueue</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/linkedblockingqueue/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/linkedblockingqueue/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>linkedblockingqueue2</id>
    <name>LinkedBlockingQueue 2</name>
    <description>Demonstrates another use of java.util.concurrent.LinkedBlockingQueue</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/linkedblockingqueue2</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/linkedblockingqueue2/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/linkedblockingqueue2/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>futuretask</id>
    <name>FutureTask</name>
    <description>Demonstrates the use of java.util.concurrent.FutureTask</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/futuretask</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/futuretask/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/futuretask/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>dmi</id>
    <name>DMI</name>
    <description>Demonstrates the use of distributed method invocation, which can fire a method on many clients across the cluster.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/dmi</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/dmi/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/dmi/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>sequencer</id>
    <name>Sequencer</name>
    <description>Demonstrates how to create a fast efficient cluster-wide global id generator (or sequencer).</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/sequencer</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/sequencer/Main.java</source>
    <source2>http://svn.terracotta.org/svn/forge/cookbook/sequencer/Sequencer.java</source2>
    <config>http://svn.terracotta.org/svn/forge/cookbook/sequencer/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>memoizer</id>
    <name>Memoizer</name>
    <description>Demonstrates the use of a Memoizer</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/memoizer</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/memoizer/Main.java</source>
    <source2>http://svn.terracotta.org/svn/forge/cookbook/memoizer/Memoizer.java</source2>
    <source3>http://svn.terracotta.org/svn/forge/cookbook/memoizer/Computable.java</source3>
    <config>http://svn.terracotta.org/svn/forge/cookbook/memoizer/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>listener</id>
    <name>Listener</name>
    <description>Demonstrates how to implement a clustered listener.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/listener</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/listener/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/listener/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>singleresource</id>
    <name>Single Resource</name>
    <description>Demonstrates how to assign a single owner for a resource across the cluster.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/singleresource</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/singleresource/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/singleresource/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>write-behind</id>
    <name>Write Behind</name>
    <description>An example demonstrating the use of tim-async-processing to do asynchronous write-behind operations.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/write-behind</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/write-behind/Main.java</source>
    <config>http://svn.terracotta.org/svn/forge/cookbook/write-behind/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>rmi</id>
    <name>RMI</name>
    <description>A complex example using a Queue and a Proxy to emulate an RMI like mechanism.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/rmi</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/rmi/Main.java</source>
    <source2>http://svn.terracotta.org/svn/forge/cookbook/rmi/TestInterface.java</source2>
    <source3>http://svn.terracotta.org/svn/forge/cookbook/rmi/RemoteInvoker.java</source3>
    <config>http://svn.terracotta.org/svn/forge/cookbook/rmi/tc-config.xml</config>
  </recipe>
  <recipe>
    <id>wildcards</id>
    <name>Wildcards</name>
    <description>Demonstrates how to use wildcards in the Terracotta tc-config.xml file.</description>
    <scm>http://svn.terracotta.org/svn/forge/cookbook/wildcards</scm>
    <source>http://svn.terracotta.org/svn/forge/cookbook/wildcards/Main.java</source>
    <source2>http://svn.terracotta.org/svn/forge/cookbook/wildcards/MyBean.java</source2>
    <config>http://svn.terracotta.org/svn/forge/cookbook/wildcards/tc-config.xml</config>
  </recipe>
</recipes>
