001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry.callback;
016    
017    import java.io.Serializable;
018    
019    import org.apache.tapestry.IRequestCycle;
020    
021    /**
022     *  Defines a callback, an object which is used to invoke or reinvoke a method
023     *  on an object or component in a later request cycle.  This is used to
024     *  allow certain operations (say, submitting an order) to defer to other processes
025     *  (say, logging in and/or registerring).
026     *
027     *  <p>Callbacks must be {@link Serializable}, to ensure that they can be stored
028     *  between request cycles.
029     *
030     *  @author Howard Lewis Ship
031     *  @since 0.2.9
032     *
033     **/
034    
035    public interface ICallback extends Serializable
036    {
037        /**
038         *  Performs the call back.  Typical implementation will locate a particular
039         *  page or component and invoke a method upon it, or 
040         *  invoke a method on the {@link IRequestCycle cycle}.
041         *
042         **/
043    
044        void performCallback(IRequestCycle cycle);
045    }