Book Image

Tapestry 5: Building Web Applications

Book Image

Tapestry 5: Building Web Applications

Overview of this book

Table of Contents (17 chapters)
Tapestry 5
Credits
About the Author
About the Reviewers
Preface
Foreword
Where to Go Next

Configuring an Application State Object


Currently, to provide a data source to our pages, we are using an application state object of type MockDataSource, like this:

@ApplicationState
private MockDataSource dataSource;

When we request such an ASO for the first time, Tapestry takes the specified class and creates an instance of it using its no-argument constructor (naturally, such a constructor should exist). It then stores this instance into the session and gives us a reference to it.

All this works okay, but imagine that one day we have created a real data source, and so now we want to have the data source ASO like this:

@ApplicationState
private RealDataSource dataSource;

We would have to find all the references to this ASO and change them then. Not impossible, but this isn't a good design. To avoid this, we create the IDataSource interface, and our MockDataSource implements it. Ideally, we would wish the ASO to be defined in a generic way, like this:

@ApplicationState
private IDataSource...