View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.trinidad.context;
20  
21  /**
22   * Class to use with {@link ComponentContextManager#partialSuspend} to control how far
23   * into the context change stack to suspend to. This is useful for components that need to
24   * suspend to a certain point in the change stack, but not the entire stack.
25   */
26  public abstract class SuspendCallback
27  {
28    /**
29     * Return value for the {@link #getSuspendResult(ComponentContextChange)} function to specify
30     * when to stop suspending the context change stack.
31     */
32    public enum SuspendResult
33    {
34      /**
35       * Stop checking changes, stop without suspending the current change.
36       */
37      STOP,
38  
39      /**
40       * Stop checking changes, stop after suspending the current change.
41       */
42      STOP_AFTER_CURRENT,
43  
44      /**
45       * The desired change has not yet been found, keep suspending.
46       */
47      CONTINUE
48    }
49  
50    /**
51     * Determine how suspension should behave with regards to partial suspension.
52     *
53     * @param change The change to consider suspending
54     * @return enumeration specifying how far to suspend to
55     */
56    public abstract SuspendResult getSuspendResult(
57      ComponentContextChange change);
58  }