| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <document> |
| |
| <properties> |
| <title>Project Map</title> |
| </properties> |
| |
| <body> |
| |
| <section name="Project Map"> |
| |
| <p> On this page, you can find a functional breakdown of Turbine codebase. |
| This should help you in getting familiar with the tools that Turbine offers |
| to you. Also, it will help you locate people that are experts in the field |
| of a specific functional block, so you can contact them if you encounter |
| a problem, or better yet have made a patch that fixes it. </p> |
| |
| <p><a href="project-map/core.html"><b>Turbine Core</b></a></p> |
| |
| <p> In the Core part of Turbine you will find the Turbine Servlet, the |
| single entry point to your application, and the classes that form the |
| framework of HTTP-interfaced application following MVC design pattern. |
| Here you will find the base classes you will have to extend to fill |
| in the framework with your application's logic. See the |
| <a href="fsd.html">specification</a> for more details. </p> |
| |
| <p><a href="project-map/essential.html"><b>Essential Services</b></a></p> |
| |
| <p> This block contains the <a href="services.html">Service Framework</a> |
| that forms the basis of Turbine infrastructure. It allows defining |
| utility classes with pluggable implementation (that means that you |
| can customize and override the utility classes provided by Turbine |
| easily) that can take part in the startup and shutdown sequence of the |
| application. </p> |
| |
| <p><a href="project-map/content-generation.html"><b>Content generation services</b></a></p> |
| |
| <p> This block groups together various services that aid you in the process |
| of creating the user interface of your application. Most important, |
| you will find here services that provide <i>templating</i> functionality, |
| that allows you to create the HTML/XML/WML presentation layer of your |
| application independently form your Java sources. The services provided |
| are actually wrappers around templating packages developed independently |
| from Turbine, such as <a href="http://velocity.apache.org">Velocity</a>. |
| Also, there is a service that allows you to use Sun's JSP technology for |
| creating templates. Other services that fall into this block are |
| the Pull service, allowing you to create tool boxes (read more about |
| <a href="pullmodel.html">Pull model</a>), Localization service, that allows |
| you to crate bundles of messages that your application displays translated |
| into different languages, that can be easily manipulated, and the |
| Upload service, that handles uploading files from HTML forms. </p> |
| |
| <p><a href="project-map/database.html"><b>Database access</b></a></p> |
| |
| <p> Database tools in Turbine include connection pooling service, which |
| can transparently delegate to J2EE application server's pooling facilities, |
| of provide connection pooling in lightweight, servlet container only |
| environment. An important element you will find in this block is |
| <a href="peers.html">Peers</a> framework, that is one of the corner stones |
| of Turbine framework along with Services and Modules. Peers allow you to |
| create relationship between tables in a relational database and classes in |
| your application. It also allows to create queries in an Object-oriented way. </p> |
| |
| <p><a href="project-map/object-services.html"><b>Object services</b></a></p> |
| |
| <p> One of the greatest advantages of working in Java Servlets environment, |
| is the statefullness of your application. You can create object and hold |
| them in memory, to avoid repeated loading information form external |
| sources, like disk files or the database. Turbine provides a few |
| Services that will help you with management of these objects. One of them |
| is Pool service that allows you to create pools of reusable object that |
| may be acquired from the pool by a thread processing a request, and |
| recycled when no longer needed. Cache service will help you with |
| managing objects that contain information that can be reused multiple |
| times. </p> |
| |
| <p><a href="project-map/auxilary-services.html"><b>Auxilary Services</b></a></p> |
| |
| <p> In this section you will find other services that might be useful |
| in the building your application. For example |
| <a href="http://www.xmlrpc.com">XMLRPC</a> service that allows |
| communication between applications within a heterogenous environment |
| using XML-based protocol over HTTP. There are also services allowing |
| manipulation of XML content using XSLT, and a service that manages |
| creating contexts for performing JNDI operations. </p> |
| |
| <p><a href="project-map/email.html"><b>E-mail messages</b></a></p> |
| |
| <p> Turbine can help you with creating and sending e-mail. Also |
| with the help of templates, just as those you use for displaying |
| HTML pages. </p> |
| |
| <p><a href="project-map/utility.html"><b>Utility classes</b></a></p> |
| |
| <p> This block encompasses the various utility classes contained in |
| Turbine. You should check those classes, as they solve some common |
| problems encountered in web application making. </p> |
| |
| <p><a href="project-map/tools.html"><b>Turbine tools</b></a></p> |
| |
| <p> In this block, you will find tools that ship together with Turbine. |
| These tools are runnable from the command line, and are used for the |
| development purposes, not during the normal operation of an application. |
| |
| The tools include <a href="howto/torque-howto.html">Torque</a>, the tool for |
| generating Peer Framework classes for your application, |
| <a href="services/intake-service.html">Intake</a> that generates classes for automation |
| of processing of complex HTML forms. <!--, and the <a href="migrator.html"> |
| Migrator</a>, the tool that helps you with bringing your application |
| up to date with newer releases of Turbine, by performing batches |
| of search-and-replace operations on your sources. When used properly, |
| it can save you a plenty of typing.--> </p> |
| |
| </section> |
| |
| <section name="Updating project map"> |
| |
| <p> This section is meant for Turbine developers. </p> |
| |
| <p> Whenever you want to work on bringing the project map up to date, you |
| should run the <code>update-classlist.sh</code> script contained in the |
| <code>xdocs/project-map</code> directory. It will bring the <code>classlist</code> |
| file, also in that directory in sync with the Turbine source files. |
| It will also create a cvs diff of the <code>classlist</code> file and save the |
| result into <code>changes</code> file. Open it and see the changes in the |
| codebase between the last time the project map was updated, and the present. |
| When you commit the modified xdocs, don't forget to commit <code>classlist</code> |
| file as well! </p> |
| |
| </section> |
| |
| </body> |
| |
| </document> |