View Javadoc

1   /*
2    * Copyright 1999-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.struts.flow.core;
17  
18  import java.util.List;
19  import org.apache.commons.chain.web.WebContext;
20  
21  /***
22   * The interface of the Continuations manager.
23   *
24   * The continuation manager maintains a forrest of {@link
25   * WebContinuation} trees. Each tree defines the flow of control for a
26   * user within the application.
27   *
28   * A <code>WebContinuation</code> is created for a continuation object
29   * from the scripting language used. A continuation object in the
30   * implementation of the scripting language is an opaque object
31   * here. It is only stored inside the <code>WebContinuation</code>,
32   * without being interpreted in any way.
33   *
34   * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
35   * @since March 19, 2002
36   * @see WebContinuation
37   * @version CVS $Id: ContinuationsManager.java 164239 2005-04-22 13:54:29Z reinhard $
38   */
39  public interface ContinuationsManager {
40  
41      /***
42       * Create a <code>WebContinuation</code> object given a native
43       * continuation object and its parent. If the parent continuation is
44       * null, the <code>WebContinuation</code> returned becomes the root
45       * of a tree in the forrest.
46       *
47       * @param kont an <code>Object</code> value
48       * @param parentKont a <code>WebContinuation</code> value
49       * @param timeToLive an <code>int</code> value indicating how long
50       * in seconds this continuation will live in the server if not
51       * accessed
52       * @param interpreterId id of interpreter invoking continuation creation
53       * @param disposer a <code>ContinuationsDisposer</code> instance to called when 
54       * the continuation gets cleaned up.
55       * @return a <code>WebContinuation</code> value
56       * @see WebContinuation
57       */
58      public WebContinuation createWebContinuation(Object kont,
59                                                   WebContinuation parentKont,
60                                                   int timeToLive,
61                                                   String interpreterId,
62                                                   ContinuationsDisposer disposer, 
63                                                   WebContext webctx);
64  
65      /***
66       * Invalidates a <code>WebContinuation</code>. This effectively
67       * means that the continuation object associated with it will no
68       * longer be accessible from Web pages. Invalidating a
69       * <code>WebContinuation</code> invalidates all the
70       * <code>WebContinuation</code>s which are children of it.
71       *
72       * @param k a <code>WebContinuation</code> value
73       */
74      public void invalidateWebContinuation(WebContinuation k, WebContext webctx);
75  
76      /***
77       * Given a <code>WebContinuation</code> id, retrieve the associated
78       * <code>WebContinuation</code> object.
79       * @param id a <code>String</code> value
80       * @param interpreterId Id of an interpreter that queries for 
81       * the continuation
82       *
83       * @return a <code>WebContinuation</code> object, null if no such
84       * <code>WebContinuation</code> could be found. Also null if 
85       * <code>WebContinuation</code> was found but interpreter id does 
86       * not match the one that the continuation was initialy created for.
87       */
88      public WebContinuation lookupWebContinuation(String id, String interpreterId, WebContext webctx);
89  
90      /***
91       * Prints debug information about all web continuations into the log file.
92       * @see WebContinuation#display()
93       */
94      public void displayAllContinuations();
95      
96      /***
97       * Get a list of all continuations as <code>WebContinuationDataBean</code> objects. 
98       */
99      public List getWebContinuationsDataBeanList();
100     
101     /***
102      *  Set the default time to live value
103      *
104      *@param  ttl  The time-to-live in milliseconds
105      */
106     public void setDefaultTimeToLive(int ttl);
107     
108     public void setExpirationPeriod(long period);
109     
110     /***  Destroys all continuations and any other resident objects  */
111     public void destroy();
112 }