The Visit Object

The center of this application is an object that represents game, an object of class HangmanGame. This object is used to track the word being guessed, the letters that have been used, the number of misses and the letters that have been correctly guessed.

This object is a property of the visit object. What's the visit object? The visit object is a holder of all information about a single client's visit to your web application. It contains data and methods that are needed by the pages and components of your application.

The visit object is owned and created by the engine object. It is serialized and de-serialized with the engine.

The application specification includes a little extra segment at the bottom to specify the class of the visit object.

Figure 5.5. Hangman.application

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
  "-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
  "http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">

<application name="Tapestry Hangman" engine-class="org.apache.tapestry.engine.SimpleEngine"> 

  <property name="org.apache.tapestry.visit-class">tutorial.hangman.Visit</property> 1

  <page name="Home" specification-path="/tutorial/hangman/Home.page"/>

  <page name="Guess" specification-path="/tutorial/hangman/Guess.page"/>

  <page name="Failed" specification-path="/tutorial/hangman/Failed.page"/>

  <page name="Success" specification-path="/tutorial/hangman/Success.page"/>

</application>    

1

This property specifies that the engine should instantiate an instance of tutorial.hangman.Visit when a visit object is first required. This is the default way in which the visit object is specified, though if the visit object doesn't have an empty constructor method, the engine method createVisit() must be implemented instead.

So, returning from that distraction, the game object is a property of the visit object, which is accessible from any page (via the page's visit property).