KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > turbine > services > pull > PullService


1 package org.apache.turbine.services.pull;
2
3 /* ====================================================================
4  * The Apache Software License, Version 1.1
5  *
6  * Copyright (c) 2001 The Apache Software Foundation. All rights
7  * reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution,
22  * if any, must include the following acknowledgment:
23  * "This product includes software developed by the
24  * Apache Software Foundation (http://www.apache.org/)."
25  * Alternately, this acknowledgment may appear in the software itself,
26  * if and wherever such third-party acknowledgments normally appear.
27  *
28  * 4. The names "Apache" and "Apache Software Foundation" and
29  * "Apache Turbine" must not be used to endorse or promote products
30  * derived from this software without prior written permission. For
31  * written permission, please contact apache@apache.org.
32  *
33  * 5. Products derived from this software may not be called "Apache",
34  * "Apache Turbine", nor may "Apache" appear in their name, without
35  * prior written permission of the Apache Software Foundation.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals on behalf of the Apache Software Foundation. For more
53  * information on the Apache Software Foundation, please see
54  * <http://www.apache.org/>.
55  */

56
57 import org.apache.fulcrum.Service;
58 import org.apache.turbine.RunData;
59 import org.apache.turbine.TemplateContext;
60
61 /**
62  * The Pull Service manages the creation of application
63  * tools that are available to all templates in a
64  * Turbine application. By using the Pull Service you
65  * can avoid having to make Screens to populate a
66  * context for use in a particular template. The Pull
67  * Service creates a set of tools, as specified in
68  * the TR.props file.
69  *
70  * These tools can have global scope, request scope,
71  * session scope (i.e. stored in user temp hashmap)
72  * or persistent scope (i.e. stored in user perm hashmap)
73  *
74  * The standard way of referencing these global
75  * tools is through the toolbox handle. This handle
76  * is typically $toolbox, but can be specified in the
77  * TR.props file.
78  *
79  * So, for example, if you had a UI Manager tool
80  * which created a set of UI attributes from a
81  * properties file, and one of the properties
82  * was 'bgcolor', then you could access this
83  * UI attribute with $ui.bgcolor. The identifier
84  * that is given to the tool, in this case 'ui', can
85  * be specified as well.
86  *
87  * @author <a HREF="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
88  * @version $Id: PullService.java,v 1.2 2001/08/17 06:02:01 jon Exp $
89  */

90 public interface PullService extends Service
91 {
92     /**
93      * The key under which this service is stored in TurbineServices.
94      */

95     public static final String JavaDoc SERVICE_NAME = "PullService";
96
97     /**
98      * Get the context containing global tools that will be
99      * use as part of the Turbine Pull Model.
100      */

101     public TemplateContext getGlobalContext();
102
103     /**
104      * This is used to populate a TemplateContext with all of the
105      * various tools. The order of population is:
106      * Request, Session, Persistent, Global
107      *
108      * @param data Turbine information.
109      */

110     public TemplateContext getRuntimeContext(RunData data);
111
112     /**
113      * Populate the given context with all request, session
114      * and persistent scope tools (it is assumed that the context
115      * already wraps the global context, and thus already contains
116      * the global tools).
117      *
118      * @param context a Velocity Context to populate
119      * @param data a RunData object for request specific data
120      */

121     public void populateContext(TemplateContext context, RunData data);
122
123     /**
124      * Return the absolute path of the resources directory
125      * used by application tools.
126      */

127     public String JavaDoc getAbsolutePathToResourcesDirectory();
128
129     /**
130      * Return the resources directory. This is relative
131      * to the webapp context.
132      */

133     public String JavaDoc getResourcesDirectory();
134
135     /**
136      * Refresh the global tools .
137      */

138     public void refreshGlobalTools();
139
140     /**
141      * Shoud we refresh the tools
142      * on each request. For development purposes.
143      */

144     public boolean refreshToolsPerRequest();
145
146     /**
147      * Release tool instances from the given context to the
148      * object pool
149      *
150      * @param context a Velocity Context to release tools from
151      */

152     public void releaseTools(TemplateContext context);
153
154 }
155
Popular Tags